:root{color-scheme:dark;font-family:Inter,"Arial", "Microsoft YaHei",sans-serif;background:#070b18;color:#edf3ff}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button:disabled{opacity:.35;cursor:default}[hidden]{display:none!important}.stage{--accent:#bb97ff;--glow:#9160ff;--rgb:169,127,255;--shade:.65;--board-height:calc(100dvh - 124px);isolation:isolate;position:relative;width:100vw;height:100dvh;overflow:hidden;padding:0 max(30px,env(safe-area-inset-right)) 0 max(30px,env(safe-area-inset-left));background:#070b18;display:flex;flex-direction:column}.stage[data-theme=ember]{--accent:#ffd08a;--glow:#ff8a29;--rgb:255,162,76}.stage[data-theme=glacier]{--accent:#87edff;--glow:#1ac8ed;--rgb:88,220,255}.custom-bg{position:absolute;width:100%;height:100%;object-fit:cover;inset:0;z-index:-5}.backdrop{position:absolute;inset:0;z-index:-4;background:linear-gradient(120deg,rgba(5,9,24,var(--shade)),rgba(6,12,29,var(--shade))),radial-gradient(ellipse at 60% 20%,#252045,#050919)}.custom-bg:not([hidden])~.backdrop{background:rgba(3,7,18,var(--shade))}.grid-noise{position:absolute;inset:0;z-index:-2;pointer-events:none;opacity:.17;background-image:linear-gradient(#c7ceff18 1px,transparent 1px),linear-gradient(90deg,#c7ceff18 1px,transparent 1px);background-size:55px 55px;mask-image:linear-gradient(transparent,#000,transparent)}.halo{position:absolute;z-index:-3;pointer-events:none;border:1px solid rgba(var(--rgb),.13);border-radius:50%;width:65vw;height:65vw;left:15%;top:-35vw;box-shadow:0 0 120px rgba(var(--rgb),.08),inset 0 0 130px rgba(var(--rgb),.05);animation:ambient 14s ease-in-out infinite alternate}.halo-b{width:40vw;height:40vw;left:auto;right:-15%;top:40%;animation-delay:-8s}.toolbar{height:64px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #ffffff12}.back{font-size:13px;letter-spacing:1px;text-decoration:none;color:#d5d8e7;display:flex;align-items:center;gap:8px;min-height:40px}.toolbar-title{font-size:9px;letter-spacing:3px;color:#818baf}.tools{display:flex;gap:8px}.tools button{border:1px solid #ffffff1c;border-radius:7px;background:#10162b90;color:#b7bfd5;font-size:12px;padding:9px 13px;min-height:38px;white-space:nowrap}#wake[data-state=active]{color:#9de7c4;border-color:#9de7c430}.board{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);align-items:center;justify-items:center;padding:10px 0;gap:0}.banner{grid-column:1/5;justify-self:stretch;align-self:center;padding:0 4%;position:relative;z-index:1}.banner:before{content:'';position:absolute;left:1%;top:10%;bottom:10%;width:3px;background:var(--accent);box-shadow:0 0 20px var(--glow)}.banner p{font-size:clamp(8px,1vw,13px);letter-spacing:2px;margin:0 0 6px;color:var(--accent);font-weight:700}.banner p span{font-size:.7em;color:#76809f;letter-spacing:1px}.banner h1{font-size:clamp(22px,4vw,62px);font-style:italic;line-height:1.05;letter-spacing:1px;font-weight:900;margin:0;text-shadow:0 0 35px rgba(var(--rgb),.2)}.banner h1 em{font-style:italic;-webkit-text-stroke:1px var(--accent);color:transparent;font-weight:800}.banner-bottom{display:flex;align-items:center;gap:24px;margin-top:12px;color:#9ea6bf;font-size:10px;letter-spacing:2px}.live{font-size:8px;color:#7c8da1}.live i{display:inline-block;border-radius:50%;width:5px;height:5px;background:#98ddc1;margin-right:5px;box-shadow:0 0 8px #98ddc1;animation:breathe 3s infinite}.track{position:absolute;inset:10px 0;width:100%;height:calc(100% - 20px);pointer-events:none;overflow:visible}.track path{fill:none;stroke-linecap:round;stroke-linejoin:round}.track-base{stroke:#b7c2df;stroke-opacity:.65;stroke-width:24}.track-flow{stroke:var(--accent);stroke-width:3;stroke-dasharray:10 30;opacity:.4;animation:flow 12s linear infinite}.node{--size:min(11vw,calc(var(--board-height) / 3.5));position:relative;width:var(--size);height:var(--size);min-width:44px;min-height:44px;border-radius:22%;border:1px solid #7782aa40;background:linear-gradient(145deg,#1d2545dd,#0c122bdb);color:#dde5fa;box-shadow:inset 0 1px #ffffff10,0 8px 30px #0004;display:grid;place-items:center;font-size:calc(var(--size)*.58);font-weight:900;line-height:1;font-style:normal;z-index:2;transition:border-color .25s,box-shadow .25s,background .25s;user-select:none;-webkit-user-select:none;padding:0}.node span{position:relative;z-index:2;transform:scale(1);transition:transform .22s ease-out;text-shadow:0 2px 12px #0008}.node.milestone{color:#ffc578}.node.selected{color:#fff;background:linear-gradient(145deg,rgba(var(--rgb),.25),#0e1631e8);border-color:var(--accent);box-shadow:0 0 35px rgba(var(--rgb),.18),inset 0 0 25px rgba(var(--rgb),.1)}.node:before{content:'';position:absolute;inset:-16%;border-radius:50%;border:1px solid transparent;opacity:0;pointer-events:none}.node:after{content:'';position:absolute;inset:-20%;border-radius:50%;opacity:0;background:conic-gradient(from 0deg,transparent 0deg,var(--accent) 70deg,transparent 73deg,transparent 180deg,var(--accent) 250deg,transparent 253deg);mask:radial-gradient(transparent 66%,#000 67%,#000 70%,transparent 71%);pointer-events:none}.node.selected:before{opacity:1;border-color:rgba(var(--rgb),.7);box-shadow:0 0 18px rgba(var(--rgb),.3),inset 0 0 12px rgba(var(--rgb),.15);animation:ring-breathe 2.8s ease-in-out infinite}.node.selected:after{opacity:1;animation:orbit 5s linear infinite}.node:active{filter:brightness(1.4)}.hud{flex-shrink:0;height:60px;border-top:1px solid #ffffff12;display:flex;justify-content:space-between;align-items:center;gap:15px}.energy-readout{display:flex;align-items:center;gap:12px}.hud-label{color:#78849f;font-size:8px;letter-spacing:2px}.energy-readout output{color:var(--accent);font-size:30px;font-weight:800;font-style:normal;font-variant-numeric:tabular-nums}.capacity{font-size:12px;color:#586580}.step-controls{display:flex;align-items:center;gap:14px}.step-controls button{border:1px solid #ffffff25;background:#11192c99;color:#cfd7ed;border-radius:6px;min-width:40px;min-height:36px;font-size:21px}.step-controls span{font-size:9px;letter-spacing:2px;color:#77819b}.step-controls #reset{font-size:11px;padding:0 12px;margin-left:5px}.build{font-size:8px;letter-spacing:2px;color:#6b7692;display:flex;flex-direction:column;gap:4px;text-align:right}.build small{font-size:8px;letter-spacing:1px}#fx{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:4}.spark{position:absolute;width:4px;height:4px;left:var(--x);top:var(--y);background:var(--accent);border-radius:50%;box-shadow:0 0 10px var(--glow);animation:spark .65s cubic-bezier(.12,.65,.35,1) forwards}.shockwave{position:absolute;left:var(--x);top:var(--y);width:10px;height:10px;border:2px solid var(--accent);border-radius:50%;animation:shock .65s ease-out forwards;box-shadow:0 0 18px var(--glow)}#notice{position:absolute;bottom:64px;left:50%;transform:translateX(-50%);background:#111a30e8;border:1px solid #ffffff20;padding:9px 17px;border-radius:8px;font-size:12px;max-width:80%;pointer-events:none;opacity:0;transition:opacity .2s;z-index:8}#notice.visible{opacity:1}.settings{position:absolute;inset:0;background:#020513b8;backdrop-filter:blur(12px);z-index:10;display:grid;place-items:center;padding:15px}.settings-card{width:min(740px,94%);max-height:100%;overflow:auto;background:#10172a;border:1px solid #ffffff25;border-radius:14px;padding:22px}.settings-card header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ffffff15;padding-bottom:12px;margin-bottom:15px}.settings-card header p{font-size:8px;letter-spacing:2px;color:var(--accent);margin:0 0 6px}.settings-card h2{font-size:24px;margin:0}.settings-card button{min-height:36px;border:1px solid #ffffff25;border-radius:6px;background:#1b2441;color:#dae1f2;padding:7px 12px;font-size:11px}.settings-card #settings-close{font-size:24px;background:none;border:0}.settings-body{display:grid;grid-template-columns:1.2fr 1fr;gap:25px}.settings-body label{font-size:12px;display:block;margin-bottom:10px;color:#bec8df}.themes{display:flex;gap:5px;margin-bottom:16px}.themes button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.upload{position:relative;border:1px dashed #ffffff45;padding:15px;border-radius:7px;cursor:pointer;text-align:center}.upload input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}input[type=range]{width:100%;accent-color:var(--accent);margin:6px 0 16px}.settings-body .switch{display:flex;align-items:center;gap:7px}.switch input{accent-color:var(--accent)}.help{font-size:10px;color:#8d9bb6;line-height:1.7;margin:10px 0}.settings-body output{float:right;color:var(--accent)}#settings-status{font-size:11px;color:var(--accent)}.still *,.still *:before,.still *:after{animation:none!important;transition:none!important}
@keyframes flow{to{stroke-dashoffset:-400}}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes ring-breathe{50%{box-shadow:0 0 30px rgba(var(--rgb),.5),inset 0 0 16px rgba(var(--rgb),.15)}}@keyframes breathe{50%{opacity:.35}}@keyframes ambient{to{transform:translate(6%,15%) rotate(30deg);opacity:.4}}@keyframes spark{from{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(0);opacity:0}}@keyframes shock{from{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(20);opacity:0}}
@media(orientation:portrait){.stage{width:100dvh;height:100vw;height:100dvw;--board-height:calc(100dvw - 104px);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(90deg);padding:0 max(18px,env(safe-area-inset-top));}.node{--size:min(11dvh,calc(var(--board-height) / 3.5))}.banner h1{font-size:clamp(24px,4dvh,55px)}.banner p{font-size:clamp(8px,1dvh,12px)}.toolbar{height:50px}.hud{height:54px}.halo{width:65dvh;height:65dvh;top:-35dvh}.halo-b{width:40dvh;height:40dvh;top:40%}.banner-bottom{margin-top:8px;font-size:8px}.banner-bottom .live{font-size:6px}.toolbar-title{display:none}.build{font-size:7px}.tools button{min-height:34px;font-size:10px;padding:7px 10px}.settings-card{padding:15px}.settings-card header{margin-bottom:10px;padding-bottom:8px}.settings-body{gap:18px}.help{font-size:9px}.settings-card h2{font-size:20px}}
@media(orientation:landscape) and (max-height:500px){.stage{--board-height:calc(100dvh - 100px);padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}.toolbar{height:48px}.hud{height:52px}.toolbar-title{display:none}.banner-bottom{margin-top:8px;font-size:8px}.tools button{font-size:10px;min-height:34px;padding:7px 10px}.settings-card{padding:15px}.settings-card header{padding-bottom:8px;margin-bottom:10px}.settings-card h2{font-size:20px}.help{font-size:9px}}
@media(max-height:350px) and (orientation:landscape){.banner-bottom .live{display:none}.hud-label,.build{display:none}.node{min-width:34px;min-height:34px}.banner h1{font-size:25px}.settings-card header p{display:none}}
@media(prefers-reduced-motion:reduce){.stage:not(.motion-opt-in) *,.stage:not(.motion-opt-in) *:before,.stage:not(.motion-opt-in) *:after{animation:none!important;transition:none!important}}

/* A selected numeral deliberately extends a little beyond its tile. */
.node.selected{z-index:3}.node.selected span{transform:scale(1.55);text-shadow:0 0 24px rgba(var(--rgb),.6),0 3px 14px #000a}.node span{pointer-events:none}.node{overflow:visible}
.stage[data-capacity="15"] .board{grid-template-columns:repeat(6,1fr)}
.stage[data-capacity="15"] .node{--size:min(9vw,calc(var(--board-height) / 3.5))}
@media(orientation:portrait){.stage[data-capacity="15"] .node{--size:min(9dvh,calc(var(--board-height) / 3.5))}.tools{gap:5px}.tools #capacity-toggle{padding-left:8px;padding-right:8px}}
.stage[data-capacity="15"] .node[data-value="0"]{grid-row:1;grid-column:1}
.stage[data-capacity="15"] .node[data-value="1"]{grid-row:1;grid-column:2}
.stage[data-capacity="15"] .node[data-value="2"]{grid-row:1;grid-column:3}
.stage[data-capacity="15"] .node[data-value="3"]{grid-row:1;grid-column:4}
.stage[data-capacity="15"] .node[data-value="4"]{grid-row:1;grid-column:5}
.stage[data-capacity="15"] .node[data-value="5"]{grid-row:1;grid-column:6}
.stage[data-capacity="15"] .node[data-value="6"]{grid-row:2;grid-column:6}
.stage[data-capacity="15"] .node[data-value="7"]{grid-row:2;grid-column:5}
.stage[data-capacity="15"] .node[data-value="8"]{grid-row:2;grid-column:4}
.stage[data-capacity="15"] .node[data-value="9"]{grid-row:2;grid-column:3}
.stage[data-capacity="15"] .node[data-value="10"]{grid-row:2;grid-column:2}
.stage[data-capacity="15"] .node[data-value="11"]{grid-row:2;grid-column:1}
.stage[data-capacity="15"] .node[data-value="12"]{grid-row:3;grid-column:1}
.stage[data-capacity="15"] .node[data-value="13"]{grid-row:3;grid-column:2}
.stage[data-capacity="15"] .node[data-value="14"]{grid-row:3;grid-column:3}
.stage[data-capacity="15"] .node[data-value="15"]{grid-row:3;grid-column:4}
