.app-shell{position:relative;width:100%;max-width:100vw;height:100%;overflow:hidden}.forecast-map{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:var(--xc-soft)}.forecast-map .leaflet-marker-icon,.forecast-map .leaflet-marker-shadow{display:none}.forecast-map .leaflet-interactive:focus{outline:none}.top-bar{position:absolute;top:12px;left:12px;right:12px;z-index:450;display:flex;align-items:center;justify-content:flex-end;gap:16px;pointer-events:none}.top-bar.raster-active{top:12px}.top-bar h1{margin:0;color:var(--xc-ink);font-size:1.22rem;line-height:1.1}.top-actions{display:flex;align-items:center;gap:8px;pointer-events:auto}.data-pill{max-width:min(420px,70vw);border:1px solid rgb(var(--xc-ink-rgb) / .12);border-radius:8px;background:#ffffffe0;box-shadow:0 10px 30px rgb(var(--xc-ink-rgb) / .14);color:var(--xc-ink);padding:8px 10px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-size:.85rem;font-weight:800;white-space:nowrap}.map-status{position:absolute;left:16px;bottom:20px;z-index:450;max-width:min(420px,calc(100vw - 32px));border:1px solid rgb(var(--xc-ink-rgb) / .12);border-radius:8px;background:#ffffffe6;box-shadow:0 10px 28px rgb(var(--xc-ink-rgb) / .16);color:var(--xc-ink);padding:11px 13px;font-size:.92rem}.region-tooltip{border:0;border-radius:6px;box-shadow:0 8px 22px rgb(var(--xc-ink-rgb) / .18);color:var(--xc-ink);font-weight:800}@media(min-width:721px){.app-shell--raster-emagram-docked{background:#fdfdfd}.app-shell--raster-emagram-docked .forecast-map,.app-shell--raster-emagram-docked .top-bar.raster-active{right:var(--raster-emagram-dock-offset)}}@media(min-width:1024px){.app-shell--live-wind-station-docked{background:#fdfdfd}.app-shell--live-wind-station-docked .forecast-map,.app-shell--live-wind-station-docked .top-bar.raster-active{right:var(--live-wind-station-dock-offset)}}@media(max-width:720px){.top-bar{top:8px;left:8px;right:8px}.top-bar.raster-active{top:8px}.top-bar.raster-active .top-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%;max-width:100%;overflow:visible;padding-bottom:0}.top-bar.raster-active .top-actions>*{min-width:0}.top-bar h1{font-size:1.05rem}.data-pill{display:none}.top-actions{width:100%;flex-direction:row;align-items:stretch;justify-content:stretch;gap:5px;max-width:none}.map-status{right:10px;bottom:12px;left:10px}}.app-shell--short-landscape .top-bar,.app-shell--short-landscape .top-bar.raster-active{top:max(6px,env(safe-area-inset-top));right:auto;left:max(6px,env(safe-area-inset-left));width:182px}.app-shell--short-landscape .top-actions,.app-shell--short-landscape .top-bar.raster-active .top-actions{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.app-shell--tablet .top-bar,.app-shell--tablet .top-bar.raster-active{top:8px;right:8px;left:8px}.app-shell--tablet .top-actions,.app-shell--tablet .top-bar.raster-active .top-actions{display:grid;width:100%;max-width:100%;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px;overflow:visible}.app-shell--tablet .top-bar.raster-active .top-actions>*{min-width:0}.feedback-widget{position:absolute;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));z-index:900;pointer-events:none}.feedback-launcher,.feedback-panel{pointer-events:auto}.feedback-launcher{display:inline-flex;align-items:center;gap:7px;min-height:38px;border:1px solid rgb(var(--xc-ink-rgb) / .15);border-radius:999px;background:#fffffff0;box-shadow:0 10px 28px rgb(var(--xc-ink-rgb) / .18);color:var(--xc-ink);cursor:pointer;font-size:.78rem;font-weight:850;padding:0 14px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.feedback-launcher:hover,.feedback-launcher:focus-visible{background:#fff;color:var(--xc-accent-strong);outline:2px solid rgb(var(--xc-ink-rgb) / .25);outline-offset:2px}.feedback-launcher span{font-size:1rem;line-height:1}.feedback-panel{position:absolute;left:0;bottom:50px;display:grid;width:min(360px,calc(100vw - 24px));max-height:min(680px,calc(100vh - 32px));overflow:auto;border:1px solid rgb(var(--xc-ink-rgb) / .14);border-radius:14px;background:#fffffff7;box-shadow:0 18px 55px rgb(var(--xc-ink-rgb) / .24);color:var(--xc-ink);padding:18px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.feedback-widget--controlled .feedback-panel{bottom:0}.feedback-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.feedback-eyebrow{color:var(--xc-accent-strong);font-size:.66rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.feedback-panel h2{margin:4px 0 0;color:var(--xc-ink);font-size:1.05rem;line-height:1.2}.feedback-close{display:grid;width:30px;height:30px;flex:0 0 auto;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--xc-muted);cursor:pointer;font-size:1.45rem;line-height:1;padding:0}.feedback-close:hover,.feedback-close:focus-visible{background:var(--xc-surface);color:var(--xc-accent-strong)}.feedback-close:disabled{cursor:default;opacity:.5}.feedback-form{display:grid;gap:13px}.feedback-form label{display:grid;gap:6px;color:var(--xc-ink);font-size:.76rem;font-weight:800}.feedback-form label span{color:var(--xc-muted);font-weight:600}.feedback-form input,.feedback-form select,.feedback-form textarea{width:100%;border:1px solid var(--xc-soft);border-radius:8px;background:#fff;color:var(--xc-ink);font-size:.86rem;outline:none;padding:9px 10px}.feedback-form textarea{min-height:108px;resize:vertical}.feedback-form input:focus,.feedback-form select:focus,.feedback-form textarea:focus{border-color:var(--xc-accent-strong);box-shadow:0 0 0 3px rgb(var(--xc-ink-rgb) / .14)}.feedback-note{margin:0;color:var(--xc-muted);font-size:.7rem;line-height:1.45}.feedback-honeypot{position:absolute;left:-10000px;width:1px;height:1px;opacity:0;pointer-events:none}.feedback-error,.feedback-success{display:grid;gap:7px;margin:0;border-radius:9px;padding:12px;font-size:.8rem;line-height:1.4}.feedback-error{background:#fff2f2;color:#a12626}.feedback-success{background:var(--xc-surface);color:var(--xc-ink)}.feedback-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.feedback-secondary-button,.feedback-submit-button{min-height:34px;border-radius:7px;cursor:pointer;font-size:.77rem;font-weight:800;padding:0 12px}.feedback-secondary-button{border:1px solid var(--xc-soft);background:#fff;color:var(--xc-ink)}.feedback-submit-button{border:1px solid var(--xc-accent-strong);background:var(--xc-accent-strong);color:#fff}.feedback-secondary-button:hover:not(:disabled),.feedback-secondary-button:focus-visible{background:var(--xc-surface)}.feedback-submit-button:hover:not(:disabled),.feedback-submit-button:focus-visible{background:var(--xc-accent-strong)}.feedback-secondary-button:disabled,.feedback-submit-button:disabled{cursor:default;opacity:.55}@media(max-width:720px){.feedback-widget{left:max(10px,env(safe-area-inset-left));bottom:max(10px,env(safe-area-inset-bottom))}.feedback-launcher{min-height:36px;padding:0 12px}.feedback-panel{left:0;bottom:46px;width:min(360px,calc(100vw - 20px));max-height:calc(100vh - 20px);padding:15px}.feedback-widget--controlled .feedback-panel{bottom:0}}.app-shell--short-landscape .feedback-widget{left:max(6px,env(safe-area-inset-left));bottom:max(6px,env(safe-area-inset-bottom))}.live-wind-station-panel{position:absolute;top:76px;right:16px;bottom:auto;z-index:710;display:flex;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 172px);flex-direction:column;gap:12px;overflow:auto;border:1px solid rgb(var(--xc-ink-rgb) / .14);border-radius:10px;background:rgb(var(--xc-surface-rgb) / .97);box-shadow:0 24px 72px rgb(var(--xc-ink-rgb) / .28);color:var(--xc-ink);padding:18px;pointer-events:auto;overscroll-behavior:contain;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.live-wind-station-panel--standalone{max-height:calc(100vh - 144px)}.live-wind-station-panel--app{position:fixed;z-index:900}@media(min-width:1024px){.live-wind-station-panel--app{top:12px;right:12px;bottom:12px;width:560px;max-height:none}}.live-wind-station-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.live-wind-station-panel-header h2{margin:0;color:var(--xc-ink);font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.12}.live-wind-station-title-elevation{color:var(--xc-muted);font-size:inherit;font-weight:inherit;white-space:nowrap}.live-wind-station-panel-header>div>span{display:block;margin-top:5px;color:var(--xc-muted);font-size:.75rem;font-weight:750}.live-wind-station-panel-header>div>span a{color:var(--xc-ink);text-decoration-color:rgb(var(--xc-ink-rgb) / .42);text-decoration-thickness:1px;text-underline-offset:2px}.live-wind-station-panel-header>div>span a:hover{color:var(--xc-accent-strong);text-decoration-color:currentcolor}.live-wind-station-panel-header>div>span a:focus-visible{border-radius:2px;outline:2px solid var(--xc-accent-strong);outline-offset:2px}.live-wind-station-freshness{display:flex;align-items:center;gap:8px;color:var(--xc-muted);font-size:.74rem}.live-wind-station-freshness .live-wind-status{border-radius:999px;padding:4px 8px;font-size:.64rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.live-wind-station-freshness .live{background:var(--xc-soft);color:var(--xc-accent-strong)}.live-wind-station-freshness .stale{background:#ffedd5;color:#c2410c}.live-wind-station-freshness>span:last-child{margin-left:auto}.live-wind-station-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;margin:0}.live-wind-station-meta>div{min-width:0;border:1px solid rgb(var(--xc-ink-rgb) / .12);border-radius:8px;background:var(--xc-surface);padding:9px 10px}.live-wind-station-meta>.live-wind-station-speed-card{border-color:var(--live-wind-speed-color);background:linear-gradient(#ffffffb8,#ffffffb8),var(--live-wind-speed-color)}.live-wind-station-meta dt{color:var(--xc-muted);font-size:.62rem;font-weight:850;text-transform:uppercase}.live-wind-station-meta dd{overflow:hidden;margin:3px 0 0;color:var(--xc-ink);font-size:1.15rem;line-height:1.2;font-weight:850;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.live-wind-history-section{display:grid;gap:8px;min-height:0}.live-wind-history-charts{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.live-wind-history-chart{--wind-history-average: var(--xc-ink);--wind-history-gust: #b65325;min-width:0;overflow:hidden;border:1px solid rgb(var(--xc-ink-rgb) / .1);border-radius:8px;background:#fff;padding:10px 10px 7px}.live-wind-history-chart-heading{display:flex;min-height:24px;align-items:center;justify-content:space-between;gap:10px}.live-wind-history-chart-heading p{margin:0;color:var(--xc-ink);font-size:.74rem;font-weight:900}.live-wind-history-chart-heading span{color:var(--xc-muted);font-size:.7rem;font-weight:700}.live-wind-history-chart svg{display:block;width:100%;height:auto;overflow:visible}.live-wind-history-legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.live-wind-history-legend span{display:inline-flex;align-items:center;gap:3px}.live-wind-history-legend i{width:20px;height:0;border-top:2px solid var(--wind-history-average)}.live-wind-history-legend i.average{border-color:var(--wind-history-average)}.live-wind-history-legend i.gust{border-color:var(--wind-history-gust);border-top-style:dashed}.live-wind-stream-navigation{display:grid;grid-template-columns:82px minmax(0,1fr) 82px;align-items:center;gap:8px;margin:4px 0 2px}.live-wind-stream-navigation strong{overflow:hidden;color:var(--xc-muted);font-size:.69rem;text-align:center;text-overflow:ellipsis;white-space:nowrap}.live-wind-stream-navigation button{min-height:30px;border:1px solid rgb(var(--xc-ink-rgb) / .22);border-radius:999px;background:var(--xc-surface);color:var(--xc-ink);cursor:pointer;font:inherit;font-size:.68rem;font-weight:850;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.live-wind-stream-navigation button:hover:not(:disabled){border-color:rgb(var(--xc-ink-rgb) / .5);background:var(--xc-soft)}.live-wind-stream-navigation button:focus-visible{outline:2px solid var(--xc-accent-strong);outline-offset:2px}.live-wind-stream-navigation button:disabled{border-color:rgb(var(--xc-muted-rgb) / .12);background:var(--xc-surface);color:var(--xc-muted);cursor:default}.live-wind-stream-svg{border-radius:5px;touch-action:pan-y}.live-wind-stream-svg:focus-visible{outline:2px solid var(--xc-accent-strong);outline-offset:-2px}.history-grid-line{stroke:#cad9e4;stroke-width:1}.history-time-grid-line{stroke:#c5d6e2;stroke-width:1}.history-axis-label{fill:var(--xc-muted);font-family:inherit;font-size:13px;font-weight:700}.history-time-label{fill:var(--xc-muted);font-family:inherit;font-weight:750}.history-time-label .date{fill:var(--xc-muted);font-size:13px}.history-time-label .time{fill:var(--xc-ink);font-size:15px;font-weight:750}.history-speed-area{fill:rgb(var(--xc-accent-rgb) / .09);stroke:none}.history-speed-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.8}.history-speed-line.average{stroke:var(--wind-history-average)}.history-speed-line.gust{stroke:var(--wind-history-gust);stroke-dasharray:5 4;stroke-width:2}.wind-streamer{cursor:crosshair}.wind-streamer-tail{stroke:var(--wind-history-average);stroke-linecap:round;stroke-width:1.8}.wind-streamer-head{fill:var(--wind-history-average);stroke:#fff;stroke-width:.9}.wind-streamer-gust-tail{stroke:var(--wind-history-gust)}.wind-streamer-gust-head{fill:var(--wind-history-gust)}.wind-streamer.selected .wind-streamer-head{stroke-width:2}.wind-streamer-selection-line{pointer-events:none;stroke:rgb(var(--xc-accent-rgb) / .28);stroke-dasharray:3 4;stroke-width:1}.history-inline-average{color:var(--wind-history-average)}.history-inline-gust{color:var(--wind-history-gust)}.history-inline-legend-label{fill:var(--xc-muted);font-size:14px;font-weight:700}.history-unit-label{fill:var(--xc-ink);font-size:15px;font-weight:750}.history-axis-line{stroke:#9eb5c7;stroke-width:1}.history-minor-grid-line{stroke:#e8eff5;stroke-width:1}.live-wind-history-range{display:inline-flex;border:1px solid var(--xc-line);border-radius:6px;overflow:hidden}.live-wind-history-range button{border:0;background:#fff;color:var(--xc-muted);min-height:30px;padding:4px 10px;font:inherit;font-size:.7rem;font-weight:750;cursor:pointer}.live-wind-history-range button[aria-pressed=true]{background:var(--xc-selected);color:var(--xc-ink)}.live-wind-history-range button:focus-visible{outline:2px solid var(--xc-accent-strong);outline-offset:-2px}.live-wind-history-message{display:grid;min-height:148px;place-items:center;border:1px dashed rgb(var(--xc-ink-rgb) / .2);border-radius:8px;background:var(--xc-surface);color:var(--xc-muted);font-size:.78rem;font-weight:750;padding:18px;text-align:center}.live-wind-history-message.error{border-color:#b91c1c33;background:#fff7f7;color:#b91c1c}@media(max-width:720px){.live-wind-station-panel{top:0;right:0;bottom:0;left:0;width:100%;height:100dvh;max-height:none;border:0;border-radius:0;gap:10px;padding:max(13px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}.live-wind-station-panel:before{display:none}.live-wind-station-freshness{flex-wrap:wrap}.live-wind-station-freshness>span:last-child{width:100%;margin-left:0}.live-wind-station-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.live-wind-history-charts{grid-template-columns:1fr}.history-axis-label,.history-time-label .date{font-size:16px}.history-time-label .time,.history-inline-legend-label,.history-unit-label{font-size:18px}.live-wind-stream-navigation{grid-template-columns:76px minmax(0,1fr) 76px;gap:5px}.live-wind-stream-navigation button{min-height:34px}}@media(max-height:520px)and (orientation:landscape){.live-wind-station-panel{top:0;right:0;bottom:0;left:0;width:100%;height:100dvh;max-height:none;border:0;border-radius:0;padding:max(9px,env(safe-area-inset-top)) max(9px,env(safe-area-inset-right)) max(9px,env(safe-area-inset-bottom)) max(9px,env(safe-area-inset-left))}.live-wind-station-panel:before{display:none}.live-wind-station-panel-header h2{font-size:1rem}.live-wind-station-meta{grid-template-columns:repeat(4,minmax(0,1fr))}.live-wind-history-charts{grid-template-columns:1fr}}
