:root{--bg:#f6f2e8;--bg-soft:#f1ece1;--panel:#fdfbf6;--panel-2:#faf7f0;--border:#e6dfd1;--text:#24352b;--muted:#5e7264;--accent:#4d9a66;--accent-2:#6eab52;--good:#4a9f68;--warn:#c9842a;--bad:#c45b4a;--gold:#b37b24;--curated:#4d9a66;--registry:#8aa392;--shadow:0 12px 28px #374b2d12;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{cursor:pointer;border:none;border-radius:10px;font-family:inherit;transition:transform 80ms,background .15s,border-color .15s}button:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.45}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:700}a{color:var(--accent)}::selection{background:#4d9a6629}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#ddd5c4;border-radius:8px}::-webkit-scrollbar-track{background:0 0}.app{max-width:1240px;margin:0 auto;padding:22px 22px 60px}.topbar{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.brand{align-items:baseline;gap:12px;display:flex}.brand .logo{letter-spacing:-.02em;background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:26px;font-weight:900}.brand .sub{color:var(--muted);font-size:13px}.pill{color:var(--muted);background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:6px 10px;font-size:12px}.hero{background:linear-gradient(180deg, var(--panel), var(--bg-soft));border:1px solid var(--border);box-shadow:var(--shadow);border-radius:20px;padding:40px}.hero h1{font-size:40px;line-height:1.05}.hero p.lead{color:var(--muted);max-width:720px;margin:14px 0 26px;font-size:17px}.slot-legend{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:22px 0 30px;display:grid}.slot-legend .card{background:var(--panel-2);border:1px solid var(--border);border-radius:14px;align-items:center;gap:12px;padding:14px 16px;display:flex}.slot-legend .card .name{margin-bottom:2px;font-weight:700}.slot-legend .card .blurb{color:var(--muted);font-size:12.5px}.stat-row{flex-wrap:wrap;gap:26px;margin-top:8px;display:flex}.stat-row .stat b{font-size:22px}.stat-row .stat span{color:var(--muted);font-size:12px;display:block}.btn-primary{background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#fff;padding:14px 26px;font-size:16px;font-weight:700;box-shadow:0 8px 24px #4d9a662e}.btn-primary:hover{filter:brightness(1.07)}.btn-ghost{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:10px 16px;font-weight:600}.btn-ghost:hover{border-color:var(--accent)}.play-grid{grid-template-columns:1fr 300px;align-items:start;gap:22px;display:grid}@media (width<=900px){.play-grid{grid-template-columns:1fr}}.spin-panel{background:linear-gradient(180deg, var(--panel), var(--bg-soft));border:1px solid var(--border);border-radius:18px;flex-wrap:wrap;align-items:center;gap:22px;margin-bottom:18px;padding:18px 20px;display:flex}.spin-chips{align-items:center;gap:12px;display:flex}.chip{text-align:center;background:var(--panel);border:2px solid var(--border);cursor:help;border-radius:14px;min-width:128px;padding:10px 16px;position:relative}.chip-tip{background:var(--panel-2);border:1px solid var(--border);box-shadow:var(--shadow);text-align:left;white-space:nowrap;z-index:60;opacity:0;pointer-events:none;border-radius:10px;padding:10px 12px;transition:opacity .12s,transform .12s;position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(-4px)}.chip-tip:after{content:"";border:6px solid #0000;border-bottom-color:var(--panel-2);position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.chip:hover .chip-tip{opacity:1;transform:translate(-50%)translateY(0)}.chip-tip-title{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:10px;font-weight:800}.chip-tip ul{color:var(--text);gap:3px 18px;margin:0;padding:0;font-size:12.5px;list-style:none;display:grid}.chip-tip li.current{color:var(--gold);font-weight:800}.chip .cap{letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:800}.chip .val{margin-top:2px;font-size:20px;font-weight:800;line-height:1.15}.chip.area{border-color:#c9842a;box-shadow:0 0 18px #c9842a38}.chip.area .cap{color:#b37b24}.chip.decade{border-color:var(--accent);box-shadow:0 0 18px #4d9a6624}.chip.decade .cap{color:var(--accent)}.chip.spinning .val{opacity:.9;animation:.12s linear infinite flick}@keyframes flick{0%{opacity:.55}to{opacity:1}}.spin-times{color:var(--muted);font-size:20px;font-weight:700}.spin-btn{color:#fffcf6;letter-spacing:.06em;background:linear-gradient(90deg,#6eab52,#4d9a66);border-radius:14px;padding:14px 30px;font-size:17px;font-weight:900;box-shadow:0 8px 26px #4d9a6638}.spin-btn:hover:not(:disabled){filter:brightness(1.06)}.spin-meta{text-align:right;margin-left:auto}.round-meta{color:var(--muted);margin-top:6px;font-size:12.5px}.progress{justify-content:flex-end;gap:6px;display:flex}.progress .dot{background:var(--border);border-radius:3px;width:26px;height:6px}.progress .dot.done{background:var(--accent)}.progress .dot.now{background:var(--gold)}.spin-hint{color:var(--muted);font-size:14px}.searchbar{align-items:center;gap:10px;margin-bottom:14px;display:flex}.searchbar input{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:12px;outline:none;flex:1;padding:12px 14px;font-size:15px}.searchbar input:focus{border-color:var(--accent)}.result-count{color:var(--muted);margin-bottom:10px;font-size:12.5px}.grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.tcard{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:14px;flex-direction:column;gap:7px;padding:14px;transition:border-color .12s,transform 80ms;display:flex;position:relative}.tcard:hover{border-color:var(--accent);transform:translateY(-1px)}.tcard.selected{border-color:var(--gold);box-shadow:0 0 0 2px #b37b2447}.tcard.selected:after{content:"SELECTED";color:var(--gold);letter-spacing:.08em;font-size:10px;font-weight:800;position:absolute;top:10px;right:12px}.tcard .head{justify-content:space-between;align-items:start;gap:8px;display:flex}.tcard .acr{font-size:16px;font-weight:800}.tcard .badges{flex-wrap:wrap;gap:6px;display:flex}.badge{border:1px solid var(--border);color:var(--muted);background:var(--bg-soft);white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.badge.curated{color:#3d7a52;background:#4d9a6614;border-color:#c9dcc6}.badge.registry{color:#5e7264}.badge.year{color:#3d5c48}.badge.nct-link{color:#4a6e58;cursor:pointer;text-decoration:none}.badge.nct-link:hover{color:var(--accent);border-color:var(--accent)}.tcard .title{color:var(--muted);font-size:12px;line-height:1.4}.tcard .rows{flex-direction:column;gap:3px;margin-top:2px;display:flex}.tcard .kv{font-size:12.5px}.tcard .kv .k{color:var(--muted)}.tcard .why{color:#3d5c48;border-left:3px solid var(--accent);background:#4d9a660f;border-radius:6px;margin-top:2px;padding:7px 9px;font-size:12px}.met{font-weight:700}.met.yes{color:var(--good)}.met.no{color:var(--bad)}.board{position:sticky;top:16px}.board h4{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:10px;font-size:12px}.board-hint{color:var(--gold);margin-bottom:10px;font-size:12.5px;font-weight:600}.bslot{background:var(--panel);border:1px solid var(--border);border-radius:14px;align-items:center;gap:12px;min-height:60px;margin-bottom:10px;padding:10px 12px;display:flex;position:relative}.slot-tip{background:var(--panel-2);border:1px solid var(--border);width:240px;color:var(--text);box-shadow:var(--shadow);opacity:0;pointer-events:none;z-index:60;border-radius:10px;padding:9px 11px;font-size:12.5px;line-height:1.4;transition:opacity .12s,transform .12s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)translate(6px)}.slot-tip:after{content:"";border:6px solid #0000;border-left-color:var(--panel-2);position:absolute;top:50%;left:100%;transform:translateY(-50%)}.bslot:hover .slot-tip{opacity:1;transform:translateY(-50%)translate(0)}@media (width<=900px){.slot-tip{inset:auto auto calc(100% + 10px) 0;transform:translateY(6px)}.slot-tip:after{border-left-color:#0000;border-top-color:var(--panel-2);top:100%;left:24px}.bslot:hover .slot-tip{transform:translateY(0)}}.bslot.filled{background:var(--panel-2)}.bslot.target{cursor:pointer;border-color:var(--gold);animation:1.2s ease-in-out infinite pulse;box-shadow:0 0 0 2px #b37b2438}.bslot.target:hover{background:#b37b2414}@keyframes pulse{0%,to{box-shadow:0 0 0 2px #b37b242e}50%{box-shadow:0 0 0 3px #b37b2466}}.slot-code{background:var(--bg-soft);border:1px solid var(--border);color:#3d5c48;border-radius:12px;flex:none;place-items:center;width:46px;height:46px;font-size:14px;font-weight:900;display:grid}.slot-code.big{width:40px;height:40px;font-size:13px}.bslot.filled .slot-code{color:var(--gold);background:#b37b241a;border-color:#e2c48a}.bslot .bslot-body{min-width:0}.bslot .bslot-label{color:var(--muted);font-size:12px;font-weight:700}.bslot .bslot-trial{text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:14px;font-weight:800;overflow:hidden}.bslot .bslot-open{color:var(--muted);margin-top:2px;font-size:13px}.byline{border-top:1px solid var(--border);color:var(--muted);margin-top:18px;padding-top:14px;font-size:12px;line-height:1.45}.byline-links{align-items:center;gap:7px;margin-top:3px;font-size:11.5px;display:flex}.byline a{color:var(--muted);text-decoration:none}.byline a:hover{color:var(--text)}.finish-panel{background:linear-gradient(180deg, var(--panel), var(--bg-soft));border:1px solid var(--border);box-shadow:var(--shadow);border-radius:18px;padding:24px 22px}.finish-cap{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:12px;font-weight:800}.score-big{margin-top:4px;font-size:64px;font-weight:900;line-height:1}.score-big small{color:var(--muted);font-size:22px;font-weight:700}.finish-bars{flex-direction:column;gap:16px;margin:26px 0 24px;display:flex}.fbar-lab{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.fbar-slot{text-transform:uppercase;letter-spacing:.05em;color:var(--gold);font-size:12px;font-weight:800}.fbar-trial{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:800;overflow:hidden}.fbar-meta{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:6px;margin:-2px 0 7px;font-size:12px;display:flex}.fbar-sep{opacity:.6}.fbar-year{opacity:.8}.fbar-track{background:var(--bg-soft);border:1px solid var(--border);border-radius:7px;height:12px;overflow:hidden}.fbar-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:7px;height:100%;transition:width .5s cubic-bezier(.2,.7,.2,1)}.finish-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.share-wrap{position:relative}.share-btn{padding:14px 20px;font-size:16px;font-weight:700}.share-menu{background:var(--panel-2);border:1px solid var(--border);min-width:180px;box-shadow:var(--shadow);z-index:40;border-radius:12px;flex-direction:column;padding:6px;display:flex;position:absolute;bottom:calc(100% + 8px);left:0}.share-menu button,.share-menu a{text-align:left;width:100%;color:var(--text);background:0 0;border-radius:8px;padding:9px 12px;font-size:13.5px;font-weight:600;text-decoration:none;display:block}.share-menu button:hover,.share-menu a:hover{background:#4d9a6614}.share-hint{background:var(--panel);border:1px solid var(--border);width:max-content;max-width:280px;color:var(--text);box-shadow:var(--shadow);border-radius:10px;padding:8px 11px;font-size:12.5px;font-weight:600;position:absolute;top:calc(100% + 8px);left:0}.capturing .finish-actions,.capturing .byline,.capturing .slot-tip{visibility:hidden!important}.capturing .logo{color:var(--accent);-webkit-text-fill-color:var(--accent);background:0 0;-webkit-background-clip:border-box;background-clip:border-box}.loading,.error{text-align:center;color:var(--muted);padding:80px 20px}.error{color:var(--bad)}
