:root{--void: #05080f;--panel: #0a1019;--panel-2: #0d1520;--line: #16283c;--line-bright: #23405e;--ink: #d7e6f5;--ink-dim: #6d84a0;--ink-faint: #3c5270;--cyan: #38e1ff;--cyan-dim: #1590aa;--cyan-deep: #0b3d4d;--amber: #ffb648;--amber-dim: #b7752a;--amber-deep: #4d3208;--danger: #ff5d6c;--font-display: "Chakra Petch", sans-serif;--font-mono: "IBM Plex Mono", monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:radial-gradient(1200px 700px at 50% -10%,#0b1626 0%,transparent 60%),radial-gradient(900px 600px at 85% 110%,#100d1d 0%,transparent 55%),var(--void);color:var(--ink);font-family:var(--font-mono);font-size:14px;line-height:1.5;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='97' viewBox='0 0 56 97'%3E%3Cpath d='M28 0 56 16v32L28 64 0 48V16Z M28 64 56 80v17M28 64 0 80v17' fill='none' stroke='%23122031' stroke-width='1'/%3E%3C/svg%3E");opacity:.14;z-index:0}#root{position:relative;z-index:1}.app{min-height:100vh;display:flex;flex-direction:column}.masthead{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px 10px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#0a1019e6,#0a101966)}.wordmark{font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:.34em;color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding-right:8px}.wordmark em{font-style:normal;color:var(--cyan);text-shadow:0 0 12px rgba(56,225,255,.65)}.masthead .sub{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}.menu{flex:1;display:flex;flex-direction:column;align-items:center;padding:7vh 24px 60px;text-align:center}.menu .titleBlock{position:relative;margin-bottom:8px}.menu h1{font-family:var(--font-display);font-weight:700;font-size:clamp(52px,11vw,118px);letter-spacing:.22em;margin:0;padding-left:.22em;color:var(--ink);text-shadow:0 0 34px rgba(56,225,255,.18);animation:titleIn .9s cubic-bezier(.22,1,.36,1) both}.menu h1 .riftCyan{color:var(--cyan);text-shadow:0 0 26px rgba(56,225,255,.55)}.menu h1 .riftAmber{color:var(--amber);text-shadow:0 0 26px rgba(255,182,72,.5)}.riftScar{height:2px;margin:4px auto 18px;width:min(560px,72vw);background:linear-gradient(90deg,transparent,var(--cyan) 20%,#fff 50%,var(--amber) 80%,transparent);filter:drop-shadow(0 0 6px rgba(120,220,255,.8));animation:scarIn 1.4s cubic-bezier(.22,1,.36,1) .15s both}.menu .tagline{color:var(--ink-dim);letter-spacing:.08em;max-width:560px;margin:0 0 6px;animation:fadeUp .8s ease .35s both}.menu .subtag{color:var(--ink-faint);font-size:12px;letter-spacing:.22em;text-transform:uppercase;margin:0 0 38px;animation:fadeUp .8s ease .45s both}.modeGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,210px));gap:14px;justify-content:center;width:100%;max-width:920px;margin-bottom:44px}.modeCard{position:relative;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);border-radius:4px;padding:20px 16px 16px;cursor:pointer;text-align:left;font-family:inherit;color:inherit;transition:border-color .25s,transform .25s,box-shadow .25s;animation:fadeUp .7s ease both;overflow:hidden}.modeCard:nth-child(1){animation-delay:.5s}.modeCard:nth-child(2){animation-delay:.58s}.modeCard:nth-child(3){animation-delay:.66s}.modeCard:nth-child(4){animation-delay:.74s}.modeCard:after{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent, var(--cyan));opacity:.55;transition:opacity .25s}.modeCard:hover,.modeCard:focus-visible{border-color:var(--line-bright);transform:translateY(-3px);box-shadow:0 14px 34px -18px #38e1ff59;outline:none}.modeCard:hover:after{opacity:1}.modeCard .k{font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:.14em;margin-bottom:4px}.modeCard .d{color:var(--ink-dim);font-size:12px;line-height:1.55}.modeCard.vs .k{color:var(--cyan)}.modeCard.hot{--accent: var(--amber)}.modeCard.hot .k{color:var(--amber)}.rulesFold{width:100%;max-width:720px;text-align:left;border:1px solid var(--line);border-radius:4px;background:#0a1019b3;animation:fadeUp .7s ease .85s both}.rulesFold summary{cursor:pointer;padding:13px 18px;font-family:var(--font-display);letter-spacing:.22em;font-size:12px;text-transform:uppercase;color:var(--ink-dim);-webkit-user-select:none;user-select:none}.rulesFold summary::marker{color:var(--cyan)}.rulesFold ol{margin:0;padding:4px 22px 18px 40px;color:var(--ink-dim);font-size:12.5px}.rulesFold li{margin-bottom:7px}.rulesFold li::marker{color:var(--cyan-dim);font-weight:600}.rulesFold b{color:var(--ink);font-weight:600}.game{flex:1;display:flex;align-items:stretch;justify-content:center;gap:18px;padding:18px 22px 26px;max-width:1360px;width:100%;margin:0 auto}.rail{width:228px;flex:0 0 228px;display:flex;flex-direction:column;gap:14px}.boardWrap{flex:1 1 auto;display:flex;align-items:center;justify-content:center;min-width:0}.boardSvg{width:100%;max-width:780px;height:auto;display:block;filter:drop-shadow(0 30px 60px rgba(0,0,0,.55))}.panel{background:linear-gradient(180deg,#0d1520eb,#0a1019eb);border:1px solid var(--line);border-radius:4px;padding:14px 16px}.panel .label{font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:10px}.playerRow{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:3px;border:1px solid transparent;margin-bottom:6px;transition:border-color .3s,background .3s}.playerRow.active{border-color:var(--line-bright);background:#38e1ff0a}.playerRow.amber.active{background:#ffb6480d}.playerRow .dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}.playerRow.cyan .dot{background:var(--cyan);box-shadow:0 0 10px var(--cyan)}.playerRow.amber .dot{background:var(--amber);box-shadow:0 0 10px var(--amber)}.playerRow .who{flex:1}.playerRow .who .name{font-weight:600;letter-spacing:.06em;font-size:13px}.playerRow .who .role{color:var(--ink-faint);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}.playerRow .stats{text-align:right;font-size:11.5px;color:var(--ink-dim)}.playerRow .stats b{color:var(--ink);font-size:15px;font-family:var(--font-display)}.turnBanner{text-align:center;font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;padding:10px 8px;border-radius:3px;border:1px solid var(--line);transition:color .3s,border-color .3s,text-shadow .3s}.turnBanner.cyan{color:var(--cyan);border-color:#38e1ff59;text-shadow:0 0 12px rgba(56,225,255,.5)}.turnBanner.amber{color:var(--amber);border-color:#ffb64859;text-shadow:0 0 12px rgba(255,182,72,.5)}.turnBanner.thinking{animation:pulseDim 1.2s ease-in-out infinite}.hint{color:var(--ink-faint);font-size:11.5px;line-height:1.6}.hint b{color:var(--ink-dim)}.mindBtn{width:100%;font-family:var(--font-display);font-weight:600;font-size:12px;letter-spacing:.22em;text-transform:uppercase;padding:12px 10px;background:linear-gradient(180deg,#38e1ff1f,#38e1ff0a);color:var(--cyan);border:1px solid rgba(56,225,255,.4);border-radius:3px;cursor:pointer;transition:box-shadow .25s,background .25s,opacity .25s}.mindBtn:hover:not(:disabled){box-shadow:0 0 22px #38e1ff40,inset 0 0 14px #38e1ff14}.mindBtn:disabled{opacity:.35;cursor:default}.mindNote{margin-top:8px;font-size:11px;color:var(--ink-faint);letter-spacing:.06em}.mindNote.hot{color:var(--cyan-dim)}.logList{list-style:none;margin:0;padding:0;max-height:210px;overflow-y:auto;font-size:11.5px;color:var(--ink-dim)}.logList li{padding:5px 2px;border-bottom:1px solid rgba(22,40,60,.5);display:flex;gap:8px}.logList .ply{color:var(--ink-faint);flex:0 0 30px}.logList .c{color:var(--cyan)}.logList .a{color:var(--amber)}.cell{fill:#0a1220;stroke:#152840;stroke-width:1;transition:fill .2s,stroke .2s}.cell.empty.placeable{cursor:pointer}.cell.empty.placeable:hover{fill:#0f1c30;stroke:var(--line-bright)}.cell.crater{fill:#03050a;stroke:#1a1420}.cell.threat-cyan{fill:#38e1ff12}.cell.threat-amber{fill:#ffb64814}.crackLines{stroke:#2b2033;stroke-width:1.1;fill:none;opacity:.9}.craterGlow{fill:#0d0812}.node{cursor:default}.node.own{cursor:pointer}.nodeCore.cyan{fill:#0d2e3c;stroke:var(--cyan)}.nodeCore.amber{fill:#3a2708;stroke:var(--amber)}.nodeCore{stroke-width:1.4}.chargeArc{fill:none;stroke-width:3;stroke-linecap:round;opacity:.22}.chargeArc.lit.cyan{stroke:var(--cyan);opacity:1;filter:drop-shadow(0 0 3px rgba(56,225,255,.9))}.chargeArc.lit.amber{stroke:var(--amber);opacity:1;filter:drop-shadow(0 0 3px rgba(255,182,72,.9))}.chargeArc.cyan{stroke:var(--cyan-deep)}.chargeArc.amber{stroke:var(--amber-deep)}.chargeNum{font-family:var(--font-display);font-weight:700;font-size:13px;text-anchor:middle;dominant-baseline:central;pointer-events:none}.chargeNum.cyan{fill:var(--cyan)}.chargeNum.amber{fill:var(--amber)}.node.grown .nodeCore{animation:growPop .5s ease}.node.armed .nodeCore{stroke-width:2.2;filter:drop-shadow(0 0 8px rgba(255,255,255,.5))}.armRing{fill:none;stroke-width:1.2;stroke-dasharray:4 5;animation:spin 6s linear infinite;transform-origin:center;transform-box:fill-box}.armRing.cyan{stroke:var(--cyan)}.armRing.amber{stroke:var(--amber)}.rayGuide{stroke-width:1;stroke-dasharray:3 4;opacity:.5}.rayGuide.cyan{stroke:var(--cyan)}.rayGuide.amber{stroke:var(--amber)}.flipMark{fill:none;stroke-width:2;animation:pulseMark .9s ease-in-out infinite}.flipMark.cyan{stroke:var(--cyan)}.flipMark.amber{stroke:var(--amber)}.boostMark{font-family:var(--font-display);font-weight:700;font-size:11px;text-anchor:middle;animation:pulseMark .9s ease-in-out infinite}.boostMark.cyan{fill:var(--cyan)}.boostMark.amber{fill:var(--amber)}.craterGhost{fill:none;stroke:var(--danger);stroke-width:1.2;stroke-dasharray:2 3;opacity:.8}.placeGhost{opacity:.45;pointer-events:none}.placeGhost.pending{opacity:.8}.placeGhost.pending .nodeCore{stroke-dasharray:3 3;animation:pulseMark 1s ease-in-out infinite}.cell:focus-visible,.node:focus-visible{outline:none}.cell:focus-visible{stroke:var(--ink);stroke-width:2}.node:focus-visible .nodeCore{stroke-width:2.4;filter:drop-shadow(0 0 6px rgba(255,255,255,.6))}.srOnly{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.menuBtn{width:100%;margin-top:12px;padding:9px 10px;font-size:11px}.oracleMark{fill:none;stroke:#fff;stroke-width:1.6;filter:drop-shadow(0 0 8px rgba(255,255,255,.8));animation:pulseMark 1.1s ease-in-out infinite;pointer-events:none}.beam{stroke-width:2.4;stroke-linecap:round;animation:beamFlash .75s ease-out both;pointer-events:none}.beam.cyan{stroke:var(--cyan);filter:drop-shadow(0 0 6px rgba(56,225,255,.9))}.beam.amber{stroke:var(--amber);filter:drop-shadow(0 0 6px rgba(255,182,72,.9))}.impact{animation:impactPop .75s ease-out both;pointer-events:none}.impact circle{fill:none;stroke-width:2}.impact.cyan circle{stroke:var(--cyan)}.impact.amber circle{stroke:var(--amber)}.craterFlash{fill:var(--danger);opacity:0;animation:craterFlash .75s ease-out both;pointer-events:none}.toasts{position:fixed;top:66px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:60;pointer-events:none}.toast{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:.32em;padding:9px 22px 9px 26px;color:var(--ink);background:#060a12eb;border:1px solid var(--line-bright);border-left:3px solid var(--cyan);border-radius:2px;text-shadow:0 0 14px rgba(56,225,255,.6);animation:toastIn 2.4s cubic-bezier(.22,1,.36,1) both}.toast.amber{border-left-color:var(--amber);text-shadow:0 0 14px rgba(255,182,72,.6)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#04060cc7;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:80;animation:fadeIn .4s ease both}.dialog{background:linear-gradient(180deg,#0e1724,#0a1019);border:1px solid var(--line-bright);border-radius:5px;padding:34px 40px;max-width:440px;width:calc(100% - 48px);text-align:center;box-shadow:0 40px 90px -30px #000000e6;animation:dialogIn .5s cubic-bezier(.22,1,.36,1) both}.dialog h2{font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:.26em;margin:0 0 4px}.dialog h2.cyan{color:var(--cyan);text-shadow:0 0 20px rgba(56,225,255,.55)}.dialog h2.amber{color:var(--amber);text-shadow:0 0 20px rgba(255,182,72,.55)}.dialog h2.danger{color:var(--danger)}.dialog .reason{color:var(--ink-faint);font-size:11px;letter-spacing:.3em;text-transform:uppercase;margin-bottom:22px}.statGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;margin:0 auto 26px;max-width:300px;font-size:12.5px;color:var(--ink-dim);text-align:left}.statGrid b{color:var(--ink);float:right;font-family:var(--font-display)}.dialog .btnRow{display:flex;gap:10px;justify-content:center}.btn{font-family:var(--font-display);font-weight:600;font-size:12px;letter-spacing:.2em;text-transform:uppercase;padding:12px 22px;border-radius:3px;cursor:pointer;border:1px solid var(--line-bright);background:transparent;color:var(--ink-dim);transition:all .25s}.btn:hover{color:var(--ink);border-color:var(--ink-dim)}.btn.primary{background:linear-gradient(180deg,#38e1ff29,#38e1ff0d);border-color:#38e1ff80;color:var(--cyan)}.btn.primary:hover{box-shadow:0 0 24px #38e1ff4d}.btn.danger{border-color:#ff5d6c80;color:var(--danger)}.dialog p.warn{color:var(--ink-dim);font-size:13px;margin:0 0 24px}@keyframes titleIn{0%{opacity:0;letter-spacing:.5em;filter:blur(6px)}to{opacity:1;letter-spacing:.22em;filter:blur(0)}}@keyframes scarIn{0%{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes dialogIn{0%{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulseMark{0%,to{opacity:1}50%{opacity:.35}}@keyframes pulseDim{0%,to{opacity:1}50%{opacity:.55}}@keyframes growPop{0%{transform:scale(1)}40%{transform:scale(1.14)}to{transform:scale(1)}}@keyframes beamFlash{0%{opacity:0;stroke-dashoffset:60}15%{opacity:1}70%{opacity:.9}to{opacity:0}}@keyframes impactPop{0%{transform:scale(.3);opacity:1}to{transform:scale(1.6);opacity:0}}@keyframes craterFlash{0%{opacity:.9}to{opacity:0}}@keyframes toastIn{0%{opacity:0;transform:translateY(-12px) scale(.94)}10%{opacity:1;transform:translateY(0) scale(1)}85%{opacity:1}to{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}@media (max-width: 1080px){.game{flex-wrap:wrap}.boardWrap{order:-1;flex-basis:100%}.rail{flex:1 1 280px;width:auto}}
