:root{--night:#0e1430;--dusk:#1c2550;--stone:#3a3f63;--stone-lit:#5a6090;--torch:#ffb347;--ember:#e8622a;--banner:#b3202c;--gold:#e3c05a;--vellum:#efe3c4;--ink:#241a12;--mist:#dfe3f5;--mine:#63c8ff}*{box-sizing:border-box;margin:0}html{background:var(--night)}body{min-height:100svh;color:var(--mist);background:#0b1029;font:400 17px/1.5 Alegreya Sans,system-ui,sans-serif}button{font:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--torch);outline-offset:2px}.top{border-bottom:1px solid var(--stone);background:#090d22;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:10px clamp(16px,2vw,28px);display:flex}.title{align-items:baseline;gap:14px;min-width:0;display:flex}.title span{color:var(--mist);font-size:15px}.brand{color:var(--gold);white-space:nowrap;font:800 clamp(20px,2vw,26px)/1 Cinzel,serif;text-decoration:none}.top-right{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.mode{color:var(--torch);font-size:14px}.chip{border:1px solid var(--stone-lit);white-space:nowrap;padding:4px 9px;font-size:14px}.chip.live:before{content:"";background:#4fbf6b;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.chip.live.off:before{background:var(--banner)}.chip button{color:var(--gold);text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}.linkish{color:var(--mist);text-underline-offset:4px}.wallet{background:var(--banner);color:#fff3df;border:2px solid var(--gold);padding:7px 14px;font-weight:700}.wallet:hover{background:#cf2a38}.offline{color:#fff3df;background:#5f1420;padding:9px clamp(16px,2vw,28px);font-weight:700}.offline[hidden]{display:none}.scene-wrap{position:relative}.scene{scrollbar-color:var(--stone-lit) var(--night);cursor:grab;-webkit-user-select:none;user-select:none;overflow:auto hidden}.scene.dragging,.scene.dragging .tower{cursor:grabbing}.stage{width:3880px;position:relative}.stage svg{width:100%;height:auto;display:block;overflow:hidden}#back,#front{pointer-events:none;position:absolute;inset:0}#castle{z-index:1;position:relative}#front{z-index:2}.nav{z-index:4;border:2px solid var(--gold);color:#fff3df;background:#090d22d9;border-radius:50%;width:42px;height:42px;font-size:26px;line-height:1;position:absolute;top:42%;left:12px}.nav.right{left:auto;right:12px}.nav:hover{background:var(--banner)}.pop{z-index:3;background:var(--vellum);width:230px;color:var(--ink);border:2px solid var(--ink);box-shadow:0 0 0 2px var(--gold), 0 10px 26px #00000080;padding:10px 12px;font-size:15px;line-height:1.35;position:absolute;transform:translate(-50%,-100%)}.pop b{font-size:19px}.pop p{margin:4px 0 8px}.pop .btn{padding:5px 10px}.tower{cursor:pointer;outline:none}.tower:hover .wall,.tower:focus-visible .wall{fill:var(--stone-lit)}.tower.on .wall{fill:#6c72a6}.tower text{text-anchor:middle;fill:var(--gold);font:800 11px Alegreya Sans,sans-serif}.sign{text-anchor:middle;fill:#fff3df;font:700 13px Alegreya Sans,sans-serif}.board{fill:#fff3df;font:700 14px Alegreya Sans,sans-serif}.board.small{font-size:13px}.board.end{text-anchor:end}.board.tiny{fill:#ffd9c9;font:500 10.5px Alegreya Sans,sans-serif}.clock{text-anchor:middle;fill:var(--torch);font:800 14px Alegreya Sans,sans-serif}.clock.small{fill:var(--mist);font-size:12px;font-weight:500}.lit{fill:var(--torch)}.fresh{animation:.9s ease-out strike}.flame{transform-box:fill-box;transform-origin:bottom;animation:1.7s steps(3,end) infinite flicker}.smoke{animation:4s linear infinite rise}.smoke.late{animation-delay:-2s}@keyframes rise{0%{opacity:0;transform:translateY(6px)}25%{opacity:.55}to{opacity:0;transform:translateY(-30px)}}@keyframes flicker{50%{fill:var(--ember);transform:scaleY(.72)}}@keyframes strike{0%{fill:#fff;filter:drop-shadow(0 0 8px #ffd9a0)}to{fill:var(--torch)}}.legend{color:var(--mist);background:#101638;padding:8px clamp(16px,2vw,28px);font-size:14px}.k{width:10px;height:10px;margin:0 5px 0 12px;display:inline-block}.k:first-child{margin-left:0}.k.lit{background:var(--torch)}.k.yours{background:var(--mine)}.k.dark{border:1px solid var(--stone-lit);background:#171c40}.strip{border-bottom:1px solid var(--stone);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 32px;padding:12px clamp(16px,2vw,28px);display:flex}.strip ol{flex-wrap:wrap;gap:6px 26px;padding-left:18px;font-size:15px;display:flex}.strip li{max-width:34ch}.stats{gap:28px;display:flex}.stats span{font-size:13px;display:block}.stats b{color:var(--torch);font-variant-numeric:tabular-nums;font-size:20px}.desk{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:20px;padding:20px clamp(16px,2vw,28px);display:grid}.deed{background:var(--vellum);color:var(--ink);border:3px solid var(--ink);box-shadow:0 0 0 3px var(--gold);padding:20px 22px}.deed h2,.ledger h2,.towers h2,.how h2{font:800 clamp(24px,2.6vw,32px)/1.15 Cinzel,serif}.where{font-size:15px}.where i,#table i{width:10px;height:10px;margin-right:7px;display:inline-block}.deed dl{grid-template-columns:1fr auto;gap:3px 16px;margin:12px 0 14px;display:grid}.deed dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:700}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.actions.tip{border-top:1px solid #b9a97f;margin-top:16px;padding-top:14px}.actions input{font:inherit;border:2px solid var(--ink);color:var(--ink);background:#fff8e8;width:88px;padding:8px 9px}.stepper{display:inline-flex}.stepper button{border:2px solid var(--ink);width:38px;color:var(--ink);background:#fff8e8;font-weight:700}.stepper input{text-align:center;border-width:2px 0;width:58px}.btn{background:var(--banner);color:#fff3df;border:2px solid var(--ink);padding:9px 15px;font-weight:700}.btn:hover:not(:disabled){background:#cf2a38}.btn.plain{color:var(--ink);background:0 0}.btn.plain:hover:not(:disabled){background:#e2d2a8}.btn:disabled{opacity:.5;cursor:not-allowed}.msg{min-height:1.5em;margin-top:8px;font-weight:700}.small{font-size:15px}.ledger{margin-top:22px}.ledger h2,.towers h2,.how h2{color:var(--gold);margin-bottom:10px}.row{border-bottom:1px solid var(--stone);flex-wrap:wrap;align-items:baseline;gap:4px 18px;padding:9px 0;display:flex}.row button,#table button{color:inherit;text-align:left;background:0 0;border:0;padding:0;font-weight:700}.row button{text-underline-offset:3px;text-decoration:underline}.num{font-variant-numeric:tabular-nums}.row button{margin-right:auto}.pos{color:#7fe0a0;font-weight:700}.neg{color:#ff9a8f;font-weight:700}.share{color:var(--gold);text-underline-offset:3px}.latest{margin-top:22px}.activity{scrollbar-color:var(--stone-lit) var(--night);max-height:300px;padding:0;list-style:none;overflow-y:auto}.activity li{border-bottom:1px solid #252b55;padding:7px 0;font-size:15px}.activity button{color:var(--gold);background:0 0;border:0;padding:0;font-weight:700}.activity span{color:#aab0cf;font-size:13px;display:block}dialog{background:var(--vellum);width:calc(100% - 32px);max-width:420px;color:var(--ink);border:3px solid var(--ink);box-shadow:0 0 0 3px var(--gold);margin:auto;padding:22px}dialog::backdrop{background:#080b1eb8}dialog h2{margin-bottom:8px;font:800 26px/1.15 Cinzel,serif}.wallet-list{gap:8px;margin:14px 0;display:grid}.wallet-list .btn{align-items:center;gap:10px;display:flex}.toast{z-index:30;gap:8px;max-width:min(340px,100% - 32px);display:grid;position:fixed;bottom:16px;right:16px}.toast div{background:var(--vellum);color:var(--ink);border:2px solid var(--ink);box-shadow:0 0 0 2px var(--gold);padding:9px 13px;font-weight:700}.toast div.err{color:#fff3df;background:#5f1420;box-shadow:0 0 0 2px #ff9a8f}.collect{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.table-wrap{border:1px solid var(--stone);scrollbar-color:var(--stone-lit) var(--night);max-height:640px;overflow-y:auto}#table{border-collapse:collapse;width:100%}#table th{text-align:left;background:#101638;padding:8px 12px;font-size:14px;font-weight:500;position:sticky;top:0}#table td{border-top:1px solid #252b55;padding:6px 12px}#table tr.on td{background:#2a3160}#table th:nth-child(n+2),#table td:nth-child(n+2){text-align:right}.how{max-width:76ch;margin:0 auto;padding:24px clamp(16px,2vw,28px) 64px}.how p+p{margin-top:12px}.go{transform:translateX(var(--rest))}.f2{opacity:0}.go{animation:cross var(--secs) linear var(--delay) infinite}.go.rare{animation-name:flyby}.f1,.f2{animation:pose var(--t) steps(1) infinite}.f2{animation-name:pose-b}.spin{transform-box:fill-box;transform-origin:50%;animation:1.1s linear infinite spin}.bob{animation:3.4s ease-in-out infinite bob}.patrol{animation:patrol var(--secs) steps(60) infinite alternate}.twinkle{animation:twinkle var(--t) steps(3) infinite}.flicker{animation:2.3s steps(4,end) infinite twinkle}.shoot{opacity:0;animation:17s linear 4s infinite shoot}.breath{opacity:0;animation:6s step-end infinite breath}@keyframes cross{0%{transform:translateX(var(--from))}to{transform:translateX(var(--to))}}@keyframes flyby{0%{transform:translateX(var(--from))}42%,to{transform:translateX(var(--to))}}@keyframes pose{0%{opacity:1}50%{opacity:0}}@keyframes pose-b{0%{opacity:0}50%{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bob{50%{transform:translateY(3px)}}@keyframes patrol{0%{transform:translateX(var(--x))}to{transform:translateX(calc(var(--x) + var(--span)))}}@keyframes twinkle{50%{opacity:.35}}@keyframes shoot{0%{opacity:0;transform:translate(1000px,30px)rotate(-14deg)}1%{opacity:1}5%{opacity:0;transform:translate(620px,130px)rotate(-14deg)}to{opacity:0}}@keyframes breath{0%,58%{opacity:0}60%,84%{opacity:1}86%,to{opacity:0}}@media (width<=820px){.desk{grid-template-columns:minmax(0,1fr)}.title span,.mode,.chip{display:none}.nav{top:30%}}@media (prefers-reduced-motion:reduce){.flame,.fresh,.go,.f1,.f2,.spin,.bob,.patrol,.smoke,.twinkle,.flicker,.shoot,.breath{animation:none}.go.rare,.shoot,.breath{display:none}.patrol{transform:translateX(var(--x))}}
