/* One stationary frame for primary tabs and their subpages. */
#dmKpis{margin:0 0 14px;gap:14px}
#dmKpis>.kpi{height:100px;padding:10px 14px}
#deathmatchView .dm-weapons{padding:0}
#benchmarkView .benchmark-shell{padding:0;gap:14px;display:grid;height:100%;min-height:0}
#benchmarkView .benchmark-head{height:100px;min-height:100px;border-radius:15px;padding:10px 14px}
#benchmarkView .benchmark-analysis{display:flex;flex-direction:column;min-height:0}
#benchmarkView .benchmark-controls{flex:none;margin:0;padding:0 0 8px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;gap:8px;flex-wrap:wrap}
#benchmarkView .benchmark-tools{padding-left:8px}
#benchmarkView .benchmark-scroll{min-height:0;flex:1;border-radius:10px}
#benchmarkView .benchmark-table{min-width:calc(580px + var(--benchmark-rank-count,9)*96px)}
#benchmarkView .benchmark-table .scenario-col{width:auto}
#benchmarkView .benchmark-table .progress-col{width:calc(108px + var(--benchmark-rank-count,9)*96px)}
#benchmarkView .benchmark-table .score-col{width:76px}
#benchmarkView .benchmark-table .runs-col{width:48px}
#benchmarkView .benchmark-table .progress-layout{grid-template-columns:minmax(0,1fr) 80px;gap:8px}
#benchmarkView .benchmark-table .progress-heading{padding-right:98px}
#benchmarkView .benchmark-table .rank-heading{width:80px}
#benchmarkView .benchmark-difficulties button{min-width:66px;padding:6px 10px}
#benchmarkView .benchmark-action{padding:5px 9px;min-height:32px;font-size:14px}
#benchmarkView .benchmark-tools select{min-width:140px;min-height:32px}
@media(min-width:1200px) and (min-height:950px){
 main{overflow-y:auto!important;padding-top:8px;padding-bottom:0}
 #benchmarkView.view.active{display:block;height:100%;min-height:0}
 #dmKpis{flex:none}
 #kovKpis,#matchKpis{flex:none}
 #benchmarkView .benchmark-table td{height:22px;padding-top:1px;padding-bottom:1px}
 #benchmarkView .benchmark-table th{padding-top:5px;padding-bottom:5px}
 #benchmarkView .benchmark-table .rank-heading{top:5px}
 #benchmarkView .benchmark-table .progress-track{height:14px}
 #benchmarkView .benchmark-table .scenario-name{font-size:12px}
}
@media(max-width:1199px),(max-height:949px){main{overflow-y:auto!important}#benchmarkView .benchmark-scroll{max-height:none;overflow:auto}#benchmarkView .benchmark-table{min-width:calc(580px + var(--benchmark-rank-count,9)*96px)}}
@media(max-width:1100px){#benchmarkView .benchmark-tools{width:auto;border:0;padding:0}#benchmarkView .benchmark-controls{gap:6px}}
@media(max-width:850px){#dmKpis{grid-template-columns:repeat(2,minmax(0,1fr))}#benchmarkView .benchmark-head{gap:8px}}
@media(max-width:560px){#dmKpis{grid-template-columns:repeat(2,minmax(0,1fr))}#dmKpis>.kpi{height:100px;padding:10px}#dmKpis strong{font-size:21px}#benchmarkView .benchmark-head{height:auto;min-height:100px;flex-wrap:wrap}#benchmarkView .benchmark-shell{grid-template-rows:auto auto}#benchmarkView .benchmark-controls{align-items:flex-start}#benchmarkView .benchmark-tool-actions{margin-left:0;flex-wrap:wrap}}
/* Bovlid navigation and shared working surfaces */
header{flex-wrap:nowrap}header .tabs{flex:1;min-width:0;border:0}header>.actions{flex:none}
#profileView{height:100%;overflow-y:auto;padding-bottom:18px}#dmDayPager{flex-wrap:wrap;font-size:14px}#dmDayPager .btn{padding:6px 8px;font-size:14px}
@media(max-width:1100px){header{flex-wrap:wrap;gap:8px}header .tabs{order:3;flex-basis:100%;width:100%}header .tab{padding:10px 12px}header>.actions{margin-left:auto}header .brand-wrap{min-height:48px}}
@media(max-width:750px){header .tabs{overflow-x:auto}}
/* Centered primary navigation with nested pages */
header{display:grid;position:relative;z-index:20;overflow:visible}header .tabs{overflow:visible;justify-content:center;width:auto;flex-wrap:nowrap}header>.actions{justify-self:end;margin-left:0}header .brand-wrap{justify-self:start}.nav-group{position:relative;flex:none}.nav-trigger{display:flex;align-items:center;gap:6px}.nav-chevron{line-height:1}.nav-dropdown{display:none;position:absolute;left:50%;transform:translateX(-50%);border:1px solid var(--line);z-index:30}.nav-group.is-open .nav-dropdown{display:grid}.nav-dropdown button{width:100%;text-align:left;border:0;border-radius:6px;background:none;color:var(--text);font-size:14px;white-space:nowrap}.nav-trigger:focus-visible{outline:2px solid var(--cyan);outline-offset:-3px}
@media(max-width:1150px){header .tabs{order:initial}}
@media(max-width:650px){header .tabs{width:100%}header .nav-dropdown{min-width:150px}.nav-group:last-of-type .nav-dropdown{left:auto;right:0;transform:none}}
/* Player profile: identity rail and wide settings tables */
#profileView{scroll-behavior:smooth;scroll-padding-top:16px}.player-layout{display:grid;grid-template-columns:265px minmax(0,1fr);gap:22px;padding:6px 0}.player-sidebar{align-self:start;position:sticky;top:6px;display:grid;gap:14px}.player-identity{padding:20px}.player-logo{height:135px;display:flex;align-items:center;justify-content:center;margin:-4px -4px 20px;border-radius:10px;background:#0b1422;border:1px solid var(--line);overflow:hidden}.player-logo img{width:240px;max-width:100%;mix-blend-mode:screen}.player-game{font-size:12px;font-weight:750;letter-spacing:.12em;color:var(--cyan)}.player-identity h1{margin:8px 0 18px}.player-facts{display:grid;gap:10px;margin-bottom:18px}.player-facts>div{display:flex;justify-content:space-between;gap:10px;font-size:14px}.player-facts span{color:var(--muted)}.player-facts b{font-weight:600}.player-identity p{font-size:14px;line-height:1.6;margin:16px 0 10px}.player-content{min-width:0;display:grid;gap:16px;align-content:start}.player-section-heading{padding:2px 0 0}.player-section-heading h2{font-size:26px;margin:5px 0 4px}.player-section-heading>.muted{font-size:14px}.player-setting{padding:0;scroll-margin-top:16px;overflow:hidden}.player-setting-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line);background:#142033}.player-setting-heading h3{font-size:18px;margin:0}.player-setting-heading span{font-size:14px}.player-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:8px 20px 16px;gap:0 20px}.player-settings-grid>div{min-width:0;padding:14px 0;border-bottom:1px solid var(--line)}.player-settings-grid dt{font-size:14px;color:var(--muted);margin-bottom:7px}.player-settings-grid dd{font-size:16px;margin:0;color:#d7e4f5}.player-gear-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.player-gear{padding:18px;min-height:126px;display:flex;flex-direction:column;justify-content:center;gap:9px}.player-gear-label{font-size:14px;color:var(--cyan);font-weight:650}.player-gear strong{font-size:18px}.player-gear small{font-size:13px}#profileView section{scroll-margin-top:16px}
@media(max-width:1000px){.player-layout{grid-template-columns:220px minmax(0,1fr);gap:16px}.player-settings-grid,.player-gear-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.player-setting-heading{flex-wrap:wrap}.player-sidebar{position:static}}
@media(max-width:700px){.player-layout{grid-template-columns:1fr}.player-sidebar{grid-template-columns:1fr}.player-logo{height:110px}.player-settings-grid{padding:8px 16px 16px;gap:0 14px}.player-section-heading h2{font-size:23px}.player-setting-heading{padding:16px}.player-gear-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:380px){.player-settings-grid,.player-gear-grid{grid-template-columns:1fr}}
/* Refined header without changing its placement */
header{border-bottom:1px solid #24334880;margin-bottom:8px}header .brand{color:var(--text)}header .tab{border:1px solid transparent;border-radius:8px;transition:background .15s,color .15s,border-color .15s}header .tab:hover{background:#152235;border-color:transparent;color:var(--text)}header .tab.active{background:#152a3a;color:var(--cyan);border-color:#60d7ed26}.nav-chevron{font-size:13px;color:#71849b;margin-left:2px}.nav-dropdown{top:calc(100% + 6px);padding:5px;border-color:#34445a;background:#101b2b;border-radius:10px;box-shadow:0 16px 32px #0006;min-width:180px}.nav-dropdown:before{content:"";position:absolute;top:-12px;left:0;right:0;height:12px}.nav-dropdown button{padding:11px 12px;font-weight:500}.nav-dropdown button:hover,.nav-dropdown button:focus-visible{background:#1b2c40;color:var(--text)}
@media(max-width:1150px){header{padding-bottom:6px}header .tabs{padding:4px 0}header .brand-wrap{min-height:48px}}
/* Keep the player rail stationary; only the details pane scrolls. */
main:has(#profileView.active){overflow:hidden!important}#profileView.active{height:100%;min-height:0;overflow:hidden;padding-bottom:0}#profileView .player-layout{overflow:hidden;align-items:start}#profileView .player-sidebar{position:static;min-height:0}#profileView .player-content{height:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scroll-padding-top:8px;padding-bottom:20px}#profileView .player-identity{padding:16px}#profileView .player-facts{gap:7px;margin-bottom:10px}#profileView .player-identity p{margin:10px 0 6px}
@media(max-height:780px) and (min-width:701px){#profileView .player-logo{height:65px;margin-bottom:8px}#profileView .player-identity p,#profileView .player-identity>small{display:none}#profileView .player-identity h1{font-size:27px}}
@media(max-width:700px){#profileView .player-layout{gap:14px}#profileView .player-sidebar{display:block}#profileView .player-identity{display:grid;grid-template-columns:64px 1fr;column-gap:14px;padding:12px}#profileView .player-logo{grid-column:1;grid-row:1/3}#profileView .player-logo img{width:120px;max-width:none}#profileView .player-game{grid-column:2}#profileView .player-identity h1{grid-column:2;margin:2px 0;font-size:25px}#profileView .player-facts,#profileView .player-identity p,#profileView .player-identity>small{display:none}#profileView .player-content{padding-right:6px}}
/* Constrain the grid row so long settings cannot stretch the fixed rail. */
@media(min-width:701px){#profileView .player-layout{grid-template-rows:minmax(0,1fr)} }
#profileView .player-content{min-width:0;max-height:100%;overflow-x:hidden}

/* Shared transparent Bovlid emblem */
header .brand-mark{display:flex;align-items:center;justify-content:center;overflow:visible}
header .brand-mark img{position:static;display:block;width:100%;height:100%;max-width:100%;object-fit:contain;transform:none;mix-blend-mode:normal}
#profileView .player-logo{border-radius:0}
#profileView .player-logo img{display:block;width:auto;height:100%;max-width:100%;object-fit:contain;mix-blend-mode:normal}
/* Settings retain their natural height inside the scrolling pane. */
#profileView .player-content{display:block}#profileView .player-content> *{margin-bottom:16px}#profileView .player-content>.player-setting{height:auto;min-height:max-content}
/* Profile shares the rounded analysis frame. */
#profileView.active{display:flex;flex-direction:column;gap:14px}#profileView .player-layout{height:auto;flex:1;min-height:0;padding:8px;gap:14px;border-radius:15px;grid-template-columns:minmax(220px,290px) minmax(0,1fr)}#profileView .player-sidebar{gap:12px}#profileView .player-content{padding-right:8px;padding-top:0;scroll-behavior:auto}#profileView .player-content>.player-setting{overflow:hidden;border-radius:15px;margin-bottom:14px}#profileView .player-setting-heading{border-radius:0;background:transparent;padding:14px 16px}#profileView .player-settings-grid{padding:0 16px 14px;gap:0 14px}#profileView .player-identity,#profileView .player-gear{border-radius:15px}#profileView .player-identity{background:var(--bg)}#profileView .player-logo{background:transparent;border:0;height:70px;margin-bottom:8px}#profileView .player-identity h1{font-size:25px;margin:4px 0 10px}#profileView .player-identity p,#profileView .player-identity>small{display:none}#profileView .player-content>.player-equipment-section{margin-bottom:14px}#profileView .player-section-heading h2{font-size:19px}#profileView .player-gear-grid{gap:14px}#profileView .player-gear{min-height:100px;padding:14px}#profileView .player-setting-heading h3{font-size:16px}#profileView .player-settings-grid dd{font-size:15px}
@media(max-width:700px){#profileView .player-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}#profileView .player-logo{height:64px;margin:0}}
header a.brand-wrap{text-decoration:none;color:var(--text);border-radius:8px}header a.brand-wrap:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}header a.brand-wrap:hover .brand{color:var(--cyan)}
/* Social icons follow Bovlid's palette rather than platform brand colors. */
.social-links .social-link{color:var(--muted);transition:color .15s,background .15s}.social-links .social-link svg{color:currentColor}.social-links .social-link img{filter:grayscale(1) brightness(0) invert(.75);opacity:.9;transition:filter .15s,opacity .15s}
/* Minimal social hover: a gentle tonal change, with no tile or outline. */
.social-links .social-link:hover,.social-links .social-link:focus-visible{background:transparent;color:#c5d3e4;outline:none;box-shadow:none}.social-links .social-link:hover img,.social-links .social-link:focus-visible img{filter:grayscale(1) brightness(0) invert(.85);opacity:1}.social-links .social-link:focus-visible{outline:1px solid var(--muted);outline-offset:2px}
/* Overview tooltips keep a single layout for zero, measured and missing values. */
#dashboard .chart-tooltip,#dashboard .chart-tooltip.is-empty{width:250px;min-width:0;max-width:calc(100% - 16px);padding:10px 12px;box-sizing:border-box}#dashboard .chart-tooltip>strong,#dashboard .chart-tooltip.is-empty>strong{display:block;margin-bottom:7px}#dashboard .chart-tooltip .tip-row,#dashboard .chart-tooltip.is-empty .tip-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:3px 0}#dashboard .chart-tooltip .tip-row span,#dashboard .chart-tooltip.is-empty .tip-row span{display:block;white-space:normal;font-size:14px}#dashboard .chart-tooltip .tip-row b,#dashboard .chart-tooltip.is-empty .tip-row b{display:block;white-space:nowrap;font-size:14px}#dashboard .chartline{stroke-width:3;opacity:1}
/* One chart and tooltip treatment across overview, scenarios, matches and DM. */
.chart-surface{position:relative;min-width:0}.chart-surface .chartline{stroke-width:2;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.chart-surface .chart-dot{vector-effect:non-scaling-stroke;stroke-width:1.5}.chart-surface .chart-dot.is-selected{stroke:var(--text);stroke-width:2}.chart-surface svg.chart text{font-family:system-ui,"Segoe UI",sans-serif;font-size:12px;fill:var(--muted)}
.shell .view .chart-surface .chart-tooltip{width:240px!important;min-width:0!important;max-width:calc(100% - 16px)!important;padding:10px 12px!important;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--panel)!important;box-shadow:0 6px 18px #0006!important;text-align:left!important;font-size:14px!important;line-height:1.4!important;color:var(--text)}
.shell .view .chart-surface .chart-tooltip>strong{display:block!important;margin:0 0 7px!important;font-size:14px!important;font-weight:650!important;line-height:1.4!important}.shell .view .chart-surface .chart-tooltip .tip-row{display:flex!important;justify-content:space-between!important;align-items:center!important;gap:12px!important;padding:3px 0!important}.shell .view .chart-surface .chart-tooltip .tip-row span{display:block!important;flex:1;min-width:0;color:var(--muted)!important;font-size:14px!important;line-height:1.4!important;white-space:normal!important}.shell .view .chart-surface .chart-tooltip .tip-row b{display:block!important;flex:none;font-size:14px!important;font-weight:650!important;line-height:1.4!important;white-space:nowrap!important;color:var(--text)!important}.shell .view .chart-surface .chart-tooltip .tip-duration{border-top:1px solid var(--line);margin-top:6px;padding-top:8px!important}
@media(max-width:650px){.shell .view .chart-surface .chart-tooltip .tip-row{flex-wrap:wrap!important}.shell .view .chart-surface .chart-tooltip .tip-row b{white-space:normal!important}}
/* Explanatory and button tooltips share the chart tooltip palette and spacing. */
.site-tooltip{box-sizing:border-box;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 6px 18px #0006;color:var(--text);font:500 14px/1.4 system-ui,"Segoe UI",sans-serif;text-align:left;white-space:normal}.site-tooltip{position:fixed;z-index:100;max-width:min(280px,calc(100vw - 16px));pointer-events:auto;max-height:calc(100dvh - 16px);overflow:auto;overscroll-behavior:contain}.site-tooltip[hidden]{display:none}
/* Shared restrained hover language across controls and selectable rows. */
.shell :is(.btn,.scenario-choice,.benchmark-action,.benchmark-difficulties button){transition:background-color .15s,border-color .15s,color .15s;box-shadow:none}.shell :is(.btn,.scenario-choice,.benchmark-action,.benchmark-difficulties button):hover{background:#17283a;border-color:#60d7ed55;color:var(--text);box-shadow:none}.shell :is(.btn,.scenario-choice,.benchmark-action,.benchmark-difficulties button):focus-visible{outline:2px solid var(--cyan);outline-offset:2px;box-shadow:none}.shell tr[data-run-id]:hover,.shell .benchmark-table tbody tr:hover{background:#17283a}.shell button:disabled{cursor:default}.shell button:disabled:hover{border-color:var(--line);color:var(--muted)}

/* Readable centered navigation */
header{min-height:80px;grid-template-columns:minmax(140px,1fr) auto minmax(140px,1fr);gap:12px}
header .tabs{gap:5px;padding:8px 0}
header .tab{padding:11px 13px;min-height:44px;color:#c5d3e4}
header .nav-chevron{font-size:16px;color:#a9b8ca}
header .nav-dropdown button{min-height:44px;padding:11px 14px}
@media(max-width:1150px){header{grid-template-columns:1fr auto;gap:0 12px}header .tabs{grid-column:1/-1;grid-row:2;justify-self:center}header .tab{padding:10px 12px}header>.actions{grid-column:2;grid-row:1}}
@media(max-width:650px){header .tabs{gap:3px;flex-wrap:wrap}header .tab{font-size:15px;padding:10px}}

/* Brand proportion matched to the larger navigation */
header .brand-mark{width:48px;height:48px}
header .brand{font-size:28px;line-height:1.2}
header .brand-wrap{gap:10px;min-height:48px}
@media(max-width:650px){header .brand-mark{width:44px;height:44px}header .brand{font-size:26px}}

/* Reserve full pages so KovaaK's pagination stays stationary. */

/* Exact page frame includes table borders and button states. */



/* Consistent empty charts retain their layout without inventing zero measurements. */
.chart-surface>.empty{min-height:185px;display:grid;place-items:center;padding:24px;text-align:center;box-sizing:border-box}
.view .empty{color:var(--muted);font-size:14px}

/* Missing measurements use the same chart footprint as available measurements. */
.metric-panel .chart-surface>.empty{min-height:150px;padding:12px}
.shell :is(button,input,select):disabled{opacity:.55;cursor:default}

.scenario-list>.empty{grid-column:1/-1;align-self:start;padding:16px 10px}
@media(min-width:1200px) and (min-height:950px){#dashboard .chart-surface>.empty{min-height:0;flex:1;width:100%}}

#matches .map-win-row.active{border-color:var(--cyan);background:#18344a}

/* Keep profile links reachable when the fixed rail exceeds a short viewport. */
@media(min-width:701px){#profileView .player-sidebar{max-height:100%;overflow-y:auto;overscroll-behavior:contain}}
@media(prefers-reduced-motion:reduce){#profileView,#profileView .player-content{scroll-behavior:auto}.shell :is(.btn,.scenario-choice,.benchmark-action,.benchmark-difficulties button,.social-link,.social-link img){transition:none}}

/* Shared KPI geometry: two-line labels and descriptions remain inside the card. */
:is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis){gap:14px!important;margin:0 0 14px!important;align-items:stretch;grid-auto-rows:auto}
:is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis)>.kpi{height:auto!important;min-height:128px;display:flex;flex-direction:column;padding:14px!important}
:is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis)>.kpi .label{min-height:2.6em;overflow-wrap:anywhere}
:is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis)>.kpi strong{margin:6px 0!important}
:is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis)>.kpi small{display:block;margin-top:auto;overflow-wrap:anywhere}
@media(min-width:1200px) and (min-height:950px){#dashboard.view.active{grid-template-rows:max-content minmax(180px,1fr) minmax(180px,1fr)}}
@media(max-width:560px){.shell :is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis){grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:380px){.shell :is(#overview,#kovKpis,#matchKpis,#dmKpis,#benchmarkKpis){grid-template-columns:1fr!important}}
/* The same nested metric panel on scenarios, matches and Deathmatch. */
/* One analysis frame. Service-specific styles belong only in the extension. */
.view[data-analysis-page].active{display:flex;flex-direction:column;height:auto;min-height:100%;gap:0}
.analysis-card{flex:1;padding:14px;min-width:0;overflow:visible}
.analysis-head{display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:44px;margin:0 0 14px;flex-wrap:wrap}
.analysis-head>h2{margin:0;flex:none;min-height:44px;display:flex;align-items:center;align-self:flex-start}
.analysis-filters{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;min-width:0;margin-left:auto}
.analysis-filters label{display:flex;align-items:center;gap:8px;min-width:0}
.analysis-filters :is(input,select,.btn){height:40px;min-height:40px;box-sizing:border-box;padding:8px 12px;border-radius:9px;max-width:100%;font:inherit;font-size:var(--type-body)}
.analysis-filters input[type=search]{width:220px}
.analysis-filters :is(input[type=date],select){width:160px}
.analysis-filters .btn{white-space:nowrap}
.analysis-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:14px;margin:0;min-width:0;align-items:stretch}
.analysis-side{min-width:0;border-right:1px solid var(--line);padding:0 14px 0 0;align-self:stretch;overflow:visible}
.analysis-side>h3{margin:0 0 10px;min-height:24px;line-height:1.5}
.analysis-list{display:grid;grid-template-columns:1fr;grid-auto-rows:56px;gap:5px;align-content:start;min-height:300px;overflow:visible}
.analysis-list>.scenario-choice{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;width:100%;height:56px;padding:6px 9px;min-width:0;overflow:hidden;border-radius:10px;line-height:1.3}
.analysis-list>.scenario-choice>b{display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.analysis-list>.scenario-choice small{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:3px}
.analysis-list>.empty{grid-column:1/-1;grid-row:1/6;min-height:300px;display:grid;place-items:center;padding:16px 10px}
.analysis-detail{min-width:0;overflow:visible;position:static}
.analysis-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px;margin:0 0 8px}
.analysis-detail-head>h2{min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.analysis-stats{display:flex;align-items:center;flex-wrap:wrap;gap:7px 14px;min-height:34px;margin:0 0 14px;color:var(--muted)}
.analysis-stats b{color:var(--text)}
.analysis-charts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 14px}
.analysis-charts>.metric-panel{position:relative;min-width:0;margin:0;padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#101a2a}
.analysis-charts>.metric-panel>h3{min-height:22px;margin:0 0 4px}
.analysis-charts>.metric-panel>div{position:relative;min-width:0}
.analysis-charts svg.chart{height:150px;width:100%}
.analysis-charts .chart-surface>.empty{min-height:150px;padding:12px}
.analysis-extension{min-width:0;border-top:1px solid var(--line);padding-top:14px}
.analysis-extension>h3{margin:0 0 10px}
.analysis-pager{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:5px;min-height:36px;margin:8px 0 0;font-size:var(--type-small)}
.analysis-pager>.btn{height:34px;min-height:34px;padding:6px 8px;white-space:nowrap}
.analysis-pager>.status{text-align:center;white-space:nowrap;font-size:var(--type-small);font-variant-numeric:tabular-nums}
@media(max-width:980px){.analysis-layout{grid-template-columns:1fr}.analysis-side{border-right:0;border-bottom:1px solid var(--line);padding:0 0 14px}.analysis-list{grid-template-columns:repeat(2,minmax(0,1fr));min-height:178px}.analysis-list>.empty{grid-row:1/4;min-height:178px}}
@media(max-width:680px){.analysis-charts{grid-template-columns:1fr}.analysis-head{align-items:flex-start}.analysis-filters{width:100%;justify-content:flex-start;margin-left:0}.analysis-filters label{flex:1 1 160px;flex-wrap:wrap}.analysis-filters input[type=search]{width:100%}.analysis-filters label :is(input,select){width:100%}.analysis-detail-head>h2{white-space:normal}.analysis-card{padding:12px}}
@media(max-width:520px){.analysis-list{grid-template-columns:1fr;min-height:300px}.analysis-list>.empty{grid-row:1/6;min-height:300px}}
.analysis-extension{min-height:0}
.analysis-extension-content{min-width:0;min-height:200px}
.analysis-extension .empty{display:grid;place-items:center;min-height:200px;padding:20px 10px}

.site-footer{height:auto;grid-template-rows:auto auto}
.view .calendar-filter{display:flex;align-items:center;gap:8px;min-width:0}
.view .calendar-input{width:160px;height:40px;min-height:40px;box-sizing:border-box;padding:8px 12px;border-radius:9px;max-width:100%;font:inherit;font-size:var(--type-body);line-height:1.3;font-variant-numeric:tabular-nums}
@media(max-width:680px){.view .calendar-filter{flex:1 1 160px;flex-wrap:wrap}.view .calendar-filter .calendar-input{width:100%}}

.social-links .footer-status-link{background:transparent;border:0;font:inherit;font-size:var(--type-label);font-weight:650}

/* Benchmark uses the same four KPI cards as every statistics page. */
#benchmarkView .benchmark-shell{grid-template-rows:max-content minmax(0,1fr)}
#benchmarkView #benchmarkKpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));height:auto;min-height:0;padding:0;border:0;border-radius:0;background:transparent;margin:0!important;gap:14px}
#benchmarkView .benchmark-analysis>.section-head{flex:none}
#benchmarkView .benchmark-analysis>.section-head h2{margin:0}
@media(max-width:1199px),(max-height:949px){#benchmarkView .benchmark-shell{height:auto;grid-template-rows:max-content auto}}
@media(max-width:850px){#benchmarkView #benchmarkKpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:380px){#benchmarkView #benchmarkKpis{grid-template-columns:1fr}}
.benchmark-export .benchmark-head{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:0;border:0;background:transparent;height:auto}
.benchmark-export .benchmark-head>.kpi{min-height:128px;padding:14px;display:flex;flex-direction:column}
.benchmark-export .benchmark-head .label{min-height:2.6em}.benchmark-export .benchmark-head small{margin-top:auto}

#benchmarkView .benchmark-analysis{padding:14px;gap:0}
#benchmarkView .benchmark-section-head{margin:0 0 14px;min-height:44px;gap:14px}
#benchmarkView .benchmark-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;flex:none;padding:0;margin:0 0 14px;border:0;background:transparent}
#benchmarkView .benchmark-toolbar .benchmark-tools{padding:0;border:0;width:auto;justify-content:flex-start}
#benchmarkView .benchmark-section-head #benchmarkSubtitle{min-width:0;text-align:right}
#benchmarkView .benchmark-toolbar .benchmark-tools{display:flex;align-items:center;flex-wrap:wrap;gap:12px}
#benchmarkView .benchmark-toolbar .benchmark-difficulty-filter{margin:0}
#benchmarkView .benchmark-toolbar .benchmark-action{min-height:36px;background:var(--panel);border-color:var(--line);color:var(--text)}
#benchmarkView .benchmark-toolbar .benchmark-action:hover,#benchmarkView .benchmark-toolbar .benchmark-action:focus-visible{border-color:var(--cyan);background:#22384d}
#benchmarkView .benchmark-toolbar .benchmark-playlist{color:var(--cyan)}
#benchmarkView .benchmark-toolbar .benchmark-tool-actions{margin-left:auto;flex-wrap:wrap;gap:8px}
#benchmarkView .benchmark-playlist{margin-right:0}
@media(max-width:680px){#benchmarkView .benchmark-analysis{padding:12px}#benchmarkView .benchmark-section-head{flex-wrap:wrap}#benchmarkView .benchmark-section-head #benchmarkSubtitle{text-align:left}#benchmarkView .benchmark-toolbar .benchmark-tool-actions{margin-left:0}#benchmarkView .benchmark-difficulty-filter{max-width:100%}#benchmarkView .benchmark-difficulties{max-width:100%}}

/* Compact scenario names free the progression area, with keyboard-accessible names. */
.benchmark-table .benchmark-scenario-number{display:none}
#benchmarkView .benchmark-table.benchmark-names-collapsed{min-width:calc(340px + var(--benchmark-rank-count,9)*96px)}
#benchmarkView .benchmark-names-collapsed .scenario-col{width:40px}
#benchmarkView .benchmark-names-collapsed .progress-col{width:auto}
#benchmarkView .benchmark-names-collapsed .scenario-name{text-align:center;padding:3px}
#benchmarkView .benchmark-names-collapsed .benchmark-scenario-number{display:inline-block;max-width:100%;cursor:help;color:var(--muted)}
#benchmarkView .benchmark-names-collapsed th:first-child{padding-left:3px;text-align:center}
#benchmarkView .benchmark-scenario-number:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:3px}

.benchmark-scenario-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}
.benchmark-names-toggle{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--muted);font:inherit;font-size:20px;line-height:1;cursor:pointer}
.benchmark-names-toggle:hover{background:#243348;color:var(--cyan)}
.benchmark-names-toggle:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

#profileView .player-facts>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:12px;align-items:start}
#profileView .player-facts b{text-align:left;min-width:0;overflow-wrap:anywhere}

/* Equipment cards retain the same image frame and text rows for every product. */
#profileView .player-gear-link{display:flex;flex-direction:column;justify-content:flex-start;gap:9px;padding:14px;color:var(--text);text-decoration:none}
.player-gear-image{display:flex;align-items:center;justify-content:center;width:100%;height:150px;padding:12px;border-radius:10px;background:#fff;overflow:hidden}
.player-gear-image img{display:block;width:100%;height:100%;object-fit:contain}
#profileView .player-gear-link strong{min-height:2.6em;overflow-wrap:anywhere}
#profileView .player-gear-link small{margin-top:auto}
#profileView .player-gear-link:hover{border-color:var(--cyan);background:#17283a}
#profileView .player-gear-link:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
@media(max-width:560px){.player-gear-image{height:120px;padding:8px}}

/* Selected controls retain the same accent while hovered. */
.shell :is(.scenario-choice.active,.benchmark-difficulties button.active):hover{background:#18344a;color:var(--cyan)}

/* Long configuration codes retain their full text inside the shared settings grid. */
.player-settings-grid .player-setting-wide{grid-column:1/-1}
.player-settings-grid dd{overflow-wrap:anywhere}

.profile-copy-code{display:block;width:100%;text-align:left;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:10px 12px;overflow-wrap:anywhere}
.profile-copy-code code{font:inherit;white-space:normal}
.profile-copy-code:hover{border-color:var(--cyan)}
.profile-copy-code:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.profile-copy-code+small{display:block;margin-top:7px}

.profile-config-download{display:inline-flex;align-items:center;justify-content:center;max-width:100%;text-decoration:none;white-space:normal}

.profile-launch-code{overflow-x:auto;overflow-wrap:normal}
.profile-launch-code code{white-space:nowrap}

.player-summary{display:grid;gap:4px;padding:14px}
.player-summary h2{margin:0 0 6px}
.player-summary a{display:block;padding:7px 10px;color:var(--muted);text-decoration:none;border-radius:9px;font-size:var(--type-body)}
.player-summary a:hover{color:var(--text);background:var(--bg)}
.player-summary a:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

.player-summary a>span{color:var(--cyan);margin-right:6px}

/* Pagination lives outside scrolling records, with stable columns on every page. */
.analysis-extension>.analysis-pager{flex:none}
.info-control{display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--muted);font:inherit;cursor:help}
.info-control:hover{color:var(--text)}
.info-control:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

/* Low/narrow windows use document scrolling; no fixed pane may hide the bottom. */
@media(max-width:1199px),(max-height:949px){
 html,body{height:auto;min-height:100%;overflow:auto}
 .shell{height:auto;min-height:100dvh;overflow:visible}
 .shell main,.shell main:has(#profileView.active){flex:1 0 auto;overflow:visible!important;padding-bottom:18px}
 #profileView.active{height:auto;overflow:visible;padding-bottom:0}
 #profileView .player-layout{flex:none;height:auto;overflow:visible;grid-template-rows:auto}
 #profileView .player-content{height:auto;max-height:none;overflow:visible;padding-bottom:0}
 #profileView .player-sidebar{max-height:none;overflow:visible}
}

/* Explicit foreground also reaches Safari's native date-value rendering. */
.view .calendar-input{appearance:none;-webkit-appearance:none;color:var(--text);-webkit-text-fill-color:var(--text)}
.view .calendar-input::-webkit-date-and-time-value{color:var(--text);-webkit-text-fill-color:var(--text);text-align:left}
.view .calendar-input::-webkit-datetime-edit{color:var(--text);-webkit-text-fill-color:var(--text)}

.dm-weapon-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dm-weapon-card{min-width:0;overflow:auto;border:1px solid var(--line);border-radius:10px}.dm-weapon-card table{width:100%;min-width:0;table-layout:auto}.dm-weapon-card th,.dm-weapon-card td{padding:8px 6px}.dm-weapon-card th:first-child,.dm-weapon-card td:first-child{width:40%}
@media(max-width:560px){.dm-weapon-grid{grid-template-columns:1fr}}

/* Extra service information stays outside normal page flow. */
.analysis-details-button{flex:none}
.analysis-extra-panel{position:fixed;inset:0;margin:auto;width:min(720px,calc(100vw - 32px));max-height:calc(100dvh - 48px);box-sizing:border-box;overflow:auto;padding:20px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:15px;box-shadow:0 16px 60px #0008}
.analysis-extra-panel::backdrop{background:#0005}
.analysis-extra-panel .analysis-extension{display:block;flex:none;border:0;padding:0}
.analysis-extra-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.analysis-extra-head h3{margin:0}
.analysis-extra-panel .analysis-extension-content{min-height:0;overflow:visible}
.analysis-extra-panel .analysis-extension .empty{min-height:100px;height:auto}

/* Statistics share the overview's available viewport, including laptop windows.
   Smaller/mobile windows and long-form pages keep natural document scrolling. */
@media(min-width:1000px) and (min-height:650px){
 html:has(:is(#dashboard,[data-analysis-page],#profileView,#benchmarkView,#managementStatus).active),body:has(:is(#dashboard,[data-analysis-page],#profileView,#benchmarkView,#managementStatus).active){height:100%;overflow:hidden}
 .shell:has(:is(#dashboard,[data-analysis-page],#profileView,#benchmarkView,#managementStatus).active){height:100dvh;min-height:0;overflow:hidden}
 .shell:has(:is(#dashboard,[data-analysis-page],#profileView,#benchmarkView,#managementStatus).active) main{flex:1 1 0;min-height:0;overflow:hidden!important;padding-top:18px;padding-bottom:18px}
 :is(#dashboard,[data-analysis-page]).active{height:100%;min-height:0;display:grid;gap:14px;grid-template-rows:max-content minmax(0,1fr)}
 :is(#dashboard,[data-analysis-page]).active>.grid{margin:0!important}
 #dashboard.active{grid-template-rows:max-content minmax(0,1fr) minmax(0,1fr)}
 #dashboard :is(#activityCharts,#dailyCharts){margin:0;min-height:0}
 #dashboard :is(#activityCharts,#dailyCharts)>.card{min-height:0;display:flex;flex-direction:column;padding:9px 14px;overflow:auto}
 #dashboard :is(#volumeChart,#gameVolumeChart,#sleepChart,#dmVolumeChart){flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}
 #dashboard svg.chart{height:100%;min-height:0;max-height:240px;flex:1}
 #dashboard .chart-surface>.empty{min-height:0;flex:1}
 .analysis-card{display:flex;flex-direction:column;min-height:0;padding:14px;overflow:hidden}
 .analysis-head{flex:none}
 .analysis-layout{flex:1;min-height:0}
 .analysis-side{display:flex;flex-direction:column;min-height:0}
 .analysis-side>h3,.analysis-pager{flex:none}
 .analysis-list{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
 .analysis-list>.empty{grid-row:auto;min-height:0;height:100%}
 .analysis-detail{min-height:0;overflow:auto;overscroll-behavior:contain}
 .analysis-charts{margin-bottom:0}
 #profileView.active,#benchmarkView.active{height:100%;min-height:0;overflow:hidden}
 #profileView .player-layout{flex:1;min-height:0;height:100%;overflow:hidden;grid-template-rows:minmax(0,1fr)}
 #profileView .player-content{height:100%;min-height:0;max-height:100%;overflow-y:auto;overflow-x:hidden;padding-bottom:14px;overscroll-behavior:contain}
 #profileView .player-sidebar{min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain}
 #benchmarkView .benchmark-shell{height:100%;min-height:0;grid-template-rows:max-content minmax(0,1fr)}
 #benchmarkView .benchmark-analysis{min-height:0;overflow:hidden;padding:14px}
 #benchmarkView .benchmark-scroll{min-height:0;max-height:none;overflow:auto;overscroll-behavior:contain}
}

/* Keep the complete profile contents menu visible in the common desktop frame. */
@media(min-width:1000px) and (min-height:650px){
 #profileView .player-sidebar{display:flex;flex-direction:column;gap:10px;height:100%;overflow:visible}
 #profileView .player-identity{flex:none;padding:10px 12px}
 #profileView .player-logo{height:40px;margin:0 0 4px}
 #profileView .player-identity h1{margin:2px 0 6px}
 #profileView .player-facts{gap:4px;margin:0}
 #profileView .player-summary{flex:1;min-height:0;grid-template-columns:1fr;grid-template-rows:auto repeat(10,minmax(0,1fr));gap:0;padding:10px}
 #profileView .player-summary h2{grid-column:1/-1;margin:0 0 4px}
 #profileView .player-summary a{display:flex;align-items:center;gap:8px;padding:3px 8px;line-height:1.3}
 #profileView .player-summary a>span{flex:none;width:8px;margin-right:0;text-align:center}
}

/* Long names cannot change table column widths or row heights. */
#benchmarkView .benchmark-table .scenario-name{position:relative;overflow:hidden;white-space:nowrap}
#benchmarkView .benchmark-table .benchmark-scenario-name{display:block;width:calc(100% - 24px);max-width:calc(100% - 24px);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px}
#benchmarkView .benchmark-table .benchmark-scenario-link{position:absolute;right:4px;top:50%;transform:translateY(-50%);float:none;margin:0}
#benchmarkView .benchmark-names-collapsed .benchmark-scenario-name,#benchmarkView .benchmark-names-collapsed .benchmark-scenario-link{display:none}
#benchmarkView .benchmark-table .scenario-name .benchmark-scenario-number{display:none}
#benchmarkView .benchmark-names-collapsed .scenario-name .benchmark-scenario-number{display:inline-block}

/* Status uses the common page frame and a quiet, readable service list. */
.service-status-panel{display:flex;flex-direction:column;gap:14px;min-height:0}
.service-status-panel>.section-head{margin:0;min-height:44px}
.service-status-summary{display:flex;align-items:center;gap:12px;padding:22px;border:1px solid var(--line);border-radius:10px;background:var(--bg);font-weight:650}
.service-status-summary::before,.service-status-state::before{content:'';width:8px;height:8px;flex:none;border-radius:50%;background:var(--muted)}
.service-status-summary[data-state="updated"]::before,.service-status-state[data-state="updated"]::before{background:var(--green)}
.service-status-summary[data-state="unavailable"]::before,.service-status-state[data-state="unavailable"]::before{background:#f2b36b}
.service-status-summary[data-state="running"]::before,.service-status-state[data-state="running"]::before{background:var(--cyan)}
.service-status-heading{margin:12px 0 0}
.service-status-list{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;border-top:1px solid var(--line)}
.service-status-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 18px;padding:18px 20px;border-bottom:1px solid var(--line)}
.service-status-row:last-child{border-bottom:0}
.service-status-row h3,.service-status-row p{margin:0}
.service-status-row h3{align-self:center}
.service-status-state{display:flex;align-items:center;justify-self:end;gap:8px}
.service-status-row>.muted{grid-column:1/-1;font-size:var(--type-small)}
#serviceStatusMessage{margin:0}
@media(min-width:1000px) and (min-height:650px){#managementStatus.active{height:100%;min-height:0;overflow:hidden}#managementStatus .service-status-panel{height:100%;box-sizing:border-box;padding:14px}}
@media(max-width:560px){.service-status-row{grid-template-columns:minmax(0,1fr);padding:14px}.service-status-state{justify-self:start}.service-status-panel>.section-head{gap:12px;flex-wrap:wrap}}

.service-availability{grid-column:1/-1;min-width:0;margin-top:8px}
.service-availability-caption{display:flex;justify-content:space-between;gap:12px;margin-top:8px;color:var(--muted);font-size:var(--type-small);font-variant-numeric:tabular-nums}
.service-availability-caption span:nth-child(2){color:var(--text)}
.service-status-panel>.service-availability-note{margin:0;font-size:var(--type-small)}
@media(max-width:560px){.service-availability-caption{gap:6px}}

/* Four status histories fit the shared laptop frame without an extra date row. */
@media(min-width:1000px) and (min-height:650px){
 #managementStatus .service-status-panel{gap:8px}
 #managementStatus .service-status-summary{flex:none;padding:10px 14px}
 #managementStatus .service-status-heading{flex:none;margin:0}
 #managementStatus .service-status-list{display:grid;grid-template-rows:repeat(4,minmax(max-content,1fr))}
 #managementStatus .service-status-row{grid-template-columns:minmax(130px,1fr) auto minmax(210px,1fr);grid-template-rows:auto auto;align-content:center;gap:4px 16px;padding:6px 14px}
 #managementStatus .service-status-row h3{grid-column:1;grid-row:1}
 #managementStatus .service-status-state{grid-column:3;grid-row:1}
 #managementStatus .service-status-row>.muted{grid-column:2;grid-row:1;align-self:center;text-align:center}
 #managementStatus .service-availability{grid-row:2;margin-top:2px}
 #managementStatus .service-availability-caption{margin-top:4px}
 #managementStatus .service-availability-note{flex:none}
}


.service-status-title{display:flex;align-items:center;gap:8px;min-width:0;min-height:44px}
.service-status-title h2{margin:0}
.service-status-title .info-control{align-self:center;line-height:1}
.site-tooltip[data-layout="guide"]{max-width:min(560px,calc(100vw - 16px));white-space:pre-line;font-weight:400;font-size:var(--type-label);line-height:1.4}

/* Availability uses the shared chart tooltip and interactions, in a compact strip. */
.service-availability .availability-timeline{min-width:0;position:relative}
.service-availability .availability-timeline svg.chart{display:block;width:100%;height:18px;min-height:0;max-height:18px;overflow:visible}
.service-availability .availability-timeline .chart-timeline-bar{opacity:.85;transition:opacity .15s}
.service-availability .availability-timeline .chart-timeline-bar.is-selected{opacity:1;stroke:var(--text);stroke-width:1.5}
.service-availability .availability-timeline .chart-tooltip{position:fixed;z-index:100}
@media(prefers-reduced-motion:reduce){.service-availability .availability-timeline .chart-timeline-bar{transition:none}}

#deathmatchView .weapon-label[data-site-tip]{cursor:help}
#deathmatchView .weapon-label[data-site-tip]:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:4px}
