@property --bg{syntax:"<color>";inherits:true;initial-value:#eef1f6}@property --card{syntax:"<color>";inherits:true;initial-value:#fff}@property --title{syntax:"<color>";inherits:true;initial-value:#16334f}@property --text{syntax:"<color>";inherits:true;initial-value:#35435a}@property --muted{syntax:"<color>";inherits:true;initial-value:#8a94a6}@property --border{syntax:"<color>";inherits:true;initial-value:#e4e9f0}@property --blue{syntax:"<color>";inherits:true;initial-value:#1f6fdd}@property --orange{syntax:"<color>";inherits:true;initial-value:#f2622a}@property --green{syntax:"<color>";inherits:true;initial-value:#17a06b}@property --red{syntax:"<color>";inherits:true;initial-value:#e03131}@property --chart-blue{syntax:"<color>";inherits:true;initial-value:#2f7fe0}@property --text-2{syntax:"<color>";inherits:true;initial-value:#4a5a72}@property --text-3{syntax:"<color>";inherits:true;initial-value:#44546b}@property --fill{syntax:"<color>";inherits:true;initial-value:#f4f7fb}@property --fill-2{syntax:"<color>";inherits:true;initial-value:#eef3fa}@property --skeleton{syntax:"<color>";inherits:true;initial-value:#e7ecf3}@property --shimmer{syntax:"<color>";inherits:true;initial-value:#ffffffb3}@property --line-strong{syntax:"<color>";inherits:true;initial-value:#cfd8e3}@property --grid{syntax:"<color>";inherits:true;initial-value:#eef1f6}@property --tooltip-bg{syntax:"<color>";inherits:true;initial-value:#fffffff7}@property --red-tint{syntax:"<color>";inherits:true;initial-value:#fff5f5}@property --red-border{syntax:"<color>";inherits:true;initial-value:#f3b0b0}@property --warn-tint{syntax:"<color>";inherits:true;initial-value:#fff8f2}@property --sky-tint{syntax:"<color>";inherits:true;initial-value:#f2f9fe}@property --sky-border{syntax:"<color>";inherits:true;initial-value:#a9d5f2}@property --sky-text{syntax:"<color>";inherits:true;initial-value:#2b8fd6}@property --blue-tint{syntax:"<color>";inherits:true;initial-value:#eef5fe}@property --amber-tint{syntax:"<color>";inherits:true;initial-value:#fff4e5}@property --amber-border{syntax:"<color>";inherits:true;initial-value:#f0c894}@property --amber-text{syntax:"<color>";inherits:true;initial-value:#a86a12}:root{--bg:#eef1f6;--card:#fff;--title:#16334f;--text:#35435a;--muted:#8a94a6;--border:#e4e9f0;--blue:#1f6fdd;--orange:#f2622a;--green:#17a06b;--red:#e03131;--chart-blue:#2f7fe0;--text-2:#4a5a72;--text-3:#44546b;--fill:#f4f7fb;--fill-2:#eef3fa;--skeleton:#e7ecf3;--shimmer:#ffffffb3;--line-strong:#cfd8e3;--grid:#eef1f6;--tooltip-bg:#fffffff7;--red-tint:#fff5f5;--red-border:#f3b0b0;--warn-tint:#fff8f2;--sky-tint:#f2f9fe;--sky-border:#a9d5f2;--sky-text:#2b8fd6;--blue-tint:#eef5fe;--amber-tint:#fff4e5;--amber-border:#f0c894;--amber-text:#a86a12;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Pretendard,Noto Sans KR,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,system-ui,sans-serif;transition:--bg .4s,--card .4s,--title .4s,--text .4s,--muted .4s,--border .4s,--blue .4s,--orange .4s,--green .4s,--red .4s,--chart-blue .4s,--text-2 .4s,--text-3 .4s,--fill .4s,--fill-2 .4s,--skeleton .4s,--shimmer .4s,--line-strong .4s,--grid .4s,--tooltip-bg .4s,--red-tint .4s,--red-border .4s,--warn-tint .4s,--sky-tint .4s,--sky-border .4s,--sky-text .4s,--blue-tint .4s,--amber-tint .4s,--amber-border .4s,--amber-text .4s}:root[data-theme=dark]{--bg:#0e141c;--card:#18212c;--title:#e8eef5;--text:#c9d3df;--muted:#8b98aa;--border:#2a3544;--blue:#5a9bf0;--orange:#ff8152;--green:#34c48c;--red:#ff6464;--chart-blue:#5a9bf0;--text-2:#aab6c5;--text-3:#b7c2d0;--fill:#1f2a37;--fill-2:#223044;--skeleton:#263241;--shimmer:#ffffff0f;--line-strong:#3a4757;--grid:#253040;--tooltip-bg:#18212cf7;--red-tint:#3a1d22;--red-border:#7a3a40;--warn-tint:#2e2119;--sky-tint:#14283a;--sky-border:#2d5a80;--sky-text:#6cb6ef;--blue-tint:#172a42;--amber-tint:#33270f;--amber-border:#7a5a24;--amber-text:#f0bf6a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{transition:none}}*{box-sizing:border-box}body{background:var(--bg);min-width:1280px;margin:0}h1,h2{margin:0}.app{padding:14px 18px 22px}.app-header{justify-content:space-between;align-items:center;padding:4px 6px 14px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand h1{letter-spacing:-.5px;color:var(--title);font-size:27px;font-weight:800}.header-right{align-items:center;gap:16px;min-width:0;display:flex}.offline-badge{background:var(--amber-tint);border:1px solid var(--amber-border);color:var(--amber-text);border-radius:8px;padding:6px 11px;font-size:12px;font-weight:700}.warning-banner{background:var(--card);border:1.5px solid var(--red-border);color:var(--red);border-radius:10px;align-items:center;gap:8px;min-width:0;max-width:56vw;padding:8px 14px;display:flex}.warning-banner-clear{border-color:var(--sky-border);background:var(--sky-tint);color:var(--sky-text)}.warning-label{color:inherit;font-size:14px;font-weight:700}.warning-text{min-width:0;color:inherit;flex-wrap:wrap;align-items:center;row-gap:2px;font-size:14px;font-weight:700;display:flex}.warning-sep{color:var(--red-border);margin:0 7px;font-weight:400}.warning-suffix{margin-left:7px}.warning-time{white-space:nowrap;color:var(--muted);background:var(--fill);border-radius:6px;flex:none;padding:3px 8px;font-size:12px}.header-clock{color:var(--text-3);align-items:center;gap:7px;font-size:15px;font-weight:600;display:flex}.theme-toggle{border:1px solid var(--border);background:var(--card);width:34px;height:34px;color:var(--text-2);cursor:pointer;border-radius:8px;place-items:center;padding:0;display:inline-grid}.theme-toggle:hover{border-color:var(--line-strong)}.dashboard{flex-direction:column;gap:14px;display:flex}.row{gap:14px;display:flex}.row-top .card-observation{flex:0 0 35%}.row-top .card-forecast{flex:1}.row-mid .card-asos{flex:2 38px}.row-mid .card-air{flex:38px}.row .card-imagery{flex:1}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 18px 14px;position:relative;box-shadow:0 1px 2px #16334f0a}.card-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.card-title{align-items:center;gap:8px;display:flex}.card-title h2{color:var(--title);font-size:16.5px;font-weight:700}.card-basetime{color:var(--muted);font-size:12px}.card-source{color:var(--muted);font-size:11.5px;position:absolute;bottom:10px;right:18px}.metric{flex-direction:column;align-items:center;gap:2px;display:flex}.metric-label{color:var(--text-2);align-items:center;gap:5px;margin-bottom:2px;font-size:13.5px;font-weight:600;display:flex}.metric-value{letter-spacing:-.5px;font-size:30px;font-weight:800;line-height:1.15}.tone-blue{color:var(--blue)}.tone-orange{color:var(--orange)}.tone-green{color:var(--green)}.metric-unit{color:var(--muted);font-size:12px}.card-observation{flex-direction:column;display:flex}.card-observation .site-row{flex-direction:column;flex:1;justify-content:center;padding:14px 0;display:flex}.site-row+.site-row{border-top:1px solid var(--border)}.site-badge{background:var(--fill-2);color:var(--title);border-radius:7px;align-self:flex-start;padding:4px 12px;font-size:12.5px;font-weight:700;display:inline-block}.metric-grid{grid-template-columns:repeat(3,1fr);margin-top:10px;display:grid}.metric-grid .metric+.metric{border-left:1px solid var(--border)}.card-forecast{--fc-col:62px;--fc-row:36px;--fc-label:96px;--fc-dayrow:30px;flex-direction:column;min-width:0;display:flex}.fc-tabs{z-index:2;gap:5px;margin-bottom:-1px;display:flex;position:relative}.fc-tabs button{border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;border-bottom-color:#0000;border-radius:7px 7px 0 0;padding:6px 18px;font-size:13px;font-weight:600}.fc-tabs button.active{border-color:var(--blue);background:var(--blue);color:#fff}.fc-legend-open{border:1px solid var(--border);background:var(--card);color:var(--text-2);cursor:pointer;border-radius:7px;align-self:center;align-items:center;gap:5px;margin-left:auto;padding:4px 10px;font-size:12px;font-weight:600;display:flex}.fc-legend-open:hover{border-color:var(--blue);color:var(--blue)}.fc-scroll{border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex:1;min-width:0;position:relative;overflow:auto hidden}.fc-table{border-collapse:collapse;-webkit-user-select:none;user-select:none;align-items:flex-start;width:max-content;display:flex}.fc-table thead{z-index:1;width:var(--fc-label);flex:none;display:block;position:sticky;left:0}.fc-table tbody{flex-wrap:wrap;flex:none;align-content:flex-start;display:flex}.fc-table tr{width:var(--fc-col);flex:none;display:block}.fc-table thead tr,.fc-table .fc-dayrow{width:100%}.fc-table th,.fc-table td{height:var(--fc-row);border-right:1px solid var(--border);border-bottom:1px solid var(--border);white-space:nowrap;justify-content:center;align-items:center;font-size:12.5px;font-weight:400;line-height:1;display:flex}.fc-table td:last-child,.fc-table thead th:last-child{border-bottom-color:#0000}.fc-table thead th{background:var(--fill);color:var(--text-2);justify-content:flex-start;padding-left:12px;font-weight:600}.fc-table .fc-daycell{height:var(--fc-dayrow);background:var(--fill-2);border-bottom:1px solid var(--border);justify-content:flex-start;padding:0;overflow:clip;container-type:inline-size}.fc-daylabel{left:var(--fc-label);color:var(--text-2);align-items:center;gap:9px;padding:0 12px;font-size:12.5px;display:flex;position:sticky}.fc-daylabel strong{color:var(--title);font-weight:700}.fc-daydate{color:var(--muted)}.fc-daytemp b{font-weight:700}.fc-daysun{align-items:center;gap:3px;display:inline-flex}.fc-daysun svg{width:16px;height:16px}@container (width<=450px){.fc-sunword{display:none}}@container (width<=395px){.fc-daysun{display:none}}@container (width<=285px){.fc-daylabel .fc-daytemp{display:none}}@container (width<=140px){.fc-daydate{display:none}}.fc-hour{color:var(--title);font-weight:600}.fc-tight{font-size:10.5px}.fc-table img{object-fit:contain;width:22px;height:22px;display:block}.fc-weather-text{color:var(--text-2);font-size:10.5px}.fc-wind{justify-content:center;align-items:center;display:flex}.fc-modal-backdrop{z-index:50;background:#16334f73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fc-modal{background:var(--card);border-radius:14px;width:min(440px,90vw);overflow:hidden}.fc-modal header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.fc-modal h3{color:var(--title);font-size:15.5px;font-weight:700}.fc-modal header button{color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:15px}.fc-legend{grid-template-columns:repeat(2,1fr);gap:10px 14px;padding:16px 18px;list-style:none;display:grid}.fc-legend li{color:var(--text);align-items:center;gap:9px;font-size:13px;display:flex}.fc-legend img,.fc-legend .fc-icon-blank{object-fit:contain;flex:none;width:26px;height:26px}.fc-icon-blank{border:1px dashed var(--border);border-radius:5px;display:block}.card-asos{flex-direction:column;display:flex}.asos-grid{flex:1;grid-template-columns:repeat(6,1fr);align-content:center;padding-bottom:18px;display:grid}.asos-grid .metric+.metric{border-left:1px solid var(--border)}.card-air{flex-direction:column;display:flex}.air-grid{flex:1;grid-template-columns:repeat(3,1fr);align-content:center;padding-bottom:18px;display:grid}.air-grid .air-item+.air-item{border-left:1px solid var(--border)}.air-item{flex-direction:column;align-items:center;gap:3px;display:flex}.air-label{color:var(--text-2);margin-bottom:4px;font-size:13.5px;font-weight:600}.grade-badge{color:#fff;cursor:help;border-radius:6px;margin-top:5px;padding:3px 12px;font-size:11.5px;font-weight:700;position:relative}.grade-help{z-index:5;border:1px solid var(--border);background:var(--card);width:290px;color:var(--text-2);text-align:left;white-space:normal;border-radius:8px;padding:10px 12px;font-size:12px;font-weight:500;line-height:1.6;display:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 14px #16334f1f}.grade-badge:hover .grade-help,.grade-badge:focus .grade-help{display:block}.grade-help-title{color:var(--blue);align-items:center;gap:4px;margin-bottom:4px;display:flex}.grade-help small{color:var(--muted);margin-top:4px;font-size:11px;display:block}.grade-text-1{color:#2f7fe0}.grade-text-2{color:#2e9e5b}.grade-text-3{color:#f0a020}.grade-text-4{color:#e03131}.grade-1{background:#2f7fe0}.grade-2{background:#2e9e5b}.grade-3{background:#f0a020}.grade-4{background:#e03131}.imagery-grid{grid-template-columns:repeat(5,1fr);gap:14px;padding-bottom:12px;display:grid}.imagery-item{flex-direction:column;gap:8px;margin:0;display:flex}.imagery-item figcaption{text-align:center;color:var(--text-3);font-size:13px;font-weight:600}.imagery-item figcaption a{color:inherit;text-decoration:none}.imagery-item figcaption a:hover{color:var(--blue);text-decoration:underline}.imagery-item img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--border);background:var(--fill);border-radius:8px;width:100%}.imagery-time{text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.imagery-placeholder{aspect-ratio:4/3;border:1px dashed var(--line-strong);background:repeating-linear-gradient(45deg, var(--fill), var(--fill) 10px, var(--bg) 10px, var(--bg) 20px);color:var(--muted);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.imagery-placeholder span{font-size:13px;font-weight:600}.imagery-placeholder small{font-size:11px}.skeleton{background:var(--skeleton);vertical-align:middle;border-radius:5px;display:inline-block;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg, transparent, var(--shimmer), transparent);animation:1.4s ease-in-out infinite skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes skeleton-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.skeleton-badge{border-radius:999px}.skeleton-frame{aspect-ratio:4/3;border:1px solid var(--border);border-radius:8px;width:100%}.panel-error{min-height:120px;color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:5px;display:flex}.panel-error strong{color:var(--muted);font-size:14px;font-weight:600}.panel-error small{font-size:11.5px}.plant-toggle{border:1px solid var(--border);background:var(--card);border-radius:10px;margin-left:18px;padding:3px;display:flex}.plant-toggle button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:7px 22px;font-size:14px;font-weight:700}.plant-toggle button.active{background:var(--blue);color:#fff;box-shadow:0 1px 3px #1f6fdd59}.warning-bar{background:var(--warn-tint);border:1.5px solid var(--red-border);color:var(--red);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;padding:9px 16px;display:flex}.warning-bar.warning-banner-clear{border-color:var(--sky-border);background:var(--sky-tint);color:var(--sky-text)}.analysis-grid{grid-template-columns:minmax(0,1fr) 31%;gap:14px;display:grid}.analysis-main,.analysis-side{flex-direction:column;gap:14px;min-width:0;display:flex}.analysis-bottom{grid-column:1/-1}.analysis-main .card-impact,.analysis-side .card-phenomenon{flex-direction:column;flex:1;display:flex}.analysis .card-forecast{--fc-row:29px;--fc-col:52px;--fc-label:88px;--fc-dayrow:26px;padding-bottom:30px}.analysis .fc-table th,.analysis .fc-table td{font-size:12px}.analysis .card-head{margin-bottom:10px}.analysis-side .asos-grid{grid-template-columns:repeat(3,1fr)}.analysis-side .vis-grid{grid-template-columns:1fr}.analysis-side .energy-grid,.analysis-side .asos-grid,.analysis-side .air-grid{border:1px solid var(--border);background:var(--border);border-radius:8px;gap:1px;overflow:hidden}.analysis-side .air-grid{overflow:visible}.analysis-side .air-item:first-child{border-radius:7px 0 0 7px}.analysis-side .air-item:last-child{border-radius:0 7px 7px 0}.analysis-side .asos-grid .metric{flex-flow:wrap;justify-content:flex-end;align-items:baseline;gap:0 3px}.analysis-side .energy-grid .metric,.analysis-side .asos-grid .metric,.analysis-side .air-item{background:var(--card);border-left:0;padding:8px 10px}.analysis-side .asos-grid .metric-label{white-space:nowrap;align-self:center;margin:0 auto 0 0;font-size:12.5px}.analysis-side .asos-grid .metric-value,.analysis-side .asos-grid .metric-unit{white-space:nowrap}.analysis-side .asos-grid .metric-unit{min-width:28px}.analysis-side .energy-grid .metric{align-items:stretch;gap:2px}.analysis-side .energy-grid .metric-label{margin:0;font-size:12.5px}.analysis-side .energy-line{justify-content:flex-start}.analysis-side .air-item{flex-flow:wrap;align-items:baseline;gap:2px 3px}.analysis-side .air-label{white-space:nowrap;flex-basis:100%;margin:0;font-size:12.5px}.analysis-side .energy-rate,.analysis-side .air-item .grade-badge{align-self:center;margin:0 0 0 auto;padding:2px 7px;font-size:11.5px}.analysis-side .metric-value{font-size:18px}.analysis-side .card{padding-bottom:10px}.analysis-side .card-source{text-align:right;margin-top:8px;position:static}.analysis-side .asos-grid,.analysis-side .air-grid{padding-bottom:0}.analysis .imagery-grid{gap:10px;padding-bottom:6px}.analysis .imagery-item{gap:5px}.analysis .imagery-item img,.analysis .imagery-placeholder{aspect-ratio:16/11}.card-impact{padding-bottom:28px}.impact-toolbar{flex-wrap:wrap;gap:8px 18px;margin-bottom:4px;display:flex}.impact-check{color:var(--text-3);cursor:pointer;align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.impact-check input{width:15px;height:15px;margin:0}.impact-swatch{border-radius:2px;width:18px;height:3px}.impact-ramp-badge{border:1px solid var(--red-border);background:var(--red-tint);color:var(--red);cursor:help;border-radius:7px;align-items:center;gap:5px;padding:4px 10px;font-size:12.5px;font-weight:700;display:flex;position:absolute;top:13px;right:230px}.impact-ramp-help{z-index:5;border:1px solid var(--border);background:var(--card);width:300px;color:var(--text-2);border-radius:8px;padding:9px 11px;font-size:12px;font-weight:500;line-height:1.5;display:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 14px #16334f1f}.impact-ramp-badge:hover .impact-ramp-help{display:block}.impact-chart{flex:1;width:100%;min-height:300px}.impact-tooltip{border:1px solid var(--border);background:var(--tooltip-bg);min-width:220px;color:var(--text);border-radius:9px;padding:10px 12px;font-size:12.5px;box-shadow:0 4px 14px #16334f1f}.impact-tooltip-time{color:var(--title);margin-bottom:6px;font-weight:700}.impact-tooltip-row{align-items:center;gap:6px;line-height:1.75;display:flex}.impact-tooltip-row b{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:700}.impact-dot{border-radius:50%;width:8px;height:8px}.impact-tooltip-divider{border-top:1px solid var(--border);color:var(--muted);margin:6px 0 3px;padding-top:6px;font-size:11.5px;font-weight:700}.impact-tooltip-weather{color:var(--text-2);align-items:center;gap:5px;margin-top:3px;font-size:12px;display:flex}.impact-tooltip-ramp{border-top:1px solid var(--border);color:var(--red);align-items:center;gap:5px;margin-top:6px;padding-top:6px;font-weight:700;display:flex}.energy-grid{grid-template-columns:repeat(3,1fr);display:grid}.energy-line{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0 3px;display:flex}.energy-rate{background:var(--fill);color:var(--muted);white-space:nowrap;border-radius:4px;padding:1px 4px;font-size:11.5px;font-weight:700}.rate-up{background:var(--red-tint);color:var(--red)}.rate-down{background:var(--blue-tint);color:var(--blue)}.phenomenon-scroll{flex:1;min-height:96px;overflow-y:auto}.phenomenon-table{border-collapse:collapse;width:100%;height:100%;font-size:12.5px}.phenomenon-table th{background:var(--fill);color:var(--text-2);padding:4px 8px;font-weight:600;position:sticky;top:0}.phenomenon-table td{border-bottom:1px solid var(--border);text-align:center;padding:4px 8px}
