:root{color-scheme:dark;--bg: #0e1525;--panel: #162236;--panel-alt: #0f1d34;--accent: #7bffb7;--text: #e8f1ff;--text-dim: #9fb2d1;--warning: #ffcc70;--negative: #f08c42;--alert: #ff8c8c;--border: #223557;--border-subtle: #1f2c4b;--border-hover: #96d9ff;--shadow-colour: #0a1020;--grid: #0f1b2f}*{box-sizing:border-box}html,body{overscroll-behavior:none}body{margin:0;background:linear-gradient(180deg,#0b1424,#0f1c33,#0b1424);color:var(--text);font-family:"Press Start 2P",Lucida Console,Monaco,monospace;min-height:100vh;min-height:100dvh;user-select:none;-webkit-user-select:none}input,textarea,select{user-select:text;-webkit-user-select:text}#app{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto;height:100vh;height:100dvh;min-height:0;overflow:hidden}button.primary{background:linear-gradient(180deg,#2f6df6,#214bb6);border:2px solid #0b2f8a;color:#f2f6ff;border-radius:10px;padding:8px 12px;cursor:pointer;font-weight:700;transition:transform .1s ease,border-color .1s ease,box-shadow .1s ease}button.secondary{background:var(--panel);border:2px solid var(--border);color:#d9e6ff;border-radius:10px;padding:8px 12px;cursor:pointer;transition:transform .1s ease,border-color .1s ease,box-shadow .1s ease}button.secondary.active{background:#1f3354;border-color:var(--accent);color:var(--text);box-shadow:0 4px 0 var(--shadow-colour)}button.primary:hover,button.secondary:hover{border-color:var(--border-hover);box-shadow:0 4px 0 var(--shadow-colour)}button.primary:active,button.secondary:active{transform:translateY(0)}button.secondary.active{transform:translateY(-2px)}.chip-button{background:var(--panel);border:1px solid var(--border);color:#d9e6ff;border-radius:8px;padding:6px 10px;cursor:pointer;font-size:11px;white-space:nowrap;transition:border-color .1s ease,background .1s ease,color .1s ease}.chip-button.active{border-color:var(--accent);background:#7bffb729;color:#fff;box-shadow:0 0 0 1px #7bffb726}.topbar{display:flex;align-items:stretch;gap:12px;min-height:0;overflow-y:auto;background:#0d1731;border-bottom:2px solid var(--border-subtle);padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top,0px));padding-left:calc(16px + env(safe-area-inset-left,0px));padding-right:calc(16px + env(safe-area-inset-right,0px));box-shadow:inset 0 -4px #0a0f1b}.logo{display:flex;gap:8px;align-items:center;font-weight:700;white-space:nowrap}.ribbon{flex:1;display:flex;align-items:stretch;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:thin;padding-bottom:4px}.ribbon-controls{display:flex;align-items:stretch;gap:8px;flex:0 0 auto;padding-bottom:4px}.ribbon-chip{flex:0 0 auto;display:flex;flex-direction:column;justify-content:center;gap:5px;white-space:nowrap;background:var(--panel);border:2px solid var(--border);border-radius:10px;padding:7px 10px;box-shadow:0 4px 0 var(--shadow-colour);font-size:12px}.ribbon-line{display:flex;align-items:center;gap:12px}.ribbon-chip-button{cursor:pointer;font-family:inherit;color:var(--text);text-align:left}.ribbon-chip-button:hover{border-color:var(--accent)}.ribbon-strong{color:#fff;font-weight:700}.ribbon-dim{color:var(--text-dim)}.ribbon-rci{gap:4px;justify-content:center}.rci-row{display:flex;align-items:center;gap:5px}.rci-track{width:88px;height:8px;background:#0c1425;border:1px solid var(--border-subtle);border-radius:4px;overflow:hidden}.rci-fill{display:block;height:100%;transition:width .2s ease}.rci-label{font-size:9px;color:var(--text-dim);width:8px}.ribbon-btn{display:flex;align-items:center;justify-content:center;min-width:34px;padding:6px 8px;background:#132644;border:2px solid var(--border);border-radius:10px;color:var(--text);font-family:inherit;font-size:13px;cursor:pointer;box-shadow:0 4px 0 var(--shadow-colour);list-style:none}.ribbon-btn:hover{border-color:var(--accent)}.ribbon-btn.active{border-color:var(--accent);box-shadow:0 4px 0 var(--shadow-colour),0 0 10px #7bffb740}.ribbon-menu{position:relative;flex:0 0 auto;display:flex}.ribbon-menu>summary{display:flex}.ribbon-menu>summary::-webkit-details-marker{display:none}.ribbon-menu[open]>summary{border-color:var(--accent)}.ribbon-menu-panel{position:fixed;display:grid;gap:6px;padding:10px;background:var(--panel-alt);border:2px solid var(--border);border-radius:12px;box-shadow:0 10px 18px #0000008c;min-width:max-content;z-index:3000}.budget-net{font-weight:700}.budget-net.positive{color:var(--accent)}.budget-net.negative{color:var(--alert)}.budget-net.neutral{color:var(--text)}#viewport{position:relative;background:var(--bg);display:flex;flex-direction:column;flex:1;min-height:0;padding-top:var(--toolbar-base-height, 72px)}.canvas-wrapper{position:relative;width:100%;flex:1 1 auto;min-height:0;overflow:hidden;z-index:0;touch-action:none;-webkit-touch-callout:none}.canvas-wrapper canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;z-index:0}.stratum-badge{position:absolute;top:10px;left:50%;transform:translate(-50%);background:#ffcc7029;border:2px solid var(--warning);color:var(--warning);border-radius:10px;padding:6px 16px;font-size:12px;font-weight:700;letter-spacing:.3px;text-align:center;z-index:8;pointer-events:none;box-shadow:0 4px 12px #00000059}.stratum-badge-hidden{visibility:hidden;opacity:0}footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#0c1324;padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));padding-left:calc(16px + env(safe-area-inset-left,0px));padding-right:calc(16px + env(safe-area-inset-right,0px));border-top:2px solid var(--border-subtle);color:var(--accent)}.footer-link{color:var(--border-hover);text-decoration:none;font-weight:700}.footer-link:hover{color:var(--accent);text-decoration:underline}@media (max-width: 1180px){.ribbon-chip{font-size:10px;gap:6px;padding:5px 8px}.ribbon,.ribbon-controls{gap:6px}.logo span{display:none}}@media (max-width: 900px),(max-height: 500px){body{font-size:12px}.topbar{align-items:flex-start;flex-wrap:wrap;max-height:40dvh}.logo{align-self:center}.ribbon{flex:1 1 200px}.ribbon-controls{flex:0 0 auto;overflow-x:auto}.canvas-wrapper{height:60vh;height:60dvh}footer{display:none}}.news-ticker{display:flex;align-items:center;gap:12px;padding:6px 16px;background:linear-gradient(90deg,#101b33,#12284a 55%,#101b33);border-bottom:2px solid var(--border);box-shadow:inset 0 -3px #0a0f1b;font-size:11px;letter-spacing:.3px}.news-ticker-hidden{visibility:hidden;opacity:0;pointer-events:none}.news-ticker-label{text-transform:uppercase;color:var(--accent);font-weight:700}.news-ticker-text{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;position:relative}.news-ticker-text-inner{display:inline-block;white-space:nowrap}.news-ticker-text.news-ticker-marquee .news-ticker-text-inner{animation:news-ticker-marquee 12s linear infinite;padding-left:100%}.news-ticker-reduced .news-ticker-text.news-ticker-marquee .news-ticker-text-inner{animation:none;transform:none;padding-left:0}.news-ticker-alert .news-ticker-text{color:var(--alert)}.news-ticker-warn .news-ticker-text{color:var(--warning)}.news-ticker-info .news-ticker-text{color:#9dd9ff}@keyframes news-ticker-marquee{0%{transform:translate(0)}to{transform:translate(-100%)}}.toolbar{display:flex;flex-direction:column;gap:8px;padding:10px 16px;padding-left:calc(16px + env(safe-area-inset-left,0px));padding-right:calc(16px + env(safe-area-inset-right,0px));background:#0d1a2f;border-top:2px solid var(--border-subtle);border-bottom:2px solid var(--border-subtle);position:absolute;left:0;right:0;top:0;overflow-x:auto;overflow-y:visible;z-index:2000}.toolbar-row,.toolbar-sub{display:flex;gap:8px;align-items:center;position:relative}.toolbar-spacer{flex:1}.toolbar[data-layout-mode=compact]{height:0;min-height:0;padding:0;border:none;background:none;overflow:visible}.toolbar-compact-dock{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:flex-end;padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));padding-left:calc(16px + env(safe-area-inset-left,0px));padding-right:calc(16px + env(safe-area-inset-right,0px));z-index:3000;pointer-events:none}.toolbar-compact-dock>*{pointer-events:auto}.toolbar-current-tool-btn{background:#132644;border:2px solid var(--accent);border-radius:999px;color:var(--text);padding:14px 22px;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 4px 0 var(--shadow-colour),0 0 12px #7bffb740}.toolbar-undo-btn{background:#132644;border:2px solid var(--border);border-radius:999px;color:var(--text);width:44px;height:44px;flex:0 0 auto;font-size:18px;cursor:pointer;box-shadow:0 4px 0 var(--shadow-colour);display:flex;align-items:center;justify-content:center}.toolbar-undo-btn:active{transform:translateY(1px)}.toolbar-undo-btn:disabled{opacity:.4;cursor:default}.toolbar-undo-btn:disabled:active{transform:none}.toolbar-compact-dock-left{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.tool-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#04081099;z-index:3500;opacity:0;pointer-events:none;transition:opacity .2s ease}.tool-sheet-backdrop.open{opacity:1;pointer-events:auto}.tool-sheet{position:fixed;left:0;right:0;bottom:0;max-height:60vh;max-height:60dvh;overflow-y:auto;background:#0d1a2f;border-top:2px solid var(--border-subtle);border-radius:16px 16px 0 0;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:10px;z-index:3501;transform:translateY(100%);transition:transform .25s ease}.tool-sheet.open{transform:translateY(0)}.tool-sheet-group{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--border-subtle)}.tool-sheet-group:last-child{border-bottom:none;padding-bottom:0}.tool-sheet-button{background:#132644;border:2px solid var(--border);border-radius:12px;color:var(--text);padding:10px 14px;min-width:64px;min-height:48px;font-family:inherit;font-size:12px;cursor:pointer;box-shadow:0 4px 0 var(--shadow-colour);display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.tool-sheet-button-cost{font-size:10px;color:var(--text-dim)}.toolbar-compact-dock .radio-widget{flex:0 0 auto}.toolbar-compact-dock .radio-marquee-viewport{display:none}.toolbar-compact-dock .radio-cover{opacity:1;visibility:visible;cursor:pointer}.tool-sheet-button.active{border-color:var(--accent)}.toolbar-sub{position:fixed;left:0;top:0;display:none;padding:8px 10px;margin:0;align-self:flex-start;background:var(--panel-alt);border:2px solid var(--border);border-radius:14px;box-shadow:0 6px 12px #00000080;width:fit-content;min-width:max-content;z-index:2100;pointer-events:auto}.toolbar-sub:before{content:"";position:absolute;top:-4px;left:10px;right:10px;height:6px;background:var(--panel-alt);border-left:2px solid var(--border);border-right:2px solid var(--border);border-top:2px solid var(--border);border-radius:12px 12px 0 0}.toolbar-sub.toolbar-sub-open{border-color:var(--border);box-shadow:0 10px 18px #0000008c}.toolbar-sub.toolbar-sub-open:before{border-color:var(--border)}.toolbar-group-sub-open{border-color:var(--accent);box-shadow:0 4px 0 var(--shadow-colour),0 0 10px #7bffb738;z-index:2004}.toolbar-group-sub-open:after{content:"";position:absolute;left:10px;right:10px;bottom:-6px;height:8px;background:var(--panel-alt);border-left:2px solid var(--border);border-right:2px solid var(--border);border-bottom:2px solid var(--border);border-top:none;border-radius:0 0 12px 12px;z-index:-1}.tool-button,.tool-sub-button{background:#132644;border:2px solid var(--border);border-radius:12px;color:var(--text);padding:10px 12px;min-width:64px;font-size:11px;cursor:pointer;transition:transform .1s ease,border-color .1s ease;box-shadow:0 4px 0 var(--shadow-colour);height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.1}.tool-button.active,.tool-sub-button.active{border-color:var(--accent);transform:translateY(-2px)}.tool-button:hover,.tool-sub-button:hover{border-color:var(--border-hover)}.tool-button:disabled,.tool-sub-button:disabled{opacity:.45;cursor:not-allowed;transform:none;border-color:var(--border);box-shadow:none}.toolbar-group{display:flex;align-items:center;gap:6px;background:var(--panel-alt);border:2px solid var(--border);border-radius:14px;padding:8px;box-shadow:0 4px 0 var(--shadow-colour);position:relative;overflow:visible;z-index:2002}.toolbar-cluster{display:flex;align-items:center;gap:10px}.toolbar-group-radio{padding:6px 8px}.toolbar-group-radio-open{z-index:2006}.toolbar-radio-slot{display:flex;flex:0 0 auto;min-width:0}.toolbar-radio-station{position:relative;display:flex;align-items:center}.radio-station-button{background:#1a2d4f;border:1px solid #2a3f63;border-radius:8px;color:var(--text);width:32px;height:32px;cursor:pointer;font-size:16px;line-height:1;box-shadow:0 2px 0 var(--shadow-colour);transition:border-color .1s ease,transform .1s ease;display:flex;align-items:center;justify-content:center}.radio-station-button:hover{border-color:var(--border-hover)}.radio-station-button:active{transform:translateY(1px)}.radio-station-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.radio-station-menu{position:fixed;left:0;top:0;min-width:220px;background:var(--panel-alt);border:2px solid var(--border);border-radius:12px;box-shadow:0 10px 20px #00000059;padding:8px;display:none;flex-direction:column;gap:6px;z-index:50000;max-height:260px;overflow-y:auto}.radio-station-menu.open{display:flex}.radio-station-menu-list{display:flex;flex-direction:column;gap:4px}.radio-station-menu-item{background:#1a2d4f;border:1px solid #2a3f63;border-radius:8px;color:var(--text);padding:6px 8px;text-align:left;cursor:pointer;transition:border-color .1s ease,background .1s ease}.radio-station-menu-item:hover{border-color:var(--border-hover);background:#223d65}.radio-station-menu-item-active{border-color:var(--accent);background:#1f3a5f}.radio-station-menu-description{font-size:11px;color:#c6d7f0;padding:0 2px 4px;line-height:1.3}.radio-station-menu-empty,.radio-station-menu-loading{font-size:12px;color:#c6d7f0;padding:2px}.radio-widget{position:relative;flex:0 1 360px;display:flex;align-items:center;gap:8px;background:transparent;border:none;border-radius:10px;padding:0 4px;height:44px;box-shadow:none;overflow:visible;z-index:50}.radio-cover{width:32px;height:32px;border-radius:8px;object-fit:cover;border:1px solid var(--border);display:block;flex-shrink:0;background:#0b1424;opacity:0;visibility:hidden;transition:opacity .12s ease}.radio-cover.visible{opacity:1;visibility:visible}.radio-controls{display:flex;align-items:center;gap:4px}.radio-icon-button{background:#1a2d4f;border:1px solid #2a3f63;border-radius:8px;color:var(--text);width:32px;height:32px;cursor:pointer;font-size:15px;line-height:1;box-shadow:0 2px 0 var(--shadow-colour);transition:border-color .1s ease,transform .1s ease}.radio-icon-button:hover{border-color:var(--border-hover)}.radio-icon-button:active{transform:translateY(1px)}.radio-icon-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.radio-marquee-viewport{flex:1 1 160px;min-width:120px;max-width:220px;overflow:hidden}.radio-marquee-text{white-space:nowrap;font-size:11px;color:var(--text)}.radio-marquee-text.scrolling{animation:radio-scroll var(--radio-marquee-duration, 14s) linear infinite}.radio-marquee-text.paused{animation-play-state:paused}@keyframes radio-scroll{0%{transform:translate(0)}to{transform:translate(-100%)}}.radio-popover{position:fixed;left:0;top:0;display:flex;gap:10px;background:#101c34;border:2px solid var(--border);border-radius:10px;padding:8px;box-shadow:0 10px 20px #00000059;opacity:0;pointer-events:none;transform:translateY(0);transition:opacity .12s ease;min-width:180px;z-index:9999}.radio-popover-cover{width:64px;height:64px;border-radius:10px;object-fit:cover;border:1px solid var(--border);display:none;background:#0b1424}.radio-popover-cover.visible{display:block}.radio-popover-info{display:grid;gap:4px;align-content:center;min-width:0}.radio-popover-title{font-weight:700;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radio-popover-artist{font-size:12px;color:#d0e4ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radio-popover-status{font-size:11px;color:var(--border-hover)}.radio-popover-open .radio-popover{opacity:1;pointer-events:auto;transform:translateY(0)}.minimap-panel{position:absolute;right:calc(12px + env(safe-area-inset-right,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px));max-height:calc(100% - 24px);overflow-y:auto;background:#0c1428e6;border:2px solid var(--border);border-radius:12px;padding:10px;box-shadow:0 8px 20px #0006;z-index:6;pointer-events:auto}.minimap-header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.minimap-header-controls{display:flex;gap:6px}.minimap-title{color:var(--accent);font-size:12px;margin-bottom:2px}.minimap-subtitle{font-size:11px;color:var(--text-dim)}.minimap-stratum-row{display:flex;width:100%}.minimap-stratum-row .chip-button{width:100%;min-width:0}.minimap-stratum-button.active{border-color:var(--accent);color:var(--accent)}.minimap-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:8px;width:100%}.minimap-panel .chip-button{padding:8px 10px}.minimap-actions .chip-button{width:100%;min-width:0}.minimap-actions .minimap-span{grid-column:1 / -1}.minimap-legend{background:#0c1428bf;border:1px solid var(--border-subtle);border-radius:8px;padding:6px 8px}.minimap-legend summary{cursor:pointer;color:var(--accent);font-size:11px;list-style:none}.minimap-legend summary::-webkit-details-marker{display:none}.minimap-legend[open] summary{margin-bottom:4px}.minimap-body{margin-top:8px;background:#090e1ad9;border:1px solid var(--border-subtle);border-radius:10px;padding:8px;display:grid;gap:10px}.minimap-canvas-wrapper{position:relative;width:100%;aspect-ratio:1 / 1;overflow:hidden;border-radius:10px}.minimap-canvas{display:block;width:100%;height:100%;image-rendering:pixelated;background:#0b1424;border:1px solid var(--border-subtle);border-radius:10px}.minimap-overlay-canvas{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.minimap-hint{margin-top:6px;font-size:11px;color:var(--text-dim)}@media (max-width: 900px),(max-height: 500px){.minimap-panel{left:auto;right:calc(8px + env(safe-area-inset-right,0px));bottom:calc(var(--compact-dock-height, 84px) + 8px + 40px + 8px);width:min(100%,280px)}.minimap-header{display:none}.canvas-wrapper[data-compact-info-tab=inspect] .minimap-panel,.canvas-wrapper[data-compact-info-tab=none] .minimap-panel{display:none!important}}.overlay{position:absolute;left:10px;bottom:10px;display:grid;gap:8px;width:300px;z-index:5;pointer-events:auto}.status-line{display:flex;justify-content:space-between;font-size:12px}.map-stats{font-size:11px;color:var(--text-dim)}.info-box{background:#0a1020cc;padding:10px;border:1px solid var(--border-subtle);border-radius:8px}.info-header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.info-label{font-size:11px;color:var(--text-dim)}.info-name{font-size:14px;font-weight:700}.info-meta{font-size:11px;color:var(--text-dim);margin-top:2px}.tool-rows{display:grid;gap:4px;margin-top:6px}.info-section{display:grid;gap:6px}.info-title{display:grid;gap:2px}.info-subtitle{font-size:11px;color:var(--text-dim);margin-top:2px}.tool-hints{margin-top:8px;color:var(--text-dim);font-size:11px;line-height:1.4}.tool-hints.warning{color:var(--negative)}.tool-hints.subtle{opacity:.9}.compact-info-tabs{display:none;position:absolute;right:calc(8px + env(safe-area-inset-right,0px));bottom:calc(var(--compact-dock-height, 84px) + 8px);gap:6px;z-index:7}.compact-info-tab{background:#132644;border:2px solid var(--border);border-radius:10px;color:var(--text);padding:8px 12px;min-height:40px;font-family:inherit;font-size:12px;cursor:pointer;box-shadow:0 4px 0 var(--shadow-colour)}.compact-info-tab.active{border-color:var(--accent)}@media (max-width: 900px),(max-height: 500px){.compact-info-tabs{display:flex}.overlay{left:auto;right:calc(8px + env(safe-area-inset-right,0px));bottom:calc(var(--compact-dock-height, 84px) + 8px + 40px + 8px);width:min(100%,280px)}.canvas-wrapper[data-compact-info-tab=map] .overlay,.canvas-wrapper[data-compact-info-tab=none] .overlay{display:none!important}}.debug-overlay{position:absolute;right:12px;--debug-overlay-top: calc( var(--toolbar-visible-height, 0px) - var(--toolbar-base-height, 0px) + 20px );top:var(--debug-overlay-top);min-width:260px;max-width:360px;max-height:calc(100% - var(--debug-overlay-top) - 20px);overflow-y:auto;background:#0a1020eb;border:1px solid #35507a;border-radius:12px;padding:12px;box-shadow:0 12px 36px #0006;display:none;gap:10px}.debug-overlay.visible{display:grid}.debug-overlay.hidden{display:none}.debug-overlay.mode-mini{min-width:0;max-width:220px;max-height:none;overflow-y:visible}.debug-controls{justify-self:end;display:flex;gap:6px;align-items:center}.debug-hide-btn:hover{border-color:#a8506a;color:#ffb3c4}.debug-mode-toggle{justify-self:end;background:none;border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-dim);font-size:11px;padding:4px 8px;cursor:pointer}.debug-section{border-bottom:1px solid var(--border-subtle);padding-bottom:8px;margin-bottom:8px}.debug-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.debug-heading{color:var(--accent);font-size:12px;margin-bottom:6px}.debug-row{display:flex;justify-content:space-between;font-size:12px}.debug-hint{color:var(--text-dim);font-size:11px;margin-top:2px}.debug-hint.debug-warn{color:#ffb454;font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a14b3;display:flex;align-items:center;justify-content:center;z-index:60000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:#0f1b2f;border:2px solid var(--border);border-radius:12px;box-shadow:0 16px 48px #00000080;width:min(90vw,960px);height:min(80vh,720px);height:min(80dvh,720px);display:flex;flex-direction:column;overflow:hidden}.modal iframe{flex:1;border:none;background:#0f1629}.modal-close{align-self:flex-end;margin:8px 8px 0 0}.budget-modal{padding:14px 14px 16px;gap:12px;background:linear-gradient(180deg,#0f1b2f,#0b1526);width:min(94vw,1100px);height:min(90vh,820px)}.budget-scroll{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px}.ledger-main{gap:12px}.ledger-flow-header{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--text-dim);margin-bottom:4px}.ledger-flow-header strong{color:#fff}.ledger-flow-bar{display:flex;height:14px;background:#0c1425;border:1px solid var(--border-subtle);border-radius:7px;overflow:hidden}.ledger-flow-segment{height:100%;min-width:2px;transition:width .3s ease}.ledger-flow-segment+.ledger-flow-segment{border-left:1px solid #0c1425}.ledger-flow-empty{font-size:10px;color:#5b6c8f;padding:0 8px;align-self:center}.ledger-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ledger-list-title{font-weight:700;font-size:13px;color:var(--text);margin-bottom:6px}.ledger-row{padding:5px 0;border-bottom:1px solid #14203a}.ledger-row-zero{opacity:.45}.ledger-row-top{display:flex;align-items:center;gap:6px;font-size:12px}.ledger-row-swatch{width:8px;height:8px;border-radius:2px;flex:0 0 auto}.ledger-row-label{flex:1}.ledger-row-value{color:#fff;font-weight:700}.ledger-row-bar{height:4px;margin:4px 0 2px 14px;background:#0c1425;border-radius:2px;overflow:hidden}.ledger-row-bar>div{height:100%;transition:width .3s ease}.ledger-subrow{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim);padding:1px 0 1px 14px}.ledger-subrow-value{color:#c9d6ee}.ledger-policy{gap:10px}.ledger-policy-heading{font-weight:700;font-size:14px;color:var(--text)}.ledger-policy-section{display:flex;flex-direction:column;gap:8px}.ledger-slider-row{display:flex;flex-direction:column;gap:2px}.ledger-slider-top{display:flex;justify-content:space-between;font-size:12px}.ledger-slider-value{font-weight:700;color:var(--text-dim)}.ledger-slider-value.off-neutral{color:var(--warning)}.ledger-slider{width:100%;accent-color:var(--accent);cursor:pointer}.ledger-policy-footnote{margin-top:auto}.ledger-strip{display:grid;grid-template-columns:minmax(200px,1fr) minmax(0,2fr);gap:12px}.ledger-strip>div{background:#0a1224;border:1px solid var(--border-subtle);border-radius:10px;padding:10px 12px}.ledger-strip:has(.ledger-quarter:only-child){grid-template-columns:1fr}.ledger-strip-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:6px}.ledger-quarter{display:flex;flex-direction:column}.ledger-months{display:flex;gap:10px;align-items:flex-end;min-height:40px}.ledger-month{display:flex;flex-direction:column;align-items:center;gap:2px}.ledger-month-bar{width:16px;border-radius:3px 3px 0 0}.ledger-month-bar.positive{background:var(--accent)}.ledger-month-bar.negative{background:var(--alert)}.ledger-month-label{font-size:9px;color:var(--text-dim)}.ledger-quarter-net{font-size:12px;margin-top:6px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.ledger-insights .ledger-insight{font-size:11px;color:#c9d6ee;margin-bottom:4px}.ledger-insight[data-severity=high] strong{color:var(--alert)}.ledger-recommendation{color:#9dd9ff}.ledger-quarter-net .positive{color:var(--accent)}.ledger-quarter-net .negative{color:var(--alert)}.budget-header{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 2px}.budget-title{font-size:18px;font-weight:700;color:var(--text)}.budget-subtitle{color:var(--text-dim);font-size:12px}.budget-header-actions{display:flex;gap:8px}.budget-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.summary-card{background:#0a1224;border:1px solid var(--border-subtle);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.summary-label{color:var(--text-dim);font-size:12px}.summary-value{font-size:20px;font-weight:700;color:var(--text)}.summary-value.positive{color:var(--accent)}.summary-value.negative{color:var(--negative)}.summary-hint{color:var(--text-dim);font-size:11px}.budget-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;flex:1;min-height:0;height:100%}.budget-column{background:#0a1224;border:1px solid var(--border-subtle);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;max-height:100%}.budget-section-title{font-weight:700;font-size:15px;color:var(--text);letter-spacing:.01em}.budget-hint{color:var(--text-dim);font-size:11px;margin:2px 0 6px}.budget-hint.tight{margin:0 0 6px}.budget-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 0}.budget-row.tight{padding:0}.budget-row.small{font-size:12px;color:#c7d5f1}.budget-row-label{color:#c7d5f1}.budget-row-label.subtle{color:var(--text-dim)}.budget-row-value{color:var(--text);font-weight:600}.budget-row-value.positive{color:var(--accent)}.budget-row-value.negative{color:var(--negative)}.budget-total{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-weight:700;font-size:14px;color:var(--text)}.budget-total-label{color:#c7d5f1}.budget-total-value.positive{color:var(--accent)}.budget-total-value.negative{color:var(--negative)}.budget-row-bar{height:4px;background:#0f1b2f;border-radius:3px;overflow:hidden;margin-bottom:6px}.budget-bar{height:100%;border-radius:3px}.budget-bar.bar-positive{background:linear-gradient(90deg,#5bc0eb,var(--accent))}.budget-bar.bar-negative{background:linear-gradient(90deg,var(--negative),#f45d48)}.budget-divider{border-bottom:1px solid var(--border-subtle);margin:8px 0}.budget-footer{color:var(--text-dim);font-size:11px;padding:4px 6px 2px}.budget-section{display:flex;flex-direction:column;gap:4px}.budget-subsection{display:flex;flex-direction:column;gap:6px}.budget-detail{padding:4px 0}.budget-detail-title{color:#c7d5f1;font-size:13px;margin-bottom:2px;font-weight:600}.budget-detail-hint{color:var(--text-dim);font-size:11px;margin-top:-2px}.budget-divider.subtle{border-bottom-color:#13203b;margin:6px 0}.budget-insights{gap:10px}.budget-insights-section{display:flex;flex-direction:column;gap:6px}.budget-insights-item,.budget-insights-risk{background:#0f1a30;border:1px solid var(--border-subtle);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:2px}.budget-insights-risk[data-severity=high]{border-color:#7a3b2f;box-shadow:inset 0 0 0 1px #f45d4859}.budget-insights-risk[data-severity=med]{border-color:#7b5b2f;box-shadow:inset 0 0 0 1px #f08c4259}.budget-insights-risk[data-severity=low]{border-color:#254065}.budget-insights-label{color:var(--text);font-size:12px;font-weight:600}.budget-insights-text{color:#c7d5f1;font-size:12px;line-height:1.3}.budget-insights-recommendation{color:#d8e6ff;font-size:12px;line-height:1.4;background:#12203a;border:1px solid #253a5a;border-radius:8px;padding:8px 10px}@media (max-width: 900px),(max-height: 500px){.budget-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.ledger-columns,.ledger-strip{grid-template-columns:1fr}.budget-scroll{overflow-y:auto}.budget-body{flex:none;min-height:auto;height:auto}.budget-column{overflow-y:visible;max-height:none}}.bylaws-modal{padding:14px 14px 16px;gap:12px;background:linear-gradient(180deg,#0f1b2f,#0a1425);width:min(90vw,840px)}.bylaws-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.bylaws-title-block{display:flex;flex-direction:column;gap:4px}.bylaws-title{font-size:18px;font-weight:700;color:var(--text)}.bylaws-subtitle{color:var(--text-dim);font-size:12px;max-width:520px}.bylaws-lede{background:#0a1224;border:1px solid var(--border-subtle);border-radius:10px;padding:10px 12px;color:#d8e6ff;font-size:13px}.bylaws-body{display:flex;flex-direction:column;gap:12px;overflow:auto;padding:0 2px 6px}.bylaws-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.bylaws-option{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:flex-start;padding:10px;border:1px solid var(--border-subtle);border-radius:10px;background:#0d1830;box-shadow:inset 0 1px #132441}.bylaws-option[data-active=true]{border-color:var(--accent);box-shadow:0 0 0 1px #7bffb740,inset 0 1px #132441}.bylaws-option input[type=radio]{margin-top:4px}.bylaws-option-body{display:flex;flex-direction:column;gap:4px}.bylaws-option-title{font-weight:600;color:var(--text)}.bylaws-option-lede{color:#b9c6e2;font-size:12px}.bylaws-option-deltas{display:flex;flex-wrap:wrap;gap:6px}.bylaws-delta{background:#132035;border:1px solid #2e4c77;border-radius:8px;padding:6px 8px;min-width:120px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:#d8e6ff;font-size:12px}.bylaws-delta.positive{border-color:#c28a43;color:var(--warning)}.bylaws-delta.negative{border-color:#2e7b60;color:var(--accent)}.bylaws-delta-label{font-size:11px;color:var(--text-dim)}.bylaws-delta-value{font-weight:700}.bylaws-delta-hint{color:var(--text-dim);font-size:12px}.bylaws-section{background:#0a1224;border:1px solid var(--border-subtle);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.bylaws-section-title{color:var(--text);font-weight:600;font-size:14px}.bylaws-section-hint{color:var(--text-dim);font-size:12px}.bylaws-list{margin:0;padding-left:18px;color:#d8e6ff;display:flex;flex-direction:column;gap:4px;font-size:13px}.bylaws-list strong{color:var(--text)}.bylaws-callout{background:#132035;border:1px solid #2e4c77;border-radius:8px;padding:8px 10px;color:#d8e6ff;font-size:13px}.bylaws-footer{color:var(--text-dim);font-size:12px;padding:0 2px 2px}.settings-modal{padding:14px;gap:12px;background:linear-gradient(180deg,#0f1b2f,#0a1324)}.settings-header-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.settings-header{display:grid;gap:4px}.settings-actions{display:flex;gap:8px}.settings-title{font-size:18px;font-weight:700;color:var(--text)}.settings-subtitle{color:var(--text-dim);font-size:12px}.settings-body{display:grid;gap:10px;overflow-y:auto;padding-right:4px}.settings-section{background:#0a1224;border:1px solid var(--border-subtle);border-radius:10px;padding:10px;display:grid;gap:8px}.settings-section-header{display:flex;flex-direction:column;gap:2px}.settings-section-title{font-weight:700;color:var(--text)}.settings-section-hint{color:var(--text-dim);font-size:12px}.settings-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #13203b}.settings-row:last-child{border-bottom:none}.settings-label{font-weight:600;color:var(--text)}.settings-description{color:var(--text-dim);font-size:12px}.settings-row input[type=checkbox]{justify-self:end;width:18px;height:18px}.settings-row select,.settings-row input[type=range],.settings-row input[type=text]{background:var(--panel-alt);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:6px 8px}.settings-row input[type=range]{width:100%;max-width:180px;min-width:0}.settings-row input[type=text]{width:100%}.settings-warning{color:var(--text-dim);font-size:12px}.settings-warning.error{color:var(--negative)}.hotkey-table{display:grid;gap:6px}.hotkey-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:8px;align-items:center}.hotkey-row-header{color:var(--text-dim);font-size:12px}.sfx-editor-modal{padding:14px 14px 16px;gap:12px;background:linear-gradient(180deg,#0f1b2f,#0a1425);width:min(90vw,720px)}.sfx-editor-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sfx-editor-title{font-size:18px;font-weight:700;color:var(--text)}.sfx-editor-subtitle{color:var(--text-dim);font-size:12px;max-width:420px}.sfx-editor-body{display:flex;flex-direction:column;gap:10px;overflow:auto;padding:0 2px 6px}.sfx-editor-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-subtle)}.sfx-editor-row>span:first-child{flex:1 1 160px;color:var(--text-dim);font-size:12px}.sfx-editor-row input[type=range]{flex:1;accent-color:var(--accent)}.sfx-editor-row-label{flex:1;font-weight:600;color:var(--text)}.sfx-editor-value{color:var(--accent);font-size:12px;text-align:right;min-width:48px}.sfx-editor-reset-all{align-self:flex-end;margin-top:8px}.sfx-editor-edit-title{font-weight:700;color:var(--text);font-size:15px}.sfx-editor-layer{border:1px solid var(--border-subtle);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.sfx-editor-layer legend{color:var(--accent);font-weight:700;font-size:13px;padding:0 6px}.sfx-editor-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:8px}.sfx-editor-mode-toggle{display:flex;gap:8px}.sfx-editor-mode-toggle button.active{color:var(--accent);border-color:var(--accent)}.sfx-editor-edit-content{display:flex;flex-direction:column;gap:4px}.sfx-editor-code-help{color:var(--text-dim);font-size:12px}.sfx-editor-code-textarea{font-family:monospace;font-size:12px;min-height:260px;resize:vertical;background:#0b1424;color:var(--text);border:1px solid var(--border-subtle);border-radius:8px;padding:10px;white-space:pre}.sfx-editor-code-error{border:1px solid #f08c42;border-radius:8px;background:#f08c421a;color:#ffcc9a;font-size:12px;padding:8px 10px}#loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center}.ls-inner{display:flex;flex-direction:column;align-items:center;gap:20px;width:420px;max-width:92vw}.ls-title{font-size:1.5rem;font-weight:700;letter-spacing:.12em;color:var(--text);text-transform:uppercase}.ls-title-accent{color:var(--accent)}.ls-skyline-wrap{width:100%;position:relative;height:100px}.ls-skyline{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.ls-bld{position:absolute;bottom:0;background:var(--panel);border-top:2px solid #2a3f5f;border-left:1px solid #1e3050;border-right:1px solid #1e3050;transform-origin:bottom;transform:scaleY(0);animation:ls-rise .35s ease-out forwards}@keyframes ls-rise{to{transform:scaleY(1)}}.ls-win{position:absolute;width:3px;height:3px;background:var(--accent);opacity:.55;image-rendering:pixelated;animation:ls-blink 2.8s infinite}.ls-win:nth-child(3n){animation-delay:.9s}.ls-win:nth-child(3n+1){animation-delay:1.7s}@keyframes ls-blink{0%,90%,to{opacity:.55}94%{opacity:.1}}.ls-horizon{position:absolute;bottom:0;left:0;right:0;height:2px;background:#2a3f5f}.ls-bar-wrap{width:100%}.ls-bar{width:100%;height:14px;border:2px solid #2a3f5f;background:#0b1424;position:relative;image-rendering:pixelated}.ls-bar-fill{position:absolute;top:0;left:0;bottom:0;width:0;background:repeating-linear-gradient(90deg,var(--accent) 0,var(--accent) 8px,#5ddfa0 8px,#5ddfa0 10px);animation:ls-progress 3s steps(30) forwards}@keyframes ls-progress{to{width:83%}}.ls-stage{font-size:.72rem;letter-spacing:.08em;color:#7baacc;text-transform:uppercase;min-height:1.2em}.ls-elapsed{font-size:.62rem;color:#4c6b87;margin-top:4px}.ls-error{margin-top:16px;padding:10px 14px;max-width:90vw;border:1px solid #f08c42;border-radius:8px;background:#f08c421a;color:#ffcc9a;font-size:.68rem;line-height:1.5;text-align:left;word-break:break-word}
