:root{font-family:Bahnschrift,"Segoe UI",Arial,sans-serif}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:transparent}
.streak-widget{position:relative;width:428px;height:230px;color:#f7f8fa;--accent:#facc15;--panel:rgba(13,17,24,.965);--panel-soft:rgba(30,36,45,.925);--border:rgba(255,255,255,.14);--number-size:64px;font-family:Bahnschrift,"Segoe UI",Arial,sans-serif;font-variant-numeric:tabular-nums;user-select:none}
.streak-widget.survivor-visual-off{width:266px}
.streak-card{position:absolute;left:6px;top:20px;width:calc(100% - 12px);height:188px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(116deg,var(--panel),var(--panel-soft));box-shadow:0 11px 28px var(--card-shadow,transparent),inset 0 1px rgba(255,255,255,.035);overflow:hidden;display:grid;grid-template-columns:156px minmax(0,1fr)}
.streak-card:before{content:"";position:absolute;z-index:6;left:0;top:11px;bottom:11px;width:4px;border-radius:0 5px 5px 0;background:var(--accent);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 58%,transparent);pointer-events:none}
.visual-side{position:relative;min-width:0;overflow:hidden;background:radial-gradient(circle at 36% 58%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 57%),linear-gradient(145deg,color-mix(in srgb,var(--accent) 9%,transparent),transparent 64%)}
.visual-side:after{content:"";position:absolute;z-index:1;right:0;top:0;bottom:0;width:1px;background:linear-gradient(transparent,rgba(255,255,255,.12),transparent)}
.visual-frame{position:absolute;inset:10px 9px;border:1px solid transparent;border-radius:11px;pointer-events:none;z-index:3}
.killer-img,.survivor-img{position:absolute;z-index:2;left:50%;top:50%;width:178px;height:194px;object-fit:contain;object-position:center center;transform:translate(-50%,-50%);filter:drop-shadow(0 8px 8px rgba(0,0,0,.68))}
.survivor-img{width:164px;height:184px}
.visual-empty{position:absolute;z-index:2;inset:13px 11px;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--accent) 58%,#ffffff22);border-radius:11px;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 10%,transparent),rgba(255,255,255,.015));color:#eef1f5;font-size:11px;font-weight:900;letter-spacing:1.7px;text-transform:uppercase;text-shadow:0 2px 5px #000}
.streak-main{position:relative;min-width:0;padding:14px 16px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.custom-line{width:100%;min-height:17px;margin-bottom:4px;color:#c8d0da;font-size:14px;font-weight:800;letter-spacing:1.55px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;filter:none;-webkit-text-stroke:var(--top-stroke,0.65px rgba(0,0,0,.82));paint-order:stroke fill;text-shadow:var(--top-shadow,0 1px 1px rgba(255,255,255,.07))}
.custom-line.empty{visibility:hidden}
.entity-name{width:100%;margin-bottom:5px;color:#fff;font-size:18px;font-weight:900;line-height:1.05;letter-spacing:1.15px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:var(--entity-glow,var(--white-glow));filter:var(--text-filter,none);text-overflow:clip}
.mode-survivor .entity-name{font-size:24px;letter-spacing:1.55px}
.mode-killer .entity-name{font-size:24px;letter-spacing:1.15px;margin-bottom:1px;overflow:hidden;text-overflow:clip}
.mode-killer .entity-name.long-name,.mode-killer .entity-name.very-long-name{font-size:24px;letter-spacing:1.15px}
.style-3.mode-killer .entity-name{font-size:22px}
.mode-killer .value-wrap{margin-top:6px}
.value-wrap{position:relative;display:flex;align-items:center;justify-content:center;min-height:58px}
.streak-value{position:relative;z-index:1;color:var(--accent);font-size:var(--number-size);font-weight:900;line-height:.90;letter-spacing:-1.5px;text-shadow:var(--number-shadow,0 0 8px rgba(255,255,255,.42),0 1px 2px rgba(240,242,245,.34),0 1px 3px rgba(0,0,0,.20));filter:none}
.streak-pulse{position:absolute;z-index:4;left:50%;top:50%;opacity:0;pointer-events:none;color:#fff;font-size:var(--number-size);font-weight:950;line-height:.90;letter-spacing:-1.5px;text-shadow:none;filter:var(--pulse-filter,drop-shadow(0 1px 1px rgba(0,0,0,.16)) drop-shadow(0 0 2.5px rgba(255,255,255,.24)));transform:translate3d(-50%,-50%,0) scale(.72);transform-origin:center center;will-change:transform,opacity;backface-visibility:hidden;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
.streak-pulse.play{animation:streakPlusPulse 2.95s cubic-bezier(.22,.72,.22,1) both}
.pulse-active .streak-value{animation:streakValueDuringPulse 2.95s linear both}
/* A single continuous GPU transform avoids the stepped/low-FPS feel caused by scaling a tiny rasterized glyph. */
@keyframes streakPlusPulse{0%{opacity:0;transform:translate3d(-50%,-50%,0) scale(.72)}9%{opacity:.98}68%{opacity:1;transform:translate3d(-50%,-50%,0) scale(1.065)}80%{opacity:1;transform:translate3d(-50%,-50%,0) scale(1.025)}86%{opacity:.92;transform:translate3d(-50%,-50%,0) scale(1.045)}100%{opacity:0;transform:translate3d(-50%,-50%,0) scale(1.075)}}
@keyframes streakValueDuringPulse{0%{opacity:1;transform:scale(1)}2%{opacity:0;transform:scale(.99)}90%{opacity:0;transform:scale(.99)}94%{opacity:.34;transform:scale(.995)}100%{opacity:1;transform:scale(1)}}
.record-chip{margin-top:10px;min-width:122px;min-height:27px;padding:4px 12px 3px;border:1px solid color-mix(in srgb,var(--accent) 58%,#ffffff18);border-radius:8px;background:rgba(0,0,0,.23);display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:inset 0 1px rgba(255,255,255,.035)}
.record-chip span{font-size:11px;font-weight:850;letter-spacing:1.45px;color:#fff;text-shadow:var(--white-glow);filter:var(--text-filter,none)}.record-chip b{font-size:18px;line-height:1;color:#fff;font-weight:900;text-shadow:0 1px 4px rgba(0,0,0,.78);filter:var(--text-filter,none)}
.mode-survivor.survivor-visual-off .streak-card{grid-template-columns:1fr}
.mode-survivor.survivor-visual-off .visual-side{display:none}
.mode-survivor.survivor-visual-off .streak-main{padding-left:25px;padding-right:25px}
.mode-survivor.survivor-visual-off .entity-name{font-size:25px}

/* Style 1 — rounded glass, faithful to the first approved concept. */
.style-1 .streak-card{border-radius:14px;background:linear-gradient(112deg,color-mix(in srgb,var(--accent) 4%,var(--panel)),var(--panel-soft) 59%,var(--panel));box-shadow:inset 0 1px rgba(255,255,255,.035)}
.style-1 .visual-side{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 11%,transparent),transparent 72%)}
.style-1 .visual-frame{border-color:transparent}

/* Style 2 — angular split / esports. */
.style-2 .streak-card{border-radius:11px;clip-path:polygon(0 0,89% 0,100% 15%,100% 100%,10% 100%,0 86%);background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 8%,var(--panel)),var(--panel) 47%,var(--panel-soft));box-shadow:inset 0 1px rgba(255,255,255,.035)}
.style-2 .visual-side{clip-path:polygon(0 0,84% 0,100% 100%,0 100%);background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 17%,#150c08),transparent 72%)}
.style-2 .visual-side:after{right:7px;transform:skewX(-14deg);background:color-mix(in srgb,var(--accent) 56%,transparent)}
.style-2 .visual-frame{inset:9px 13px 9px 8px;border-color:color-mix(in srgb,var(--accent) 30%,transparent);border-radius:7px;clip-path:polygon(0 0,84% 0,100% 100%,0 100%)}
.style-2 .record-chip{border-radius:12px 5px 12px 5px}
.style-2.mode-survivor.survivor-visual-off .streak-card{clip-path:polygon(0 0,91% 0,100% 16%,100% 100%,9% 100%,0 84%)}

/* Style 3 — rebuilt: slim floating rail with an open portrait and accent underline. */
.style-3 .streak-card{top:34px;height:158px;border:0;border-radius:12px;background:linear-gradient(90deg,color-mix(in srgb,var(--panel) 93%,transparent),color-mix(in srgb,var(--panel-soft) 86%,transparent));box-shadow:0 0 0 1px rgba(255,255,255,.055) inset;overflow:visible;grid-template-columns:142px minmax(0,1fr)}
.style-3 .streak-card:before{left:18px;right:18px;top:auto;bottom:-1px;width:auto;height:2px;border-radius:4px;background:linear-gradient(90deg,transparent,var(--accent) 18%,var(--accent) 82%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--accent) 40%,transparent)}
.style-3 .visual-side{overflow:visible;background:transparent}
.style-3 .visual-side:after{display:none}
.style-3 .visual-frame{display:none}
.style-3 .killer-img{width:166px;height:181px;left:calc(50% + 14px);top:48%;filter:drop-shadow(0 9px 7px rgba(0,0,0,.72))}
.style-3 .survivor-img{width:154px;height:171px;top:49%}
.style-3 .visual-empty{inset:18px 10px;border-style:dashed;background:rgba(255,255,255,.015)}
.style-3 .streak-main{padding:10px 14px 9px;justify-content:center}
.style-3 .custom-line{font-size:13px;margin-bottom:2px;letter-spacing:1.7px}
.style-3 .entity-name{margin-bottom:4px}
.style-3{--number-size:57px}.style-3 .value-wrap{min-height:50px}.style-3 .streak-value,.style-3 .streak-pulse{line-height:.86}
.style-3 .record-chip{margin-top:15px;min-width:112px;min-height:22px;padding:3px 10px;border:0;border-top:1px solid color-mix(in srgb,var(--accent) 72%,transparent);border-radius:0;background:transparent;box-shadow:none;gap:5px}
.style-3 .record-chip span{font-size:10px}.style-3 .record-chip b{font-size:16px}
.style-3.mode-survivor.survivor-visual-off .streak-card{top:39px;height:150px;border-radius:14px;background:linear-gradient(110deg,color-mix(in srgb,var(--panel) 96%,transparent),color-mix(in srgb,var(--panel-soft) 84%,transparent))}
.style-3.mode-survivor.survivor-visual-off .streak-main{padding:13px 24px 10px}
.style-3.mode-survivor.survivor-visual-off{--number-size:60px}

/* Style 4 — rebuilt: premium framed card with cut corners and layered inner frame. */
.style-4 .streak-card{top:16px;height:196px;border:1px solid color-mix(in srgb,var(--accent) 34%,rgba(255,255,255,.20));border-radius:18px;clip-path:polygon(14px 0,calc(100% - 14px) 0,100% 14px,100% calc(100% - 14px),calc(100% - 14px) 100%,14px 100%,0 calc(100% - 14px),0 14px);background:linear-gradient(122deg,color-mix(in srgb,var(--accent) 9%,var(--panel)),var(--panel) 45%,color-mix(in srgb,var(--panel-soft) 95%,var(--accent) 5%));box-shadow:0 14px 32px var(--card-shadow,rgba(0,0,0,.40)),0 0 20px color-mix(in srgb,var(--accent) 10%,transparent);grid-template-columns:164px minmax(0,1fr)}
.style-4 .streak-card:before{left:0;top:18px;bottom:18px;width:5px;border-radius:0 7px 7px 0;background:linear-gradient(var(--accent),color-mix(in srgb,var(--accent) 55%,#fff),var(--accent));box-shadow:0 0 15px color-mix(in srgb,var(--accent) 68%,transparent)}
.style-4 .streak-card:after{content:"";position:absolute;z-index:5;inset:6px;border:1px solid rgba(255,255,255,.045);clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px),0 10px);pointer-events:none}
.style-4 .visual-side{background:radial-gradient(circle at 46% 45%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 56%),linear-gradient(145deg,color-mix(in srgb,var(--accent) 15%,#0b0d12),transparent 68%)}
.style-4 .visual-frame{inset:8px;border-color:color-mix(in srgb,var(--accent) 68%,transparent);border-radius:12px;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 12%,transparent) inset}
.style-4 .killer-img{width:186px;height:202px}
.style-4 .survivor-img{width:170px;height:190px}
.style-4 .streak-main:before,.style-4 .streak-main:after{content:"";position:absolute;left:22px;right:22px;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 48%,transparent),transparent);pointer-events:none}
.style-4 .streak-main:before{top:13px}.style-4 .streak-main:after{bottom:13px}
.style-4{--number-size:66px}.style-4 .value-wrap{min-height:61px}
.style-4 .record-chip{border-color:color-mix(in srgb,var(--accent) 78%,transparent);border-radius:11px;box-shadow:0 0 11px color-mix(in srgb,var(--accent) 11%,transparent),inset 0 1px rgba(255,255,255,.045)}
.style-4.mode-survivor.survivor-visual-off .streak-card{grid-template-columns:1fr}
.style-4.mode-survivor.survivor-visual-off .streak-main{padding-left:27px;padding-right:27px}
.style-4.mode-survivor.survivor-visual-off .streak-main:before,.style-4.mode-survivor.survivor-visual-off .streak-main:after{left:34px;right:34px}

.zero-opacity .streak-card{background:transparent!important;border-color:transparent!important;box-shadow:none!important}.zero-opacity .visual-side{background:transparent!important}.zero-opacity .visual-frame{background:transparent!important;border-color:transparent!important;box-shadow:none!important}.zero-opacity .record-chip{background:transparent!important}
/* Survivor label remains intentionally larger in the compact/alternate layouts. */
.style-3.mode-survivor .entity-name{font-size:22px;letter-spacing:1.35px}
.style-3.mode-survivor.survivor-visual-off .entity-name{font-size:23px}
.style-4.mode-survivor .entity-name{font-size:24px;letter-spacing:1.45px}
/* V3.7: visual cards gain room only on the right; portrait columns stay fixed. Killer labels match Survivor streak label sizing and auto-fit in JS without ellipsis. */
.style-1.mode-killer .entity-name,.style-2.mode-killer .entity-name,.style-4.mode-killer .entity-name{font-size:24px}
.style-3.mode-killer .entity-name{font-size:22px}


.streak-widget,.streak-widget *{text-transform:uppercase}
