@import"https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap";:root{--bg-0: #0b1218;--bg-1: #121c24;--surface: #17232d;--surface-2: #1d2c38;--border: #2a3d4c;--text: #e8eef2;--muted: #8fa3b0;--accent-teal: #2f9e8a;--accent-amber: #e0a045;--accent-coral: #e06452;--accent-sky: #3db8d0;--shadow: 0 18px 50px rgba(0, 0, 0, .35);--radius: 14px;--radius-sm: 10px;--font-display: "Sora", sans-serif;--font-body: "Source Sans 3", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);color:var(--text);background:radial-gradient(1200px 600px at 10% -10%,rgba(47,158,138,.16),transparent 55%),radial-gradient(900px 500px at 95% 0%,rgba(61,184,208,.12),transparent 50%),linear-gradient(165deg,#0a1016,#101820 45%,#0d151c);background-attachment:fixed}button,input,select{font:inherit}.app-shell{position:relative;max-width:1480px;margin:0 auto;padding:1.25rem 1.5rem 2rem;z-index:1}.ambient{position:fixed;pointer-events:none;z-index:0;filter:blur(40px);opacity:.45}.ambient-a{width:420px;height:420px;top:8%;left:-80px;background:radial-gradient(circle,rgba(224,160,69,.22),transparent 70%);animation:drift 18s ease-in-out infinite alternate}.ambient-b{width:380px;height:380px;bottom:5%;right:-60px;background:radial-gradient(circle,rgba(47,158,138,.2),transparent 70%);animation:drift 22s ease-in-out infinite alternate-reverse}@keyframes drift{0%{transform:translate(0)}to{transform:translate(30px,24px)}}.eyebrow{margin:0;font-family:var(--font-display);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-sky);font-weight:600}.topbar{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.brand{display:flex;gap:.9rem;align-items:center}.brand-mark{width:44px;height:44px;border-radius:12px;background:linear-gradient(145deg,#2f9e8a59,#3db8d026);border:1px solid rgba(61,184,208,.35);display:grid;place-items:center;position:relative;overflow:hidden}.brand-mark span{position:absolute;width:18px;height:18px;border:2px solid var(--accent-teal);border-radius:4px;transform:rotate(18deg)}.brand-mark span:last-child{width:10px;height:10px;border-color:var(--accent-amber);transform:rotate(-12deg) translate(6px,-4px)}.brand h1{margin:.15rem 0 0;font-family:var(--font-display);font-size:clamp(1.35rem,2.4vw,1.85rem);font-weight:650;letter-spacing:-.02em}.tagline{margin:0;max-width:280px;color:var(--muted);font-size:.92rem;text-align:right}.control-dock{display:flex;flex-wrap:wrap;gap:.85rem;align-items:end;padding:1rem 1.1rem;background:color-mix(in srgb,var(--surface) 88%,transparent);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow);margin-bottom:.75rem}.field label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.3rem;font-weight:600}.control-select{background:var(--bg-1);border:1px solid var(--border);color:var(--text);padding:.55rem .75rem;border-radius:var(--radius-sm);min-width:170px}.control-select.compact{min-width:130px;padding:.4rem .55rem;font-size:.85rem}.time-bridge{display:flex;align-items:center;gap:.35rem;padding-bottom:.7rem;min-width:48px}.bridge-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--accent-sky),transparent)}.bridge-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-amber);box-shadow:0 0 0 4px #e0a04526;animation:pulse-dot 2.4s ease-in-out infinite}@keyframes pulse-dot{0%,to{transform:scale(1)}50%{transform:scale(1.25)}}.dock-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-left:auto}.btn{border:1px solid transparent;border-radius:var(--radius-sm);padding:.6rem 1rem;cursor:pointer;font-weight:600;transition:transform .15s ease,background .15s ease,border-color .15s ease}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:not(:disabled):hover{transform:translateY(-1px)}.btn.primary{background:linear-gradient(135deg,#2f9e8a,#248a78);color:#04110e}.btn.ghost{background:var(--surface-2);color:var(--text);border-color:var(--border)}.btn.ghost.active{background:#3db8d02e;border-color:var(--accent-sky);color:#c8f1f8}.area-description{color:var(--muted);margin:0 0 1rem;font-size:.9rem}.area-description .hint{color:#9adceb}.area-description .warn{color:var(--accent-amber)}.workspace{display:grid;grid-template-columns:minmax(380px,460px) 1fr;gap:1rem;align-items:start;transition:grid-template-columns .35s ease}.workspace.has-results{grid-template-columns:minmax(520px,1.25fr) minmax(340px,.85fr)}.workspace.has-results .stats-panel.advanced{max-height:calc(100vh - 160px);box-shadow:0 22px 60px #0000006b;border-color:color-mix(in srgb,var(--accent-teal) 35%,var(--border))}.workspace.has-results .map-section{position:sticky;top:.75rem}.workspace.has-results .map-container{height:min(48vh,460px)}.stats-panel,.map-section,.layer-control{background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.05rem;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.stats-panel.advanced{max-height:calc(100vh - 210px);overflow:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.stats-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.9rem}.stats-header h2,.map-section-head h2{margin:.15rem 0 0;font-family:var(--font-display);font-size:1.15rem;letter-spacing:-.02em}.header-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.badge{background:#3db8d01f;border:1px solid rgba(61,184,208,.35);color:#9adceb;font-size:.68rem;padding:.22rem .5rem;border-radius:6px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.segmented{display:inline-flex;background:var(--bg-1);border:1px solid var(--border);border-radius:8px;overflow:hidden}.segmented button{background:transparent;border:none;color:var(--muted);padding:.35rem .55rem;cursor:pointer;font-size:.75rem;font-weight:600}.segmented button.active{background:var(--surface-2);color:var(--text)}.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin-bottom:.85rem}.metric-card{text-align:left;background:var(--bg-1);border:1px solid var(--border);border-radius:12px;padding:.65rem .7rem;color:inherit;display:flex;flex-direction:column;gap:.25rem;transition:border-color .15s ease,transform .15s ease}.metric-card.clickable{cursor:pointer}.metric-card:not(.clickable){cursor:default}.metric-card.clickable:hover,.metric-card.active{border-color:color-mix(in srgb,var(--accent-sky) 55%,var(--border));transform:translateY(-1px)}.metric-card-top{display:flex;align-items:center;gap:.35rem}.metric-icon{width:1.4rem;height:1.4rem;display:grid;place-items:center;border-radius:7px;font-size:.75rem;background:var(--surface-2)}.tone-teal .metric-icon{color:var(--accent-teal);background:#2f9e8a26}.tone-amber .metric-icon{color:var(--accent-amber);background:#e0a04526}.tone-coral .metric-icon{color:var(--accent-coral);background:#e0645226}.tone-sky .metric-icon{color:var(--accent-sky);background:#3db8d026}.metric-label{font-size:.72rem;color:var(--muted);font-weight:600;flex:1}.metric-value{font-family:var(--font-display);font-size:1.05rem;letter-spacing:-.02em}.metric-hint{font-size:.7rem;color:var(--muted)}.metric-delta{font-size:.68rem;font-weight:700;margin-left:auto}.metric-delta.up,.up{color:var(--accent-teal)}.metric-delta.down,.down{color:var(--accent-coral)}.metric-delta.flat,.flat{color:var(--muted)}.meter{height:5px;background:#ffffff0f;border-radius:99px;overflow:hidden;margin-top:.25rem}.meter-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent-sky),var(--accent-teal));transition:width .45s ease}.meter-fill.amber{background:linear-gradient(90deg,var(--accent-amber),#f0c06a)}.meta-strip{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}.meta-strip span,.chip{background:var(--bg-1);border:1px solid var(--border);border-radius:7px;padding:.22rem .45rem;font-size:.7rem;color:#c5d4dc}.chip.accent{border-color:#e0a04566;color:#f0c98a}.tab-bar{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.75rem}.tab{background:var(--bg-1);color:var(--muted);border:1px solid var(--border);padding:.38rem .55rem;border-radius:8px;font-size:.75rem;font-weight:600;cursor:pointer}.tab.active{background:#2f9e8a2e;color:#d7f3ec;border-color:#2f9e8a73}.tab-body{border-top:1px solid var(--border);padding-top:.75rem}.tab-stack{display:flex;flex-direction:column;gap:.85rem}.viz-row{display:grid;grid-template-columns:1fr;gap:.75rem}.viz-row.dual{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width: 700px){.viz-row.dual{grid-template-columns:1fr}}.pie-chart{background:var(--bg-1);border:1px solid var(--border);border-radius:12px;padding:.75rem}.pie-body{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-top:.35rem}.pie-legend{list-style:none;margin:0;padding:0;flex:1;min-width:120px;display:flex;flex-direction:column;gap:.4rem}.pie-legend li{display:grid;grid-template-columns:10px 1fr;gap:.25rem .45rem;font-size:.72rem;color:var(--muted)}.pie-legend li strong{grid-column:2;color:var(--text);font-size:.72rem;font-weight:600}.pie-legend i{width:8px;height:8px;border-radius:50%;margin-top:.25rem}.pie-center-value{fill:var(--text);font-size:13px;font-weight:700;font-family:var(--font-display)}.pie-center-unit{fill:var(--muted);font-size:9px;font-family:var(--font-body)}.viz-title{margin:0;font-size:.8rem;font-family:var(--font-display);color:var(--text)}.compare-bars,.trend-chart,.split-meter,.index-panel{background:var(--bg-1);border:1px solid var(--border);border-radius:12px;padding:.75rem}.compare-legend{display:flex;gap:.85rem;margin:.45rem 0 .65rem;font-size:.72rem;color:var(--muted)}.compare-legend .swatch{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.3rem;vertical-align:-1px}.swatch.t1{background:#6b8796}.swatch.t2{background:var(--accent-sky)}.compare-row{margin-bottom:.65rem}.compare-meta{display:flex;justify-content:space-between;font-size:.75rem;margin-bottom:.25rem}.bar-pair{display:flex;flex-direction:column;gap:.2rem}.bar-track{height:7px;background:#ffffff0d;border-radius:99px;overflow:hidden}.bar{height:100%;border-radius:inherit;transition:width .4s ease}.bar.t1{background:#6b8796}.bar.t2{background:linear-gradient(90deg,var(--accent-sky),var(--accent-teal))}.bar-values{display:flex;justify-content:space-between;font-size:.68rem;color:var(--muted);margin-top:.15rem}.trend-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.25rem}.trend-badge{font-size:.68rem;font-weight:700;padding:.15rem .4rem;border-radius:6px;background:#ffffff0a}.trend-badge.up{color:var(--accent-teal)}.trend-badge.down{color:var(--accent-coral)}.trend-chart svg{width:100%;height:auto;display:block}.chart-label{fill:var(--muted);font-size:9px;font-family:var(--font-body)}.split-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.45rem}.split-total{font-size:.72rem;color:var(--muted)}.split-track{display:flex;height:10px;border-radius:99px;overflow:hidden;background:#ffffff0d}.split-seg{height:100%;transition:width .45s ease}.split-seg.teal{background:var(--accent-teal)}.split-seg.amber{background:var(--accent-amber)}.split-seg.coral{background:var(--accent-coral)}.split-seg.sky{background:var(--accent-sky)}.split-labels{display:flex;justify-content:space-between;margin-top:.4rem;font-size:.72rem;color:var(--muted)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.25rem}.dot.teal{background:var(--accent-teal)}.dot.amber{background:var(--accent-amber)}.dot.coral{background:var(--accent-coral)}.dot.sky{background:var(--accent-sky)}.info-tiles,.extra-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.info-tile,.extra-pill{background:var(--bg-1);border:1px solid var(--border);border-radius:10px;padding:.55rem .65rem;display:flex;flex-direction:column;gap:.15rem}.info-tile span,.extra-pill span{font-size:.7rem;color:var(--muted)}.info-tile strong,.extra-pill strong{font-size:.88rem}.index-switch{display:flex;flex-wrap:wrap;gap:.35rem}.index-switch button{background:var(--bg-1);border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:.35rem .6rem;cursor:pointer;font-size:.75rem;font-weight:700}.index-switch button.active{color:#04110e;background:var(--accent-teal);border-color:var(--accent-teal)}.index-panel-head{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.65rem}.index-panel-head h3{margin:0;font-size:.95rem;font-family:var(--font-display)}.formula{margin:.25rem 0 0;color:var(--muted);font-size:.72rem;font-family:ui-monospace,Consolas,monospace}.index-stat-chips{display:flex;flex-wrap:wrap;gap:.35rem}.index-viz-grid{display:grid;gap:.65rem}.toolbar{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}.search-input{flex:1;min-width:140px;background:var(--bg-1);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.45rem .6rem}.ghost-btn{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.4rem .6rem;cursor:pointer;font-size:.78rem;font-weight:600}.region-list{display:flex;flex-direction:column;gap:.45rem}.region-row{background:var(--bg-1);border:1px solid var(--border);border-radius:10px;padding:.55rem .65rem}.region-meta{display:flex;justify-content:space-between;gap:.5rem;font-size:.8rem;margin-bottom:.35rem}.region-meta span{color:var(--muted)}.stat-table{display:flex;flex-direction:column}.stat-row{display:flex;justify-content:space-between;gap:.75rem;padding:.4rem 0;border-bottom:1px solid var(--border);font-size:.82rem}.stat-row span{color:var(--muted)}.stat-row:last-child{border-bottom:none}.map-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.75rem}.map-chips{display:flex;gap:.35rem;flex-wrap:wrap}.map-container{height:min(58vh,560px);width:100%;border-radius:12px;margin-bottom:.85rem;border:1px solid var(--border);overflow:hidden}.map-container.draw-mode{outline:2px solid var(--accent-sky);outline-offset:2px}.layer-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.65rem}.layer-head h3{margin:0;font-family:var(--font-display);font-size:.95rem}.layer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.45rem}.layer-chip{display:flex;align-items:center;gap:.45rem;text-align:left;background:var(--bg-1);border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:.55rem .65rem;cursor:pointer;font-size:.8rem;font-weight:600;transition:border-color .15s ease,color .15s ease,background .15s ease}.layer-chip.on{color:var(--text)}.layer-chip.teal.on{border-color:#2f9e8a80;background:#2f9e8a1f}.layer-chip.amber.on{border-color:#e0a04580;background:#e0a0451f}.layer-chip.coral.on{border-color:#e0645280;background:#e064521f}.layer-chip.sky.on{border-color:#3db8d080;background:#3db8d01f}.layer-icon{opacity:.9}.toggle-dot{margin-left:auto;width:8px;height:8px;border-radius:50%;background:#3a4d5a}.toggle-dot.on{background:var(--accent-teal);box-shadow:0 0 0 3px #2f9e8a33}.layer-chip.locked{opacity:.45;cursor:not-allowed}.state-panel{min-height:320px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:.45rem}.state-panel h2{margin:0;font-family:var(--font-display)}.state-panel p{margin:0;color:var(--muted);max-width:34ch}.state-icon{font-size:1.4rem;color:var(--accent-sky)}.state-panel.error{border-color:#e0645273}.state-panel.error .state-icon,.state-panel.error h2{color:var(--accent-coral)}.ready-list{margin:.5rem 0 0;padding-left:1.1rem;color:#b7c8d1;font-size:.85rem}.pulse-loader{width:42px;height:42px;border-radius:50%;border:3px solid rgba(61,184,208,.2);border-top-color:var(--accent-sky);animation:spin .9s linear infinite;margin-bottom:.35rem}@keyframes spin{to{transform:rotate(360deg)}}.note{margin-top:.85rem;color:var(--muted);font-size:.78rem;line-height:1.45}.muted{color:var(--muted)}.error{color:var(--accent-coral)}@media (max-width: 1100px){.workspace,.workspace.has-results{grid-template-columns:1fr}.stats-panel.advanced,.workspace.has-results .stats-panel.advanced{max-height:none}.workspace.has-results .map-section{position:static}.tagline{text-align:left;max-width:none}.dock-actions{margin-left:0}}@media (max-width: 640px){.app-shell{padding:1rem}.kpi-grid,.info-tiles,.extra-grid{grid-template-columns:1fr}.map-container{height:420px}}
