:root{--font-display: "Palatino Linotype", "Palatino", "Georgia", serif;--font-body: "Segoe UI", system-ui, sans-serif;--font-mono: "Consolas", monospace;--bg-deep: #0c1014;--bg-primary: #141a20;--bg-panel: rgba(16, 22, 30, .92);--bg-panel-solid: #131b24;--bg-input: #0c1218;--bg-hover: rgba(220, 180, 100, .08);--border-subtle: rgba(90, 105, 120, .25);--border-medium: rgba(130, 120, 95, .35);--border-ornate: rgba(180, 150, 85, .4);--text-primary: #e2ddd0;--text-secondary: #b0a898;--text-muted: #9a8e80;--text-bright: #f2ece0;--accent-gold: #e0aa38;--accent-gold-bright: #f5c848;--accent-gold-dim: #b08420;--accent-gold-glow: rgba(224, 170, 56, .14);--state-bought: #c8a040;--state-produced: #60b858;--state-ignored: #b06840;--res-material: #5a9eff;--bld-crafting: #d88848;--panel-radius: 4px;--panel-shadow: 0 6px 32px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.35);--planner-room: rgba(65, 120, 175, .32);--planner-panel: rgba(10, 16, 24, .55)}*{margin:0;padding:0;box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.seo-content{padding:32px 24px;color:var(--text-muted);font-size:14px;text-align:center}.seo-content h2{font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--text-secondary);margin-bottom:8px}.seo-content p{max-width:600px;margin:0 auto;line-height:1.5}#loading-overlay{position:fixed;inset:0;z-index:9999;background:var(--bg-deep);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}.loading-spinner{width:36px;height:36px;border:3px solid var(--border-subtle);border-top-color:var(--accent-gold);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-status{font-family:var(--font-body);font-size:14px;color:var(--text-muted)}body{background:var(--bg-deep);color:var(--text-primary);font-family:var(--font-body);font-weight:400;overflow:hidden;height:100vh;width:100vw;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse 90% 60% at 40% 40%,rgba(24,18,10,.35),transparent 60%),radial-gradient(ellipse 80% 70% at 70% 70%,rgba(10,16,24,.4),transparent 55%),radial-gradient(circle at 50% 50%,rgba(14,12,10,.45),var(--bg-deep));pointer-events:none;z-index:0}body:after{content:"";position:fixed;inset:0;background:radial-gradient(ellipse 70% 65% at 50% 50%,transparent 0%,rgba(4,6,8,.5) 100%);pointer-events:none;z-index:0}#main-content{height:100%}#graph-container{width:100%;height:100%;position:relative;z-index:1}#graph-container:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(80,90,110,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(80,90,110,.045) 1px,transparent 1px);background-size:80px 80px;pointer-events:none;z-index:0}#graph-container:after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle 1px at center,rgba(100,110,130,.06) 0%,transparent 100%);background-size:80px 80px;pointer-events:none;z-index:0}#graph-container canvas{width:100%;height:100%;display:block;position:relative;z-index:1}.edge-tooltip,.graph-tooltip,#detail-res-tooltip{position:fixed;pointer-events:none;background:var(--bg-panel-solid);border:1px solid var(--border-ornate);border-radius:3px;padding:8px 12px;box-shadow:0 6px 20px #0009;opacity:0;transition:opacity .15s ease}.edge-tooltip.visible,.graph-tooltip.visible,#detail-res-tooltip.visible{opacity:1}.search-res-icon,.calc-table .resource-name img,.producer-card-icon,.species-matrix .matrix-pref-icon{filter:drop-shadow(0 0 2px rgba(0,0,0,.5))}.edge-tooltip{z-index:100;max-width:300px}.edge-tooltip-route{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--text-bright);display:flex;align-items:center;gap:5px;flex-wrap:wrap}.edge-tooltip-route img{width:16px;height:16px;image-rendering:pixelated}.edge-tooltip-recipe{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary);margin-top:3px}.ui-panel{background:var(--bg-panel);backdrop-filter:blur(20px) saturate(1.1);-webkit-backdrop-filter:blur(20px) saturate(1.1);border:1px solid var(--border-subtle);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);position:relative}.ui-panel:before{content:"";position:absolute;top:0;left:16px;right:16px;height:1px;background:linear-gradient(90deg,transparent,rgba(170,140,80,.4),transparent);border-radius:1px}#header-bar{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:10;display:flex;align-items:center;gap:16px;padding:8px 24px;max-width:calc(100vw - 24px);user-select:none;animation:title-entrance .7s cubic-bezier(.22,1,.36,1) both}#header-actions{position:fixed;top:14px;right:14px;z-index:11;display:flex;align-items:center;gap:6px;user-select:none;animation:title-entrance .7s cubic-bezier(.22,1,.36,1) both}@keyframes title-entrance{0%{opacity:0;transform:translate(-50%) translateY(-16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}#header-title{display:flex;flex-direction:column;flex-shrink:0}#header-bar h1{font-family:var(--font-display);font-size:19px;font-weight:700;font-style:italic;color:var(--accent-gold);letter-spacing:.5px;text-shadow:0 1px 8px rgba(212,160,56,.18);line-height:1.15}#header-bar .subtitle{font-family:var(--font-body);font-size:9px;font-weight:300;color:var(--text-muted);letter-spacing:2.5px;text-transform:uppercase}.header-sep{width:1px;height:28px;background:linear-gradient(180deg,transparent,var(--border-ornate),transparent);flex-shrink:0}#detail-panel{position:fixed;top:14px;right:14px;width:300px;max-height:calc(100vh - 28px);overflow-y:auto;padding:18px 16px 14px;z-index:10;font-size:14px;line-height:1.55;visibility:hidden;opacity:0;transform:translate(16px);transition:opacity .3s ease,transform .3s ease,visibility .3s ease}#detail-panel.open{visibility:visible;opacity:1;transform:translate(0);z-index:12}#detail-panel h2{font-family:var(--font-display);font-size:20px;font-weight:700;margin-bottom:6px;color:var(--text-bright);letter-spacing:.3px}#detail-panel .detail-title-row{display:flex;align-items:center;gap:10px;margin-bottom:2px}#detail-panel .detail-icon{width:32px;height:32px;image-rendering:pixelated;flex-shrink:0;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}#detail-panel .type-badge{display:inline-block;font-family:var(--font-body);font-size:9px;font-weight:600;padding:2px 10px;border-radius:2px;margin-bottom:10px;text-transform:uppercase;letter-spacing:1.5px}#detail-panel .type-badge.resource{background:#5a9eff26;color:var(--res-material);border:1px solid rgba(90,158,255,.25)}#detail-panel .type-badge.building{background:#d8884826;color:var(--bld-crafting);border:1px solid rgba(216,136,72,.25)}#detail-panel h3{font-family:var(--font-display);font-size:15px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);margin-top:14px;margin-bottom:5px;text-transform:none;letter-spacing:.3px;padding-bottom:4px;border-bottom:1px solid var(--border-subtle)}#detail-panel ul{list-style:none;padding-left:0}#detail-panel li{padding:5px 0;color:var(--text-secondary);border-bottom:1px solid rgba(80,70,50,.08);line-height:1.6;font-size:13px}#detail-panel li:last-child{border-bottom:none}#detail-panel li strong{color:var(--text-primary);font-weight:600}#detail-panel .nav-link{color:var(--accent-gold);cursor:pointer;text-decoration:none;border-bottom:1px dotted rgba(212,160,56,.35);transition:color .2s ease,border-color .2s ease}#detail-panel .nav-link:hover{color:var(--accent-gold-bright);border-color:var(--accent-gold-bright)}#detail-panel .nav-link-hidden{color:var(--text-muted);border-bottom:1px dashed rgba(100,90,70,.35)}#detail-panel .nav-link-hidden:hover{color:var(--text-secondary);border-color:var(--text-secondary)}.nav-link-hidden-reason{font-size:9px;color:var(--state-ignored);font-style:italic;margin-left:4px}.detail-hidden-note{font-size:10px;color:var(--state-ignored);font-style:italic;margin:4px 0 6px;padding:3px 8px;background:#b068400f;border-left:2px solid var(--state-ignored);border-radius:0 3px 3px 0}#detail-panel .inline-icon{width:16px;height:16px;image-rendering:pixelated;vertical-align:text-bottom;margin-right:3px;filter:drop-shadow(0 0 1px rgba(0,0,0,.4))}#detail-panel .detail-desc{color:var(--text-secondary);font-family:var(--font-display);font-size:13px;line-height:1.6;font-style:italic;margin:8px 0 4px;padding:8px 10px;background:#5046320f;border-left:2px solid var(--border-ornate);border-radius:0 3px 3px 0}#detail-panel .detail-meta{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:4px 10px}#detail-panel .detail-meta li{font-size:11px;color:var(--text-muted);border-bottom:none;padding:2px 0;font-family:var(--font-mono)}#detail-panel .detail-empty-note{color:var(--text-muted);font-style:italic;font-size:12px}#detail-panel::-webkit-scrollbar,.filter-body::-webkit-scrollbar,.search-dropdown::-webkit-scrollbar,.planner-sidebar::-webkit-scrollbar,.blueprint-list::-webkit-scrollbar{width:4px}#detail-panel::-webkit-scrollbar-thumb,.filter-body::-webkit-scrollbar-thumb,.search-dropdown::-webkit-scrollbar-thumb,.planner-sidebar::-webkit-scrollbar-thumb,.blueprint-list::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:2px}#detail-panel::-webkit-scrollbar-thumb:hover,.filter-body::-webkit-scrollbar-thumb:hover,.search-dropdown::-webkit-scrollbar-thumb:hover,.planner-sidebar::-webkit-scrollbar-thumb:hover,.blueprint-list::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}#detail-panel::-webkit-scrollbar-track,.filter-body::-webkit-scrollbar-track,.search-dropdown::-webkit-scrollbar-track,.planner-sidebar::-webkit-scrollbar-track,.blueprint-list::-webkit-scrollbar-track{background:transparent}#filter-panel{position:fixed;top:14px;left:14px;width:264px;max-height:calc(100vh - 70px);z-index:10;font-size:14px;line-height:1.5;display:flex;flex-direction:column;overflow:hidden;animation:panel-entrance .5s cubic-bezier(.22,1,.36,1) .1s both}@keyframes panel-entrance{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}#filter-panel.collapsed{width:auto}#filter-panel.collapsed .filter-body,#filter-panel.collapsed .filter-title{display:none}#filter-panel.collapsed .filter-badge{margin-left:0}.filter-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.filter-title-wrap{display:flex;align-items:center;gap:8px}.filter-title{font-family:var(--font-display);font-weight:700;font-style:italic;color:var(--accent-gold-dim);font-size:16px;letter-spacing:.5px}.filter-badge{font-family:var(--font-mono);font-size:10px;font-weight:600;color:var(--bg-deep);background:var(--accent-gold);padding:1px 7px;border-radius:8px;line-height:1.4;min-width:16px;text-align:center}.filter-collapse-btn{background:none;border:1px solid var(--border-medium);color:var(--text-muted);cursor:pointer;font-size:14px;border-radius:3px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;padding:0;transition:border-color .2s ease,color .2s ease,background .2s ease}.filter-collapse-btn:hover,.detail-state-btn:hover,.filter-reset-btn:hover,.zoom-controls button:hover,#help-btn:hover,#github-link:hover,.focus-bar-exit:hover,.detail-focus-btn:hover,.city-btn:hover,.city-import-btn:hover{border-color:var(--accent-gold-dim);color:var(--accent-gold);background:var(--accent-gold-glow)}.filter-body{padding:8px 14px 14px;overflow-y:auto;flex:1}.filter-search{margin-bottom:10px}.filter-section-label{font-family:var(--font-display);font-size:12px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.5px;margin-top:14px;margin-bottom:5px;padding-top:10px;border-top:1px solid var(--border-subtle);position:relative}.filter-section-label:before{content:"\2014\a0";color:#78643c59}.disclosure-label:before{content:none}.disclosure-label{margin-top:0;padding-top:0;border-top:none}.filter-categories{margin-bottom:4px}.filter-cat-row{display:flex;align-items:center;gap:6px;padding:3px 6px;border-radius:3px;cursor:pointer;color:var(--text-secondary);font-size:13px;transition:background-color .15s ease,color .15s ease}.filter-cat-row:hover{background:var(--bg-hover);color:var(--text-primary)}.filter-cat-row input[type=checkbox],.recipe-weight-cb{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--border-medium);border-radius:2px;background:var(--bg-input);cursor:pointer;position:relative;flex-shrink:0;transition:background-color .15s ease,border-color .15s ease}.filter-cat-row input[type=checkbox]:after,.recipe-weight-cb:after{content:"";position:absolute;top:1px;width:4px;height:7px;border:solid var(--text-bright);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);opacity:0;transition:opacity .15s ease}.filter-cat-row input[type=checkbox]:checked:after,.recipe-weight-cb:checked:after{opacity:1}.filter-cat-row input[type=checkbox]:hover,.recipe-weight-cb:hover{border-color:var(--accent-gold-dim)}.filter-cat-row input[type=checkbox]{width:14px;height:14px}.filter-cat-row input[type=checkbox]:after{left:4px}.recipe-weight-cb{width:13px;height:13px}.recipe-weight-cb:after{left:3px}.filter-cat-row input[type=checkbox]:checked{background:var(--accent-gold-dim);border-color:var(--accent-gold)}.cat-swatch{display:inline-block;width:8px;height:8px;border-radius:2px;flex-shrink:0;box-shadow:0 0 4px #0006}.cat-count{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-left:auto;flex-shrink:0}.filter-categories-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 8px;margin-top:8px;margin-bottom:4px}.filter-cat-column{min-width:0}.filter-col-label{font-family:var(--font-display);font-size:11px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.5px;margin-bottom:3px;padding-bottom:2px;border-bottom:1px solid var(--border-subtle)}.search-autocomplete{position:relative}.search-autocomplete input{width:100%;padding:8px 10px 8px 30px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-primary);font-family:var(--font-body);font-size:13px;font-weight:400;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.search-autocomplete input::placeholder{color:var(--text-muted);font-style:italic;font-weight:300}.search-autocomplete input:focus{border-color:var(--accent-gold-dim);box-shadow:0 0 0 2px var(--accent-gold-glow)}.search-icon{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:13px;pointer-events:none;line-height:1}.search-dropdown{position:absolute;top:100%;left:0;right:0;z-index:20;background:var(--bg-panel-solid);border:1px solid var(--border-medium);border-top:none;border-radius:0 0 3px 3px;max-height:300px;overflow-y:auto;box-shadow:0 6px 16px #00000080}.search-result{display:flex;align-items:center;gap:8px;padding:7px 10px;cursor:pointer;font-size:12px;color:var(--text-secondary);transition:background-color .1s ease;border-bottom:1px solid rgba(80,70,50,.06)}.search-result:last-child{border-bottom:none}.search-result:hover,.search-result.active{background:var(--bg-hover);color:var(--text-primary)}.search-res-icon{width:20px;height:20px;image-rendering:pixelated;flex-shrink:0}.search-swatch{display:inline-block;width:10px;height:10px;flex-shrink:0;box-shadow:0 0 3px #0006}.search-swatch.circle{border-radius:50%}.search-swatch.rect{border-radius:2px}.search-result-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-type{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}.rate-increased{color:#e87040!important;font-weight:600}.rate-decreased{color:#40b880!important;font-weight:600}.equip-disabled td{text-decoration:line-through;opacity:.5}.upkeep-summary-wrap{padding:14px;background:#e0aa3808;border:1px solid rgba(224,170,56,.12);border-radius:6px;margin-bottom:24px}.upkeep-summary-wrap .calc-table{border:none;margin-bottom:0}.cost-sep{color:var(--text-muted);font-size:11px;margin:0 2px;opacity:.5}.detail-state-row{display:flex;gap:4px;margin:8px 0}.detail-state-btn{flex:1;padding:6px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:10px;font-weight:500;cursor:pointer;text-transform:uppercase;letter-spacing:.8px;transition:border-color .2s ease,color .2s ease,background .2s ease,box-shadow .2s ease;position:relative}.detail-state-btn.active.state-bought{border-color:var(--state-bought);color:var(--state-bought);background:#c8a0401f;box-shadow:0 0 10px #c8a04014}.detail-state-btn.active.state-built,.detail-state-btn.active.state-produced{border-color:var(--state-produced);color:var(--state-produced);background:#60b8581f;box-shadow:0 0 10px #60b85814}.detail-state-btn.active.state-ignored{border-color:var(--state-ignored);color:var(--state-ignored);background:#b068401f;box-shadow:0 0 10px #b0684014}.filter-reset-btn{width:100%;padding:7px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:11px;font-weight:500;cursor:pointer;margin-top:8px;text-transform:uppercase;letter-spacing:1px;transition:border-color .2s ease,color .2s ease,background .2s ease}.edge-mode-bar{display:flex;gap:2px;margin-bottom:6px}.edge-mode-btn{flex:1;background:none;border:1px solid transparent;border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:11px;font-weight:500;padding:4px 2px;cursor:pointer;letter-spacing:.3px;transition:color .2s ease,border-color .2s ease,background .2s ease}.edge-mode-btn:hover{color:var(--text-primary);border-color:var(--border-medium);background:var(--bg-hover)}.edge-mode-btn.active{color:var(--accent-gold);border-color:var(--accent-gold-dim);background:var(--accent-gold-glow)}.graph-tooltip{z-index:100;max-width:220px}.graph-tooltip-name{font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--text-bright);display:flex;align-items:center;gap:6px}.graph-tooltip-name img{width:18px;height:18px;image-rendering:pixelated}.graph-tooltip-cat{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-top:1px}.graph-tooltip-desc{font-size:11px;color:var(--text-secondary);margin-top:4px;line-height:1.4;font-family:var(--font-display);font-style:italic}.graph-tooltip-click-hint{font-size:10px;color:var(--text-muted);font-style:italic;margin-top:4px}.graph-tooltip-click-hint:before{content:"Click to see details \2192"}#legend{position:fixed;bottom:14px;left:50%;transform:translate(-50%);z-index:10;display:flex;gap:14px;padding:8px 22px;font-size:11px;color:var(--text-muted);letter-spacing:.5px;animation:legend-entrance .7s cubic-bezier(.22,1,.36,1) .3s both}@keyframes legend-entrance{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.legend-section{display:flex;align-items:center;gap:6px}.legend-section-label{font-family:var(--font-display);font-size:11px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);margin-right:2px}.legend-divider{width:1px;height:14px;background:var(--border-subtle)}.legend-item{display:flex;align-items:center;gap:4px}.legend-circle{width:8px;height:8px;border-radius:50%;box-shadow:0 0 3px #0006}.legend-rect{width:12px;height:8px;border-radius:2px;box-shadow:0 0 3px #0006}.legend-line{width:16px;height:2px;border-radius:1px}.legend-line.dashed{background:repeating-linear-gradient(90deg,var(--text-muted) 0px,var(--text-muted) 3px,transparent 3px,transparent 6px);height:1px}.legend-line-construction{background:repeating-linear-gradient(90deg,rgba(200,160,80,.65) 0px,rgba(200,160,80,.65) 4px,transparent 4px,transparent 7px);height:2px}.legend-line-upgrade{background:repeating-linear-gradient(90deg,rgba(152,120,216,.65) 0px,rgba(152,120,216,.65) 3px,transparent 3px,transparent 6px);height:2px}#stats-bar{position:fixed;bottom:14px;left:14px;z-index:10;padding:5px 14px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);letter-spacing:.5px;animation:legend-entrance .7s cubic-bezier(.22,1,.36,1) .5s both}#stats-bar span{color:var(--accent-gold-dim);font-weight:500}#breadcrumb-bar{position:fixed;top:62px;left:50%;transform:translate(-50%);z-index:10;display:flex;align-items:center;gap:2px;padding:5px 14px;background:var(--bg-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-subtle);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);max-width:70vw;overflow-x:auto;white-space:nowrap;scrollbar-width:none}#breadcrumb-bar::-webkit-scrollbar{display:none}#breadcrumb-bar:empty,#breadcrumb-bar[style*="display: none"]{visibility:hidden}.breadcrumb-item{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border-radius:3px;font-family:var(--font-body);font-size:11px;color:var(--text-secondary);cursor:pointer;transition:background .15s ease,color .15s ease;flex-shrink:0}.breadcrumb-item:hover{background:var(--bg-hover);color:var(--text-primary)}.breadcrumb-item.active{color:var(--accent-gold);background:var(--accent-gold-glow)}.breadcrumb-item.breadcrumb-hidden{opacity:.5;border-bottom:1px dashed var(--text-muted)}.breadcrumb-sep{color:var(--text-muted);font-size:11px;margin:0 1px;flex-shrink:0;opacity:.4}.breadcrumb-icon{width:14px;height:14px;image-rendering:pixelated;flex-shrink:0}.graph-tooltip-filter-reason{color:var(--state-ignored);font-size:10px;font-style:italic;margin-top:3px}.zoom-controls{position:fixed;bottom:54px;right:14px;z-index:10;display:flex;flex-direction:column;gap:2px;animation:legend-entrance .7s cubic-bezier(.22,1,.36,1) .4s both}.zoom-controls button{min-width:44px;min-height:44px;width:44px;height:44px;background:var(--bg-panel);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:4px;color:var(--text-secondary);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:color .2s ease,border-color .2s ease,background .2s ease;box-shadow:0 2px 8px #0000004d}body:has(.view.active:not(#view-graph)) .zoom-controls,body:has(.view.active:not(#view-graph)) .onboarding-hint,body:has(.view.active:not(#view-graph)) .focus-bar,body:has(.view.active:not(#view-graph)) .edge-tooltip,body:has(.view.active:not(#view-graph)) .graph-tooltip{display:none}#tab-bar{display:flex;gap:2px;padding:4px}#tab-bar .tab{background:none;border:1px solid transparent;border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:12px;font-weight:400;padding:6px 14px;cursor:pointer;letter-spacing:.3px;transition:color .2s ease,border-color .2s ease,background .2s ease;display:flex;align-items:center;gap:5px}#tab-bar .tab .tab-icon{font-size:8px;opacity:.5;transition:opacity .2s ease}#tab-bar .tab:hover{color:var(--text-primary);border-color:var(--border-medium);background:var(--bg-hover)}#tab-bar .tab:hover .tab-icon{opacity:.8}#tab-bar .tab.active{color:var(--accent-gold);border-color:var(--accent-gold-dim);background:var(--accent-gold-glow);font-weight:500}#tab-bar .tab.active .tab-icon{opacity:1}#help-btn{background:none;border:1px solid var(--border-medium);border-radius:50%;min-width:44px;min-height:44px;width:44px;height:44px;color:var(--text-muted);font-family:var(--font-display);font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;transition:color .2s ease,border-color .2s ease,background .2s ease}#github-link{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;width:44px;height:44px;border:1px solid var(--border-medium);border-radius:50%;color:var(--text-muted);text-decoration:none;flex-shrink:0;transition:color .2s ease,border-color .2s ease,background .2s ease}.shortcut-overlay{position:fixed;inset:0;z-index:200;background:#0000008c;backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.shortcut-overlay.visible{opacity:1;visibility:visible}.shortcut-modal{background:var(--bg-panel-solid);border:1px solid var(--border-ornate);border-radius:var(--panel-radius);box-shadow:0 12px 48px #000000b3;padding:24px 32px;max-width:480px;max-height:85vh;overflow-y:auto;width:90%}.shortcut-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;font-family:var(--font-display);font-size:18px;font-weight:700;font-style:italic;color:var(--accent-gold);letter-spacing:.3px}.shortcut-close{background:none;border:none;color:var(--text-muted);font-size:20px;cursor:pointer;padding:0 4px;line-height:1;transition:color .2s ease}.shortcut-close:hover{color:var(--text-primary)}.help-section-label{font-family:var(--font-display);font-size:13px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.3px;margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--border-subtle)}.help-getting-started{margin-top:14px;margin-bottom:6px}.help-description{color:var(--text-secondary);font-size:13px;line-height:1.6}.help-description+.help-description{margin-top:12px}.help-description strong{color:var(--text-primary)}.help-description code{font-family:var(--font-mono);font-size:12px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;padding:1px 5px}.help-content .help-section-label{margin-top:16px}.help-sample-circle{display:inline-block;width:12px;height:12px;border-radius:50%;box-shadow:0 0 3px #0006;vertical-align:middle}.help-sample-rect{display:inline-block;width:14px;height:10px;border-radius:2px;box-shadow:0 0 3px #0006;vertical-align:middle}.shortcut-table strong{color:var(--text-primary)}.shortcut-table{width:100%;border-collapse:collapse}.shortcut-table td{padding:7px 0;color:var(--text-secondary);font-size:13px;border-bottom:1px solid rgba(80,70,50,.08)}.shortcut-table tr:last-child td{border-bottom:none}.shortcut-key{white-space:nowrap;padding-right:16px!important;width:1%}.shortcut-key kbd{display:inline-block;padding:3px 8px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;font-family:var(--font-mono);font-size:11px;color:var(--text-primary);line-height:1.4;box-shadow:0 1px #0000004d}.view{display:none}.view.active{display:block}.view.active:not(#view-graph){overflow-y:auto;height:100vh}#view-graph.active{width:100%;height:100%}.calc-content{max-width:980px;margin:80px auto 60px;padding:0 28px;position:relative;z-index:1;animation:content-enter .5s cubic-bezier(.22,1,.36,1) both}@keyframes content-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.calc-content h2,.planner-content h2{font-family:var(--font-display);font-size:26px;font-weight:700;font-style:italic;color:var(--accent-gold);letter-spacing:.3px;margin-bottom:4px}.planner-content h2{margin-bottom:2px}.calc-content h3{font-family:var(--font-display);font-size:17px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.3px;margin-top:36px;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:8px}.calc-content h3:before{content:"";display:inline-block;width:3px;height:16px;background:var(--accent-gold-dim);border-radius:2px;opacity:.5}.calc-content p{color:var(--text-secondary);font-size:13px;line-height:1.7;margin-bottom:18px;max-width:680px}.calc-content .note{color:var(--text-muted);font-size:11px;font-style:italic;margin:12px 0 22px;padding:10px 14px;background:#5046320f;border-radius:0 4px 4px 0;line-height:1.65;border:1px solid rgba(130,120,95,.12);border-left:3px solid var(--border-ornate)}.calc-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:18px;border:1px solid var(--border-subtle);border-radius:5px;overflow:hidden}.calc-table th{font-family:var(--font-display);font-size:11px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);text-align:left;padding:10px 14px;border-bottom:1px solid var(--border-medium);background:#0000002e;position:sticky;top:0;z-index:1;letter-spacing:.3px}.calc-table td{padding:8px 14px;color:var(--text-secondary);border-bottom:1px solid rgba(90,105,120,.08);vertical-align:top}.calc-table tbody tr:nth-child(2n):not(.group-header):not(.terminal-row) td{background:#ffffff03}.calc-table tr:hover td{background:var(--bg-hover)}.calc-table .num{font-family:var(--font-mono);font-size:12px;color:var(--text-primary);text-align:right}.calc-table .resource-name{display:inline-flex;align-items:center;gap:6px}.calc-table .resource-name img{width:18px;height:18px;image-rendering:pixelated}.calc-table .group-header td{font-family:var(--font-display);font-weight:600;font-style:italic;font-size:13px;color:var(--accent-gold-dim);letter-spacing:.5px;padding-top:18px;padding-bottom:8px;border-bottom:1px solid rgba(160,120,32,.15);background:#a0782005!important}.calc-table .group-header td:hover{background:#a0782005!important}.calc-table .terminal-row td{background:#c8a04008}.calc-controls{display:flex;align-items:center;gap:12px;margin-bottom:24px;flex-wrap:wrap;padding:12px 16px;background:#0a10188c;border:1px solid var(--border-subtle);border-radius:5px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.calc-controls label{font-size:11px;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.calc-controls select,.calc-controls input[type=number]{background:var(--bg-input);border:1px solid var(--border-medium);border-radius:4px;color:var(--text-primary);font-family:var(--font-body);font-size:13px;padding:8px 12px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.calc-controls select:focus,.calc-controls input[type=number]:focus{border-color:var(--accent-gold-dim);box-shadow:0 0 0 2px var(--accent-gold-glow)}.calc-controls select{min-width:200px}.calc-controls .search-autocomplete{min-width:240px}.calc-controls .search-autocomplete input{font-size:13px;padding:8px 12px 8px 30px}.calc-controls input[type=number]{width:100px}.calc-btn{background:#e0aa3814;border:1px solid rgba(224,170,56,.25);border-radius:4px;color:var(--accent-gold-dim);font-family:var(--font-body);font-size:11px;font-weight:600;padding:8px 22px;cursor:pointer;text-transform:uppercase;letter-spacing:.8px;transition:border-color .2s ease,color .2s ease,background .2s ease}.calc-btn:hover{border-color:#e0aa3866;color:var(--accent-gold);background:#e0aa3824}#detail-panel li.recipe-disabled{opacity:.4;text-decoration:line-through}.recipe-weight-ctrl{display:inline-flex;align-items:center;gap:4px;margin-right:6px;vertical-align:middle}.recipe-weight-cb:checked{background:#60b8584d;border-color:var(--state-produced)}.recipe-weight-num{width:40px;padding:1px 3px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:2px;color:var(--text-primary);font-family:var(--font-mono);font-size:10px;text-align:right;outline:none;flex-shrink:0;transition:border-color .2s ease}.recipe-weight-num:focus{border-color:var(--accent-gold-dim)}.recipe-weight-num:disabled{opacity:.3;color:var(--text-muted)}.bal-summary-card{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:14px 18px;margin:14px 0 24px;background:#5a9eff0a;border:1px solid rgba(90,158,255,.15);border-radius:6px}.bal-summary-main{display:flex;flex-direction:column;gap:2px}.bal-summary-label{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}.bal-summary-value{font-family:var(--font-mono);font-size:22px;font-weight:700;color:var(--text-bright);line-height:1}.bal-summary-details{display:flex;gap:12px;font-size:12px;color:var(--text-secondary)}.bal-summary-bought{color:var(--state-bought)}.bal-summary-warn{color:var(--state-ignored)}.bal-summary-hint{width:100%;font-size:11px;color:var(--text-muted);font-style:italic;margin-top:-4px}.bal-depth-bar{display:inline-block;height:2px;background:linear-gradient(90deg,#5a9eff4d,#5a9eff14);border-radius:1px;vertical-align:middle;margin-right:4px}.bal-bought-tag,.bal-warn-tag{display:inline-block;padding:1px 6px;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;border-radius:3px;margin-right:6px}.bal-bought-tag{background:#c8a0401f;color:var(--state-bought);border:1px solid rgba(200,160,64,.2)}.bal-warn-tag{background:#b068401f;color:var(--state-ignored);border:1px solid rgba(176,104,64,.2)}.bal-weight-input{width:52px;padding:3px 6px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-primary);font-family:var(--font-mono);font-size:11px;text-align:right;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.bal-weight-input:focus{border-color:var(--accent-gold-dim);box-shadow:0 0 0 2px var(--accent-gold-glow)}.bal-weight-input:hover{border-color:var(--border-ornate)}#detail-res-tooltip{z-index:110;max-width:280px;font-size:12px}.drt-header{font-family:var(--font-display);font-size:11px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.5px;margin-bottom:4px}.drt-entry{display:flex;align-items:center;gap:4px;color:var(--text-secondary);padding:1px 0;line-height:1.4}.drt-icon{width:16px;height:16px;image-rendering:pixelated;flex-shrink:0;filter:drop-shadow(0 0 1px rgba(0,0,0,.4))}.drt-weight{color:var(--text-muted);font-family:var(--font-mono);font-size:10px}.producer-cards{display:flex;flex-direction:column;gap:6px;margin-top:4px}.producer-card{background:#0000001f;border:1px solid var(--border-subtle);border-left:3px solid var(--border-medium);border-radius:0 4px 4px 0;padding:8px 10px;transition:border-color .2s ease,background .2s ease}.producer-card:hover{background:#0000002e;border-color:var(--border-medium)}.producer-card.card-disabled{opacity:.4}.producer-card-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.producer-card-icon{width:24px;height:24px;image-rendering:pixelated;flex-shrink:0}.producer-card-name{font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--accent-gold);cursor:pointer;border-bottom:1px dotted rgba(212,160,56,.35);transition:color .2s ease}.producer-card-name:hover{color:var(--accent-gold-bright)}.producer-card-rate{margin-left:auto;font-family:var(--font-mono);font-size:12px;color:var(--text-primary);flex-shrink:0}.producer-card-inputs{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.producer-card-input-pill{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;background:#5046321a;border:1px solid var(--border-subtle);border-radius:3px;font-size:11px;color:var(--text-secondary);cursor:pointer;transition:background .15s ease,color .15s ease}.producer-card-input-pill:hover{background:#50463233;color:var(--text-primary)}.producer-card-input-pill img{width:14px;height:14px;image-rendering:pixelated}.producer-card-input-pill .pill-amount{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.producer-card-no-inputs{font-size:11px;color:var(--text-muted);font-style:italic;margin:2px 0}.recipe-io-label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.producer-card-tech{font-size:10px;color:var(--text-muted);margin-top:3px;font-style:italic}.producer-card-weight{margin-top:4px;padding-top:4px;border-top:1px solid rgba(80,70,50,.08)}.disclosure-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;padding:6px 0}.disclosure-arrow{font-size:10px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.disclosure-toggle.open .disclosure-arrow{transform:rotate(90deg)}.disclosure-content{display:none}.disclosure-toggle.open+.disclosure-content{display:block}.active-states-summary{margin-top:4px}.active-states-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.active-states-count{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.active-states-clear{background:none;border:1px solid var(--border-subtle);border-radius:3px;color:var(--text-muted);font-size:9px;padding:1px 6px;cursor:pointer;transition:color .2s ease,border-color .2s ease}.active-states-clear:hover{color:var(--state-ignored);border-color:var(--state-ignored)}.active-states-group{margin-bottom:4px}.active-states-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.active-states-group-label.state-built{color:var(--state-produced)}.active-states-group-label.state-bought{color:var(--state-bought)}.active-states-group-label.state-produced{color:var(--state-produced)}.active-states-group-label.state-ignored{color:var(--state-ignored)}.active-states-pills{display:flex;flex-wrap:wrap;gap:3px}.active-state-pill{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;background:#50463214;border:1px solid var(--border-subtle);border-radius:3px;font-size:11px;color:var(--text-secondary);cursor:pointer;transition:background .15s ease,color .15s ease}.active-state-pill:hover{background:#5046322e;color:var(--text-primary)}.active-state-pill img{width:14px;height:14px;image-rendering:pixelated}.active-states-empty{font-size:11px;color:var(--text-muted);font-style:italic;padding:2px 0}.state-tooltip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-panel-solid);border:1px solid var(--border-ornate);border-radius:3px;padding:5px 8px;font-size:10px;font-style:normal;text-transform:none;letter-spacing:0;color:var(--text-secondary);pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:20;box-shadow:0 2px 10px #0006;max-width:200px;white-space:normal;text-align:center;line-height:1.3}.detail-state-btn:hover .state-tooltip{opacity:1}.focus-bar{position:fixed;top:62px;right:14px;z-index:11;display:flex;align-items:center;gap:8px;padding:7px 14px;background:var(--bg-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--accent-gold-dim);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow),0 0 16px #d4a03814;font-size:12px;color:var(--text-primary);animation:panel-entrance .3s cubic-bezier(.22,1,.36,1) both}.focus-bar-label{font-family:var(--font-display);font-size:11px;font-weight:600;font-style:italic;color:var(--accent-gold);letter-spacing:.5px}.focus-bar-target{display:inline-flex;align-items:center;gap:4px}.focus-bar-target img{width:16px;height:16px;image-rendering:pixelated}.focus-bar-exit{background:none;border:1px solid var(--border-medium);border-radius:3px;color:var(--text-muted);font-size:11px;padding:2px 8px;cursor:pointer;margin-left:4px;transition:color .2s ease,border-color .2s ease,background .2s ease}.focus-bar-whatif{color:#4fc3f7;font-size:.78rem;font-style:italic;margin-left:12px}.focus-depth-ctrl{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-secondary)}.focus-depth-ctrl label{font-size:10px;color:var(--text-muted)}.focus-depth-input{width:36px;padding:1px 3px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:2px;color:var(--text-primary);font-family:var(--font-mono);font-size:10px;text-align:center;outline:none}.focus-depth-input:focus{border-color:var(--accent-gold-dim)}.focus-depth-btn{width:18px;height:18px;padding:0;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:2px;color:var(--text-secondary);font-size:12px;line-height:16px;text-align:center;cursor:pointer}.focus-depth-btn:hover{background:var(--bg-hover);border-color:var(--accent-gold-dim);color:var(--text-primary)}.detail-focus-btn{padding:5px 10px;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:10px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;margin-left:8px;transition:border-color .2s ease,color .2s ease,background .2s ease}.focus-indicator{display:flex;align-items:center;gap:6px;padding:5px 8px;background:#d4a0380f;border:1px solid var(--accent-gold-dim);border-radius:3px;margin-bottom:6px}.focus-indicator-label{font-family:var(--font-display);font-size:11px;font-weight:600;font-style:italic;color:var(--accent-gold);letter-spacing:.5px}.focus-indicator-target{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--text-primary)}.focus-indicator-target img{width:14px;height:14px;image-rendering:pixelated}.focus-indicator-exit{background:none;border:none;color:var(--text-muted);font-size:14px;cursor:pointer;margin-left:auto;padding:0 2px;line-height:1;transition:color .2s ease}.focus-indicator-exit:hover{color:var(--state-ignored)}body:has(.view.active:not(#view-graph)){overflow-y:auto;overflow-x:hidden}body:has(.focus-bar) #detail-panel.open{top:106px}body:has(.focus-bar) #breadcrumb-bar{max-width:calc(100vw - 520px)}.species-matrix-container{margin-bottom:32px}.species-matrix-container h3{margin-top:20px}.species-matrix-scroll{overflow-x:auto;margin-top:10px;border:1px solid var(--border-subtle);border-radius:5px;background:#0000001a;box-shadow:0 2px 8px #00000026}.species-matrix-scroll::-webkit-scrollbar{height:6px}.species-matrix-scroll::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}.species-matrix-scroll::-webkit-scrollbar-track{background:transparent}.species-matrix{border-collapse:collapse;min-width:900px;font-size:12px;width:100%}.species-matrix th,.species-matrix td{padding:5px 8px;border-bottom:1px solid rgba(80,70,50,.08)}.species-matrix thead th{font-family:var(--font-display);font-size:12px;font-weight:600;font-style:italic;color:var(--text-bright);text-align:center;padding:10px 8px;border-bottom:1px solid var(--border-medium);background:#00000026;position:sticky;top:0;z-index:2}.species-matrix .npc-species{opacity:.6}.species-matrix .matrix-row-label{font-size:12px;font-weight:500;color:var(--text-secondary);white-space:nowrap;text-align:left;position:sticky;left:0;background:var(--bg-panel-solid);z-index:1;padding-right:12px}.species-matrix thead th:first-child{position:sticky;left:0;z-index:3;background:var(--bg-panel-solid)}.species-matrix .matrix-cell{text-align:center;color:var(--text-secondary);font-family:var(--font-mono);font-size:11px}.species-matrix .matrix-na{color:var(--text-muted);font-family:var(--font-body)}.species-matrix .matrix-base-rate{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-left:4px}.species-matrix .matrix-section-header td{font-family:var(--font-display);font-weight:700;font-style:italic;font-size:12px;color:var(--accent-gold-dim);letter-spacing:.5px;padding:12px 8px 5px;border-bottom:1px solid rgba(160,120,32,.2);background:#a0782008}.species-matrix tbody tr:not(.matrix-section-header):hover td{background:var(--bg-hover)}.species-matrix tbody tr:not(.matrix-section-header):hover .matrix-row-label{background:var(--bg-panel-solid)}.species-matrix .matrix-heat-good{background:#50c8501f;color:#60c058}.species-matrix .matrix-heat-moderate{background:#d2be321a;color:#c8b838}.species-matrix .matrix-heat-poor{background:#d282281a;color:#d08028}.species-matrix .matrix-heat-bad{background:#d232321a;color:#d04040}.species-matrix .matrix-need-reduced{background:#50c8501a;color:#40b880;font-weight:600}.species-matrix .matrix-need-increased{background:#d25a281a;color:#e87040;font-weight:600}.species-matrix .matrix-need-base{color:var(--text-muted)}.species-matrix .matrix-pref-cell{font-family:var(--font-body)}.species-matrix .matrix-pref-icon{width:20px;height:20px;image-rendering:pixelated;vertical-align:middle;cursor:help}.species-matrix .matrix-pref-all{font-size:11px;color:var(--text-muted);font-style:italic}.species-matrix .matrix-equip-available{color:#60b858;font-size:14px;font-weight:700;font-family:var(--font-body)}.species-matrix .matrix-equip-disabled{color:#d23c3c80;font-size:14px;font-family:var(--font-body)}.onboarding-hint{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:15;display:flex;align-items:center;gap:8px;padding:10px 20px 10px 16px;background:var(--bg-panel);backdrop-filter:blur(20px) saturate(1.1);-webkit-backdrop-filter:blur(20px) saturate(1.1);border:1px solid var(--border-ornate);border-radius:20px;box-shadow:0 8px 32px #00000080,0 0 0 1px #b4965526;pointer-events:none;opacity:0;animation:hint-fade-in .6s .8s ease both}.onboarding-hint.dismissing{animation:hint-fade-out .4s ease forwards}@keyframes hint-fade-in{0%{opacity:0;transform:translate(-50%,-50%) translateY(8px)}to{opacity:1;transform:translate(-50%,-50%) translateY(0)}}@keyframes hint-fade-out{0%{opacity:1;transform:translate(-50%,-50%) translateY(0)}to{opacity:0;transform:translate(-50%,-50%) translateY(-8px)}}.onboarding-hint-icon{font-size:16px;color:var(--accent-gold);flex-shrink:0;line-height:1}.onboarding-hint-text{font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--accent-gold);letter-spacing:.3px;white-space:nowrap}.onboarding-hint-close{pointer-events:auto;background:none;border:none;color:var(--text-muted);font-size:14px;cursor:pointer;padding:0 0 0 4px;line-height:1;transition:color .2s ease}.onboarding-hint-close:hover{color:var(--text-primary)}.planner-content{max-width:1200px;margin:80px auto 40px;padding:0 28px;position:relative;z-index:1;animation:content-enter .5s cubic-bezier(.22,1,.36,1) both}.planner-header{margin-bottom:16px}.planner-subtitle{font-family:var(--font-body);font-size:11px;font-weight:300;color:var(--text-muted);letter-spacing:1.2px;text-transform:uppercase}.planner-selector{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;padding:10px 14px;background:var(--bg-panel-solid);border:1px solid var(--border-subtle);border-radius:5px}.planner-selector .search-autocomplete{min-width:260px}.planner-selector .search-autocomplete input{font-size:13px;padding:7px 12px 7px 30px}.planner-selector .search-dropdown{z-index:100;background:var(--bg-deep);border:1px solid var(--border-medium);box-shadow:0 8px 24px #000000b3}.planner-actions{display:flex;align-items:center;gap:4px;margin-bottom:12px;padding:6px 8px;background:var(--planner-panel);border:1px solid var(--border-subtle);border-radius:5px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.planner-actions-group{display:flex;align-items:center;gap:3px}.planner-actions-sep,.planner-toolbar-sep{width:1px;background:linear-gradient(180deg,transparent,var(--border-medium),transparent);flex-shrink:0}.planner-actions-sep{height:20px;margin:0 6px}.planner-actions-group-label{font-size:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;opacity:.5;margin-right:4px;white-space:nowrap}.planner-save-btn{background:#e0aa380f!important;border-color:#e0aa3833!important;color:var(--accent-gold-dim)!important}.planner-save-btn:hover{background:#e0aa381f!important;border-color:#e0aa3866!important;color:var(--accent-gold)!important}.planner-blueprints-btn{position:relative}.planner-blueprints-btn .bp-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;font-size:9px;font-weight:700;font-family:var(--font-mono);background:#9870c833;color:#9870c8e6;border-radius:8px;padding:0 4px;margin-left:4px;line-height:1}.planner-toolbar-wrap{margin-bottom:12px}.planner-toolbar{display:flex;align-items:center;gap:3px;margin-bottom:6px;padding:4px 6px;background:var(--planner-panel);border:1px solid var(--border-subtle);border-radius:5px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.planner-toolbar-sep{height:18px;margin:0 4px}.planner-tool-btn{background:transparent;border:1px solid transparent;border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:11px;font-weight:500;padding:7px 14px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;transition:all .15s ease;white-space:nowrap}.planner-tool-btn:hover{color:var(--text-primary);background:#ffffff0a;border-color:var(--border-subtle)}.planner-tool-btn.active{color:var(--accent-gold);background:var(--accent-gold-glow);border-color:#e0aa3840}.planner-rot-wrap{display:flex;align-items:center;gap:4px}.planner-rot-label{font-size:10px;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.planner-optimize-btn{background:#60b85814!important;border-color:#60b8584d!important;color:#60b858!important}.planner-optimize-btn:hover:not(:disabled){background:#60b85826!important;border-color:#60b85880!important;color:#80d878!important}.planner-optimize-btn:disabled{opacity:.35;cursor:not-allowed}.planner-optimize-btn.optimizing{opacity:1!important;color:#60b858!important;cursor:wait}.planner-opt-setting{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-secondary);cursor:pointer;margin-left:8px;white-space:nowrap}.planner-opt-setting input[type=checkbox]{accent-color:var(--accent-gold);margin:0}.planner-opt-setting-label{font-size:11px;color:var(--text-muted);margin-left:10px;white-space:nowrap}.planner-opt-select{background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:3px;color:var(--text-secondary);font-family:var(--font-body);font-size:11px;padding:2px 4px;margin-left:2px;cursor:pointer}input[type=number].planner-opt-select{width:5ch;padding-right:2px;-moz-appearance:textfield}input[type=number].planner-opt-select::-webkit-inner-spin-button{opacity:1;margin-left:2px}.planner-opt-select:hover{border-color:var(--border-medium)}.optimize-overlay{position:absolute;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#0c1014b8;backdrop-filter:blur(6px) saturate(.6);-webkit-backdrop-filter:blur(6px) saturate(.6);border-radius:4px;animation:optimize-overlay-in .25s ease-out}@keyframes optimize-overlay-in{0%{opacity:0}to{opacity:1}}.optimize-card{width:min(280px,80%);padding:20px 24px;background:linear-gradient(135deg,rgba(96,184,88,.04),transparent 60%),#10161ce0;border:1px solid rgba(96,184,88,.15);border-radius:8px;box-shadow:0 0 40px #60b8580f,0 8px 32px #00000080;text-align:center}.optimize-phase{font-size:13px;font-weight:600;color:#60b858;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:4px}.optimize-detail{font-size:11px;color:var(--text-muted);margin-bottom:14px;min-height:1em}.optimize-track{height:4px;background:#ffffff0f;border-radius:2px;overflow:hidden}.optimize-fill{height:100%;width:0%;background:linear-gradient(90deg,#4a9e42,#60b858,#78d070);border-radius:2px;transition:width .2s ease-out;position:relative}.optimize-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.25) 50%,transparent 100%);animation:optimize-shimmer 1.8s ease-in-out infinite}@keyframes optimize-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.optimize-pct{font-size:20px;font-weight:600;color:var(--text-primary);margin-top:12px;font-variant-numeric:tabular-nums}.planner-copy-btn{background:#5a9eff14!important;border-color:#5a9eff4d!important;color:#5a9eff!important}.planner-copy-btn:hover{background:#5a9eff26!important;border-color:#5a9eff80!important;color:#80b8ff!important}.planner-clear-btn{color:var(--text-muted)!important}.planner-clear-btn:hover{color:#d04848!important;border-color:#d048484d!important;background:#d0484814!important}.planner-kbd{display:inline-block;padding:1px 5px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:3px;font-family:var(--font-mono);font-size:8px;color:var(--text-muted);line-height:1.5;vertical-align:baseline;text-transform:none;letter-spacing:0;margin-left:2px;opacity:.45;transition:opacity .15s ease}.planner-tool-btn:hover .planner-kbd{opacity:.85}.planner-shape-bar{display:flex;align-items:center;gap:4px;padding-left:8px;margin-left:4px;border-left:1px solid var(--border-subtle)}.planner-shape-label{font-size:10px;color:var(--text-muted);font-weight:500;margin-right:2px;text-transform:uppercase;letter-spacing:.5px}.planner-shape-btn{background:transparent;border:1px solid var(--border-subtle);border-radius:3px;color:var(--text-muted);font-family:var(--font-body);font-size:10px;font-weight:500;padding:3px 10px;cursor:pointer;letter-spacing:.3px;transition:all .15s ease}.planner-shape-btn:hover{color:var(--text-primary);border-color:var(--border-medium);background:#ffffff08}.planner-shape-btn.active{color:var(--accent-gold);border-color:#e0aa3840;background:var(--accent-gold-glow)}.planner-remove-hint{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--text-muted)}.planner-locked{opacity:.2;pointer-events:none;filter:grayscale(.6);transition:opacity .3s ease,filter .3s ease}.planner-empty-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;z-index:5;pointer-events:none}.planner-empty-overlay .empty-icon{font-size:48px;color:var(--accent-gold-dim);opacity:.25;animation:empty-pulse 3s ease-in-out infinite;line-height:1}.planner-empty-overlay .empty-title{font-family:var(--font-display);font-size:15px;font-style:italic;color:var(--text-muted);letter-spacing:.3px;opacity:.6}.planner-empty-overlay .empty-hint{font-family:var(--font-body);font-size:11px;color:var(--text-muted);opacity:.35;letter-spacing:.3px}@keyframes empty-pulse{0%,to{opacity:.2}50%{opacity:.4}}.rect-preview{outline:2px solid rgba(90,158,255,.6);outline-offset:-1px;background:#5a9eff2e!important}.planner-main{display:flex;gap:16px;align-items:flex-start;position:relative}.planner-grid-outer{position:relative;flex-shrink:0}.planner-grid-wrap{overflow:auto;border-radius:4px;border:1px solid var(--border-medium);background:linear-gradient(rgba(40,65,95,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(40,65,95,.04) 1px,transparent 1px),#080c14bf;background-size:25px 25px,25px 25px,100% 100%;padding:8px;max-height:calc(100vh - 240px);box-shadow:0 2px 12px #0000004d}.planner-grid-wrap::-webkit-scrollbar{width:5px;height:5px}.planner-grid-wrap::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}.planner-grid-wrap::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.planner-grid-wrap::-webkit-scrollbar-track{background:transparent}.planner-grid-wrap::-webkit-scrollbar-corner{background:transparent}.planner-grid{display:grid;gap:1px;user-select:none;cursor:crosshair;position:relative}.planner-cell{width:24px;height:24px;border-radius:1px;transition:background-color .08s ease;position:relative;overflow:hidden}.cell-outside{background:#0c121c73}.cell-wall{background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(50,65,80,.15) 3px,rgba(50,65,80,.15) 4px),#4b5f7394;border-radius:1px;box-shadow:inset 0 0 2px #00000040}.cell-door{background:#8c784647;border:2px dashed rgba(180,150,85,.42);border-radius:2px}.cell-unstable{outline:2px solid rgba(220,180,40,.6);outline-offset:-2px}.cell-room{background:var(--planner-room);box-shadow:inset 0 0 3px #648cb414}.cell-furniture{border-radius:3px;box-shadow:inset 0 1px 2px #00000026}.cell-furniture[data-avail=ROOM]{background:#50be6461}.cell-furniture[data-avail=ROOM_SOLID]{background:#5087af80}.cell-furniture[data-avail=AVOID_PASS]{background:#c8aa3c6b}.cell-furniture[data-avail=AVOID_LIKE_FUCK]{background:#c878287a}.cell-furniture[data-avail=SOLID]{background:#6e829b80}.cell-furniture[data-avail=NOT_ACCESSIBLE]{background:#5f50787a}.cell-furniture[data-avail=PENALTY4]{background:#af643c6b}.cell-furniture[data-avail=ENEMY]{background:#b432327a}.preview-valid{outline:2px solid rgba(96,184,88,.7);outline-offset:-1px;background:#60b85833!important}.preview-invalid{outline:2px solid rgba(210,50,50,.7);outline-offset:-1px;background:#d2323233!important}.cell-unreachable{outline:2px solid rgba(255,60,60,.8);outline-offset:-1px}.cell-remove-target{outline:2px solid rgba(210,50,50,.8);outline-offset:-2px;background:#d2323233!important}.cell-hover-outline{outline:2px solid rgba(79,195,247,.8);outline-offset:-1px;z-index:1}.planner-tooltip{position:fixed;pointer-events:none;z-index:100;background:#0a0e16eb;border:1px solid rgba(79,195,247,.35);border-radius:5px;padding:6px 10px;font-family:var(--font-body);font-size:11px;color:var(--text-primary);line-height:1.5;max-width:240px;box-shadow:0 4px 12px #00000080;display:none}.planner-tooltip .tip-label{font-weight:600;color:#4fc3f7f2;margin-bottom:2px}.planner-tooltip .tip-detail{color:var(--text-secondary);font-size:10px}.thumb-hover-from-grid{border-color:#4fc3f7cc!important;box-shadow:0 0 8px #4fc3f74d}.planner-dim-label-live{position:absolute;pointer-events:none;z-index:5;font-family:var(--font-mono);font-size:10px;font-weight:600;color:#b4c8dcb3;background:#0a1018a6;padding:1px 5px;border-radius:3px;white-space:nowrap}.planner-grid.drag-cursor .cell-furniture{cursor:grab}.planner-grid.dragging,.planner-grid.dragging *{cursor:grabbing!important}.planner-feedback{position:absolute;color:#e05050;font-size:10px;font-weight:600;pointer-events:none;z-index:10;white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.9);padding:2px 6px;background:#0000008c;border-radius:3px;border:1px solid rgba(210,50,50,.3)}.planner-stats .inline-icon{width:16px;height:16px;image-rendering:pixelated;vertical-align:text-bottom;margin-right:3px;filter:drop-shadow(0 0 1px rgba(0,0,0,.6))}.planner-sidebar{flex:1;min-width:240px;max-width:340px;max-height:calc(100vh - 240px);overflow-y:auto;display:flex;flex-direction:column;gap:12px}.planner-section-header{font-family:var(--font-body);font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1.2px;padding-bottom:6px;margin-bottom:8px;border-bottom:1px solid var(--border-subtle)}.planner-palette{padding:10px 12px;border:1px solid var(--border-subtle);border-radius:5px;background:var(--planner-panel)}.planner-palette-empty{color:var(--text-muted);font-style:italic;font-size:12px;padding:4px 0}.planner-group{margin-bottom:10px}.planner-group:last-child{margin-bottom:0}.planner-group-header{font-family:var(--font-display);font-size:12px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.3px;margin-bottom:6px;padding:3px 8px;border-bottom:1px solid var(--border-subtle);border-left:3px solid transparent;border-radius:2px 0 0 2px;background:#0000001a}.planner-group-header.group-unfulfilled{color:var(--state-ignored);border-bottom-color:#b068404d;background:#b068400f}.planner-group-items{display:flex;flex-wrap:wrap;gap:5px;padding:2px 0}.planner-thumb{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 7px;min-width:40px;border:1px solid var(--border-subtle);border-radius:4px;cursor:pointer;transition:all .15s ease;background:#0000001f}.planner-thumb:hover{border-color:var(--accent-gold-dim);background:var(--accent-gold-glow);transform:translateY(-1px);box-shadow:0 3px 8px #0000004d}.planner-thumb.thumb-selected{border-color:var(--accent-gold);background:#e0aa381f;box-shadow:0 0 10px #e0aa381f,0 2px 6px #0003}.planner-thumb.thumb-disabled{opacity:.25;cursor:not-allowed}.thumb-grid{display:grid;gap:1px}.thumb-cell{width:6px;height:6px;border-radius:.5px}.thumb-cell.thumb-empty{background:transparent}.thumb-cell[data-avail=ROOM]{background:#50be648c}.thumb-cell[data-avail=ROOM_SOLID]{background:#5a8cb4b3}.thumb-cell[data-avail=AVOID_PASS]{background:#c8aa3c99}.thumb-cell[data-avail=AVOID_LIKE_FUCK]{background:#c87828a6}.thumb-cell[data-avail=SOLID]{background:#788ca0a6}.thumb-cell[data-avail=ENEMY]{background:#b4323299}.thumb-mult{font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}.thumb-size{font-family:var(--font-mono);font-size:8px;color:var(--text-muted);opacity:.5}.thumb-count{font-family:var(--font-mono);font-size:8px;color:var(--bg-primary);background:var(--accent-gold-dim);border-radius:6px;min-width:12px;text-align:center;padding:0 3px;line-height:14px}.planner-stats{padding:10px 12px;border:1px solid var(--border-subtle);border-left:3px solid var(--accent-gold-dim);border-radius:0 5px 5px 0;background:var(--planner-panel)}.planner-stats-empty{color:var(--text-muted);font-style:italic;font-size:11px}.planner-stats-title{font-family:var(--font-display);font-size:13px;font-weight:600;font-style:italic;color:var(--accent-gold-dim);letter-spacing:.3px;margin-bottom:6px;margin-top:10px;padding-bottom:4px;border-bottom:1px solid var(--border-subtle)}.planner-stats-title:first-child{margin-top:0}.planner-stat-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px;border-bottom:1px solid rgba(80,70,50,.05)}.planner-stat-row:last-child{border-bottom:none}.planner-stat-name{color:var(--text-secondary);flex:1;font-size:12px}.planner-stat-value{font-family:var(--font-mono);font-size:12px;color:var(--text-primary);font-weight:600;min-width:40px;text-align:right}.stat-eff-green{color:#60b858}.stat-eff-yellow{color:#e0aa38}.stat-eff-red{color:#d04848}.planner-stat-badge{font-size:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border:1px solid var(--border-subtle);border-radius:9px;min-width:48px;text-align:center;background:#0000001f}.planner-stat-badge[data-type=employees]{color:#9870c8cc;border-color:#9870c833}.planner-stat-badge[data-type=services],.planner-stat-badge[data-type=integer]{color:#5a9effcc;border-color:#5a9eff33}.planner-stat-badge[data-type=efficiency]{color:#60b858cc;border-color:#60b85833}.planner-stat-badge[data-type=production],.planner-stat-badge[data-type=relative]{color:#fa4c;border-color:#fa43}.planner-valid-ok,.planner-valid-warn,.planner-valid-error,.planner-valid-info{font-size:12px;padding:6px 10px;margin-bottom:4px;border-radius:0 4px 4px 0}.planner-valid-ok{color:var(--state-produced);font-style:italic;border:1px solid rgba(96,184,88,.2);border-radius:4px;background:#60b8580d}.planner-valid-ok:before{content:"\2713  ";font-weight:700}.planner-valid-warn{color:var(--state-ignored);background:#b068400f;border:1px solid rgba(176,104,64,.15);border-left:3px solid var(--state-ignored)}.planner-valid-warn:before{content:"\26a0  "}.planner-valid-error{color:#d04848;background:#d048480f;border:1px solid rgba(208,72,72,.15);border-left:3px solid #d04848}.planner-valid-error:before{content:"\2717  ";font-weight:700}.planner-valid-info{color:var(--text-secondary);background:#5a9eff0a;border:1px solid rgba(90,158,255,.12);border-left:3px solid rgba(90,158,255,.5)}.planner-valid-info:before{content:"\2139  "}.planner-info{display:grid;grid-template-columns:auto 1fr;gap:3px 14px;margin-top:14px;padding:10px 14px;border:1px solid var(--border-subtle);border-radius:5px;background:var(--planner-panel);font-size:12px}.planner-info:empty{display:none}.planner-info-label{color:var(--text-muted);font-weight:500;white-space:nowrap;font-size:11px;text-transform:uppercase;letter-spacing:.3px}.planner-info-value{color:var(--text-secondary)}.planner-info-desc{grid-column:1 / -1;color:var(--text-muted);font-family:var(--font-display);font-style:italic;font-size:12px;line-height:1.5;margin-bottom:6px;padding:6px 8px;background:#5046320a;border-left:2px solid var(--border-ornate);border-radius:0 3px 3px 0}.cell-reachable-dot{position:absolute;bottom:2px;right:2px;width:5px;height:5px;border-radius:50%;background:#ffffffbf;border:1px solid rgba(0,0,0,.3);pointer-events:none}.cell-guide-highlight{outline:2px solid rgba(255,255,255,.85)!important;outline-offset:-1px;animation:guide-pulse .8s ease-in-out infinite alternate}@keyframes guide-pulse{0%{outline-color:#ffffffd9}to{outline-color:#fff6}}.cell-sprite-img{width:24px;height:24px;object-fit:contain;image-rendering:pixelated;position:absolute;top:0;left:0;pointer-events:none}.sprite-mode .cell-furniture[data-avail]{background:transparent!important}.planner-sprite-btn.active{border-color:var(--accent-gold);background:var(--accent-gold-glow);color:var(--accent-gold-bright)}.plan-restore-error{position:relative;padding:8px 32px 8px 12px;margin:0 0 8px;background:#b068401f;border:1px solid rgba(176,104,64,.25);border-radius:4px;color:var(--state-ignored);font-family:var(--font-body);font-size:12px;line-height:1.4}.plan-restore-dismiss{position:absolute;top:4px;right:6px;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;line-height:1;padding:2px 4px;transition:color .15s ease}.plan-restore-dismiss:hover{color:var(--text-primary)}#city-selector{display:flex;align-items:center;gap:4px}.city-select{background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-primary);font-family:var(--font-body);font-size:11px;padding:4px 8px;outline:none;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease;max-width:140px;overflow:hidden;text-overflow:ellipsis}.city-select:focus{border-color:var(--accent-gold-dim);box-shadow:0 0 0 2px var(--accent-gold-glow)}.city-select option{background:var(--bg-panel-solid);color:var(--text-primary)}.city-btn{background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-muted);font-size:12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex-shrink:0;overflow:hidden;line-height:1;transition:border-color .2s ease,color .2s ease,background .2s ease}.city-del-btn:hover{border-color:var(--state-ignored);color:var(--state-ignored);background:#b068401f}.cost-check{color:var(--state-produced);font-weight:700;font-size:12px}.cost-x{color:var(--state-ignored);font-weight:700;font-size:12px}.cost-status{font-size:10px;font-weight:600;margin-left:6px;font-style:normal}.cost-status.cost-ready{color:var(--state-produced)}.cost-status.cost-missing{color:var(--state-bought)}.resource-availability{font-size:11px;padding:4px 8px;margin:4px 0 6px;border-radius:3px;line-height:1.5}.resource-availability.available{color:var(--state-produced);background:#60b8580f;border-left:2px solid var(--state-produced)}.resource-availability.hint{color:var(--text-secondary);background:#c8a0400f;border-left:2px solid var(--state-bought)}.resource-availability.not-available{color:var(--text-muted);font-style:italic}.blueprint-overlay{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:bp-overlay-in .2s ease both}@keyframes bp-overlay-in{0%{opacity:0}to{opacity:1}}.blueprint-modal{background:var(--bg-panel-solid);border:1px solid var(--border-ornate);border-radius:8px;padding:0;max-width:600px;width:92%;box-shadow:0 24px 80px #0009,0 2px 8px #0006,inset 0 1px #b496551f;animation:bp-modal-in .3s cubic-bezier(.22,1,.36,1) both;overflow:hidden}@keyframes bp-modal-in{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.blueprint-modal h3{font-family:var(--font-display);color:var(--accent-gold)}.blueprint-toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%) translateY(16px);background:var(--bg-panel-solid);border:1px solid var(--border-ornate);border-radius:6px;padding:10px 18px 10px 14px;font-size:13px;z-index:10000;opacity:0;transition:opacity .25s ease,transform .3s cubic-bezier(.22,1,.36,1);pointer-events:none;box-shadow:0 8px 32px #00000080,0 1px 3px #0000004d;display:flex;align-items:center;gap:8px;max-width:400px}.blueprint-toast .toast-icon{font-size:15px;flex-shrink:0;line-height:1}.blueprint-toast .toast-msg{color:var(--text-primary);font-size:13px;line-height:1.35}.blueprint-toast.toast-success{border-color:#60b85859}.blueprint-toast.toast-success .toast-icon{color:#60b858}.blueprint-toast.toast-info{border-color:var(--border-ornate)}.blueprint-toast.toast-info .toast-icon{color:var(--accent-gold)}.blueprint-toast.toast-warn{border-color:#b0684059}.blueprint-toast.toast-warn .toast-icon{color:var(--state-ignored)}.blueprint-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.blueprint-manager{max-width:640px;max-height:82vh;display:flex;flex-direction:column}.blueprint-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 14px;border-bottom:1px solid var(--border-subtle);background:linear-gradient(180deg,rgba(180,150,85,.04),transparent)}.blueprint-header-left{display:flex;flex-direction:column;gap:4px}.blueprint-header h3{font-family:var(--font-display);font-size:20px;font-weight:700;font-style:italic;color:var(--accent-gold);margin:0;letter-spacing:.3px}.blueprint-header-desc{font-size:11px;color:var(--text-muted);letter-spacing:.3px}.blueprint-close-x{background:none;border:1px solid transparent;border-radius:4px;color:var(--text-muted);font-size:20px;cursor:pointer;padding:2px 8px;line-height:1;transition:all .15s ease}.blueprint-close-x:hover{color:var(--text-bright);background:#ffffff0a;border-color:var(--border-subtle)}.blueprint-list{flex:1;overflow-y:auto;min-height:80px;max-height:380px;border-bottom:1px solid var(--border-subtle);background:var(--bg-input)}.blueprint-empty{padding:36px 20px;text-align:center;color:var(--text-muted);font-size:12px;line-height:1.6}.blueprint-empty-icon{font-size:32px;color:var(--text-muted);opacity:.25;margin-bottom:10px;line-height:1}.blueprint-empty-title{font-family:var(--font-display);font-style:italic;font-size:14px;color:var(--text-secondary);margin-bottom:4px}.blueprint-empty-hint{font-size:11px;color:var(--text-muted);opacity:.7}.blueprint-item{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid rgba(90,105,120,.12);gap:10px;transition:background .12s ease}.blueprint-item:last-child{border-bottom:none}.blueprint-item:hover{background:var(--bg-hover)}.blueprint-item-active{border-left:3px solid var(--accent-gold);background:#e0aa380f}.blueprint-group-header{font-size:10px;font-weight:600;color:var(--accent-gold-dim);text-transform:uppercase;letter-spacing:.8px;padding:8px 14px 5px;border-bottom:1px solid var(--border-subtle);margin-top:0;background:#00000026;display:flex;align-items:center;gap:6px}.blueprint-group-header:first-child{margin-top:0}.blueprint-group-header .bp-group-icon{width:16px;height:16px;image-rendering:pixelated;opacity:.7}.blueprint-item-meta{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden}.blueprint-item-name{font-size:13px;color:var(--text-primary);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .12s ease}.blueprint-item-name:hover{color:var(--accent-gold)}.blueprint-item-name-edit{font-family:var(--font-body);font-size:13px;color:var(--text-primary);background:var(--bg-deep);border:1px solid var(--accent-gold-dim);border-radius:3px;padding:2px 6px;outline:none;width:160px;box-shadow:0 0 0 2px var(--accent-gold-glow)}.blueprint-item-dims{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);white-space:nowrap;background:#0003;padding:1px 6px;border-radius:3px;border:1px solid rgba(90,105,120,.15)}.blueprint-item-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}.blueprint-load-btn{font-size:11px!important;padding:3px 12px!important;background:#5a9eff0f!important;border-color:#5a9eff33!important;color:#5a9effe6!important;border-radius:3px!important}.blueprint-load-btn:hover{background:#5a9eff1f!important;border-color:#5a9eff66!important;color:#80b8ff!important}.blueprint-delete-x{background:none;border:1px solid transparent;border-radius:3px;color:var(--text-muted);font-size:15px;cursor:pointer;padding:2px 6px;line-height:1;transition:all .12s ease;opacity:.5}.blueprint-item:hover .blueprint-delete-x{opacity:1}.blueprint-delete-x:hover{color:#f66;background:#d0484814;border-color:#d0484833}.blueprint-footer{padding:14px 20px 18px}.blueprint-footer-label{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;opacity:.7}.blueprint-footer-buttons{display:flex;gap:8px}.blueprint-import-btn,.blueprint-export-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px!important;border-radius:5px!important;font-size:12px!important;font-weight:500!important;transition:all .15s ease!important}.blueprint-import-btn .btn-icon,.blueprint-export-btn .btn-icon{font-size:14px}.blueprint-import-btn{background:#60b8580f!important;border:1px solid rgba(96,184,88,.2)!important;color:#60b858e6!important}.blueprint-import-btn:hover{background:#60b8581f!important;border-color:#60b85866!important;color:#80d878!important}.blueprint-export-btn{background:#5a9eff0f!important;border:1px solid rgba(90,158,255,.2)!important;color:#5a9effe6!important}.blueprint-export-btn:hover{background:#5a9eff1f!important;border-color:#5a9eff66!important;color:#80b8ff!important}.blueprint-export-btn:disabled{opacity:.4;cursor:wait}.blueprint-path-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);flex-wrap:wrap;margin-top:12px;padding:10px 12px;background:#60b8580a;border:1px solid rgba(96,184,88,.15);border-radius:5px;animation:bp-path-in .3s ease both}@keyframes bp-path-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.blueprint-path-hint{width:100%;color:var(--state-produced);font-size:12px;margin-bottom:4px;font-weight:500}.blueprint-path-text{font-family:var(--font-mono);font-size:11px;color:var(--text-primary);background:var(--bg-input);padding:4px 8px;border-radius:3px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border-subtle)}.blueprint-copy-path-btn{font-size:11px!important;padding:4px 10px!important;flex-shrink:0}.blueprint-save-inline{display:flex;align-items:center;gap:6px;padding:8px 10px;background:#e0aa380f;border:1px solid rgba(224,170,56,.2);border-radius:5px;animation:bp-save-in .2s ease both}@keyframes bp-save-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.blueprint-save-inline input{flex:1;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-primary);font-family:var(--font-body);font-size:12px;padding:5px 8px;outline:none;min-width:0}.blueprint-save-inline input:focus{border-color:var(--accent-gold-dim);box-shadow:0 0 0 2px var(--accent-gold-glow)}.blueprint-save-inline .bp-save-confirm{background:var(--accent-gold-dim);border:1px solid var(--accent-gold);border-radius:3px;color:var(--bg-deep);font-size:11px;font-weight:600;padding:5px 12px;cursor:pointer;white-space:nowrap;transition:background .15s ease}.blueprint-save-inline .bp-save-confirm:hover{background:var(--accent-gold)}.blueprint-save-inline .bp-save-cancel{background:none;border:1px solid var(--border-subtle);border-radius:3px;color:var(--text-muted);font-size:11px;padding:5px 10px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.blueprint-save-inline .bp-save-cancel:hover{border-color:var(--border-medium);color:var(--text-secondary)}.city-import-btn{font-size:11px!important}.save-import-modal{max-width:640px;max-height:85vh;display:flex;flex-direction:column}.save-import-name-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.save-import-label{color:var(--text-secondary);font-size:12px;white-space:nowrap}.save-import-name-input{flex:1;background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-primary);font-family:var(--font-body);font-size:13px;padding:4px 8px;outline:none}.save-import-name-input:focus{border-color:var(--accent-gold-dim);box-shadow:0 0 0 2px var(--accent-gold-glow)}.save-import-summary{color:var(--text-muted);font-size:12px;margin-bottom:10px}.save-import-body{overflow-y:auto;flex:1;min-height:0;padding-right:4px}.save-import-section{margin-bottom:12px}.save-import-section-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.save-import-section-header .save-import-toggle-btn{margin-left:auto}.save-import-hint{font-size:11px;color:var(--text-muted);font-style:italic}.save-import-section-title{color:var(--accent-gold);font-family:var(--font-display);font-size:14px}.save-import-toggle-btn{background:none;border:1px solid var(--border-subtle);border-radius:3px;color:var(--text-muted);font-size:10px;padding:2px 6px;cursor:pointer}.save-import-toggle-btn:hover{border-color:var(--accent-gold-dim);color:var(--accent-gold)}.save-import-cat-group{margin-bottom:8px}.save-import-cat-label{color:var(--text-secondary);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;padding-left:6px;border-left:3px solid var(--border-medium)}.save-import-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:2px 8px}.save-import-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-primary);cursor:pointer;padding:2px 4px;border-radius:3px}.save-import-item:hover{background:var(--bg-hover)}.save-import-item input[type=checkbox]{accent-color:var(--accent-gold);flex-shrink:0}.save-import-icon{width:16px;height:16px;flex-shrink:0}.save-import-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border-subtle)}.save-import-cancel-btn{background:var(--bg-input);border:1px solid var(--border-medium);border-radius:3px;color:var(--text-secondary);font-size:12px;padding:6px 16px;cursor:pointer}.save-import-cancel-btn:hover{border-color:var(--text-muted);color:var(--text-primary)}.save-import-confirm-btn{background:var(--accent-gold-dim);border:1px solid var(--accent-gold);border-radius:3px;color:var(--bg-deep);font-size:12px;font-weight:600;padding:6px 20px;cursor:pointer}.save-import-confirm-btn:hover{background:var(--accent-gold)}.table-scroll-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll-wrap .calc-table{min-width:600px}@media(max-width:1100px){#stats-bar,#header-actions{display:none}.planner-selector{flex-direction:column;align-items:stretch}.planner-actions{flex-wrap:wrap}.planner-main{flex-direction:column}.planner-grid-outer{max-width:100%}.planner-sidebar{max-width:100%;max-height:none}}@media(max-width:768px){#header-bar{gap:8px;padding:6px 12px;top:6px}#header-bar h1{font-size:15px}#header-bar .subtitle,.header-sep{display:none}#tab-bar .tab{font-size:11px;padding:5px 8px}#tab-bar .tab .tab-icon{display:none}#detail-panel{top:auto;bottom:0;right:0;width:100%;max-height:50vh;border-radius:var(--panel-radius) var(--panel-radius) 0 0;transform:translateY(16px)}#detail-panel.open{transform:translateY(0)}#filter-panel{width:220px;max-height:calc(100vh - 56px);top:50px}#breadcrumb-bar{top:46px;max-width:90vw;font-size:10px;padding:4px 10px}.calc-content,.planner-content{margin-top:56px;padding:0 12px}.zoom-controls{bottom:14px;right:8px}#legend{display:none}#tab-bar .tab{min-height:44px}.filter-collapse-btn,.zoom-controls button{min-width:44px;min-height:44px}html{font-size:14px}}@media(max-width:480px){#header-bar{flex-wrap:wrap;justify-content:center;gap:4px;padding:4px 8px;top:4px}#header-title{width:100%;text-align:center}#header-bar h1{font-size:14px}#tab-bar{flex-wrap:wrap;justify-content:center;gap:1px}#tab-bar .tab{font-size:10px;padding:4px 6px}#filter-panel{width:calc(100vw - 16px);left:8px;top:auto;bottom:8px;max-height:60vh}#detail-panel{max-height:60vh}#breadcrumb-bar{max-width:calc(100vw - 16px);font-size:9px}.planner-content,.calc-content{padding:0 6px}.planner-mobile-note{padding:12px 16px;background:#e0aa3814;border:1px solid rgba(224,170,56,.2);border-radius:5px;color:var(--text-secondary);font-size:12px;margin-bottom:12px;text-align:center}.planner-mobile-note strong{color:var(--accent-gold-dim)}}
