:root{--bg: #0f1115;--panel: #171a21;--line: #262b36;--text: #e7e9ee;--muted: #9aa3b2;--accent: #4c8dff;--gold: #f2c14e;--silver: #c9d1d9;--bronze: #cd8b5c}@media(prefers-color-scheme:light){:root{--bg: #f7f8fa;--panel: #fff;--line: #e3e6ec;--text: #1a1d23;--muted: #6b7280;--accent: #2563eb}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{max-width:960px;margin:0 auto;padding:32px 16px 64px}h1{font-size:28px;margin:0;letter-spacing:-.02em}h2{font-size:18px;margin:40px 0 12px}.sub{color:var(--muted);margin:6px 0 0;font-size:14px}.local{color:var(--accent)}.empty{color:var(--muted)}.tabs{display:flex;flex-wrap:wrap;gap:6px;margin:24px 0 16px}.tabs button{background:var(--panel);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:14px;cursor:pointer}.tabs button.on{color:var(--text);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--panel))}.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow-x:auto}table.medals{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}table.medals th,table.medals td{padding:10px 12px;text-align:center;border-bottom:1px solid var(--line)}table.medals th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}table.medals tbody tr:last-child td{border-bottom:0}table.medals tbody tr:first-child{background:color-mix(in srgb,var(--gold) 8%,transparent)}.rank{width:36px;color:var(--muted)}.who{text-align:left;font-weight:600;white-space:nowrap}.gold{color:var(--gold);font-weight:700}.silver{color:var(--silver);font-weight:700}.bronze{color:var(--bronze);font-weight:700}.played,.per-game{color:var(--muted);font-size:13px}.dash{color:var(--line)}.legend{color:var(--muted);font-size:12px;margin:10px 12px}.podiums{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.puzzle{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.puzzle h3{margin:0 0 8px;font-size:15px}.puzzle .num{color:var(--muted);font-weight:400}.puzzle ol{list-style:none;margin:0;padding:0}.puzzle li{display:flex;align-items:baseline;gap:8px;padding:3px 0;color:var(--muted)}.puzzle li.podium{color:var(--text)}.puzzle .medal{width:20px}.puzzle .name{flex:1}.puzzle .time{font-variant-numeric:tabular-nums}.add{margin-top:40px}.toggle{background:none;border:0;color:var(--accent);cursor:pointer;font-size:15px;padding:0}.add-body{margin-top:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}.hint{color:var(--muted);font-size:13px;margin:0 0 10px}textarea{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}.add-actions{margin-top:10px}button.primary{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:8px 16px;font-size:14px;cursor:pointer}button.primary:disabled{opacity:.4;cursor:default}.report{margin-top:14px;font-size:14px}.report code{background:var(--bg);padding:1px 5px;border-radius:4px;font-size:13px}.problems{border-left:2px solid var(--bronze);padding-left:12px;margin-top:10px}.problems ul{margin:6px 0 0;padding-left:18px}.warn{color:var(--muted)}footer{margin-top:48px;color:var(--muted);font-size:13px}footer p{margin:4px 0}.gen{font-size:12px}.tabs.periods{margin-top:-6px}.tabs.periods button{font-size:13px;padding:5px 12px}.puzzle h3 .date{display:block;font-size:12px;color:var(--muted);font-weight:400;margin-top:2px}.banner{position:relative;border-radius:14px;overflow:hidden;margin-bottom:4px}.banner img{display:block;width:100%;height:200px;object-fit:cover;object-position:center 30%;filter:brightness(.88)}.banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#000000c7,#00000061 45%,#0000 78%)}.banner-text{position:absolute;bottom:0;left:0;right:0;z-index:1;padding:16px 20px}.banner-text h1{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)}.banner-text .sub{color:#ffffffe0;text-shadow:0 1px 6px rgba(0,0,0,.5)}.banner-text .local{color:#9fc4ff}@media(prefers-color-scheme:light){.banner img{filter:none}}@media(max-width:600px){.banner img{height:168px}.banner:after{background:linear-gradient(to top,#000000d1,#0000009e 55%,#00000047)}.banner-text{padding:12px 14px}.banner-text h1{font-size:19px;line-height:1.25}.banner-text .sub{font-size:13px}}.weighting{margin:0 0 10px;font-size:13px;color:var(--muted)}.weighting strong{color:var(--text)}th.per-game .coef{display:block;margin-top:3px;font-size:10px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted)}th.per-game .coef.up{color:var(--accent)}.podium-note{margin:0 0 10px}.switches{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0 0 14px}.switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;margin:0}.switch:hover span{color:var(--text)}.who .flag{display:block;margin:2px auto 0;font-size:11px;font-weight:500;font-style:italic;white-space:normal;max-width:190px;color:#ff6b6b}@media(prefers-color-scheme:light){.who .flag{color:#c62a2f}}@media(max-width:600px){.who .flag{font-size:10px;max-width:140px}}
