:root{--bg:#070b11;--surface:#101925;--surface2:#142133;--line:#263a52;--text:#eef4fc;--muted:#91a4bd;--red:#ff4c62;--green:#35d6a1;--orange:#ffae55}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:radial-gradient(circle at 80% 0,#172337 0,transparent 33%),var(--bg);color:var(--text);font-family:Inter,"Segoe UI",system-ui,sans-serif}
.header{min-height:76px;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px max(18px,4vw);border-bottom:1px solid var(--line);background:rgba(7,11,17,.94);position:sticky;top:0;z-index:5}
.header>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.header>div:last-child{justify-content:flex-end}.header small{display:block;color:var(--muted);font-size:10px;letter-spacing:.16em}
.mark{display:grid;place-items:center;width:38px;height:38px;background:var(--red);clip-path:polygon(50% 0,100% 100%,50% 80%,0 100%);font-weight:900}.muted{color:var(--muted)}
main{width:min(1500px,94vw);margin:0 auto;padding:28px 0 50px}.hero{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px}.hero p{margin:0;color:var(--red);font-size:11px;font-weight:800;letter-spacing:.18em}.hero h1{margin:5px 0 0;font-size:32px}.hero label,.route-controls label{color:var(--muted);font-size:12px}.hero select,.route-controls select{display:block;margin-top:6px;min-width:260px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#09111b;color:#fff}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.tabs button{padding:11px 16px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--muted);font-weight:700;cursor:pointer}.tabs button.active{color:#fff;background:rgba(255,76,98,.15);border-color:var(--red)}.tab{display:none}.tab.active{display:block}
.panel{background:linear-gradient(145deg,rgba(20,33,51,.97),rgba(13,21,32,.97));border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 18px 45px rgba(0,0,0,.24)}.meta{margin-bottom:15px;color:var(--muted)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}th,td{padding:12px 13px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}th{font-size:11px;color:var(--muted)}th:nth-child(2),td:nth-child(2){text-align:left}td:first-child{color:var(--orange);font-weight:800}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}.card{padding:16px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}.card-head{display:flex;justify-content:space-between;gap:8px}.card h3{margin:0}.legend{color:var(--red);font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:14px 0}.stat{padding:9px 4px;text-align:center;background:#0a121d;border-radius:7px}.stat strong,.stat span{display:block}.stat span{font-size:9px;color:var(--muted);margin-top:3px}.weapon{border-top:1px solid var(--line);padding-top:10px;color:var(--muted);font-size:12px}.weapon strong{float:right;color:#fff}
.viewer-player-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px;padding:12px 16px}.viewer-player-toolbar label{color:var(--muted);font-size:12px}.viewer-player-toolbar select{display:block;min-width:190px;margin-top:5px;padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:#09111b;color:#fff}.compact-player-results{display:grid;gap:10px}
.team-performance{overflow:hidden;border:1px solid var(--line);border-radius:11px;background:var(--surface)}.team-performance-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:var(--surface2);border-bottom:1px solid var(--line)}.team-performance-head>div,.team-totals{display:flex;align-items:center;gap:12px}.team-place{min-width:32px;color:var(--orange);font-weight:900}.team-totals{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.compact-player-row{display:grid;grid-template-columns:minmax(170px,1.5fr) repeat(4,minmax(54px,.45fr)) minmax(190px,1.3fr);align-items:center;gap:8px;min-height:48px;padding:7px 14px;border-bottom:1px solid rgba(38,58,82,.7)}.compact-player-row:last-child{border-bottom:0}.compact-identity{min-width:0}.compact-identity strong,.compact-identity span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compact-identity span{margin-top:2px;color:var(--muted);font-size:11px}.compact-stat{display:flex;align-items:baseline;justify-content:flex-end;gap:5px;font-variant-numeric:tabular-nums}.compact-stat span{color:var(--muted);font-size:9px}.compact-stat strong{font-size:14px}.compact-stat.damage strong{color:#fff}.compact-weapon{min-width:0;padding-left:10px;border-left:1px solid var(--line);text-align:right}.compact-weapon span,.compact-weapon strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compact-weapon span{color:var(--muted);font-size:9px}.compact-weapon strong{margin-top:2px;font-size:11px}
.individual-ranking-head{display:flex;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface2)}.individual-ranking-head span{color:var(--muted);font-size:11px}.individual-ranking .compact-player-row{grid-template-columns:42px minmax(180px,1.5fr) repeat(4,minmax(54px,.45fr)) minmax(190px,1.3fr)}.individual-rank{color:var(--orange);font-weight:900;font-variant-numeric:tabular-nums}
.route-controls{display:flex;align-items:end;gap:16px;margin-bottom:14px;flex-wrap:wrap}.route-controls button{padding:10px 13px;border:1px solid var(--line);border-radius:8px;background:#0a1420;color:#dce8f7;font-weight:700;cursor:pointer}.route-controls button:hover{border-color:#4d7097}.route-operation-guide{align-self:center;color:#b4c7df;font-size:12px}.route-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:14px}.route-viewport{padding:0;min-height:540px;height:min(72vh,900px);overflow:hidden;position:relative;background:#03070c;cursor:grab;touch-action:none;user-select:none}.route-viewport.is-dragging{cursor:grabbing}.empty{min-height:540px;display:grid;place-items:center;color:var(--muted)}#route-stage{position:relative;width:100%;transform-origin:0 0;overflow:hidden;will-change:transform}#route-image{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none;-webkit-user-drag:none}#route-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.route-line{fill:none;stroke-width:3;opacity:.78;vector-effect:non-scaling-stroke}.route-point{cursor:pointer}.route-point circle{stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.route-point text{fill:#fff;font:700 12px sans-serif;paint-order:stroke;stroke:#07101b;stroke-width:4px;pointer-events:none}.detail h2{margin:0 0 14px;font-size:16px}.detail dl{display:grid;grid-template-columns:72px 1fr;gap:9px;margin:0;font-size:12px}.detail dt{color:var(--muted)}.detail dd{margin:0}.message{padding:14px;margin-bottom:15px;border:1px solid var(--red);border-radius:9px;color:#ffb9c0;background:rgba(255,76,98,.1)}footer{text-align:center;color:#61738a;padding:20px;font-size:11px}
.route-point .route-marker-icon{font-family:"Segoe UI Symbol","Noto Sans Symbols",sans-serif;font-weight:800;paint-order:stroke;stroke:#05080d;stroke-width:4px;vector-effect:non-scaling-stroke}.route-point .route-marker-wipe-ring{fill:none;stroke-width:4;vector-effect:non-scaling-stroke}.route-point .route-marker-start{stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.route-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin:-4px 0 14px;padding:10px 14px;border:1px solid var(--line);border-radius:9px;background:rgba(12,19,29,.8);color:#bdd0e8;font-size:12px}.route-legend span{display:flex;align-items:center;gap:7px}.route-legend i{width:11px;height:11px;border-radius:50%}
@media(max-width:900px){.compact-player-row{grid-template-columns:minmax(140px,1fr) repeat(4,minmax(42px,.4fr))}.compact-weapon{display:none}.individual-ranking .compact-player-row{grid-template-columns:38px minmax(140px,1fr) repeat(4,minmax(42px,.4fr))}.team-performance-head{align-items:flex-start;flex-direction:column}.viewer-player-toolbar{justify-content:stretch}.viewer-player-toolbar label,.viewer-player-toolbar select{width:100%}}
@media(max-width:800px){.header{position:static}.hero{align-items:stretch;flex-direction:column}.hero select{width:100%}.route-layout{grid-template-columns:1fr}.route-controls{align-items:stretch;flex-direction:column}.route-controls select{min-width:0;width:100%}.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.compact-player-row{grid-template-columns:minmax(120px,1fr) repeat(2,minmax(46px,.45fr));grid-auto-flow:row}.compact-stat:nth-of-type(3),.compact-stat:nth-of-type(4){display:none}.individual-ranking .compact-player-row{grid-template-columns:34px minmax(110px,1fr) repeat(2,minmax(46px,.45fr))}.team-totals{flex-wrap:wrap}}
