:root{--bg: #0f172a;--panel: #1e293b;--panel-2: #273449;--text: #e2e8f0;--muted: #94a3b8;--accent: #6366f1;--border: #334155;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}.screen{max-width:1000px;margin:0 auto;padding:16px}h1{font-size:26px;margin:12px 0 4px}h2{font-size:18px;margin:0 0 10px}.subtitle{color:var(--muted);margin:0 0 20px}.card,.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px;margin-bottom:14px}.row{display:flex;flex-wrap:wrap;gap:8px}button{cursor:pointer;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:10px;padding:9px 14px;font-size:14px}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover{filter:brightness(1.1)}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff}input{display:block;width:100%;margin-bottom:8px;padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:14px}.setup>.primary{width:100%;padding:14px;font-size:16px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.meta{display:flex;gap:6px}.badge{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-size:12px;color:var(--muted)}.scores{display:flex;gap:12px;flex-wrap:wrap}.score{font-size:14px}.score b{font-size:16px}.cards{display:flex;flex-wrap:wrap;gap:10px}.card{width:150px;text-align:left;padding:12px;border-radius:12px;background:var(--panel-2);border:1px solid var(--border);cursor:pointer}.card:hover{border-color:var(--accent)}.card-name{font-weight:700;margin-bottom:6px}.card-desc{font-size:12px;color:var(--muted);line-height:1.5}.turn-hint{color:var(--muted);margin:0 0 12px}.loop-wrap{padding:4px 0}.loop{position:relative;width:100%;aspect-ratio:2.2 / 1;max-height:62vh;margin:0 auto;border:3px dashed var(--border);border-radius:34px;background:radial-gradient(ellipse at center,rgba(99,102,241,.12),transparent 70%)}.loop-cell{position:absolute;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:12px;border:1px solid var(--border);background:var(--panel-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;box-shadow:0 2px 6px #00000059}.loop-cell.cell-start{background:#14532d;border-color:#22c55e}.loop-cell.cell-finish{background:#7c2d12;border-color:#f97316}.loop-cell.cell-star{background:#713f12;border-color:#fbbf24}.loop-cell.cell-trip{background:#4c1d95;border-color:#a78bfa}.loop-cell.cell-arrow{background:#0c4a6e;border-color:#38bdf8}.loop-index{font-size:11px;font-weight:700;color:#e2e8f0;line-height:1}.loop-tokens{display:flex;gap:2px;flex-wrap:wrap;justify-content:center}.loop-center{position:absolute;left:16%;right:16%;top:20%;bottom:20%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none}.loop-info{text-align:center}.loop-center-title{font-size:18px;font-weight:800;color:#c7d2fe}.loop-center-sub{font-size:12px;color:var(--muted);margin-top:4px}.dice-dock{display:flex;align-items:center;justify-content:center;pointer-events:none}.dice-stage{perspective:520px;width:92px;height:92px}.dice-cube{position:relative;width:92px;height:92px;transform-style:preserve-3d;animation:dice-tumble .9s ease-in-out infinite}.dice-face{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:6px;padding:10px;border-radius:16px;background:#fff;box-shadow:inset 0 0 0 1px #0f172a14,inset 0 0 18px #0000001a;backface-visibility:hidden}.dice-front{transform:translateZ(46px);filter:brightness(1)}.dice-back{transform:rotateY(180deg) translateZ(46px);filter:brightness(.78)}.dice-right{transform:rotateY(90deg) translateZ(46px);filter:brightness(.88)}.dice-left{transform:rotateY(-90deg) translateZ(46px);filter:brightness(.85)}.dice-top{transform:rotateX(90deg) translateZ(46px);filter:brightness(1.1)}.dice-bottom{transform:rotateX(-90deg) translateZ(46px);filter:brightness(.7)}.pip.on{background:#111827;box-shadow:inset 0 -1px 2px #ffffff40}@keyframes dice-tumble{0%{transform:rotateX(-20deg) rotateY(0) rotate(0) translateY(0)}20%{transform:rotateX(80deg) rotateY(120deg) rotate(40deg) translateY(-18px)}40%{transform:rotateX(180deg) rotateY(240deg) rotate(-20deg) translateY(0)}60%{transform:rotateX(280deg) rotateY(360deg) rotate(30deg) translateY(-18px)}80%{transform:rotateX(380deg) rotateY(480deg) rotate(-40deg) translateY(0)}to{transform:rotateX(460deg) rotateY(600deg) rotate(0) translateY(0)}}.decision{position:sticky;bottom:8px;background:var(--panel);border:1px solid var(--accent);border-radius:14px;padding:14px;margin:12px 0;box-shadow:0 8px 30px #00000080}.decision-prompt{font-weight:600;margin-bottom:10px}.decision-options{display:flex;flex-wrap:wrap;gap:8px}.log{margin-top:12px;font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:3px}.log-item{border-left:3px solid var(--border);padding-left:8px}.log-move{border-color:#38bdf8}.log-ability{border-color:#a78bfa}.log-score{border-color:#fbbf24}.log-warn{border-color:#f87171;color:#fca5a5}.hands{margin-top:12px;display:flex;flex-direction:column;gap:6px}.hand{font-size:13px}.hand-name{font-weight:700;margin-right:8px}.hand-cards{color:var(--muted)}.results{padding-left:20px;font-size:18px;line-height:2}.results li{color:var(--text)}.muted{color:var(--muted);font-size:13px;font-weight:400}.big{width:100%;padding:14px;font-size:16px;margin-bottom:10px}.error-banner{background:#7f1d1d;border:1px solid #f87171;color:#fecaca;border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:14px}.card-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset;background:#313b57}.picker-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.picker-selected{font-size:15px;color:var(--muted)}.picker-selected b{color:var(--text);font-size:17px}.board-panel .track{gap:6px;padding:4px 2px}.cell{border-radius:14px}.dice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;pointer-events:none;display:flex;align-items:center;justify-content:flex-end;padding-right:12vw;background:#02061759}.dice-stage{perspective:600px}.dice-cube{width:120px;height:120px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:8px;padding:10px;background:#f8fafc;border-radius:18px;box-shadow:0 18px 40px #0000008c;animation:dice-roll .42s linear infinite}.pip{border-radius:50%;background:transparent}.pip.on{background:#0f172a}@keyframes dice-roll{0%{transform:rotateX(0) rotateY(0) translateY(0)}25%{transform:rotateX(90deg) rotateY(45deg) translateY(-14px)}50%{transform:rotateX(180deg) rotateY(90deg) translateY(0)}75%{transform:rotateX(270deg) rotateY(135deg) translateY(-14px)}to{transform:rotateX(360deg) rotateY(180deg) translateY(0)}}.winner-banner{background:linear-gradient(135deg,#1e3a8a,#4c1d95);border:1px solid #6d28d9;border-radius:14px;padding:18px;text-align:center;margin-bottom:14px}.winner-title{font-size:14px;color:#c4b5fd;margin-bottom:6px}.winner-name{font-size:28px;font-weight:800;color:#fef9c3}.winner-sub{margin-top:8px;font-size:13px;color:#c4b5fd}.race-list{padding-left:20px;font-size:13px;color:var(--muted);line-height:1.9;margin-bottom:14px}@media (max-width: 640px){.screen{padding:8px 10px 96px}.topbar{position:sticky;top:0;z-index:20;background:var(--bg);padding:6px 0}.cell{width:34px;min-width:34px;height:52px}.token{width:16px;height:16px}.card{width:132px}.decision{position:fixed;left:8px;right:8px;bottom:8px;z-index:30}.decision-options{flex-direction:column}.decision-options button{width:100%;padding:12px;font-size:15px}.scores{gap:8px}.score{font-size:12px}}
