.app-boot{position:fixed;z-index:200;inset:0;display:grid;place-content:center;justify-items:center;gap:16px;color:var(--ink-900);background:var(--paper);transition:opacity .14s ease,visibility .14s ease}.app-boot>div{display:grid;gap:4px;text-align:center}.app-boot strong{font-size:16px}.app-boot span:not(.app-boot-mark):not(.app-boot-progress){color:var(--ink-600);font-size:11px}.app-boot-mark{display:grid;width:38px;height:38px;place-items:center;color:var(--accent-700);border:1px solid var(--accent-500);border-radius:6px;font-family:var(--font-mono);font-size:18px;font-weight:700}.app-boot-progress{position:relative;width:150px;height:3px;overflow:hidden;background:var(--ink-200)}.app-boot-progress:after{position:absolute;width:42px;height:100%;background:var(--accent-600);content:"";animation:app-boot-progress 1.05s ease-in-out infinite}body:not([data-gapweb-ready=true]) .app{visibility:hidden}body[data-gapweb-ready=true] .app-boot{visibility:hidden;opacity:0;pointer-events:none}body[data-gapweb-ready=error] .app-boot-progress{display:none}@keyframes app-boot-progress{0%{transform:translate(-54px)}to{transform:translate(162px)}}.app{height:100vh;display:grid;grid-template-rows:var(--topbar-height) var(--context-height) minmax(0,1fr) var(--timeline-height);overflow:hidden;background:var(--paper)}.special-workspace{min-height:0;overflow:auto;padding:28px 34px 44px;background:#f4f7f6}.special-workspace-header,.special-workspace-controls,.special-workspace-content{width:min(1460px,100%);margin-inline:auto}.special-workspace-header{display:flex;align-items:end;justify-content:space-between;gap:28px;padding-bottom:22px;border-bottom:1px solid var(--ink-200)}.special-workspace-header h1{margin:6px 0 7px;font-size:25px;letter-spacing:0}.special-workspace-header p{max-width:760px;margin:0;color:var(--ink-600);font-size:12px}.special-workspace-header>strong{color:var(--accent-800);font-family:var(--font-mono);font-size:11px;font-weight:600}.special-workspace-controls{position:sticky;z-index:4;top:-28px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 0;background:#f4f7f6f5;border-bottom:1px solid var(--ink-200)}.special-view-tabs{display:flex;flex-wrap:wrap;gap:5px}.special-view-tabs button{padding:8px 10px;color:var(--ink-600);background:transparent;border:1px solid transparent;border-radius:4px;font-size:11px}.special-view-tabs button:hover,.special-view-tabs button.is-active{color:var(--accent-900);background:#e4f2ef;border-color:#b9ddd6}.threshold-pair{display:flex;gap:8px}.threshold-pair label{display:grid;grid-template-columns:auto 64px auto;align-items:center;gap:6px;padding:5px 8px;color:var(--ink-600);background:var(--white);border:1px solid var(--ink-200);border-radius:4px;font-size:10px}.threshold-pair input{width:64px;padding:4px 5px;border:0;border-left:1px solid var(--ink-200);font-family:var(--font-mono)}.threshold-pair b{font-weight:500}.special-workspace-content{display:grid;gap:14px;padding-top:18px}.special-unavailable{display:grid;min-height:420px;place-content:center;justify-items:center;padding:44px;color:var(--ink-700);background:var(--white);border:1px solid var(--ink-200);text-align:center}.special-unavailable-mark{margin-bottom:12px;color:var(--accent-700);font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.12em}.special-unavailable h2{margin:0 0 8px;font-size:20px}.special-unavailable p,.special-unavailable small{max-width:560px;margin:0;color:var(--ink-600)}.special-unavailable ul{margin:12px 0;padding:0;list-style:none;font-family:var(--font-mono);font-size:10px}.extended-card,.typhoon-product{padding:18px 20px;background:var(--white);border:1px solid var(--ink-200)}.extended-card-heading,.typhoon-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.extended-card-heading h3{margin:0;font-size:14px}.extended-card-heading span,.typhoon-summary span{color:var(--ink-600);font-family:var(--font-mono);font-size:10px}.extended-line-chart,.typhoon-intensity-chart{width:100%;max-height:320px}.extended-line-chart line,.typhoon-intensity-chart line{stroke:var(--ink-300);stroke-width:1}.typhoon-intensity-chart path{fill:none;stroke:var(--accent-700);stroke-width:3}.extended-chart-legend,.extended-chart-dates{display:flex;justify-content:space-between;gap:14px;color:var(--ink-600);font-size:10px}.extended-chart-legend{justify-content:center;flex-wrap:wrap}.extended-chart-legend span{display:flex;align-items:center;gap:5px}.extended-chart-legend i{width:14px;height:3px}.process-probability-list,.comparison-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.process-probability-card,.comparison-tile{display:grid;gap:8px;min-height:112px;padding:12px;background:#f5f8f7;border-left:3px solid var(--accent-600)}.process-probability-card label,.process-probability-card span,.comparison-tile span,.comparison-tile small{color:var(--ink-600);font-size:10px}.process-probability-card button{justify-self:start;padding:5px 7px;color:var(--accent-800);background:transparent;border:1px solid var(--accent-300)}.comparison-tile strong{font-family:var(--font-mono);font-size:24px}.comparison-tile.is-unavailable{opacity:.55}.extended-heatmap{display:grid;grid-template-columns:minmax(110px,180px) repeat(var(--date-count),minmax(30px,1fr));gap:2px;overflow-x:auto}.heatmap-label,.heatmap-date,.heatmap-cell{min-height:30px;padding:6px;font-size:9px}.heatmap-label{color:var(--ink-700);background:#f4f7f6}.heatmap-date{color:var(--ink-600);font-family:var(--font-mono);text-align:center}.heatmap-cell{display:grid;place-items:center;color:color-mix(in srgb,var(--ink-950) calc((1 - var(--p)) * 100%),white calc(var(--p) * 100%));background:color-mix(in srgb,#edf5f2 calc((1 - var(--p)) * 100%),#147a73 calc(var(--p) * 100%));font-family:var(--font-mono)}.typhoon-track-chart{display:block;width:100%;min-height:430px;max-height:620px;background:#e2eff3;border:0;border-top:1px solid #c8dadc;cursor:grab;touch-action:none}.typhoon-track-chart:active{cursor:grabbing}.typhoon-map-grid line{stroke:#a9c5cb;stroke-width:.55;stroke-dasharray:2 5}.typhoon-map-grid text{fill:#69817d;font-family:var(--font-mono);font-size:calc(9px * var(--typhoon-view-scale, 1))}.typhoon-map-country{fill:#e8eee5;stroke:#829d98;stroke-width:.8;vector-effect:non-scaling-stroke}.typhoon-map-land{fill:#d9e7dd;stroke:#255b59;stroke-width:1.25;vector-effect:non-scaling-stroke}.typhoon-map-province{fill:none;stroke:#819c96;stroke-width:.55;vector-effect:non-scaling-stroke}.typhoon-map-city circle{fill:#a3483e;stroke:var(--white);stroke-width:1;vector-effect:non-scaling-stroke}.typhoon-map-city text{fill:#294c4b;font-family:var(--font-sans);font-size:calc(8.5px * var(--typhoon-view-scale, 1));paint-order:stroke;stroke:#ffffffe6;stroke-width:2px;stroke-linejoin:round}.typhoon-regional-labels text{text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:#ebf3f0e6;stroke-width:2.5px;stroke-linejoin:round}.typhoon-regional-labels .is-land{fill:#506a65;font-family:var(--font-sans);font-size:calc(9px * var(--typhoon-view-scale, 1))}.typhoon-regional-labels .is-water{fill:#5e8993;font-family:var(--font-sans);font-size:calc(9px * var(--typhoon-view-scale, 1));font-style:italic}.typhoon-system-map-label{fill:#173f43;stroke:#ffffffeb;stroke-width:3px;paint-order:stroke;font-family:var(--font-mono);font-size:calc(9px * var(--typhoon-view-scale, 1));font-weight:700}.typhoon-track-segment{fill:none;stroke:var(--track);stroke-width:3;stroke-linecap:round;vector-effect:non-scaling-stroke}.typhoon-track-segment.is-disturbance{stroke-dasharray:5 4;opacity:.72}.typhoon-track-point{fill:var(--track);stroke:var(--white);stroke-width:1.5;vector-effect:non-scaling-stroke}.typhoon-track-point.is-disturbance{fill:var(--track);stroke:var(--white);stroke-width:1.5;opacity:.88}.typhoon-map-toolbar,.typhoon-grade-legend{display:flex;align-items:center;gap:12px}.typhoon-map-toolbar{justify-content:space-between;gap:10px 18px;padding:10px 14px;border-top:1px solid var(--ink-200)}.typhoon-system-selector{display:flex;align-items:center;flex:0 0 auto;gap:8px;color:var(--ink-700);font-size:11px}.typhoon-system-selector select{min-width:180px;height:32px;border:1px solid var(--ink-300);background:var(--white);color:var(--ink-900)}.typhoon-grade-legend{flex-wrap:wrap;font-size:10px;color:var(--ink-600)}.typhoon-map-actions{display:flex;flex:0 0 auto;gap:4px}.typhoon-grade-legend span{display:inline-flex;align-items:center;gap:4px}.typhoon-grade-legend i{width:9px;height:9px;background:var(--grade);border-radius:50%}.typhoon-map-toolbar button{border:1px solid var(--ink-300);background:var(--white);padding:6px 10px;color:var(--ink-700)}.typhoon-map-toolbar button:hover{color:var(--accent-700);background:var(--accent-100);border-color:var(--accent-300)}.typhoon-legend-note{display:flex;align-items:flex-start;gap:8px;margin:0;padding:0 14px 10px;color:var(--ink-600);font-size:10px}.typhoon-legend-note strong{color:var(--ink-800)}.typhoon-legend-note i{width:22px;margin-top:6px;border-top:2px dashed #7f8f91}.typhoon-map-product,.typhoon-intensity-product{position:relative}.typhoon-map-product{overflow:hidden;padding:0;background:#f8faf9}.typhoon-map-product>.typhoon-summary{margin:0;padding:14px}.typhoon-summary>div{display:grid;gap:3px}.typhoon-summary small{color:var(--ink-500);font:9px var(--font-mono)}.typhoon-hover-tooltip{position:absolute;z-index:6;max-width:330px;padding:8px 10px;color:var(--white);background:#15272bf0;border:1px solid rgba(255,255,255,.16);font:10px/1.5 var(--font-mono);pointer-events:none}.typhoon-intensity-grid line{stroke:var(--ink-200);stroke-width:1}.typhoon-intensity-grid text{fill:var(--ink-600);font:10px var(--font-mono);text-anchor:end}.typhoon-axis{stroke:var(--ink-500);stroke-width:1.2}.typhoon-y-label{fill:var(--ink-700);font:11px var(--font-sans);text-anchor:middle}.typhoon-intensity-segment{stroke:var(--grade);stroke-width:4;stroke-linecap:round}.typhoon-intensity-point{fill:var(--grade);stroke:var(--white);stroke-width:1.5}.topbar{display:flex;align-items:stretch;padding:0 22px;color:var(--white);background:var(--ink-950);border-bottom:1px solid rgba(255,255,255,.08)}.brand-lockup,.topbar-meta,.product-switch{display:flex;align-items:center}.brand-lockup{width:240px;gap:10px;flex:0 0 auto}.brand-mark{display:grid;place-items:center;width:29px;height:29px;border:1px solid rgba(173,235,221,.68);border-radius:6px;color:#b4eadb;font-family:var(--font-mono);font-size:15px;font-weight:700;letter-spacing:0}.brand-copy{display:grid;gap:0;line-height:1.1}.brand-copy strong{font-size:16px;letter-spacing:.01em}.brand-copy small{margin-top:4px;color:#aab8b8;font-size:10px;letter-spacing:.08em}.product-switch{align-self:stretch;gap:4px}.product-tab{position:relative;align-self:stretch;display:grid;justify-items:start;align-content:center;gap:2px;min-width:146px;padding:0 17px;color:#9eacad;background:transparent;border:0;border-bottom:2px solid transparent;text-align:left;transition:color .18s ease,background .18s ease}.product-tab:hover{color:var(--white);background:#ffffff0d}.product-tab.is-active{color:var(--white);border-bottom-color:#77d0c0;background:#39a69a24}.product-tab:disabled{cursor:not-allowed;color:#6f7d7f;background:transparent;opacity:.62}.product-tab:disabled:hover{color:#6f7d7f;background:transparent}.tab-kicker,.section-kicker,.map-kicker{color:#78bdb2;font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.12em}.tab-kicker{color:#8a9a9b;font-size:8px}.topbar-meta{justify-content:flex-end;gap:14px;min-width:0;margin-left:auto;color:#afbbbb;font-size:11px}.service-state{display:flex;align-items:center;gap:7px;color:#c7ded7;white-space:nowrap}.status-dot{width:7px;height:7px;border-radius:50%;background:#6fd0ac;box-shadow:0 0 0 3px #6fd0ac1f}.service-state.is-loading .status-dot{background:var(--signal-amber);box-shadow:0 0 0 3px #b5793424}.topbar-divider{width:1px;height:18px;background:#ffffff24}.updated-label{white-space:nowrap}.updated-label time{color:var(--white);font-family:var(--font-mono)}.icon-button,.panel-close{display:none;border:0;background:transparent}.context-bar{display:flex;align-items:center;gap:25px;min-width:0;padding:14px 24px 13px;background:var(--white);border-bottom:1px solid var(--ink-200)}.context-title{min-width:220px}.context-eyebrow,.metadata-key,.field-label,.unit-note,.parameter-note,.chip-label{color:var(--ink-600);font-size:10px;font-weight:650;letter-spacing:.04em}.context-title h1{margin:3px 0 0;color:var(--ink-950);font-size:17px;font-weight:700;line-height:1.15}.context-chips,.context-selectors{display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-width:0}.context-control{display:grid;gap:3px;min-width:126px}.context-control select{width:auto;min-width:126px;height:31px;padding-right:26px;padding-left:8px;color:var(--ink-800);background:var(--ink-100);border-color:var(--ink-200);font-size:11px}.context-valid-chip{align-self:end}.context-chip{padding:5px 8px;color:var(--ink-800);background:var(--ink-100);border:1px solid var(--ink-200);border-radius:var(--radius-sm);font-size:11px;white-space:nowrap}.chip-label{margin-right:5px;color:var(--ink-500);font-size:9px}.context-actions{display:flex;gap:7px;margin-left:auto;white-space:nowrap}.quiet-button,.text-button{padding:6px 8px;color:var(--ink-700);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);font-size:11px}.quiet-button:hover,.text-button:hover{color:var(--accent-700);background:var(--accent-100)}.quiet-button-accent{color:var(--accent-700);border-color:#b9dcd4}.workbench{display:grid;grid-template-columns:var(--left-panel) minmax(480px,1fr) var(--right-panel);min-height:0;overflow:hidden}.panel{min-width:0;overflow-y:auto;background:var(--white);scrollbar-width:thin;scrollbar-color:var(--ink-300) transparent}.selector-panel{padding:21px 17px 18px 21px;border-right:1px solid var(--ink-200)}.plot-panel{padding:21px 21px 18px 17px;border-left:1px solid var(--ink-200)}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.panel-heading h2{margin:4px 0 0;font-size:15px;line-height:1.15}.panel-description{max-width:235px;margin:0 0 20px;color:var(--ink-600);font-size:11px;line-height:1.55}.selector-layer-bar{display:flex;align-items:center;justify-content:space-between;gap:9px;margin:0 0 18px;padding:9px;background:#f2f7f5;border:1px solid var(--ink-200);border-radius:var(--radius-sm)}.selector-layer-bar>div{display:grid;min-width:0;gap:2px}.selector-layer-bar>div span{color:var(--ink-500);font-size:8px}.selector-layer-bar>div strong{overflow:hidden;color:var(--ink-800);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.create-weather-layer-button{display:inline-flex;flex:0 0 auto;align-items:center;gap:4px;min-height:31px;padding:0 8px;color:var(--accent-700);background:var(--white);border:1px solid #aad3ca;border-radius:var(--radius-sm);font-size:10px;font-weight:650}.create-weather-layer-button:hover{background:var(--accent-100);border-color:var(--accent-500)}.create-weather-layer-button:disabled{color:var(--ink-400);background:var(--ink-100);border-color:var(--ink-200)}.selector-form,.field-group{display:grid;gap:6px}.selector-form{gap:14px}.time-scale-switch{display:grid;grid-template-columns:1fr 1fr;padding:3px;background:var(--ink-100);border-radius:var(--radius-sm)}.timeseries-option{display:grid;gap:6px;padding:10px;background:#f4f8f6;border:1px solid var(--ink-200);border-radius:var(--radius-sm)}.timeseries-option .check-row{font-size:11px;font-weight:600}.field-row{display:grid;grid-template-columns:1.3fr 1fr;gap:9px}.field-label-row,.section-title-row,.range-row>.field-label{display:flex;align-items:center;justify-content:space-between;gap:7px}select,input[type=number]{width:100%;height:33px;padding:0 9px;color:var(--ink-900);background:#fbfcfa;border:1px solid var(--ink-300);border-radius:var(--radius-sm);font-size:12px}select:hover,input[type=number]:hover{border-color:#92b4ae}.metric-control{padding-top:1px}.unit-note,.parameter-note{font-weight:450;letter-spacing:0}.input-with-unit{display:flex;align-items:center;height:33px;overflow:hidden;background:#fbfcfa;border:1px solid var(--ink-300);border-radius:var(--radius-sm)}.input-with-unit input{flex:1;min-width:0;height:31px;padding:0 9px;color:var(--ink-950);background:transparent;border:0;outline:0;font-family:var(--font-mono);font-size:12px}.input-with-unit span{padding:0 9px;color:var(--ink-600);font-family:var(--font-mono);font-size:11px}.preset-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.preset-button{padding:5px 3px;color:var(--ink-700);background:var(--ink-100);border:1px solid var(--ink-200);border-radius:var(--radius-sm);font-size:10px}.preset-button:hover,.preset-button.is-selected{color:var(--accent-700);background:var(--accent-100);border-color:#acd8ce}.selection-summary{display:grid;gap:5px;margin-top:22px;padding:12px;color:var(--ink-700);background:#f2f7f4;border:1px solid #d4e5df;border-left:3px solid var(--accent-500);border-radius:var(--radius-sm);font-size:10px}.selection-summary strong{color:var(--ink-900);font-size:12px}.summary-heading{display:flex;justify-content:space-between;color:var(--ink-600);font-size:10px}.summary-status{color:var(--accent-700);font-family:var(--font-mono);font-size:9px;text-transform:uppercase}.summary-status.is-loading{color:var(--signal-amber)}.summary-status.is-unavailable{color:var(--signal-red)}.map-column{position:relative;display:grid;grid-template-rows:45px minmax(0,1fr) 61px;min-width:0;min-height:0;background:#e8efec}.workspace-loading{position:absolute;z-index:9;inset:45px 0 61px;display:grid;place-items:center;padding:24px;pointer-events:none;background:#eaf2efa3;backdrop-filter:blur(2px)}.workspace-loading-panel{width:min(430px,calc(100% - 24px));padding:22px 24px 20px;color:var(--ink-800);background:#fffffff5;border:1px solid #c8d9d5;border-radius:var(--radius-sm);box-shadow:var(--shadow-float);pointer-events:auto}.workspace-loading-kicker{color:var(--accent-700);font:700 9px var(--font-mono);letter-spacing:.12em}.workspace-loading h2{margin:6px 0 5px;font-size:17px;letter-spacing:0}.workspace-loading p{margin:0;color:var(--ink-600);font-size:11px}.workspace-loading-track{height:3px;margin:17px 0 13px;overflow:hidden;background:var(--ink-200)}.workspace-loading-track span{display:block;width:var(--loading-progress, 34%);height:100%;background:var(--accent-600);transition:width .18s ease}.workspace-loading-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none}.workspace-loading-steps li{display:flex;align-items:center;gap:6px;color:var(--ink-500);font-size:9px}.workspace-loading-steps i{width:7px;height:7px;flex:0 0 auto;background:var(--ink-300);border-radius:50%}.workspace-loading-steps li.is-complete,.workspace-loading-steps li.is-active{color:var(--ink-800)}.workspace-loading-steps li.is-complete i{background:var(--accent-600)}.workspace-loading-steps li.is-active i{background:var(--signal-amber);box-shadow:0 0 0 3px #d59a3729}.workspace-loading-cancel{display:block;min-width:92px;margin:18px 0 0 auto;padding:7px 13px;color:var(--ink-700);font:700 11px var(--font-sans);background:var(--surface-0, #fff);border:1px solid var(--ink-300);border-radius:var(--radius-xs, 4px);cursor:pointer}.workspace-loading-cancel[hidden]{display:none}.workspace-loading-cancel:hover{border-color:var(--accent-600);color:var(--accent-700)}.workspace-loading-cancel:disabled{cursor:wait;opacity:.58}.map-column:fullscreen{width:100vw;height:100vh;grid-template-rows:45px minmax(0,1fr) 61px;background:#e8efec}.map-column.is-expanded{position:fixed;z-index:100;inset:0;width:100vw;height:100vh;grid-template-rows:45px minmax(0,1fr) 61px;background:#e8efec}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 14px;background:#f8faf8;border-bottom:1px solid var(--ink-200)}.toolbar-group{display:flex;align-items:center;gap:3px}.toolbar-group-right{gap:2px}.toolbar-button,.mode-button,.step-button,.play-button{color:var(--ink-700);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);font-size:11px}.toolbar-button{min-height:29px;padding:4px 9px}.toolbar-button:hover,.toolbar-button.is-active{color:var(--accent-700);background:var(--accent-100);border-color:#c4dfd9}.map-stage{position:relative;min-height:0;overflow:hidden;background:#eaf2ef}.analysis-stage{min-width:0;min-height:0;overflow:auto;color:var(--ink-900);background:#f7faf8;scrollbar-width:thin;scrollbar-color:var(--ink-300) transparent}.analysis-content{width:min(1180px,100%);min-height:100%;margin:0 auto;padding:24px clamp(16px,3vw,38px) 40px}.analysis-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid var(--ink-200)}.analysis-heading>div:first-child>span{color:var(--accent-700);font-family:var(--font-mono);font-size:9px;text-transform:uppercase}.analysis-heading h2{margin:4px 0 5px;font-size:22px;letter-spacing:0}.analysis-heading p{max-width:680px;margin:0;color:var(--ink-600);font-size:11px;line-height:1.55}.analysis-segments,.analysis-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.analysis-segments button{min-height:30px;padding:5px 10px;color:var(--ink-700);background:#fff;border:1px solid var(--ink-300);border-radius:var(--radius-sm);font-size:10px}.analysis-segments button:hover,.analysis-segments button.is-active{color:var(--accent-700);background:var(--accent-100);border-color:#a9d7cd}.analysis-controls label{display:grid;gap:4px;color:var(--ink-600);font-size:9px}.analysis-controls select{min-width:150px}.analysis-controls .analysis-check{display:flex;align-items:center;gap:6px;color:var(--ink-800);font-size:10px}.analysis-map-shell,.analysis-process,.analysis-block,.analysis-table-wrap,.probability-matrix-wrap{margin-top:20px}.analysis-map-shell canvas,.analysis-process canvas{display:block;width:100%;background:#eef4f1}.analysis-block{padding-top:18px;border-top:1px solid var(--ink-200)}.analysis-block h3{margin:0 0 12px;font-size:13px}.analysis-scroll,.analysis-table-wrap,.probability-matrix-wrap{overflow:auto;background:#fff;border:1px solid var(--ink-200)}.business-legend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:12px 0;color:var(--ink-600);font-family:var(--font-mono);font-size:9px}.business-legend span{display:inline-flex;align-items:center;gap:5px}.business-legend i{width:17px;height:8px;border:1px solid rgba(30,55,55,.12)}.business-series{display:block;width:100%;height:auto;min-height:250px;background:#fff}.business-series text{fill:var(--ink-600);font-family:var(--font-mono);font-size:9px}.has-value-probe{cursor:crosshair}.analysis-value-tooltip{position:fixed;z-index:100;display:grid;gap:3px;min-width:132px;max-width:min(260px,calc(100vw - 12px));padding:8px 9px;pointer-events:none;color:#d5e3e0;background:#16272af5;border:1px solid rgba(125,205,190,.58);border-radius:var(--radius-sm);box-shadow:0 7px 18px #142a2d33;font-family:var(--font-mono);font-size:9px}.analysis-value-tooltip[hidden]{display:none}.analysis-value-tooltip strong{color:#fff;font-size:10px}.analysis-value-tooltip span{color:#8ee1d1;font-size:11px;font-weight:700}.analysis-value-tooltip small{color:#b8c7c7;line-height:1.35}.analysis-callout{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px;color:var(--ink-700);font-size:10px}.analysis-table,.probability-matrix{width:max-content;min-width:100%;border-collapse:collapse;font-size:9px}.analysis-table th,.analysis-table td,.probability-matrix th,.probability-matrix td{padding:7px 8px;white-space:nowrap;text-align:right;border-right:1px solid #e5ece9;border-bottom:1px solid #e5ece9}.analysis-table thead th,.probability-matrix thead th,.analysis-table tbody th,.probability-matrix tbody th{position:sticky;z-index:2;background:#f4f7f5}.analysis-table thead th,.probability-matrix thead th{top:0}.analysis-table tbody th,.probability-matrix tbody th{left:0;text-align:left}.probability-matrix thead th:first-child{left:0;z-index:3}.probability-matrix thead th.is-current{color:var(--accent-700);background:var(--accent-100)}.probability-matrix td{padding:2px}.probability-matrix td button{width:34px;height:28px;color:#17383b;background:var(--cell-color);border:0;font-family:var(--font-mono);font-size:8px}.basin-ranking{display:grid;gap:0;margin:20px 0 0;padding:0;list-style:none;border-top:1px solid var(--ink-200)}.basin-ranking li{display:grid;grid-template-columns:32px minmax(92px,150px) minmax(80px,1fr) 48px minmax(125px,auto);align-items:center;gap:10px;min-height:40px;border-bottom:1px solid var(--ink-200)}.ranking-number{color:var(--ink-500);font-family:var(--font-mono);font-size:9px}.basin-ranking button{padding:0;text-align:left;color:var(--ink-900);background:none;border:0;font-size:11px}.ranking-bar{height:7px;overflow:hidden;background:var(--ink-100)}.ranking-bar i{display:block;height:100%;background:var(--accent-500)}.basin-ranking strong{text-align:right;font-family:var(--font-mono);font-size:10px}.basin-ranking small{color:var(--ink-600);font-family:var(--font-mono);font-size:8px}.analysis-empty{padding:32px;color:var(--ink-600)}#map-canvas{cursor:crosshair;touch-action:none;user-select:none}#map-canvas.is-panning{cursor:grabbing}#map-canvas.is-locked{cursor:crosshair}[data-role=map-action][data-action=lock][aria-pressed=true]{color:#fff;background:var(--accent-700);border-color:var(--accent-700)}#map-canvas:focus-visible{outline:2px solid var(--accent-700);outline-offset:-3px}.map-surface{display:block;width:100%;height:100%}.map-continent{fill:#d8e2df;stroke:#9eafad;stroke-width:1.5}.map-continent-west{opacity:.78}.map-continent-east{opacity:.65}.map-region{fill:#b8ded1;stroke:#236d69;stroke-width:2.5;stroke-linejoin:round;opacity:.92}.map-raster-cells{opacity:.56;mix-blend-mode:multiply}.map-river,.map-river-secondary{fill:none;stroke-linecap:round}.map-river{stroke:#337a93;stroke-width:4;opacity:.85}.map-river-secondary{stroke:#6eacbb;stroke-width:1.8;opacity:.65}.map-point{fill:#fff;stroke:#a84f42;stroke-width:3}.map-city,.map-label{fill:#314b4d;font-family:var(--font-sans);paint-order:stroke;stroke:#edf5f1e6;stroke-width:4px;stroke-linejoin:round}.map-city{font-size:15px;font-weight:700}.map-label-small{font-size:12px;fill:#547073}.map-label-large{font-size:18px;font-weight:700;letter-spacing:.08em;fill:#236d69}.map-header-overlay,.map-footer-overlay,.map-note,.map-probe{position:absolute;display:flex;pointer-events:none}.map-probe[hidden]{display:none}.map-header-overlay{top:18px;left:22px;right:22px;align-items:flex-start;justify-content:space-between}.map-header-overlay h2{max-width:490px;margin:5px 0 0;color:var(--ink-950);font-size:clamp(17px,1.8vw,23px);line-height:1.2}.map-time-badge{padding:6px 8px;color:var(--ink-700);background:#ffffffd1;border:1px solid rgba(157,176,171,.7);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:10px;white-space:nowrap}.map-footer-overlay{right:22px;bottom:16px;left:22px;justify-content:space-between;color:var(--ink-600);font-family:var(--font-mono);font-size:9px}.map-note{right:19px;bottom:52px;align-items:center;gap:6px;padding:5px 7px;color:var(--ink-600);background:#ffffffb8;border:1px solid rgba(180,199,194,.76);border-radius:var(--radius-sm);font-size:9px}.note-symbol{display:inline-grid;place-items:center;width:14px;height:14px;color:var(--white);background:var(--accent-700);border-radius:50%;font-family:Georgia,serif;font-size:10px;font-weight:700}.map-probe{top:48%;left:54%;flex-direction:column;gap:3px;min-width:150px;padding:9px 10px;color:var(--ink-700);background:#fffffff0;border:1px solid var(--ink-300);border-radius:var(--radius-sm);box-shadow:var(--shadow-float);font-size:10px}.map-probe.is-pinned{border-color:#a84f42;border-left-width:3px}.point-timeseries{position:absolute;z-index:3;right:18px;bottom:18px;display:grid;width:min(360px,calc(100% - 36px));gap:8px;padding:11px 12px 9px;pointer-events:auto;background:#fffffff5;border:1px solid #a9d3ca;border-radius:var(--radius-sm);box-shadow:var(--shadow-float)}.point-timeseries[hidden]{display:none}.point-timeseries.has-error{border-color:#c78b80}.point-timeseries-heading,.point-timeseries-meta,.point-timeseries-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}.point-timeseries-heading strong{display:block;margin-top:3px;color:var(--ink-950);font-size:12px}.point-timeseries-actions,.timeseries-window-control{display:flex;align-items:center}.point-timeseries-actions{gap:8px}.timeseries-window-control{gap:4px;padding:3px 5px 3px 7px;color:var(--ink-600);background:var(--ink-100);border:1px solid var(--ink-200);border-radius:var(--radius-sm);font:9px var(--font-mono)}.timeseries-window-control input{width:38px;padding:2px 3px;color:var(--ink-900);background:var(--white);border:1px solid var(--ink-300);border-radius:2px;font:10px var(--font-mono);text-align:right}.timeseries-window-control b{font-weight:500}.point-timeseries-close{width:24px;height:24px;color:var(--ink-600);background:transparent;border:0;border-radius:var(--radius-sm);font-size:20px;line-height:1}.point-timeseries-close:hover{color:var(--accent-700);background:var(--accent-100)}.point-timeseries-meta,.point-timeseries-footer{color:var(--ink-600);font-family:var(--font-mono);font-size:9px}.point-timeseries-meta span:last-child{color:var(--accent-700);text-align:right}.timeseries-chart-shell{position:relative;min-width:0}.point-timeseries canvas{display:block;width:100%;height:154px;cursor:crosshair}.timeseries-tooltip{position:absolute;z-index:2;display:grid;gap:2px;min-width:132px;padding:7px 8px;pointer-events:none;color:var(--ink-700);background:#16272af0;border:1px solid rgba(125,205,190,.58);border-radius:var(--radius-sm);box-shadow:0 5px 14px #142a2d2e;transform:translate(10px,-50%);font-family:var(--font-mono);font-size:9px}.timeseries-tooltip[hidden]{display:none}.timeseries-tooltip.is-left{transform:translate(calc(-100% - 10px),-50%)}.timeseries-tooltip strong{color:#fff;font-size:10px}.timeseries-tooltip span{color:#8ee1d1;font-size:11px;font-weight:700}.timeseries-tooltip small{color:#b8c7c7;font-size:8px}.probe-coordinates{color:var(--ink-500);font-family:var(--font-mono);font-size:9px}.map-probe strong{color:var(--ink-950);font-size:12px}.map-probe b{color:var(--accent-700);font-family:var(--font-mono)}.map-metadata{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:10px;padding:0 20px;background:var(--white);border-top:1px solid var(--ink-200)}.metadata-item{display:grid;gap:3px;min-width:0}.metadata-item strong{overflow:hidden;color:var(--ink-900);font-family:var(--font-mono);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.parameter-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin:3px 0 20px;padding:3px;background:var(--ink-100);border-radius:var(--radius-sm)}.plot-context-summary{display:grid;gap:4px;margin:2px 0 13px;padding:10px;color:var(--ink-700);background:#f2f7f4;border-left:3px solid var(--accent-500);font-size:10px;line-height:1.45}.plot-context-summary strong{color:var(--ink-900);font-size:11px}.plot-context-empty{margin:0;color:var(--ink-600);font-size:10px;line-height:1.5}[hidden]{display:none!important}.parameter-tab{padding:6px 3px;color:var(--ink-600);background:transparent;border:0;border-radius:3px;font-size:11px}.parameter-tab:hover,.parameter-tab.is-active{color:var(--ink-950);background:var(--white);box-shadow:0 1px 2px #172a2d14}.parameter-section{display:grid;gap:11px;padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--ink-200)}.section-title-row h3{margin:0;font-size:12px}.text-button{padding:2px 0;color:var(--accent-700);font-size:10px}.toggle-row,.check-row{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:24px;color:var(--ink-700);font-size:11px}.toggle-row>span:first-child{display:flex;align-items:center;gap:7px}.layer-swatch{width:15px;height:4px;border-radius:1px}.swatch-raster{background:#4f9dc7}.swatch-boundary{background:#236d69}.swatch-contour{background:#7b8f90}.swatch-wind{background:#8b63a8}.swatch-label{background:#a84f42}.toggle-row input{position:absolute;width:1px;height:1px;opacity:0}.toggle-control{position:relative;width:30px;height:17px;flex:0 0 auto;background:var(--ink-300);border-radius:20px;transition:background .18s ease}.toggle-control:after{position:absolute;top:3px;left:3px;width:11px;height:11px;content:"";background:var(--white);border-radius:50%;box-shadow:0 1px 2px #1023243d;transition:transform .18s ease}.toggle-row input:checked+.toggle-control{background:var(--accent-600)}.toggle-row input:checked+.toggle-control:after{transform:translate(13px)}.compact-field{gap:5px}.colorbar-preview{display:grid;gap:5px}.colorbar-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);height:12px;overflow:hidden;border:1px solid rgba(30,60,70,.15);border-radius:2px}.colorbar-strip.is-continuous{display:block}.colorbar-strip span:nth-child(1){background:#f7fbff}.colorbar-strip span:nth-child(2){background:#c6dbef}.colorbar-strip span:nth-child(3){background:#6baed6}.colorbar-strip span:nth-child(4){background:#2171b5}.colorbar-strip span:nth-child(5){background:#08519c}.colorbar-strip span:nth-child(6){background:#08306b}.colorbar-labels{display:flex;justify-content:space-between;color:var(--ink-500);font-family:var(--font-mono);font-size:9px}.range-row{display:grid;gap:8px}.range-row output{color:var(--accent-700);font-family:var(--font-mono);font-size:10px}input[type=range]{width:100%;accent-color:var(--accent-600)}.check-row{justify-content:flex-start;gap:8px}.check-row input{accent-color:var(--accent-600)}.parameter-section-muted{gap:8px}.layer-stack{display:grid;gap:0;border-top:1px solid var(--ink-200)}.layer-stack-item{position:relative;display:grid;grid-template-columns:18px 24px minmax(0,1fr) 28px;align-items:center;gap:4px;min-height:47px;padding:6px 2px;border-bottom:1px solid var(--ink-200)}.layer-stack-item.is-selected{margin:0 -7px;padding-right:9px;padding-left:9px;background:#eef7f3;box-shadow:inset 3px 0 0 var(--accent-600)}.layer-drag-handle,.layer-visibility{display:inline-grid;place-items:center;width:24px;height:24px;padding:0;color:var(--ink-600);background:transparent;border:1px solid transparent;border-radius:4px;font-size:12px}.layer-drag-handle{width:18px;color:var(--ink-400);border:0;cursor:grab;font-family:var(--font-mono);font-size:9px}.layer-drag-handle:active{cursor:grabbing}.layer-drag-handle:disabled{color:var(--ink-300);cursor:default}.layer-visibility:hover{color:var(--accent-700);background:var(--white);border-color:var(--ink-300)}.layer-visibility.is-hidden{color:var(--ink-400);text-decoration:line-through}.layer-select-button{display:grid;min-width:0;padding:0;color:var(--ink-900);background:transparent;border:0;text-align:left}.layer-select-button strong,.layer-select-button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-name-line{display:flex;min-width:0;align-items:center;gap:5px}.layer-name-line strong{min-width:0}.layer-lock-badge,.layer-anchor-mark{flex:0 0 auto;color:var(--ink-500);font-family:var(--font-mono);font-size:7px;font-weight:550}.layer-lock-badge{padding:1px 4px;background:var(--ink-100);border:1px solid var(--ink-200);border-radius:3px}.layer-anchor-mark{text-align:center}.layer-select-button strong{font-size:11px;font-weight:600}.layer-select-button small,.layer-stack-note,.layer-source-summary small{color:var(--ink-500);font-family:var(--font-mono);font-size:8px;line-height:1.45}.layer-action-menu{position:relative;width:28px;height:26px}.layer-action-menu summary{display:grid;width:28px;height:26px;place-items:center;color:var(--ink-600);border:1px solid transparent;border-radius:4px;cursor:pointer;font-family:var(--font-mono);font-size:9px;list-style:none}.layer-action-menu summary::-webkit-details-marker{display:none}.layer-action-menu[open] summary,.layer-action-menu summary:hover{color:var(--accent-700);background:var(--white);border-color:var(--ink-300)}.layer-action-menu-popover{position:absolute;z-index:24;top:29px;right:0;display:grid;width:130px;padding:4px;background:var(--white);border:1px solid var(--ink-300);border-radius:var(--radius-sm);box-shadow:var(--shadow-float)}.layer-action-menu-popover button{min-height:27px;padding:0 7px;color:var(--ink-700);background:transparent;border:0;border-radius:3px;font-size:9px;text-align:left}.layer-action-menu-popover button:hover{color:var(--accent-700);background:var(--accent-100)}.layer-action-menu-popover button:disabled{color:var(--ink-300);background:transparent}.layer-quick-opacity{grid-column:3 / -1;display:grid;grid-template-columns:minmax(0,1fr) 32px;align-items:center;gap:7px;margin-top:-2px}.layer-quick-opacity input{height:12px}.layer-quick-opacity output{color:var(--ink-500);font-family:var(--font-mono);font-size:8px;text-align:right}.layer-stack-item.is-dragging{opacity:.45}.layer-stack-item.is-drop-target{box-shadow:inset 0 2px 0 var(--accent-600)}.layer-stack-item.is-unavailable .layer-select-button small{color:var(--warning-700, #8b5d24)}.layer-stack-item.is-loading .layer-select-button small{color:var(--signal-amber)}.layer-stack-note{margin:0}.layer-inspector{display:grid;gap:13px}.layer-inspector-heading,.layer-source-summary{display:grid;gap:3px;padding-bottom:10px;border-bottom:1px solid var(--ink-200)}.layer-inspector-heading strong{font-size:12px}.layer-inspector-heading span,.layer-source-summary span{color:var(--ink-600);font-size:10px}.layer-source-editor{display:grid;gap:9px;padding:10px;background:#f4f8f6;border:1px solid var(--ink-200);border-radius:4px}.layer-source-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.layer-source-grid .layer-control-row:last-child{grid-column:1 / -1}.layer-source-contract{margin:0;color:var(--ink-500);font-family:var(--font-mono);font-size:8px;line-height:1.5}.layer-control-list{display:grid;gap:11px}.layer-control-row{display:grid;gap:6px}.layer-control-row>span{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--ink-700);font-size:10px}.layer-control-row output{color:var(--accent-700);font-family:var(--font-mono);font-size:9px}.layer-control-checkbox{display:flex;align-items:center;gap:8px;color:var(--ink-700);font-size:10px}.layer-control-checkbox input{accent-color:var(--accent-600)}.layer-unavailable{margin:0;padding:8px;color:#815248;background:#fbf2ef;border-left:3px solid #bd7465;font-size:9px;line-height:1.5}.analysis-date-range{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.field-hint{color:var(--ink-500);font-size:9px;line-height:1.45}.layer-colorbar-preview{display:grid;gap:5px}.layer-fixed-scale-note{margin:10px 0 0;padding:9px 10px;border-left:3px solid var(--accent);background:#f2f7f5;color:#526765;font-size:11px;line-height:1.55}.plot-presets{display:grid;gap:7px}.preset-wide-button{padding:7px 9px;color:var(--ink-700);background:var(--white);border:1px solid var(--ink-300);border-radius:var(--radius-sm);text-align:left;font-size:11px}.preset-wide-button:hover,.preset-wide-button.is-active{color:var(--accent-700);background:#f1f8f5;border-color:#a9d3ca}.timeline-bar{display:grid;grid-template-columns:180px minmax(260px,1fr);align-items:center;gap:22px;padding:12px 22px;background:var(--white);border-top:1px solid var(--ink-200);box-shadow:0 -4px 14px #1931350a}.timeline-heading{display:grid;gap:2px}.timeline-heading strong{font-size:12px}.timeline-date{color:var(--accent-700);font-family:var(--font-mono);font-size:10px}.timeline-controls{display:flex;align-items:center;gap:7px;min-width:0}.play-button{display:grid;place-items:center;width:27px;height:27px;flex:0 0 auto;color:var(--white);background:var(--accent-700);border-color:var(--accent-700);font-size:10px}.step-button{display:grid;place-items:center;width:22px;height:25px;flex:0 0 auto;color:var(--ink-600);font-size:20px;line-height:1}.step-button:hover{color:var(--accent-700);background:var(--accent-100)}.timeline-track-wrap{position:relative;display:grid;gap:1px;min-width:0;flex:1}.timeline-hover-tooltip{position:absolute;left:0;bottom:calc(100% + 12px);z-index:20;min-width:188px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:6px;background:#fffffff5;box-shadow:0 8px 24px #14323629;color:var(--ink);pointer-events:none;transform:translate(-50%);white-space:nowrap}.timeline-hover-tooltip strong,.timeline-hover-tooltip span{display:block;letter-spacing:0}.timeline-hover-tooltip span{margin-top:2px;color:var(--muted);font-size:11px}.timeline-range{display:block;margin:0}.timeline-ticks{display:flex;justify-content:space-between;color:var(--ink-500);font-family:var(--font-mono);font-size:9px}.timeline-ticks .is-current{color:var(--accent-700);font-weight:700}.mode-button{padding:5px 2px;font-size:10px}.mode-button.is-active{color:var(--ink-950);background:var(--white);box-shadow:0 1px 2px #172a2d14}.mobile-drawer-actions{display:none}
