*{box-sizing:border-box}::-webkit-scrollbar{width:14px;height:14px}::-webkit-scrollbar-track{background:0 0;margin:8px 0}::-webkit-scrollbar-thumb{background:#3a362e padding-box padding-box;border:4px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#ffb00073 padding-box padding-box}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:#3a362e transparent}}html,body,#app{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);-webkit-tap-highlight-color:transparent;margin:0;font-size:13px;overflow:hidden}:focus{outline:none}:focus-visible{outline:1px solid var(--accent);outline-offset:1px}button,select,input{font-family:var(--font-mono);font-size:13px}.shell{background:var(--panel);flex-direction:column;height:100%;display:flex}header.top{flex-shrink:0;align-items:center;gap:14px;padding:8px 14px;display:flex}header.top h1{font-family:var(--font-pixel);letter-spacing:-.5px;color:var(--accent);text-shadow:0 0 14px #ffb00080;white-space:nowrap;margin:0;font-size:12px}.clock{font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}.clock .yr{color:var(--accent);font-weight:700}.counts{color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;flex-shrink:1;gap:2px 12px;min-width:0;font-size:12px;display:flex}.counts>span{white-space:nowrap}.counts b{color:var(--text);font-weight:500}.spacer{margin-left:auto}.controls{flex-shrink:0;align-items:center;gap:6px;display:flex}.speeds{align-items:center;gap:4px;margin-right:4px;display:inline-flex}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:6px 11px;transition:background .12s,border-color .12s,color .12s}.btn:hover{border-color:var(--accent-dim)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600}.btn.primary:hover{background:var(--accent-dim);border-color:var(--accent-dim)}.btn.danger:hover{border-color:var(--danger);color:var(--danger)}.btn.on{border-color:var(--accent);color:var(--accent)}.chip{background:var(--bg);border:1px solid var(--border);color:var(--muted);cursor:pointer;font-variant-numeric:tabular-nums;border-radius:999px;padding:3px 9px;font-size:11px;transition:border-color .12s,color .12s}.chip:hover{color:var(--text)}.chip.on{border-color:var(--accent);color:var(--accent);font-weight:700}.body{flex:1;min-height:0;display:flex}.stage{background:var(--bg);border-radius:16px;flex:1;min-width:0;margin:10px;position:relative;overflow:hidden}#map{cursor:crosshair;width:100%;height:100%;display:block}body.resizing #map{pointer-events:none}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.resizer{cursor:col-resize;flex-shrink:0;justify-content:center;align-items:center;width:8px;display:flex}.resizer:before{content:"";background:var(--border);border-radius:999px;width:3px;height:26px;transition:background .12s}.resizer:hover:before{background:var(--accent-dim)}.sidebar{flex-direction:column;flex-shrink:0;gap:12px;width:380px;min-height:0;padding:12px;display:flex}.panel{background-color:var(--panel-2);border-radius:8px;flex-direction:column;min-height:0;padding-top:10px;padding-right:10px;display:flex}.panel.grow{flex:1}.panel-head{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:9px 12px;font-size:11px;display:flex}.panel-head:before{content:">";color:var(--accent);transition:transform .15s;display:inline-block}.panel.collapsed .panel-head:before{transform:rotate(90deg)}.panel.collapsed .panel-body{display:none}.panel-body{scrollbar-gutter:stable;min-height:0;padding:2px 16px 18px;overflow-y:auto}.chronicle{flex-direction:column;gap:2px;font-size:12px;line-height:1.5;display:flex}.ev{color:var(--muted);cursor:pointer;border:1px solid #0000;border-radius:6px;padding:4px 6px;transition:background .12s,border-color .12s,color .12s}.ev:hover{background:var(--panel-2);color:var(--text)}.ev.sev2{color:var(--text)}.ev.sev3{color:#ffcf5a}.ev.active{border-color:var(--accent);background:var(--panel-2)}.era{border:1px dashed var(--border);color:var(--muted);border-radius:6px;margin:8px 0 4px;padding:6px 8px;font-size:11px}.era b{color:var(--accent);font-weight:500}.follow-off{align-self:center;position:sticky;bottom:0}.insp h2{font-family:var(--font-pixel);color:var(--accent);text-shadow:0 0 10px #ffb00066;letter-spacing:-.5px;margin:4px 0 10px;font-size:11px;line-height:1.6}.insp .sub{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:12px 0 6px;font-size:11px}.kv{font-variant-numeric:tabular-nums;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:2px 12px;font-size:12px;display:grid}.kv span:nth-child(2n){text-align:right;overflow-wrap:anywhere}.kv span:nth-child(odd){color:var(--muted)}.kv span:nth-child(2n){color:var(--text)}.bars{flex-direction:column;gap:4px;display:flex}.bar{color:var(--muted);grid-template-columns:84px 1fr;align-items:center;gap:8px;font-size:11px;display:grid}.bar .track{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;height:6px;overflow:hidden}.bar .fill{background:var(--accent);opacity:.75;height:100%;display:block}.tags{flex-wrap:wrap;gap:4px;display:flex}.tag{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:10px}.link{color:var(--accent);cursor:pointer;border-bottom:1px dotted #ffb00066;text-decoration:none}.link:hover{color:var(--text)}.empty{color:var(--muted);padding:12px 0;font-size:12px}.deed{color:var(--muted);border-bottom:1px solid #2b292580;padding:2px 0;font-size:11px}.tip{pointer-events:none;border:1px solid var(--border);color:var(--text);white-space:nowrap;z-index:5;opacity:0;background:#020202eb;border-radius:6px;padding:6px 8px;font-size:11px;transition:opacity .12s;position:absolute}.tip.show{opacity:1}.tip .dim{color:var(--muted)}.stats{background:var(--bg);flex-direction:column;gap:10px;padding:14px;display:none;position:absolute;inset:0;overflow-y:auto}.stats.show{display:flex}.chartbox{border:1px solid var(--border);background:var(--panel-2);border-radius:9px;padding:8px 10px}.chartbox h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 6px;font-size:11px;font-weight:400}.chartbox canvas{width:100%;height:120px;display:block}.techtree-box{border:1px solid var(--border);background:var(--panel-2);border-radius:9px;padding:10px 12px 12px}.tech-caption{color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:8px;font-size:12px}.tech-caption b{color:var(--accent);font-weight:500}.tech-for{font-weight:700}.tech-blocked-note{color:var(--warn)}.techtree-scroll{padding-bottom:4px;overflow:auto hidden}.techtree{max-width:100%;height:auto;font-family:var(--font-mono);display:block}.era-label{letter-spacing:.1em;text-transform:uppercase;fill:var(--muted);font-size:9px}.era-count{fill:var(--text);font-variant-numeric:tabular-nums;font-size:9px}.era-rule{stroke:var(--border);stroke-width:1px}.edge{fill:none;stroke:var(--accent);stroke-width:1.6px;opacity:0;transition:opacity .12s}.techtree.focusing .edge.is-lit{opacity:.9}.tnode rect{fill:var(--bg);stroke:var(--border);stroke-width:1px;transition:fill .12s,stroke .12s}.tnode text{fill:var(--muted);pointer-events:none;font-size:10px}.tnode .flag{fill:none}.tnode.known rect{fill:#ffb0002b;stroke:#ffb00080}.tnode.known text{fill:var(--text)}.tnode.researching rect{stroke:var(--accent);stroke-dasharray:4 3}.tnode.researching text{fill:var(--accent);font-weight:700}.tnode.available rect{stroke:var(--muted)}.tnode.available text{fill:var(--text)}.tnode.blocked rect{stroke:var(--warn)}.tnode.blocked text{fill:#ffae85}.tnode.blocked .flag{fill:var(--warn)}.tnode.elsewhere rect{stroke-dasharray:2 3}.tnode.locked{opacity:.4}.techtree.focusing .tnode{opacity:.18}.techtree.focusing .tnode.is-focus,.techtree.focusing .tnode.is-chain,.techtree.focusing .tnode.is-unlock{opacity:1}.techtree.focusing .tnode.is-focus rect{stroke:var(--accent);stroke-width:2px}.techtree.focusing .tnode.is-chain rect{stroke:var(--accent-dim)}.techtree.focusing .tnode.is-unlock rect{stroke:#ffb00073;stroke-dasharray:4 3}.tech-realms{flex-wrap:wrap;gap:5px;margin-bottom:9px;display:flex}.realm-chip{background:var(--bg);border:1px solid var(--border);color:var(--muted);font-size:11px;font-family:var(--font-mono);cursor:pointer;font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;transition:border-color .12s,color .12s;display:inline-flex}.realm-chip:hover{color:var(--text)}.realm-chip.on{border-color:var(--accent);color:var(--text);font-weight:700}.realm-chip .swatch{border-radius:999px;flex-shrink:0;width:7px;height:7px}.tech-where{color:var(--muted);margin-bottom:9px;font-size:11px;line-height:1.55}.tech-where b{color:var(--text);font-weight:500}.tech-hint{color:var(--muted);opacity:.8}.tech-legend{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;flex-wrap:wrap;gap:6px 16px;margin-top:12px;font-size:10px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-swatch{flex-shrink:0;display:block;overflow:visible}.modal-back{z-index:20;background:#020408a8;justify-content:center;align-items:center;animation:.16s ease-out fade;display:none;position:fixed;inset:0}.modal-back.show{display:flex}.modal{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:min(460px,100vw - 40px);padding:18px;animation:.19s cubic-bezier(.2,.8,.2,1) pop;box-shadow:0 18px 60px #0000008c}.modal h2{font-family:var(--font-pixel);color:var(--accent);text-shadow:0 0 10px #ffb00066;letter-spacing:-.5px;margin:0 0 14px;font-size:12px;line-height:1.7}.modal p{color:var(--muted);margin:0 0 12px;font-size:12px;line-height:1.6}.modal .row{align-items:center;gap:8px;margin-bottom:12px;display:flex}.modal input[type=text],.modal input[type=number]{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:4px;flex:1;min-width:0;padding:6px 8px}.modal input:focus{border-color:var(--accent)}.field-label{text-transform:uppercase;letter-spacing:.08em;width:44px;color:var(--muted);flex-shrink:0;font-size:11px}.modal .actions{justify-content:flex-end;gap:8px;display:flex}.worlds{flex-direction:column;gap:6px;max-height:220px;margin-bottom:14px;display:flex;overflow-y:auto}.world-row{background:var(--panel-2);cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:12px;display:flex}.world-row:hover{border-color:var(--border)}.world-row .meta{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.notice{border:1px solid var(--warn);color:#ffae85;background:#ff6a2b17;border-radius:6px;margin-bottom:12px;padding:8px 10px;font-size:12px}.intro{background:var(--bg);z-index:40;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.intro-title{font-family:var(--font-pixel);color:var(--accent);letter-spacing:-.5px;font-size:15px;animation:2.4s ease-in-out infinite alternate glow}.intro-sub{color:var(--muted);font-size:12px}body.booted .intro{animation:.6s cubic-bezier(.2,.9,.2,1) .5s forwards liftOff}body.booting #app{opacity:0}body.booted #app{animation:.4s ease-out .7s forwards fadeIn}@keyframes glow{0%{text-shadow:0 0 8px #ffb00059}to{text-shadow:0 0 22px #ffb000bf}}@keyframes liftOff{to{opacity:0;visibility:hidden;transform:translateY(-24px)scale(.96)}}@keyframes fadeIn{to{opacity:1}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.97)}}@media (prefers-reduced-motion:reduce){.intro{display:none}body.booting #app,body.booted #app{opacity:1;animation:none}.intro-title,.modal,.modal-back{animation:none}}
