:root{--bg:#f3f5f8;--panel:#fff;--ink:#172234;--muted:#738093;--line:#e6eaf0;--gold:#eab047;--green:#167656;--red:#be4d53;--blue:#507ad3;--side:#131c2a;--radius:14px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.55}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:38px;line-height:1.2;letter-spacing:-1.4px;margin:8px 0 10px}h2{font-size:17px;letter-spacing:-.3px}h3{font-size:18px}.muted{color:var(--muted)}[hidden]{display:none!important}.sidebar{background:var(--side);width:238px;position:fixed;inset:0 auto 0 0;color:#d4dce8;padding:34px 20px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;gap:12px;text-decoration:none;font-weight:800;letter-spacing:1px;font-size:16px;align-items:center}.brand small{display:block;font-size:8px;font-weight:500;letter-spacing:1.6px;color:#93a2b8;margin-top:3px}.flag{font-size:35px;color:var(--gold);line-height:1}.side-label{font-size:10px;letter-spacing:1.7px;color:#718097;margin:48px 15px 15px}.nav-button{border:0;background:transparent;color:#99a9be;width:100%;padding:14px 15px;display:flex;gap:12px;align-items:center;text-align:left;border-radius:9px;margin:4px 0;font-weight:600;font-size:13px}.nav-button>span:first-child{font-size:19px;width:23px}.nav-button.active{background:#283242;color:#fff;box-shadow:inset 3px 0 var(--gold)}.nav-button:hover{background:#222d3e;color:#fff}.pill{margin-left:auto;font-size:11px;color:var(--gold);background:#3e3d34;border-radius:5px;padding:1px 7px}.side-note{margin-top:auto;font-size:12px;color:#c0ccdb;padding:20px 12px}.side-note p{font-size:11px;color:#8292a8;margin-top:10px;line-height:1.8}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#6ed0a7;margin-right:7px}.sidebar-footer{border-top:1px solid #293446;padding:22px 12px 0;color:#899bb3;font-size:12px}.sidebar-footer span{float:right;font-size:10px;border:1px solid #354258;border-radius:4px;padding:0 5px}main{margin-left:238px;padding:0 38px;max-width:2100px}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:1.6px;color:var(--muted)}.divider{padding:0 14px;color:#c6ced9}.badge{background:#e9edf3;color:#67768b;border-radius:6px;padding:5px 9px;font-size:11px;font-weight:600;letter-spacing:0}.badge.demo{background:#fff0d5;color:#91651c}.badge.loaded{background:#e5f5ee;color:var(--green)}.page-heading{display:flex;justify-content:space-between;align-items:center;padding:32px 0 26px}.page-heading p{color:var(--muted);font-size:14px}.eyebrow{color:#9a792e;font-size:10px;font-weight:700;letter-spacing:2px}.button{border-radius:8px;padding:10px 16px;font-size:12px;font-weight:650;white-space:nowrap;transition:background .2s;border:1px solid transparent}.primary{background:var(--gold);color:#2d2518}.primary:hover{background:#f6c46c}.secondary{background:white;border-color:#dce2ea;color:#45536a}.secondary:hover{background:#f5f7fa}.text-button{color:#64748b;border:0;background:transparent;font-size:12px;padding:8px}.text-button:hover{text-decoration:underline}.import-panel{border:1px solid #e0e5ed;background:linear-gradient(110deg,#fff,#f9fafc);border-radius:var(--radius);padding:19px 22px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.import-intro{margin-right:auto}.import-intro strong{display:block;font-size:13px}.import-intro span{display:block;color:var(--muted);font-size:11px;margin-top:3px}.team-input{font-size:10px;font-weight:600;color:var(--muted);display:flex;align-items:center;gap:8px}input,select{border:1px solid #dce2ea;background:white;border-radius:7px;color:#36445a;padding:8px 10px;font-size:12px}.team-input input{width:150px}.import-bottom{width:100%;display:flex;justify-content:space-between;font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding-top:10px;margin-top:3px;gap:10px}.notice{padding:12px 16px;background:#fff4dc;border:1px solid #f0dcae;border-radius:8px;margin-top:14px;font-size:12px}.notice.error{background:#fff0f0;border-color:#e9b7ba;color:#9d333c}.warnings{background:white;border:1px solid #efcead;border-radius:8px;padding:12px 16px;margin-top:14px;font-size:12px}.warnings summary{cursor:pointer;color:#986322;font-weight:600}.warnings ul{max-height:250px;overflow:auto;padding-left:22px;overflow-wrap:anywhere}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:24px 0}.metric{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:19px 22px;position:relative;overflow:hidden}.metric-label{font-size:11px;font-weight:600;color:var(--muted)}.metric-value{font-size:30px;font-weight:750;letter-spacing:-1px;margin:5px 0 0}.metric-note{font-size:10px;color:var(--muted)}.metric-symbol{position:absolute;right:20px;top:20px;background:#f5f7fa;color:#afbdce;padding:5px 10px;border-radius:8px}.metric:nth-child(2) .metric-value{color:var(--green)}.metric:nth-child(3) .metric-value{color:var(--red)}.metric:nth-child(4) .metric-value{color:#9c7428}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:23px 24px}.panel-heading p{font-size:11px;color:var(--muted);margin-top:4px}.table-tools{display:flex;gap:9px}.table-tools input{width:195px}.table-scroll{overflow:auto;max-height:65vh}table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px;text-align:left;white-space:nowrap}th{background:#f7f9fc;font-size:10px;color:#6a7a8f;font-weight:650;padding:13px 15px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1}td{padding:13px 15px;border-bottom:1px solid #edf0f4}tbody tr:nth-child(even){background:#fafbfd}tbody tr:hover{background:#fff9ec}td:first-child{color:#a0acbc;font-size:10px}.number{text-align:right;font-variant-numeric:tabular-nums}.event-cell{font-weight:600}.result-badge{font-size:10px;font-weight:650;padding:4px 8px;border-radius:5px;display:inline-block}.win{color:var(--green);background:#e7f5ee}.loss{color:var(--red);background:#fbeaec}.draw{color:#6e7189;background:#eeeef4}.name-button{border:0;background:transparent;color:#32435c;padding:0;font-weight:600;white-space:nowrap}.name-button:hover{color:#96701d;text-decoration:underline}.source-link{color:#6682aa;text-decoration:none;font-size:11px}.source-link:hover{text-decoration:underline}.rank{background:#eff2f7;border-radius:4px;padding:2px 7px;font-size:10px;color:#78879b}.panel-footer{padding:14px 24px;color:var(--muted);font-size:10px;display:flex;justify-content:space-between;gap:14px}.empty-state{text-align:center;padding:54px 25px;color:var(--muted)}.empty-state>span{font-size:40px;color:#c8d0df}.empty-state h3{color:#52637c;margin:12px 0 6px}.empty-state p{font-size:12px}.two-columns{display:grid;grid-template-columns:1.3fr 1fr;gap:22px;margin-top:22px}.rules-panel{padding:28px}.rules-panel h2{font-size:22px;margin:12px 0}.rules-panel p{color:var(--muted);font-size:12px;margin:12px 0}.chart{padding:4px 22px 24px;min-height:240px}.chart svg{display:block;width:100%;height:auto;max-height:390px}.chart text{font-family:inherit;font-size:11px;fill:#8090a5}.chart .axis{stroke:#e9edf3;stroke-width:1}.chart .zero{stroke:#b8c4d3;stroke-dasharray:4 4}.chart .legend{display:flex;gap:22px;flex-wrap:wrap;justify-content:center;color:var(--muted);font-size:11px;margin-top:8px}.legend i{display:inline-block;width:16px;height:3px;vertical-align:middle;margin-right:7px;border-radius:2px}.chart-note{text-align:center;font-size:10px;color:var(--muted);margin:10px 0 0}.player-layout{grid-template-columns:minmax(260px,.75fr) minmax(400px,1.8fr);margin-top:0}.player-list{max-height:720px;overflow:auto;padding:0 12px 12px}.player-row{width:100%;display:flex;align-items:center;padding:14px 12px;border:0;background:white;border-radius:8px;text-align:left;gap:12px;border-bottom:1px solid #f0f2f6}.player-row.selected{background:#fff7e6}.player-row:hover{background:#f6f8fc}.avatar{background:#edf1f7;color:#61728e;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;font-weight:700;font-size:12px}.selected .avatar{background:#f4dfad;color:#8a671e}.player-row strong{font-size:13px}.player-row small{display:block;color:var(--muted);font-size:10px}.player-points{margin-left:auto;color:#927027;font-weight:750;font-size:17px}.player-points small{text-align:right;font-size:9px;font-weight:400}.player-detail{padding-bottom:8px}.player-title{font-size:25px}.player-mini-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 24px 20px}.mini-metric{background:#f7f9fc;border-radius:8px;padding:12px;font-size:10px;color:var(--muted)}.mini-metric strong{display:block;font-size:23px;color:var(--ink);margin-top:3px}.streaks{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:0 24px 22px}.streak{border:1px solid var(--line);border-radius:8px;padding:12px;font-size:10px;color:var(--muted)}.streak strong{display:block;font-size:22px;color:var(--ink)}.player-detail .description{padding:0 24px 20px;color:var(--muted);font-size:11px}.comparison-selectors{display:flex;justify-content:center;align-items:center;gap:28px;padding:12px 24px 28px}.comparison-selectors label{display:grid;gap:6px;color:var(--muted);font-size:11px;width:220px}.comparison-selectors select{font-size:14px;font-weight:600;padding:12px}.versus{font-weight:800;color:#a9b4c5;font-size:22px;padding-top:22px}.comparison-table{max-width:780px;margin:0 auto 30px;padding:0 20px}.comparison-table th:first-child{width:45%}.comparison-table td:not(:first-child){text-align:center;font-weight:600}.comparison-table .better{color:var(--green);background:#eff9f4}.main-footer{display:flex;justify-content:space-between;gap:15px;font-size:10px;color:#98a4b5;padding:32px 0}.main-footer>span:first-child{font-weight:700;letter-spacing:.4px}.main-footer .muted{font-weight:400;letter-spacing:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.busy{opacity:.7;cursor:wait}
@media(min-width:1700px){main{padding:0 50px}td{padding:16px 18px}.metrics{gap:22px}.metric{padding:22px 25px}}
@media(max-width:1150px){.sidebar{width:200px;padding:28px 14px}.brand{font-size:14px}.brand small{font-size:7px}main{margin-left:200px;padding:0 24px}.table-tools input{width:155px}.panel-heading{flex-wrap:wrap}.metric{padding:15px}.metric-symbol{display:none}.player-layout{grid-template-columns:280px minmax(0,1fr)}.streaks,.player-mini-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.sidebar{position:static;width:100%;padding:16px 20px;display:block}.brand{font-size:16px}.side-label,.side-note,.sidebar-footer{display:none}.sidebar nav{display:flex;gap:3px;margin-top:14px;overflow:auto}.nav-button{width:auto;white-space:nowrap;font-size:11px;padding:8px 10px}.nav-button>span:first-child{font-size:16px;width:auto}.nav-button.active{box-shadow:inset 0 -2px var(--gold)}main{margin-left:0;padding:0 18px}.topbar{height:54px;font-size:8px}.divider{padding:0 8px}.page-heading{padding:23px 0;align-items:flex-start;gap:10px}h1{font-size:30px}.eyebrow{font-size:8px}.page-heading p{font-size:12px}.page-heading .button{padding:9px;font-size:10px}.metrics{grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0}.metric-value{font-size:26px}.import-panel{padding:16px;gap:10px}.import-intro{width:100%}.import-bottom{flex-direction:column}.team-input{flex:1}.team-input input{width:100%}.two-columns,.player-layout{grid-template-columns:1fr}.player-list{max-height:330px}.panel-heading{padding:18px}.table-tools{width:100%}.table-tools label:first-child{flex:1}.table-tools input{width:100%}.panel-footer{flex-direction:column;padding:12px 18px}.main-footer{flex-direction:column}.comparison-selectors{gap:12px;padding:10px 16px 25px}.comparison-selectors label{width:42%}.comparison-selectors select{width:100%;font-size:12px}.chart{padding:4px 10px 18px;min-height:180px}}
@media(max-width:800px){.team-input{flex:1 0 100%}.team-input input{min-width:0}.panel,.import-panel,.two-columns>*{min-width:0}.panel-heading>*{min-width:0}.table-tools input{min-width:0}.table-tools label{min-width:0}}

/* ---------- Extra palette ---------- */
:root{--panel-2:#f7f9fc;--field:#fff;--field-line:#dce2ea;--hover:#fff9ec;--shadow:0 18px 50px rgba(15,25,40,.18);color-scheme:light}
[data-theme=dark]{--bg:#0f1520;--panel:#161e2b;--panel-2:#1b2433;--ink:#e6ecf5;--muted:#8e9bb0;--line:#253043;--green:#4cc596;--red:#ef7a80;--blue:#7d9ef0;--side:#0b1018;--field:#111925;--field-line:#2c384c;--hover:#262a24;--shadow:0 18px 50px rgba(0,0,0,.55);color-scheme:dark}
body{transition:background .3s,color .3s}
[data-theme=dark] .metric,[data-theme=dark] .panel,[data-theme=dark] .warnings,[data-theme=dark] .player-row{background:var(--panel)}
[data-theme=dark] .import-panel{background:linear-gradient(110deg,var(--panel),var(--panel-2));border-color:var(--line)}
[data-theme=dark] input,[data-theme=dark] select{background:var(--field);border-color:var(--field-line);color:var(--ink)}
[data-theme=dark] .secondary{background:var(--panel-2);border-color:var(--field-line);color:#c8d2e1}
[data-theme=dark] .secondary:hover{background:#222c3d}
[data-theme=dark] .text-button{color:#9fb0c6}
[data-theme=dark] th{background:var(--panel-2);color:#93a3b8}
[data-theme=dark] td{border-bottom-color:var(--line)}
[data-theme=dark] tbody tr:nth-child(even){background:#182131}
[data-theme=dark] tbody tr:hover{background:var(--hover)}
[data-theme=dark] td:first-child{color:#6f7f96}
[data-theme=dark] .win{background:#173528}
[data-theme=dark] .loss{background:#3a1f25}
[data-theme=dark] .draw{background:#262838;color:#a8abc4}
[data-theme=dark] .name-button{color:#d7e0ee}
[data-theme=dark] .name-button:hover{color:var(--gold)}
[data-theme=dark] .source-link{color:#8fb0e0}
[data-theme=dark] .rank,[data-theme=dark] .metric-symbol,[data-theme=dark] .mini-metric,[data-theme=dark] .avatar{background:#212b3c;color:#9aaac0}
[data-theme=dark] .badge{background:#212b3c;color:#a3b1c5}
[data-theme=dark] .badge.demo{background:#3b3220;color:#f0c46e}
[data-theme=dark] .badge.loaded{background:#173528;color:var(--green)}
[data-theme=dark] .notice{background:#33291a;border-color:#5c4a26;color:#f1dcb0}
[data-theme=dark] .notice.error{background:#3a1f25;border-color:#6d3138;color:#ffb3b8}
[data-theme=dark] .warnings{border-color:#5c4a26}
[data-theme=dark] .player-row{border-bottom-color:var(--line)}
[data-theme=dark] .player-row:hover{background:#1d2738}
[data-theme=dark] .player-row.selected{background:#2c2a20}
[data-theme=dark] .selected .avatar{background:#5b4a21;color:#f5d48a}
[data-theme=dark] .player-points{color:var(--gold)}
[data-theme=dark] .metric:nth-child(4) .metric-value{color:var(--gold)}
[data-theme=dark] .eyebrow{color:#d6a94d}
[data-theme=dark] .empty-state h3{color:#c3cfdf}
[data-theme=dark] .empty-state>span{color:#3a475d}
[data-theme=dark] .chart .axis{stroke:#253043}
[data-theme=dark] .chart .zero{stroke:#46546b}
[data-theme=dark] .chart text{fill:#8796ab}
[data-theme=dark] .comparison-table .better{background:#173528}
[data-theme=dark] .divider,[data-theme=dark] .versus{color:#4a576c}
[data-theme=dark] .main-footer{color:#6c7a90}

/* ---------- Topbar ---------- */
.topbar{gap:18px}
.crumbs{white-space:nowrap}
.top-actions{display:flex;align-items:center;gap:8px;letter-spacing:0}
.icon-button{width:38px;height:38px;display:grid;place-items:center;padding:0;border-radius:10px;border:1px solid var(--field-line);background:var(--field);color:var(--ink);font-size:17px;transition:background .2s,transform .2s}
.icon-button:hover{background:var(--panel-2);transform:translateY(-1px)}
.lang-button{font-size:12px;font-weight:800;letter-spacing:.5px}
.login-button{display:flex;gap:6px;align-items:center}
.theme-button svg{width:22px;height:22px;overflow:visible}
.theme-button .sun-core{fill:#f2b33d;transition:r .5s cubic-bezier(.6,-.4,.3,1.4),fill .5s}
.theme-button .moon-bite{transition:cx .55s cubic-bezier(.6,-.3,.3,1.3),cy .55s}
.theme-button .sun-rays{stroke:#f2b33d;stroke-width:2;stroke-linecap:round;transform-origin:12px 12px;transition:transform .5s cubic-bezier(.5,-.5,.3,1.5),opacity .35s}
[data-theme=dark] .theme-button .sun-core{fill:#e8edf8;r:8px}
[data-theme=dark] .theme-button .moon-bite{cx:17px;cy:7px}
[data-theme=dark] .theme-button .sun-rays{transform:rotate(90deg) scale(0);opacity:0}
.theme-animating .theme-button svg{animation:theme-spin .6s ease}
@keyframes theme-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.user-chip{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:3px 4px 3px 12px}
.role-badge{font-size:9px;letter-spacing:1px;text-transform:uppercase;padding:3px 7px;border-radius:5px;background:#e9edf3;color:#67768b}
.role-badge.admin{background:#f6d48a;color:#5b3f08}
.role-badge.moderator{background:#cfe0ff;color:#26457f}

/* ---------- Global search ---------- */
.global-search{position:relative;flex:1;max-width:440px;letter-spacing:0}
.global-search input{width:100%;padding:10px 14px 10px 36px;border-radius:10px;font-size:13px;background:var(--field) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238090a5' stroke-width='2.4'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E") no-repeat 12px center/16px}
.global-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:60vh;overflow:auto;z-index:30;padding:6px}
.search-group{font-size:9px;letter-spacing:1.6px;font-weight:700;color:var(--muted);padding:10px 10px 4px;text-transform:uppercase}
.search-item{display:flex;justify-content:space-between;gap:12px;width:100%;border:0;background:transparent;text-align:left;padding:9px 10px;border-radius:8px;color:var(--ink);font-size:13px}
.search-item small{color:var(--muted);font-size:11px;white-space:nowrap}
.search-item:hover,.search-item.active{background:var(--panel-2);box-shadow:inset 3px 0 var(--gold)}
.search-empty{padding:14px;color:var(--muted);font-size:12px}
tbody tr.highlight,[data-theme=dark] tbody tr.highlight{animation:row-flash 2.4s ease}
@keyframes row-flash{0%,40%{background:rgba(234,176,71,.45)}100%{background:transparent}}

/* ---------- Admin ---------- */
.admin-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;background:linear-gradient(90deg,#fff3d6,#fffaf0);border:1px solid #f0d697;border-radius:12px;padding:12px 16px;margin-bottom:18px;font-size:12px;color:#6d5320}
[data-theme=dark] .admin-bar{background:linear-gradient(90deg,#33291a,#1b2433);border-color:#5c4a26;color:#f1dcb0}
.admin-bar strong{letter-spacing:1.5px;font-size:11px}
.merge-selection{font-weight:600}
.merge-selection kbd,kbd{font:inherit;font-size:10px;border:1px solid currentColor;border-bottom-width:2px;border-radius:4px;padding:0 5px;margin-left:4px}
.is-admin .editable,.is-admin .name-button,.is-admin .player-title{cursor:text}
.is-admin .editable:hover,.is-admin .name-button:hover{outline:1px dashed var(--gold);outline-offset:3px;border-radius:3px}
.merge-selected,.player-row.merge-selected{background:rgba(234,176,71,.25)!important;box-shadow:inset 0 0 0 2px var(--gold);border-radius:5px}
.inline-edit{padding:3px 6px;font-size:12px;min-width:90px;border-color:var(--gold)!important;box-shadow:0 0 0 3px rgba(234,176,71,.25)}
.table-sort{display:inline-flex;align-items:center;gap:3px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:inherit}
.table-sort:hover{color:var(--ink)}
th[aria-sort=ascending] .table-sort,th[aria-sort=descending] .table-sort{color:var(--ink)}
.sort-indicator{color:var(--gold);font-size:12px}
#entrance{position:fixed;inset:0;z-index:1000;background:#fff;color:#222}
html[data-concealed]{background:#fff}
html[data-concealed] body{background:#fff;overflow:hidden}
html[data-concealed] body>:not(#entrance){display:none!important}
html:not([data-concealed]) #entrance{display:none}
#entrance-error{display:block;padding:24px;font:14px system-ui,sans-serif}
.about-text{white-space:pre-wrap;overflow-wrap:anywhere}
#about-form{display:grid;gap:14px;margin-top:24px}
#about-form label{display:grid;gap:6px}
#about-form textarea{font:inherit;resize:vertical;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}
#text-editor-toolbar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:80;display:flex;align-items:center;gap:12px;padding:12px;background:var(--panel);color:var(--ink);border:2px solid var(--gold);border-radius:10px;box-shadow:var(--shadow)}
.editing-site-text main,.editing-site-text .sidebar{cursor:text}
#text-editor-dialog{width:min(680px,94vw)}
#text-editor-original{white-space:pre-wrap;overflow-wrap:anywhere;max-height:150px;overflow:auto;font:inherit}
#text-editor-value{font:inherit;background:var(--panel);color:var(--ink);padding:12px;border:1px solid var(--line);border-radius:8px;width:100%;resize:vertical}
.site-text-image{max-width:100%;max-height:320px;width:auto;height:auto;object-fit:contain;vertical-align:middle}
#text-history-dialog{width:min(850px,94vw)}
.text-history-content{padding:24px}
#text-history-list{max-height:55vh;overflow:auto;margin:16px 0}
.text-history-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.text-history-row span{margin-right:auto}
.multi-panel{margin-bottom:20px}
.multi-controls{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:16px}
.multi-controls label{display:grid;gap:5px;min-width:160px}
.multi-path-label{flex:1}
.multi-source-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.multi-source-row>span{overflow-wrap:anywhere;flex:1;min-width:150px}
.multi-warnings{white-space:pre-wrap;max-height:150px;overflow:auto}
.multi-individual-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.multi-panel h3{margin:20px 0 10px}
.event-average-panel{padding:22px}
.event-average-panel h3{margin-bottom:12px}
.event-average-panel input,.event-average-panel select{max-width:100%;margin:0 8px 12px 0}
.event-average-panel .table-scroll{margin-top:12px}

/* ---------- Dialogs ---------- */
.dialog{border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--ink);padding:0;width:min(420px,92vw);box-shadow:var(--shadow)}
.dialog::backdrop{background:rgba(8,12,20,.55);backdrop-filter:blur(3px)}
.dialog form{display:grid;gap:14px;padding:26px}
.dialog label{display:grid;gap:6px;font-size:11px;font-weight:600;color:var(--muted)}
.dialog input:not([type=checkbox]){padding:11px 12px;font-size:14px}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.password-row{display:flex;gap:8px}
.password-row input{flex:1;min-width:0}
.password-row .icon-button[aria-pressed=true]{background:var(--gold);color:#2d2518}
.form-error{color:var(--red);font-size:12px}
.switch-row{display:flex!important;align-items:flex-start;gap:12px!important;cursor:pointer}
.switch-row input{appearance:none;width:42px;height:24px;border-radius:12px;background:#c5cedb;position:relative;flex:none;padding:0;border:0;cursor:pointer;transition:background .2s}
.switch-row input::after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:white;transition:transform .2s}
.switch-row input:checked{background:var(--green)}
.switch-row input:checked::after{transform:translateX(18px)}
.switch-row strong{display:block;color:var(--ink);font-size:13px}
.switch-row small{display:block;font-weight:400;margin-top:3px;line-height:1.5}

/* ---------- Image preview & chart tooltip ---------- */
.image-preview{position:fixed;z-index:60;pointer-events:none;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:var(--shadow);max-width:min(720px,70vw)}
.image-preview img{display:block;max-width:100%;max-height:70vh;border-radius:8px}
.image-preview span{display:block;font-size:11px;color:var(--muted);padding:4px 4px 0}
.image-preview.loading img{opacity:.3;min-width:200px;min-height:120px}
.chart{position:relative}
.chart-hit{cursor:crosshair}
.chart-guide{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 4;pointer-events:none}
.chart-marker{pointer-events:none;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3))}
.chart-tooltip{position:fixed;z-index:55;pointer-events:none;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:10px 12px;font-size:12px;min-width:180px;max-width:320px}
.chart-tooltip strong{display:block;margin-bottom:5px}
.tooltip-row{display:flex;align-items:center;gap:8px;justify-content:space-between}
.tooltip-row i{width:9px;height:9px;border-radius:50%;flex:none}
.tooltip-row span{margin-right:auto}
.tooltip-row b{font-variant-numeric:tabular-nums}
.tooltip-section{border-top:1px solid var(--line);margin-top:6px;padding-top:6px;color:var(--muted);font-size:11px}

/* ---------- Fun charts ---------- */
.fun-chart{border-radius:12px}
.chart .fun-label{fill:#fff;stroke:#24331b;stroke-width:3px;paint-order:stroke;font-weight:800;font-size:12px}
.fun-try{display:block;margin:12px auto 0;background:linear-gradient(180deg,#ffd451,#f29b1d);color:#3a2205;border:2px solid #7a4a0c;border-radius:12px;padding:10px 18px;font-weight:800;font-size:13px;box-shadow:0 4px 0 #7a4a0c;transition:transform .12s,box-shadow .12s}
.fun-try:hover{transform:translateY(-2px);box-shadow:0 6px 0 #7a4a0c}
.fun-try:active{transform:translateY(3px);box-shadow:0 1px 0 #7a4a0c}

/* ---------- Best wins ---------- */
.best-wins{padding:0 24px 24px;display:grid;gap:16px}
.best-win-hero{display:grid;gap:4px;border-radius:12px;padding:18px 20px;background:linear-gradient(120deg,#16233a,#24406a);color:#eef3fb}
.best-win-hero .eyebrow{color:#f2c467}
.best-win-margin{font-size:38px;font-weight:800;letter-spacing:-1px;color:#7ee2b5}
.best-win-event{font-size:12px;color:#b8c6db}
.best-win-hero button{justify-self:start;margin-top:6px}
.bucket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}
.bucket{border:1px solid var(--line);border-radius:10px;padding:12px;font-size:10px;color:var(--muted);background:var(--panel-2)}
.bucket strong{display:block;font-size:24px;color:var(--green)}
.bucket.minor strong{color:var(--muted)}
.best-win-list{margin:0;padding-left:20px;font-size:12px;display:grid;gap:5px}
.best-win-list b{color:var(--green)}

/* ---------- Tools (compress / upload) ---------- */
.tool-body{display:grid;gap:16px;padding:0 24px 26px;max-width:760px}
.tool-body>label:not(.file-drop),.tool-grid label{display:grid;gap:6px;font-size:11px;font-weight:600;color:var(--muted)}
.tool-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:14px 18px;align-items:end}
.tool-grid>input[type=range],.tool-grid>.hint,.tool-grid>.tool-actions{grid-column:1/-1}
.tool-grid input[type=range]{padding:0;border:0;background:transparent;accent-color:var(--gold)}
.file-drop{display:grid;place-items:center;gap:6px;text-align:center;border:2px dashed var(--field-line);border-radius:14px;padding:30px 20px;cursor:pointer;color:var(--muted);transition:border-color .2s,background .2s}
.file-drop strong{color:var(--ink);font-size:14px}
.file-drop input{max-width:100%;font-size:11px}
.file-drop:hover,.file-drop.dragging{border-color:var(--gold);background:rgba(234,176,71,.08)}
.file-drop.disabled{opacity:.5;pointer-events:none}
.fps-row{display:flex;gap:8px}
.fps-row input{flex:1;min-width:0}
.hint{font-size:11px;color:var(--muted)}
.tool-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.progress{display:grid;gap:6px;font-size:12px;color:var(--muted)}
.progress-bar{height:10px;border-radius:5px;background:var(--panel-2);border:1px solid var(--line);overflow:hidden}
.progress-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold),#f6d07c);transition:width .3s}
.progress.error{color:var(--red)}
.progress.error .progress-bar i{background:var(--red)}
.tool-result{border:1px solid var(--line);background:var(--panel-2);border-radius:12px;padding:16px;display:grid;gap:10px;font-size:13px}
.tool-result-main{font-weight:700}
.compress-save{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.compress-save input{width:180px}

/* ---------- Game ---------- */
.game-overlay{position:fixed;inset:0;z-index:100;background:#7ec8f0}
.game-overlay canvas{display:block;width:100%;height:100%;touch-action:none}
.game-help{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:rgba(0,0,0,.45);color:#fff;font-size:12px;padding:5px 12px;border-radius:8px;pointer-events:none;white-space:nowrap}
body.game-open{overflow:hidden}
.game-pause{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.45);overflow:auto;padding:16px}
.game-pause[hidden]{display:none}
.game-pause-panel{background:var(--panel);color:var(--ink);border-radius:16px;padding:20px 24px;min-width:300px;max-width:620px;box-shadow:0 12px 40px rgba(0,0,0,.4)}
.game-pause-panel h2{margin:0 0 12px}
.game-name{display:grid;gap:4px;margin-bottom:12px}
.game-name input{font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:transparent;color:inherit}
.game-pause-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.game-tune{margin-top:16px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:grid;gap:6px}
.game-tune label{display:grid;grid-template-columns:minmax(150px,1fr) 2fr 90px;gap:8px;align-items:center;font-size:13px}
.game-tune input[type=number]{font:inherit;width:100%;padding:3px 6px;border-radius:6px;border:1px solid var(--line);background:transparent;color:inherit}
.game-tune-status{font-size:13px;opacity:.8}
.player-row{grid-template-columns:40px minmax(90px,1fr) auto auto}
.player-row-badges{display:flex;align-items:center;gap:2px}
.player-row-badges .achievement-badge svg{width:26px;height:29px}
.achievement-badge{display:inline-flex;width:54px;height:60px;align-items:center;justify-content:center;flex:none}
.achievement-badge svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3))}
.achievement-badge.locked{border:1px dashed var(--line);border-radius:50%;width:42px;height:42px;color:var(--muted);font-size:24px}
.platinum-elite svg{filter:drop-shadow(0 0 5px rgba(97,185,189,.75))}
.player-achievements{margin:20px 0}
.player-achievements h3{margin:0 0 10px}
.player-achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:8px}
.player-achievement{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2);min-width:0}
.player-achievement:not(.unlocked){opacity:.68}
.player-achievement .achievement-badge{width:43px;height:48px}
.player-achievement-info{display:grid;gap:2px;min-width:0;flex:1}
.player-achievement-info strong{font-size:12px;line-height:1.25}
.player-achievement-info>span:not(.achievement-progress){font-size:11px}
.achievement-progress{height:4px;background:var(--line);border-radius:3px;overflow:hidden}
.achievement-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),#f5d57e)}
.achievement-tiers{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}
.tier-legend{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:12px;padding:5px 10px 5px 4px;background:var(--panel-2)}
.tier-legend .achievement-badge{width:34px;height:38px}
.achievement-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.achievement-rule{display:grid;gap:5px;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2)}
.achievement-rule strong{font-size:13px}
.achievement-rule span{font-size:11px;color:var(--muted);line-height:1.6}
.achievement-leaderboard{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:16px}
.achievement-leader{display:flex;align-items:center;gap:6px;text-align:left;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:7px 10px}
.achievement-leader>strong{margin-right:auto}
.achievement-leader .achievement-badge{width:32px;height:36px}
.season-report-panel{margin-top:16px}
.season-report-controls{display:flex;align-items:end;flex-wrap:wrap;gap:12px}
.season-report-controls label{display:grid;gap:4px}
.season-report-controls select{min-width:150px}
.season-report-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px;margin:16px 0}
.season-stat{display:grid;gap:5px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2)}
.season-stat span{font-size:11px;color:var(--muted)}
.season-stat strong{line-height:1.4}
.season-report-output{white-space:pre-wrap;border-left:3px solid var(--gold);padding:12px 16px;background:var(--panel-2);border-radius:0 10px 10px 0;line-height:1.8}
@media(max-width:680px){.player-row{grid-template-columns:32px minmax(0,1fr) auto}.player-row-badges{grid-column:2/-1;grid-row:2}.player-row .player-points{grid-column:3;grid-row:1}.player-row .name{grid-column:2}}

@media(max-width:1150px){.global-search{max-width:260px}.crumbs{display:none}}
@media(max-width:800px){.topbar{height:auto;flex-wrap:wrap;padding:12px 0}.global-search{max-width:none;order:3;flex-basis:100%}.tool-grid{grid-template-columns:1fr}.login-button span:last-child{display:none}}
.best-win-hero{cursor:pointer}.bucket span,.bucket small{display:block}.best-win-list .text-button{text-align:left;white-space:normal}
