:root{--bg:var(--h-ground);--panel:var(--h-panel);--panel-2:#f7f5ef;--ink:var(--h-ink);--muted:var(--h-ink-2);--faint:#8a96a0;--rule:var(--h-line);--accent:var(--h-accent);--warn:var(--h-bad);--mono:var(--h-font);--sans:var(--h-font)}*{box-sizing:border-box}html,body{height:100%;overflow:hidden}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:13px}.field{align-items:center;gap:6px;display:flex}.field label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-size:10px}input,select,button{font-family:var(--h-font);background:var(--h-panel);color:var(--ink);border:1px solid var(--rule);border-radius:8px;padding:7px 12px;font-size:13px}button{cursor:pointer;font-weight:500}button:hover:not(:disabled){border-color:var(--h-accent);color:var(--h-accent-ink)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{border-color:var(--h-accent);background:var(--h-accent);color:#fff;font-weight:700}button.primary:hover:not(:disabled){color:#fff;background:#d14a22}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}dl.readout{font-family:var(--mono);grid-template-columns:max-content 1fr;gap:5px 12px;margin:0;font-size:11.5px;display:grid}dl.readout dt{color:var(--faint)}dl.readout dd{overflow-wrap:anywhere;margin:0}.controls{flex-wrap:wrap;gap:6px;display:flex}.city-screen[hidden]{display:none}.city-screen{inset:var(--topbar-height) 0 0 var(--rail-width);z-index:40;background:#1d273047;justify-content:center;align-items:flex-start;padding:16px;display:flex;position:fixed}.city-panel{background:var(--panel);border:1px solid var(--rule);border-radius:16px;width:100%;max-height:100%;overflow:auto;box-shadow:0 8px 30px -12px #1d273059}.city-panel header{border-bottom:1px solid var(--rule);background:var(--panel);align-items:baseline;gap:14px;padding:14px 18px;display:flex}.cs-status{border-bottom:1px solid var(--rule);padding:8px 18px;font-size:12px}.cs-status.err{color:var(--warn)}.cs-status.ok{color:var(--accent)}.city-panel header h2{letter-spacing:.02em;margin:0;font-size:17px}.city-panel header .cs-sub{font-family:var(--mono);color:var(--muted);flex:1;font-size:11.5px}.cs-body{grid-template-columns:minmax(360px,auto) minmax(240px,1fr) minmax(300px,1.2fr);align-items:start;gap:18px;padding:18px;display:grid}@media (max-width:980px){.cs-body{grid-template-columns:1fr}}.cs-body h3{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:10.5px;font-weight:600}.cs-body section+section,.cs-body h3:not(:first-child){margin-top:16px}#cs-canvas{background:var(--panel-2);border:1px solid var(--rule);cursor:pointer;border-radius:4px;display:block}.cs-tilehint{color:var(--faint);max-width:360px;margin:8px 0;font-size:11.5px}.cs-tilehint.wasting{color:var(--warn)}.cs-row{border-bottom:1px solid var(--rule);align-items:center;gap:8px;padding:4px 6px;font-size:12px;display:flex}.cs-row span:first-child{flex:1}.cs-row button{padding:2px 8px;font-size:11px}.cs-chip{background:var(--panel-2);border:1px solid var(--rule);border-radius:3px;margin:0 5px 5px 0;padding:3px 8px;font-size:11.5px;display:inline-block}.cs-queue,.cs-available{max-height:260px;overflow:auto}.dim{color:var(--faint)}.cities-screen[hidden]{display:none}.cities-screen{inset:var(--topbar-height) 0 0 var(--rail-width);z-index:40;background:#1d273047;justify-content:center;align-items:flex-start;padding:16px;display:flex;position:fixed}.cities-panel{background:var(--panel);border:1px solid var(--rule);border-radius:16px;flex-direction:column;width:100%;max-height:100%;display:flex;box-shadow:0 8px 30px -12px #1d273059}.cities-panel header{border-bottom:1px solid var(--rule);background:var(--panel);align-items:baseline;gap:14px;padding:14px 18px;display:flex}.cities-panel header h2{margin:0;font-size:20px;font-weight:700}.cts-body{padding:0 6px 6px;overflow:auto}#cts-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}#cts-table th{background:var(--panel);text-align:left;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding:10px 10px 8px;font-size:10px;font-weight:600;position:sticky;top:0}#cts-table td{border-bottom:1px solid var(--h-line);padding:8px 10px}#cts-table tr[data-city]{cursor:pointer}#cts-table tr[data-city]:hover td{background:#e4572e14}#cts-table .cts-name{font-weight:600}#cts-table td.bad{color:var(--warn)}#cts-table td.idle{color:var(--warn);opacity:.85}#cts-table td.soon{color:var(--accent)}.warn-inline{color:var(--warn);font-family:var(--mono);font-size:11px}.tech-screen[hidden]{display:none}.tech-screen{inset:var(--topbar-height) 0 0 var(--rail-width);z-index:45;background:#1d273047;justify-content:center;align-items:flex-start;padding:16px;display:flex;position:fixed}.tech-panel{background:var(--panel);border:1px solid var(--rule);border-radius:16px;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden;box-shadow:0 8px 30px -12px #1d273059}.tech-panel header{border-bottom:1px solid var(--rule);background:var(--panel);flex-wrap:wrap;align-items:center;gap:8px 18px;padding:12px 18px;display:flex}.tech-panel header h2{margin:0;font-size:17px}.tech-status{flex:1;min-width:280px;font-size:13px}.tech-status .dim,.tech-detail .dim{color:var(--muted)}.tech-status .warn,.tech-flow.warn{color:var(--warn)}.tech-rate{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:6px;font-size:12px;display:flex}.tech-rate strong{color:var(--ink);text-align:center;min-width:36px}.tech-rate button{padding:2px 8px}.tech-flow{color:var(--accent);margin-left:6px}.tech-scroll{background:#f7f5ef;flex:1;overflow:auto}.tech-canvas{position:relative}.tech-band{background:#1d273004;border-right:1px solid #1d273009;position:absolute;top:0}.tech-band.odd{background:#1d273008}.tech-band span{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding:9px 14px;font-size:11px;display:block;position:sticky;top:0}.tech-edges{pointer-events:none;position:absolute;top:0;left:0}.tech-edges path{fill:none;stroke:#d5dce0;stroke-width:1.5px}.tech-edges path.open{stroke:#a9b6be}.tech-edges path.known{stroke:#8cc5a0}.tech-edges path.path{stroke:var(--accent);stroke-width:2px;stroke-dasharray:5 4}.tech-card{text-align:left;border:1px solid var(--rule);color:var(--ink);cursor:pointer;font-family:var(--sans);background:#fff;border-radius:5px;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;padding:5px 10px;display:flex;position:absolute;overflow:hidden}.tech-card .tn{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:13px;font-weight:600;overflow:hidden}.tech-card .tl{font-family:var(--mono);color:var(--muted);font-size:11px}.tech-card i{background:var(--accent);height:3px;position:absolute;bottom:0;left:0}.tech-card.known{cursor:default;background:#e8f3ec;border-color:#b9dcc4}.tech-card.known .tn{color:#1d7a4f}.tech-card.ready{background:#fff;border-color:#8d9ca6}.tech-card.ready:hover,.tech-card.locked:hover{border-color:var(--accent)}.tech-card.locked{opacity:.62}.tech-card.locked:hover{opacity:1}.tech-card.researching{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 18px #e4572e40;background:var(--h-accent-tint)}.tech-card.on-path{opacity:1;border-style:dashed;border-color:var(--accent)}.tech-card.goal{border-color:#9a6b0c;box-shadow:0 0 0 2px #9a6b0c}.tech-card.goal .tl{color:#9a6b0c}.tech-detail{border-top:1px solid var(--rule);background:var(--panel-2);min-height:64px;padding:10px 18px 12px;font-size:13px;line-height:1.45}.tech-detail strong{font-size:14px}.cs-soon-head{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin:10px 0 4px;font-size:10px}.cs-row.soon{opacity:.55}.tech-card .tu{color:#9a6b0c;white-space:nowrap;text-overflow:ellipsis;max-width:100%;min-height:12px;font-size:10.5px;overflow:hidden}.tech-card.known .tu{color:#7fa892}.tech-detail .unlocks b{color:#9a6b0c;font-weight:600}.cs-specialists{flex-direction:column;gap:5px;margin-top:12px;font-size:12px;display:flex}.cs-specialists label{color:var(--muted)}.cs-specialists select{font-family:var(--mono);background:var(--panel-2);color:var(--ink);border:1px solid var(--rule);padding:4px 6px;font-size:12px}.cs-specialists .dim{line-height:1.4}.rv-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.rv-table th{text-align:left;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding:10px 10px 8px;font-size:10px;font-weight:600}.rv-table td{border-bottom:1px solid var(--h-line);padding:9px 10px}.rv-table td.bad{color:var(--warn)}.rv-table td.soon,.rv-table .soon{color:var(--accent)}.rv-swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:7px;display:inline-block}.rv-actions{text-align:right;white-space:nowrap}button.danger{border-color:var(--warn);color:var(--warn)}button.danger:hover{background:#d6452e1a}button.war{border-color:var(--warn);color:var(--warn)}.dialog-screen{align-items:center;inset:0}.dialog-panel{width:min(460px,92vw)}.dialog-body{padding:6px 18px 4px;font-size:13px;line-height:1.5}.dialog-actions{justify-content:flex-end;gap:8px;padding:10px 18px 16px;display:flex}.odds-good{color:var(--accent)}.odds-bad{color:var(--warn)}.game-over p{margin:0 0 10px}#rivals{white-space:nowrap}.rv-temper{color:var(--accent);margin-top:3px;font-size:11px}button.replaces{border-style:dashed}.cs-chip.wonder{color:#9a6b0c;border-color:#9a6b0c}.wonder-tag{color:#9a6b0c;font-size:10.5px}.rv-wonders h3{color:#9a6b0c;margin:18px 0 6px;font-size:13px;font-weight:600}.gov-panel{max-width:980px}.gv-list{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:10px;display:grid}.gv-card{background:var(--panel-2);border:1px solid var(--rule);border-radius:4px;padding:10px 12px}.gv-card.current{border-color:#6fbf73}.gv-card.locked{opacity:.6}.gv-head{justify-content:space-between;align-items:center;gap:8px;font-size:14px;display:flex}.gv-summary{margin:4px 0 6px;font-size:11.5px}.gv-effects{margin:0;padding-left:16px;font-size:11.5px;line-height:1.5}.gv-effects li.good{color:#1d7a4f}.gv-effects li.bad{color:#d6452e}.gv-card .ok{color:#1d7a4f;font-size:12px}#government.warn{color:#9a6b0c}.deal-panel{max-width:1000px}.deal-columns{grid-template-columns:1fr 1fr 1fr;gap:14px;display:grid}.deal-columns h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted,#55636e);margin:0 0 8px;font-size:12px}.deal-item{margin:4px 0;font-size:12.5px;display:block}.deal-item input[type=number]{width:64px}.deal-sub{margin:10px 0 4px;font-size:11.5px}.deal-verdict{border:1px solid var(--rule);border-radius:4px;margin:14px 0 6px;padding:8px 10px;font-size:13px}.deal-verdict.ok{color:#1d7a4f;border-color:#4f8f55}.deal-verdict.bad{color:#d6452e;border-color:#8f5a4f}.rv-reasons{margin:4px 0 0;padding-left:14px;font-size:11px;line-height:1.45}.rv-reasons li.good{color:#1d7a4f}.rv-reasons li.bad{color:#d6452e}.rv-pacts{color:#2f6f9f;margin-top:4px;font-size:11px}.att-friendly,.att-pleased{color:#1d7a4f}.att-annoyed{color:#9a6b0c}.att-furious{color:#d6452e}.rv-offer td{background:#e0a52624;font-size:12.5px}button.link{color:#2f6f9f;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:10.5px;text-decoration:underline}.score-panel{max-width:1040px}.sc-table tr.sc-me td{background:#e4572e12}.sc-legend{color:var(--ink);flex-wrap:wrap;gap:14px;margin:16px 0 4px;font-size:12px;display:flex}.sc-key{align-items:center;gap:6px;display:inline-flex}.sc-charts{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;display:grid}.sc-figure{margin:0;position:relative}.sc-figure figcaption{color:var(--muted);margin-bottom:2px;font-size:12px}.sc-chart{width:100%;height:auto;display:block}.sc-grid{stroke:var(--rule);stroke-width:1px}.sc-axis{fill:var(--faint);font-size:9px;font-family:var(--mono)}.sc-name{fill:var(--ink);font-size:9.5px}.sc-cross{stroke:var(--muted);stroke-width:1px}.sc-tip{background:var(--panel);border:1px solid var(--rule);min-width:130px;color:var(--ink);pointer-events:none;border-radius:4px;padding:6px 8px;font-size:11.5px;position:absolute;top:18px;box-shadow:0 4px 14px #1d273033}.ng-panel{width:min(1240px,96vw)}.ng-body{grid-template-columns:1fr 280px;gap:14px;padding:12px 14px 14px;display:grid;overflow:auto}@media (max-width:820px){.ng-body{grid-template-columns:1fr}}.ng-civs{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));align-content:start;gap:8px;display:grid}.ng-civ{text-align:left;background:var(--panel-2);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;border-radius:4px;padding:9px 11px;font-size:11.5px;display:block}.ng-civ:hover{border-color:var(--muted)}.ng-civ.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.ng-civ-head{align-items:center;gap:8px;margin-bottom:6px;font-size:13.5px;display:flex}.ng-swatch{border-radius:3px;flex:none;width:14px;height:14px;box-shadow:0 0 0 1px #1d273033}.ng-trait ul{color:#1d7a4f;margin:1px 0 5px;padding-left:15px;line-height:1.45}.ng-unique{border-top:1px solid var(--rule);padding-top:5px;line-height:1.45}.ng-world h3{margin:0 0 8px;font-size:13px}.ng-world .field{margin-bottom:7px}.ng-note{margin:0 0 9px;font-size:11px;line-height:1.4}.ng-chosen{border-top:1px solid var(--rule);margin:14px 0 10px;padding-top:10px;font-size:12px;line-height:1.45}.ng-start{width:100%;padding:9px;font-size:14px}.ng-continue{width:100%;margin-top:8px}.ng-world .field label{width:52px}#new-game{white-space:nowrap}.cts-resources{border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 18px;font-size:12px;display:flex}.res-chip{border:1px solid var(--rule);background:var(--panel-2);border-radius:3px;padding:2px 7px}.res-chip.have,.res-chip.traded{border-color:#4f8f5a}.res-chip.unjoined{border-color:#9a6b0c}.res-chip.hidden{opacity:.55}:root{--h-ink:#1d2730;--h-ink-2:#55636e;--h-line:#dfe5e8;--h-panel:#fff;--h-ground:#f3efe4;--h-wash:#eef2f4;--h-accent:#e4572e;--h-accent-ink:#8a2f13;--h-accent-tint:#fbe3d9;--h-good:#3f9a5a;--h-good-ink:#1d7a4f;--h-caution:#e0a526;--h-caution-tint:#fdf3e2;--h-caution-ink:#6b4a0a;--h-bad:#d6452e;--h-font:"Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--h-radius:10px;--h-radius-lg:14px;--h-touch:44px}.h-panel{background:var(--h-panel);border:1px solid var(--h-line);border-radius:var(--h-radius-lg);color:var(--h-ink);font-family:var(--h-font);font-variant-numeric:tabular-nums}.h-sub{color:var(--h-ink-2);font-size:12px;font-weight:700}.h-title{font-size:18px;font-weight:700}.h-muted{color:var(--h-ink-2)}.h-rule{background:var(--h-line);border:0;height:1px;margin:0}.h-chip{border-radius:3px;flex-shrink:0;width:12px;height:12px;display:inline-block}.h-key{color:var(--h-ink-2);background:var(--h-wash);border-radius:4px;padding:1px 5px;font-size:11px;font-weight:700}.h-btn,.h-btn-primary{min-height:var(--h-touch);border-radius:var(--h-radius);font:inherit;font-family:var(--h-font);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.h-btn{border:1px solid var(--h-line);background:var(--h-panel);color:var(--h-ink)}.h-btn:hover:not(:disabled){border-color:var(--h-accent);color:var(--h-accent-ink)}.h-btn-primary{background:var(--h-accent);color:#fff;border:0;font-size:15px;font-weight:700}.h-btn-primary:hover:not(:disabled){background:#d14a22}.h-btn-primary small{opacity:.92;font-size:12px;font-weight:500}.h-btn:disabled,.h-btn-primary:disabled{opacity:.4;cursor:not-allowed}.h-btn:focus-visible,.h-btn-primary:focus-visible{outline:2px solid var(--h-accent);outline-offset:2px}.h-stat{flex-direction:column;align-items:flex-end;line-height:1.25;display:flex}.h-stat>span{color:var(--h-ink-2);font-size:11px}.h-stat>b{white-space:nowrap;font-size:14px;font-weight:700}.h-rows{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:13px;display:grid}.h-rows dt{color:var(--h-ink-2)}.h-rows dd{text-align:right;overflow-wrap:anywhere;margin:0;font-weight:500}.h-note{border-radius:var(--h-radius);background:var(--h-caution-tint);color:var(--h-caution-ink);gap:10px;padding:10px 12px;font-size:13px;display:flex}.h-bar{background:var(--h-wash);border-radius:99px;height:8px;overflow:hidden}.h-bar>i{background:var(--h-good);border-radius:99px;height:100%;display:block}:root{--topbar-height:56px;--rail-width:72px}#app{height:100vh;font-family:var(--h-font);font-variant-numeric:tabular-nums;position:relative}.topbar{height:var(--topbar-height);z-index:30;background:var(--h-panel);border-bottom:1px solid var(--h-line);color:var(--h-ink);align-items:center;gap:16px;padding:0 16px 0 20px;display:flex;position:absolute;inset:0 0 auto}.topbar .brand{letter-spacing:-.01em;font-size:17px;font-weight:700}.topbar .sep{background:var(--h-line);flex-shrink:0;width:1px;height:24px}.civ-line{min-width:0;color:var(--h-ink-2);white-space:nowrap;text-overflow:ellipsis;flex:1;align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex;overflow:hidden}.civ-line .warn,.topbar b.warn{color:var(--h-bad)}.topbar b.rising{color:var(--h-good-ink)}.topbar b.falling{color:var(--h-bad)}.stat-button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;max-width:240px;margin:0 -6px;padding:4px 6px}.stat-button b{text-overflow:ellipsis;max-width:228px;overflow:hidden}.stat-button:hover{background:var(--h-accent-tint)}.science b{align-items:center;gap:4px;display:flex}.science em{text-align:center;min-width:34px;font-style:normal}.science .step{border:1px solid var(--h-line);background:var(--h-panel);width:22px;height:22px;color:var(--h-ink);font:inherit;cursor:pointer;border-radius:6px;padding:0;font-weight:700;line-height:1}.science .step:disabled{opacity:.35;cursor:default}#end-turn.warn{background:var(--h-caution);color:var(--h-ink)}.menu-btn{width:var(--h-touch);padding:0}.rail{left:0;top:var(--topbar-height);width:var(--rail-width);z-index:25;background:var(--h-panel);border-right:1px solid var(--h-line);flex-direction:column;gap:6px;padding:12px 8px;display:flex;position:absolute;bottom:0}.rail-btn{border-radius:var(--h-radius);width:56px;height:56px;font-family:var(--h-font);color:var(--h-ink);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:0;font-size:11px;font-weight:500;display:flex}.rail-btn:hover{background:var(--h-wash)}.rail-btn.on{background:var(--h-accent-tint);color:var(--h-accent-ink);font-weight:700}.rail-btn.warn{color:var(--h-bad);font-weight:700}.rail-gap{flex:1}.stage{top:var(--topbar-height);left:var(--rail-width);position:absolute;bottom:0;right:0;overflow:hidden}canvas{cursor:grab;touch-action:none;width:100%;height:100%;display:block}canvas.dragging{cursor:grabbing}.hint{max-width:calc(100% - 360px);color:var(--h-ink-2);pointer-events:none;background:#ffffffdb;border-radius:8px;padding:6px 10px;font-size:11.5px;position:absolute;bottom:16px;left:16px}.tooltip{z-index:15;pointer-events:none;border-radius:var(--h-radius);background:var(--h-ink);color:#fff;max-width:280px;padding:8px 12px;font-size:12.5px;line-height:1.5;position:absolute;box-shadow:0 4px 14px -6px #1d273080}.tooltip .dim{color:#c9d2d9;font-size:12px}.tooltip .res{color:#f7b49c}.tooltip .yields{color:#c9d2d9;font-size:12px}.tooltip .yields b{color:#fff}.report{z-index:20;width:360px;max-height:52%;padding:6px 0;font-size:13px;line-height:1.4;position:absolute;top:16px;left:16px;overflow:auto}.report[hidden]{display:none}.report-head{justify-content:space-between;align-items:center;padding:6px 16px 8px;font-size:14px;font-weight:700;display:flex}.report-head button{width:32px;height:32px;color:var(--h-ink-2);cursor:pointer;background:0 0;border:0;border-radius:8px;font-size:18px;line-height:1}.report-head button:hover{background:var(--h-wash)}.report-line{cursor:pointer;padding:7px 16px 7px 34px;position:relative}.report-line:before{content:"";background:var(--h-line);border-radius:3px;width:10px;height:10px;position:absolute;top:12px;left:16px}.report-line:hover{background:var(--h-ground)}.report-line.important:before{background:var(--h-accent)}.report-line.idle{color:var(--h-caution-ink)}.report-line.idle:before{background:var(--h-caution)}.report-line .offer{gap:8px;margin-top:6px;display:flex}.report-line .offer button{border:1px solid var(--h-line);background:var(--h-panel);min-height:36px;font:inherit;cursor:pointer;border-radius:8px;padding:0 12px;font-weight:500}.report-line .offer button.primary{background:var(--h-accent);color:#fff;border:0;font-weight:700}.side{top:calc(var(--topbar-height) + 16px);width:300px;max-height:calc(100vh - var(--topbar-height) - 32px);z-index:22;flex-direction:column;gap:16px;padding:18px;display:flex;position:absolute;right:16px;overflow-y:auto}.side>*{flex-shrink:0}.side[hidden],.side section[hidden]{display:none}.side section{flex-direction:column;gap:12px;display:flex}.side section+section{border-top:1px solid var(--h-line);padding-top:16px}.side-head{align-items:flex-start;gap:10px;display:flex}.side-head>div{flex-direction:column;flex:1;gap:2px;display:flex}.side-head .h-chip{margin-top:7px}.side-head .close{width:36px;min-height:36px;padding:0;font-size:18px}.side-label{margin-bottom:-4px}.side .controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.side .controls:empty{display:none}.side .controls button{min-height:var(--h-touch);border:1px solid var(--h-line);border-radius:var(--h-radius);background:var(--h-panel);color:var(--h-ink);font-family:var(--h-font);cursor:pointer;text-align:center;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:13.5px;font-weight:500;line-height:1.2;display:inline-flex}.side .controls button:hover:not(:disabled){border-color:var(--h-accent);color:var(--h-accent-ink)}.side .controls button.primary,.side .controls button.h-btn-primary{background:var(--h-accent);color:#fff;border:0;font-weight:700}.side .controls button.primary .h-key,.side .controls button.h-btn-primary .h-key{color:#fff;background:#ffffff38}.side .controls button:disabled{opacity:.35;cursor:not-allowed}.side .controls button.replaces{border-style:dashed}.side .controls .wide,.side .controls button:only-child,#unit-actions button,#work-actions button{grid-column:1/-1}.settings{z-index:24;width:340px}.settings h2{color:var(--h-ink-2);margin:4px 0 -6px;font-size:12px;font-weight:700}.settings h2 .dev{margin-left:6px;font-weight:500}.settings .controls{grid-template-columns:repeat(3,minmax(0,1fr))}.settings select,.settings input:not([type]),.settings input[type=text]{border:1px solid var(--h-line);background:var(--h-panel);min-height:40px;color:var(--h-ink);font-family:var(--h-font);border-radius:8px;padding:0 10px;font-size:13px}.settings .controls select{grid-column:1/-1}.settings .field{grid-template-columns:64px 1fr;align-items:center;gap:8px;display:grid}.settings .field label{color:var(--h-ink-2);font-size:12px}.toggles{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;font-size:13px;display:grid}.toggles label{cursor:pointer;align-items:center;gap:8px;display:flex}.toggles input{accent-color:var(--h-accent);width:16px;height:16px}.slider{grid-template-columns:96px 1fr 44px;align-items:center;gap:8px;padding:2px 0;display:grid}.slider label{color:var(--h-ink-2);font-size:11.5px}.slider input[type=range]{width:100%;accent-color:var(--h-accent)}.slider output{text-align:right;font-size:12px}#reset-params{align-self:flex-start}.hud{color:var(--h-ink-2);white-space:pre-wrap;font-size:11.5px}.log{background:var(--h-ground);border-radius:var(--h-radius);white-space:pre-wrap;max-height:150px;padding:10px 12px;font-size:12px;line-height:1.45;overflow-y:auto}.log .ok{color:var(--h-good-ink)}.log .err{color:var(--h-bad)}.log .note{color:var(--h-ink-2)}.minimap{z-index:21;flex-direction:column;gap:8px;width:300px;padding:10px 16px 14px;display:flex;position:absolute;bottom:16px;right:16px}.mini-head{justify-content:space-between;align-items:baseline;font-size:13px;display:flex}.mini-head span{font-size:12px}.mini-frame{border-radius:8px;line-height:0;position:relative;overflow:hidden}.mini-frame canvas{display:block}#mini-view{cursor:pointer;touch-action:none;position:absolute;inset:0}#selection-panel{max-height:calc(100vh - var(--topbar-height) - 32px - 210px)}
