@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap');

:root {
  --ink: #08131e;
  --ink-soft: #0d1d2b;
  --surface: #102535;
  --surface-2: #142d3e;
  --line: rgba(164, 202, 213, 0.13);
  --line-strong: rgba(164, 202, 213, 0.24);
  --text: #e6f1f0;
  --muted: #86a3ad;
  --muted-2: #607984;
  --aqua: #65e4de;
  --aqua-dim: rgba(101, 228, 222, 0.12);
  --amber: #ffc875;
  --amber-dim: rgba(255, 200, 117, 0.12);
  --coral: #ff766e;
  --coral-dim: rgba(255, 118, 110, 0.12);
  --violet: #9b94ff;
  --display: 'Space Grotesk', sans-serif;
  --mono: 'IBM Plex Mono', monospace;
  --radius: 16px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--ink); color: var(--text); font-family: var(--display); font-size: 14px; line-height: 1.45; min-width: 320px; }
button, input { font: inherit; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
::selection { background: var(--aqua); color: var(--ink); }

.noise { position: fixed; inset: 0; pointer-events: none; opacity: .035; z-index: 10; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.28'/%3E%3C/svg%3E"); }
.app-shell { display: flex; min-height: 100vh; }
.sidebar { position: fixed; z-index: 5; left: 0; top: 0; bottom: 0; width: 234px; background: rgba(7, 18, 28, .92); border-right: 1px solid var(--line); display: flex; flex-direction: column; padding: 30px 20px 22px; }
.brand { display: flex; align-items: center; gap: 12px; padding: 4px 10px 25px; }
.brand-mark { position: relative; display: inline-flex; align-items: flex-end; gap: 2px; width: 28px; height: 26px; }
.brand-mark i { display: block; width: 7px; border-radius: 8px 8px 2px 2px; background: var(--aqua); transform: skew(-17deg); }
.brand-mark i:nth-child(1) { height: 15px; opacity: .65; }
.brand-mark i:nth-child(2) { height: 23px; }
.brand-mark i:nth-child(3) { height: 18px; opacity: .8; }
.brand-copy { display: flex; flex-direction: column; line-height: 1; letter-spacing: .14em; }
.brand-copy strong { font-size: 13px; font-weight: 700; }
.brand-copy em { color: var(--aqua); font-size: 10px; font-style: normal; margin-top: 5px; letter-spacing: .3em; }
.sidebar-divider { height: 1px; background: var(--line); margin: 0 10px 30px; }
.nav-label, .section-tag, .eyebrow, .metric-label, .risk-kicker, .section-note, .map-live, .alert-count { font-family: var(--mono); font-size: 10px; letter-spacing: .12em; }
.nav-label { color: var(--muted-2); padding: 0 10px; margin: 0 0 10px; }
.main-nav { display: grid; gap: 5px; }
.nav-item { display: flex; align-items: center; gap: 12px; color: var(--muted); border-radius: 10px; padding: 12px 10px; transition: .2s ease; }
.nav-item:hover { background: rgba(101, 228, 222, .06); color: var(--text); }
.nav-item.active { background: var(--aqua-dim); color: var(--aqua); }
.nav-icon { width: 18px; text-align: center; font-size: 18px; line-height: 1; }
.nav-badge { margin-left: auto; display: none; min-width: 20px; height: 20px; align-items: center; justify-content: center; border-radius: 50%; background: var(--coral); color: var(--ink); font-family: var(--mono); font-size: 10px; font-weight: 600; }
.nav-badge.has-alert { display: flex; }
.sidebar-bottom { margin-top: auto; padding: 0 10px; }
.live-mini { display: flex; align-items: center; gap: 8px; color: var(--aqua); font-family: var(--mono); font-size: 10px; letter-spacing: .06em; padding-bottom: 18px; }
.live-mini .mono { margin-left: auto; color: var(--muted-2); }
.live-dot { width: 6px; height: 6px; display: inline-block; border-radius: 50%; background: var(--aqua); box-shadow: 0 0 0 4px rgba(101, 228, 222, .12); animation: livePulse 2s infinite; }
.sidebar-note { color: var(--muted-2); font-size: 11px; line-height: 1.7; margin: 0 0 34px; }
.sidebar-meta { display: flex; justify-content: space-between; color: #38515d; font-family: var(--mono); font-size: 9px; }
.content { width: calc(100% - 234px); margin-left: 234px; padding: 0 48px 32px; max-width: 1600px; }
.topbar { min-height: 82px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; }
.breadcrumb { color: var(--muted-2); font-family: var(--mono); font-size: 10px; letter-spacing: .13em; }
.breadcrumb span:first-child { color: var(--aqua); }
.crumb-slash { color: #35515d; margin: 0 10px; }
.topbar-actions { display: flex; align-items: center; gap: 14px; }
.updated-pill { display: flex; align-items: center; gap: 9px; color: var(--muted); font-family: var(--mono); font-size: 10px; }
.icon-button, .avatar { border: 1px solid var(--line); background: rgba(17, 39, 53, .65); color: var(--muted); transition: .2s; }
.icon-button { width: 32px; height: 32px; border-radius: 9px; font-size: 18px; }
.icon-button:hover { color: var(--aqua); border-color: var(--aqua); transform: rotate(25deg); }
.notification-button { position: relative; color: var(--aqua); }
.notification-dot { position: absolute; width: 5px; height: 5px; top: 5px; right: 5px; border-radius: 50%; background: var(--muted-2); }
.notification-dot.enabled { background: var(--aqua); box-shadow: 0 0 0 3px var(--aqua-dim); }
.avatar { width: 32px; height: 32px; border-radius: 50%; color: var(--ink); background: var(--aqua); font-weight: 700; }
.intro-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; padding: 56px 0 44px; }
.eyebrow { color: var(--aqua); margin: 0 0 14px; display: flex; align-items: center; gap: 10px; }
.eyebrow.small { font-size: 9px; margin-bottom: 8px; }
.eyebrow-line { width: 22px; height: 1px; background: currentColor; display: inline-block; }
h1, h2, p { margin-top: 0; }
h1 { font-size: clamp(42px, 5vw, 72px); line-height: .98; letter-spacing: -.06em; font-weight: 500; margin: 0; }
h1 span { color: var(--aqua); }
.intro-copy { color: var(--muted); max-width: 370px; line-height: 1.7; margin: 20px 0 0; }
.intro-copy strong { color: var(--text); font-weight: 500; }
.search-wrap { width: min(100%, 320px); position: relative; padding-bottom: 6px; }
.search-wrap label { display: block; color: var(--muted-2); font-size: 10px; font-family: var(--mono); margin: 0 0 9px 2px; letter-spacing: .1em; text-transform: uppercase; }
.search-box { height: 46px; border: 1px solid var(--line-strong); background: rgba(15, 37, 52, .62); border-radius: 10px; display: flex; align-items: center; padding: 0 12px; transition: .2s; }
.search-box:focus-within { border-color: var(--aqua); box-shadow: 0 0 0 4px rgba(101, 228, 222, .08); }
.search-icon { color: var(--aqua); font-size: 24px; line-height: 1; margin-right: 8px; transform: translateY(-2px); }
.search-box input { width: 100%; min-width: 0; border: 0; outline: 0; color: var(--text); background: transparent; font-size: 13px; }
.search-box input::placeholder { color: var(--muted-2); }
kbd { color: var(--muted-2); background: rgba(119, 160, 173, .09); border: 1px solid var(--line); border-radius: 4px; padding: 3px 5px; font-family: var(--mono); font-size: 9px; white-space: nowrap; }
.search-results { display: none; position: absolute; z-index: 4; top: 74px; width: 100%; border: 1px solid var(--line-strong); border-radius: 10px; background: #102535; box-shadow: 0 16px 45px rgba(0, 0, 0, .35); overflow: hidden; }
.search-results.open { display: block; }
.search-result { width: 100%; padding: 12px 14px; text-align: left; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--text); display: flex; justify-content: space-between; gap: 10px; }
.search-result:last-child { border-bottom: 0; }
.search-result:hover { background: var(--aqua-dim); }
.search-result small { color: var(--muted); font-family: var(--mono); }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(310px, .75fr); gap: 16px; }
.panel-glow { position: relative; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(145deg, rgba(18, 47, 64, .91), rgba(10, 28, 40, .95)); }
.panel-glow::after { content: ''; position: absolute; width: 220px; height: 220px; right: -100px; top: -120px; border-radius: 50%; background: rgba(101, 228, 222, .07); filter: blur(25px); pointer-events: none; }
.current-card, .risk-card { padding: 23px 25px 20px; min-height: 281px; }
.card-topline { display: flex; justify-content: space-between; align-items: center; gap: 16px; position: relative; z-index: 1; }
.section-tag { color: var(--muted); }
.location-button { border: 0; background: transparent; color: var(--aqua); font-family: var(--mono); font-size: 10px; display: flex; gap: 6px; align-items: center; padding: 0; }
.location-button span { opacity: .78; }
.location-button:hover span { text-decoration: underline; }
.current-main { display: flex; align-items: center; gap: 20px; padding: 31px 0 23px; position: relative; z-index: 1; }
.current-temp { font-size: clamp(68px, 8vw, 104px); letter-spacing: -.095em; line-height: .8; font-weight: 500; white-space: nowrap; }
.current-temp sup { color: var(--aqua); font-size: .42em; letter-spacing: -.04em; vertical-align: top; position: relative; top: -8px; }
.current-temp small { color: var(--muted); font-family: var(--mono); font-size: .23em; letter-spacing: .08em; vertical-align: top; margin-left: 4px; position: relative; top: 7px; }
.current-icon { width: 75px; height: 75px; position: relative; display: grid; place-items: center; color: var(--amber); flex: 0 0 auto; }
.weather-glyph { font-size: 50px; line-height: 1; position: relative; z-index: 1; text-shadow: 0 0 26px rgba(255, 200, 117, .35); }
.orbit { position: absolute; display: block; border: 1px solid rgba(255, 200, 117, .36); border-radius: 50%; transform: rotate(-28deg); }
.orbit-one { inset: 4px -4px; }
.orbit-two { inset: 12px -12px; opacity: .5; transform: rotate(55deg); }
.current-place { min-width: 0; }
.current-place h2 { font-size: 19px; margin: 0 0 4px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.current-place p { color: var(--muted); margin: 0 0 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mono { color: var(--muted-2); font-family: var(--mono); font-size: 10px; letter-spacing: .03em; }
.metric-row { display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid var(--line); padding-top: 17px; position: relative; z-index: 1; }
.metric { border-right: 1px solid var(--line); padding-left: 15px; }
.metric:first-child { padding-left: 0; }
.metric:last-child { border: 0; }
.metric-label { display: block; color: var(--muted-2); margin-bottom: 5px; font-size: 9px; }
.metric strong { font-weight: 500; font-size: 16px; }
.metric strong small { color: var(--muted); font-family: var(--mono); font-size: 9px; font-weight: 400; }
.risk-card { background: linear-gradient(145deg, rgba(43, 39, 52, .9), rgba(20, 29, 40, .96)); }
.risk-status { color: var(--amber); background: var(--amber-dim); border: 1px solid rgba(255, 200, 117, .25); border-radius: 20px; padding: 4px 8px; font-family: var(--mono); font-size: 9px; letter-spacing: .07em; }
.risk-status.danger { color: var(--coral); background: var(--coral-dim); border-color: rgba(255, 118, 110, .25); }
.risk-status.stable { color: var(--aqua); background: var(--aqua-dim); border-color: rgba(101, 228, 222, .25); }
.risk-head { display: flex; justify-content: space-between; align-items: center; padding: 29px 0 18px; position: relative; z-index: 1; }
.risk-kicker { color: var(--muted); margin: 0 0 7px; }
.risk-value { color: var(--amber); font-size: 54px; line-height: 1; letter-spacing: -.08em; }
.risk-value small { color: var(--muted); font-family: var(--mono); font-size: 11px; letter-spacing: .02em; margin-left: 6px; }
.risk-ring { width: 74px; height: 74px; display: grid; place-items: center; border-radius: 50%; background: conic-gradient(var(--amber) 0deg, rgba(255, 200, 117, .13) 0deg); position: relative; }
.risk-ring::before { content: ''; position: absolute; inset: 6px; background: var(--surface); border-radius: 50%; }
.risk-ring span { position: relative; z-index: 1; color: var(--amber); font-family: var(--mono); font-size: 10px; }
.risk-ring.danger { background: conic-gradient(var(--coral) 0deg, rgba(255, 118, 110, .13) 0deg); }
.risk-ring.danger span { color: var(--coral); }
.risk-ring.stable { background: conic-gradient(var(--aqua) 0deg, rgba(101, 228, 222, .13) 0deg); }
.risk-ring.stable span { color: var(--aqua); }
.risk-meter { position: relative; z-index: 1; display: flex; height: 7px; border-radius: 10px; overflow: hidden; background: var(--aqua-dim); }
.risk-meter span { display: block; width: 0; background: var(--amber); transition: width .8s ease; }
.risk-meter i { width: 1px; background: var(--surface); z-index: 2; margin-left: 1px; }
.risk-message { color: var(--text); font-size: 12px; margin: 17px 0 20px; min-height: 37px; position: relative; z-index: 1; }
.severe-signals { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; position: relative; z-index: 1; margin: 0 0 15px; }
.signal-chip { display: flex; align-items: center; gap: 8px; min-width: 0; border: 1px solid var(--line); border-radius: 8px; background: rgba(101, 228, 222, .05); padding: 8px 9px; }
.signal-chip .signal-icon { color: var(--aqua); font-size: 15px; line-height: 1; }
.signal-chip small { display: block; color: var(--muted-2); font: 8px var(--mono); letter-spacing: .08em; }.signal-chip strong { display: block; color: var(--aqua); font-size: 11px; font-weight: 500; margin-top: 2px; }
.signal-chip.watch { background: var(--amber-dim); border-color: rgba(255, 200, 117, .22); }.signal-chip.watch .signal-icon, .signal-chip.watch strong { color: var(--amber); }
.signal-chip.danger { background: var(--coral-dim); border-color: rgba(255, 118, 110, .22); }.signal-chip.danger .signal-icon, .signal-chip.danger strong { color: var(--coral); }
.risk-foot { border-top: 1px solid var(--line); padding-top: 13px; display: flex; align-items: center; justify-content: space-between; gap: 8px; position: relative; z-index: 1; }
.risk-foot > span { color: var(--muted-2); font-family: var(--mono); font-size: 9px; }
.text-button { border: 0; padding: 0; background: transparent; color: var(--aqua); font-family: var(--mono); font-size: 9px; white-space: nowrap; }
.text-button:hover { text-decoration: underline; }
.section-block { padding-top: 54px; }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 20px; }
.section-heading.compact { margin-bottom: 18px; }
h2 { font-size: 24px; line-height: 1; letter-spacing: -.045em; font-weight: 500; margin: 0; }
.section-note { color: var(--muted-2); font-size: 9px; }
.segmented { display: flex; gap: 2px; border: 1px solid var(--line); border-radius: 7px; padding: 3px; }
.segment { border: 0; background: transparent; color: var(--muted-2); border-radius: 5px; padding: 7px 13px; font-family: var(--mono); font-size: 10px; }
.segment.active, .segment:hover { color: var(--ink); background: var(--aqua); }
.hourly-strip { display: grid; grid-template-columns: repeat(8, minmax(74px, 1fr)); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: thin; }
.hour-item { padding: 17px 11px 15px; border-right: 1px solid var(--line); min-width: 74px; transition: .2s; }
.hour-item:last-child { border-right: 0; }
.hour-item:hover, .hour-item.current { background: linear-gradient(180deg, rgba(101, 228, 222, .09), transparent); }
.hour-time { display: block; color: var(--muted-2); font-family: var(--mono); font-size: 10px; margin-bottom: 14px; }
.hour-item.current .hour-time { color: var(--aqua); }
.hour-icon { display: block; font-size: 23px; height: 34px; color: var(--amber); }
.hour-temp { display: block; font-size: 19px; margin-top: 7px; }
.hour-rain { display: block; color: var(--aqua); font-family: var(--mono); font-size: 9px; margin-top: 9px; }
.forecast-section { padding-top: 48px; }
.forecast-list { border-top: 1px solid var(--line); }
.forecast-row { display: grid; grid-template-columns: 1.25fr .9fr 1.5fr .8fr 1fr; align-items: center; gap: 15px; padding: 15px 12px; border-bottom: 1px solid var(--line); transition: .2s; }
.forecast-row:hover { background: rgba(101, 228, 222, .035); }
.forecast-day { display: flex; gap: 12px; align-items: center; }
.forecast-day strong { font-size: 13px; font-weight: 500; }
.forecast-day span { color: var(--muted-2); font-family: var(--mono); font-size: 9px; }
.forecast-weather { display: flex; gap: 8px; align-items: center; color: var(--amber); font-size: 20px; }
.forecast-weather em { font-style: normal; color: var(--muted); font-family: var(--mono); font-size: 10px; }
.forecast-temps { color: var(--text); font-size: 13px; }
.forecast-temps span { color: var(--muted); margin-left: 7px; }
.forecast-rain { color: var(--aqua); font-family: var(--mono); font-size: 10px; }
.forecast-wind { display: flex; align-items: center; gap: 7px; color: var(--muted); font-family: var(--mono); font-size: 10px; }
.wind-arrow { color: var(--aqua); font-size: 17px; display: inline-block; }
.split-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 16px; padding-top: 54px; }
.map-card, .alerts-card { min-height: 440px; padding: 24px 25px 21px; }
.map-live { color: var(--aqua); display: flex; gap: 8px; align-items: center; text-transform: uppercase; }
.map-tools { display: flex; align-items: center; gap: 13px; }
.map-mode { display: flex; gap: 2px; padding: 3px; border: 1px solid var(--line); border-radius: 7px; }
.map-mode-button { border: 0; border-radius: 5px; padding: 6px 8px; background: transparent; color: var(--muted-2); font: 9px var(--mono); }
.map-mode-button.active, .map-mode-button:hover { color: var(--ink); background: var(--aqua); }
.weather-map { height: 287px; position: relative; overflow: hidden; background: #0b2431; border: 1px solid var(--line); border-radius: 10px; }
.satellite-layer { position: absolute; inset: 0; opacity: 0; background: linear-gradient(rgba(5, 18, 26, .25), rgba(5, 18, 26, .25)); filter: saturate(.82) contrast(1.05); transition: opacity .35s ease; }
.weather-map.satellite-mode .satellite-layer { opacity: .82; background-image: linear-gradient(rgba(5, 18, 26, .25), rgba(5, 18, 26, .25)), url('https://cdn.star.nesdis.noaa.gov/GOES19/ABI/FD/GEOCOLOR/latest.jpg'); background-position: center; background-size: cover; }
.weather-map.satellite-mode .map-grid { opacity: .2; }.weather-map.satellite-mode .map-land { background: rgba(101, 228, 222, .12); }.weather-map.satellite-mode .map-radar { border-color: rgba(255, 200, 117, .7); }
.map-grid { position: absolute; inset: 0; opacity: .55; background-image: radial-gradient(rgba(101, 228, 222, .23) .7px, transparent .7px), linear-gradient(90deg, rgba(101, 228, 222, .06) 1px, transparent 1px), linear-gradient(rgba(101, 228, 222, .06) 1px, transparent 1px); background-size: 18px 18px, 72px 72px, 72px 72px; }
.weather-map::after { content: ''; position: absolute; inset: 0; background: linear-gradient(122deg, transparent 10%, rgba(101, 228, 222, .07) 50%, transparent 76%); pointer-events: none; }
.map-radar { position: absolute; border: 1px solid rgba(101, 228, 222, .32); border-radius: 50%; transform: translate(-50%, -50%); left: 53%; top: 51%; animation: radarPulse 4.8s infinite ease-out; }
.radar-a { width: 145px; height: 145px; }
.radar-b { width: 245px; height: 245px; opacity: .38; animation-delay: 1.6s; }
.map-route { height: 1px; position: absolute; background: rgba(101, 228, 222, .35); transform-origin: left center; }
.route-a { width: 68%; left: 6%; top: 60%; transform: rotate(-21deg); }
.route-b { width: 46%; left: 43%; top: 21%; transform: rotate(102deg); opacity: .5; }
.map-land { position: absolute; background: rgba(101, 228, 222, .055); border: 1px solid rgba(101, 228, 222, .25); filter: blur(.2px); }
.land-a { width: 42%; height: 55%; left: 10%; top: 18%; border-radius: 57% 43% 62% 38%; transform: rotate(-21deg); }
.land-b { width: 27%; height: 31%; left: 54%; top: 10%; border-radius: 48% 55% 36% 62%; transform: rotate(22deg); }
.land-c { width: 23%; height: 25%; right: 3%; bottom: 9%; border-radius: 42% 62% 55% 35%; transform: rotate(-12deg); }
.map-pin { position: absolute; left: 55%; top: 47%; width: 24px; height: 24px; border: 1px solid var(--aqua); border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: rgba(101, 228, 222, .15); display: grid; place-items: center; z-index: 2; box-shadow: 0 0 0 7px rgba(101, 228, 222, .08); }
.map-pin span { display: block; width: 6px; height: 6px; background: var(--aqua); border-radius: 50%; }
.map-pin b { position: absolute; left: 23px; top: 7px; color: var(--aqua); font: 600 9px var(--mono); transform: rotate(45deg); }
.storm-cluster { position: absolute; display: flex; gap: 2px; z-index: 2; }
.storm-cluster span { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 11px rgba(255, 200, 117, .6); }
.storm-cluster span:nth-child(2) { transform: translateY(-6px); }
.storm-cluster span:nth-child(3) { transform: translateY(3px); }
.cluster-a { top: 27%; left: 30%; }
.cluster-b { right: 16%; bottom: 28%; opacity: .65; }
.cluster-b span { background: var(--coral); box-shadow: 0 0 11px rgba(255, 118, 110, .6); }
.map-legend { position: absolute; left: 13px; bottom: 12px; display: flex; gap: 11px; color: var(--muted); font: 9px var(--mono); z-index: 3; }
.legend-dot { width: 6px; height: 6px; display: inline-block; border-radius: 50%; margin-right: 4px; }
.legend-dot.safe { background: var(--aqua); }.legend-dot.watch { background: var(--amber); }.legend-dot.danger { background: var(--coral); }
.map-coords { position: absolute; right: 13px; bottom: 12px; color: rgba(159, 206, 210, .55); z-index: 3; }
.satellite-credit { display: none; position: absolute; right: 13px; top: 12px; color: rgba(230, 241, 240, .7); font: 9px var(--mono); z-index: 3; background: rgba(8, 19, 30, .55); padding: 5px 7px; border-radius: 4px; }
.weather-map.satellite-mode .satellite-credit { display: block; }
.map-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 17px; }
.map-footer div { display: flex; align-items: center; gap: 13px; }.map-footer .section-tag { font-size: 9px; color: var(--aqua); }.map-footer strong { font-size: 12px; font-weight: 500; }
.alert-count { color: var(--aqua); }
.alert-list { min-height: 205px; border-top: 1px solid var(--line); }
.alert-item { padding: 14px 0; border-bottom: 1px solid var(--line); display: grid; grid-template-columns: 10px 1fr auto; gap: 11px; align-items: start; }
.alert-severity { width: 7px; height: 7px; border-radius: 50%; background: var(--aqua); margin-top: 5px; box-shadow: 0 0 0 4px var(--aqua-dim); }
.alert-severity.watch { background: var(--amber); box-shadow: 0 0 0 4px var(--amber-dim); }.alert-severity.danger { background: var(--coral); box-shadow: 0 0 0 4px var(--coral-dim); }
.alert-item strong { display: block; font-weight: 500; font-size: 12px; margin-bottom: 3px; }.alert-item p { color: var(--muted); font-size: 11px; margin: 0; }.alert-item time { color: var(--muted-2); font: 9px var(--mono); white-space: nowrap; }
.alert-empty { color: var(--muted); padding: 28px 0; font-size: 12px; line-height: 1.6; }.alert-empty strong { color: var(--aqua); font-weight: 500; }
.safety-note { display: flex; gap: 12px; margin-top: 16px; padding: 13px 14px; border-radius: 8px; background: rgba(101, 228, 222, .06); border: 1px solid rgba(101, 228, 222, .14); }.safety-icon { color: var(--aqua); font-size: 17px; }.safety-note strong { font-size: 11px; font-weight: 500; }.safety-note p { color: var(--muted); font-size: 10px; line-height: 1.5; margin: 3px 0 0; }
.timeline-section { padding-bottom: 50px; }.timeline { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); padding-top: 21px; gap: 0; }.timeline-item { position: relative; padding-right: 24px; min-height: 90px; }.timeline-item::before { content: ''; display: block; position: absolute; top: -26px; left: 0; width: 9px; height: 9px; border: 2px solid var(--aqua); background: var(--ink); border-radius: 50%; }.timeline-item:not(:last-child)::after { content: ''; position: absolute; top: -21px; left: 11px; right: 18px; height: 1px; background: var(--line); }.timeline-item.watch::before { border-color: var(--amber); }.timeline-item.danger::before { border-color: var(--coral); }.timeline-time { color: var(--aqua); font: 10px var(--mono); }.timeline-item.watch .timeline-time { color: var(--amber); }.timeline-item.danger .timeline-time { color: var(--coral); }.timeline-item strong { display: block; font-size: 12px; font-weight: 500; margin: 8px 0 4px; }.timeline-item p { color: var(--muted); font-size: 11px; line-height: 1.5; margin: 0; }
.footer { border-top: 1px solid var(--line); padding: 24px 0; display: flex; justify-content: space-between; gap: 20px; color: var(--muted-2); font: 9px var(--mono); }.footer > div { display: flex; align-items: center; gap: 11px; }.brand-footer { color: var(--text); letter-spacing: .1em; }.brand-footer em { color: var(--aqua); font-style: normal; }
.toast { position: fixed; right: 25px; bottom: 25px; z-index: 20; padding: 11px 15px; border: 1px solid var(--aqua); border-radius: 8px; background: var(--surface); color: var(--aqua); font: 11px var(--mono); transform: translateY(20px); opacity: 0; pointer-events: none; transition: .25s; }.toast.show { transform: translateY(0); opacity: 1; }
.info-dialog { width: min(430px, calc(100% - 30px)); border: 1px solid var(--line-strong); border-radius: 14px; color: var(--text); background: #112837; padding: 28px; box-shadow: 0 20px 80px rgba(0,0,0,.5); }.info-dialog::backdrop { background: rgba(2, 9, 15, .7); backdrop-filter: blur(4px); }.info-dialog h2 { margin: 0 0 14px; font-size: 27px; }.info-dialog > p:not(.eyebrow) { color: var(--muted); font-size: 12px; line-height: 1.65; }.dialog-close { position: absolute; top: 13px; right: 16px; border: 0; background: transparent; color: var(--muted); font-size: 25px; }.dialog-rule { display: flex; align-items: center; gap: 11px; padding: 8px 0; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }.risk-chip { min-width: 50px; border-radius: 4px; text-align: center; padding: 3px 5px; font: 10px var(--mono); }.risk-chip.stable { background: var(--aqua-dim); color: var(--aqua); }.risk-chip.watch { background: var(--amber-dim); color: var(--amber); }.risk-chip.danger { background: var(--coral-dim); color: var(--coral); }
.skeleton { background: linear-gradient(90deg, rgba(255,255,255,.04), rgba(255,255,255,.09), rgba(255,255,255,.04)); background-size: 200% 100%; animation: shimmer 1.4s infinite; border-radius: 4px; color: transparent !important; }
@keyframes livePulse { 0%,100% { box-shadow: 0 0 0 3px rgba(101,228,222,.08); } 50% { box-shadow: 0 0 0 6px rgba(101,228,222,.03); } }
@keyframes radarPulse { 0% { transform: translate(-50%,-50%) scale(.85); opacity: .55; } 65%,100% { transform: translate(-50%,-50%) scale(1.1); opacity: 0; } }
@keyframes shimmer { to { background-position: -200% 0; } }

@media (max-width: 1060px) { .content { padding-left: 32px; padding-right: 32px; }.dashboard-grid, .split-grid { grid-template-columns: 1fr; }.risk-card { min-height: auto; }.map-card, .alerts-card { min-height: auto; } }
@media (max-width: 760px) { .sidebar { position: fixed; top: auto; width: 100%; height: 66px; padding: 0 13px; flex-direction: row; align-items: center; border-right: 0; border-top: 1px solid var(--line); background: rgba(7,18,28,.96); }.brand { padding: 0 5px; }.brand-copy { display: none; }.sidebar-divider, .nav-label, .sidebar-bottom { display: none; }.main-nav { display: flex; margin-left: auto; gap: 5px; }.nav-item { width: 43px; height: 43px; justify-content: center; padding: 0; }.nav-item span:not(.nav-icon):not(.nav-badge) { display: none; }.nav-icon { font-size: 20px; }.nav-badge { display: none !important; }.nav-badge.has-alert { display: flex !important; position: absolute; margin: 0; transform: translate(15px,-14px); width: 14px; height: 14px; font-size: 8px; }.content { width: 100%; margin-left: 0; padding: 0 17px 88px; }.topbar { min-height: 70px; }.updated-pill { display: none; }.intro-row { display: block; padding: 40px 0 34px; }.intro-row h1 { font-size: 52px; }.search-wrap { margin-top: 30px; width: 100%; }.search-results { top: 74px; }.dashboard-grid { gap: 12px; }.current-card, .risk-card, .map-card, .alerts-card { padding: 19px 17px; }.current-main { gap: 12px; flex-wrap: wrap; padding: 28px 0 22px; }.current-temp { font-size: 72px; }.current-icon { width: 58px; height: 58px; }.weather-glyph { font-size: 38px; }.current-place { flex: 1; }.metric-row { grid-template-columns: repeat(2, 1fr); gap: 14px 0; }.metric:nth-child(2) { border: 0; }.metric:nth-child(n+3) { padding-top: 13px; border-top: 1px solid var(--line); }.metric:nth-child(3) { padding-left: 0; }.section-block, .split-grid { padding-top: 43px; }.section-heading { align-items: flex-start; flex-direction: column; }.section-heading .segmented, .section-heading .section-note { align-self: flex-end; }.hourly-strip { grid-template-columns: repeat(8, 75px); }.forecast-row { grid-template-columns: 1.25fr .7fr .85fr; gap: 8px; }.forecast-weather { justify-content: center; }.forecast-rain { text-align: right; }.forecast-wind { grid-column: 2 / 4; }.forecast-list .forecast-row:first-child .forecast-wind { display: none; }.forecast-list .forecast-row:first-child { grid-template-columns: 1.25fr .7fr .85fr; }.weather-map { height: 246px; }.map-legend { gap: 7px; font-size: 8px; }.map-coords { display: none; }.timeline { grid-template-columns: repeat(2, 1fr); gap: 33px 0; }.timeline-item:nth-child(2)::after { display: none; }.footer { flex-direction: column; gap: 13px; }.footer > div { flex-wrap: wrap; }.footer > div:last-child { line-height: 1.8; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; } }
