.rdp-root{--rdp-accent-color: blue;--rdp-accent-background-color: #f0f0ff;--rdp-day-height: 44px;--rdp-day-width: 44px;--rdp-day_button-border-radius: 100%;--rdp-day_button-border: 2px solid transparent;--rdp-day_button-height: 42px;--rdp-day_button-width: 42px;--rdp-selected-border: 2px solid var(--rdp-accent-color);--rdp-disabled-opacity: .5;--rdp-outside-opacity: .75;--rdp-today-color: var(--rdp-accent-color);--rdp-dropdown-gap: .5rem;--rdp-months-gap: 2rem;--rdp-nav_button-disabled-opacity: .5;--rdp-nav_button-height: 2.25rem;--rdp-nav_button-width: 2.25rem;--rdp-nav-height: 2.75rem;--rdp-range_middle-background-color: var(--rdp-accent-background-color);--rdp-range_middle-color: inherit;--rdp-range_start-color: white;--rdp-range_start-background: linear-gradient( var(--rdp-gradient-direction), transparent 50%, var(--rdp-range_middle-background-color) 50% );--rdp-range_start-date-background-color: var(--rdp-accent-color);--rdp-range_end-background: linear-gradient( var(--rdp-gradient-direction), var(--rdp-range_middle-background-color) 50%, transparent 50% );--rdp-range_end-color: white;--rdp-range_end-date-background-color: var(--rdp-accent-color);--rdp-week_number-border-radius: 100%;--rdp-week_number-border: 2px solid transparent;--rdp-week_number-height: var(--rdp-day-height);--rdp-week_number-opacity: .75;--rdp-week_number-width: var(--rdp-day-width);--rdp-weeknumber-text-align: center;--rdp-weekday-opacity: .75;--rdp-weekday-padding: .5rem 0rem;--rdp-weekday-text-align: center;--rdp-gradient-direction: 90deg;--rdp-animation_duration: .3s;--rdp-animation_timing: cubic-bezier(.4, 0, .2, 1)}.rdp-root[dir=rtl]{--rdp-gradient-direction: -90deg}.rdp-root[data-broadcast-calendar=true]{--rdp-outside-opacity: unset}.rdp-root{position:relative;box-sizing:border-box}.rdp-root *{box-sizing:border-box}.rdp-day{width:var(--rdp-day-width);height:var(--rdp-day-height);text-align:center}.rdp-day_button{background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;justify-content:center;align-items:center;display:flex;width:var(--rdp-day_button-width);height:var(--rdp-day_button-height);border:var(--rdp-day_button-border);border-radius:var(--rdp-day_button-border-radius)}.rdp-day_button:disabled{cursor:revert}.rdp-caption_label{z-index:1;position:relative;display:inline-flex;align-items:center;white-space:nowrap;border:0}.rdp-dropdown:focus-visible~.rdp-caption_label{outline:5px auto Highlight;outline:5px auto -webkit-focus-ring-color}.rdp-button_next,.rdp-button_previous{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;-moz-appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:center;position:relative;appearance:none;width:var(--rdp-nav_button-width);height:var(--rdp-nav_button-height)}.rdp-button_next:disabled,.rdp-button_next[aria-disabled=true],.rdp-button_previous:disabled,.rdp-button_previous[aria-disabled=true]{cursor:revert;opacity:var(--rdp-nav_button-disabled-opacity)}.rdp-chevron{display:inline-block;fill:var(--rdp-accent-color)}.rdp-root[dir=rtl] .rdp-nav .rdp-chevron{transform:rotate(180deg);transform-origin:50%}.rdp-dropdowns{position:relative;display:inline-flex;align-items:center;gap:var(--rdp-dropdown-gap)}.rdp-dropdown{z-index:2;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:0;width:100%;margin:0;padding:0;cursor:inherit;border:none;line-height:inherit}.rdp-dropdown_root{position:relative;display:inline-flex;align-items:center}.rdp-dropdown_root[data-disabled=true] .rdp-chevron{opacity:var(--rdp-disabled-opacity)}.rdp-month_caption{display:flex;align-content:center;height:var(--rdp-nav-height);font-weight:700;font-size:large}.rdp-root[data-nav-layout=around] .rdp-month,.rdp-root[data-nav-layout=after] .rdp-month{position:relative}.rdp-root[data-nav-layout=around] .rdp-month_caption{justify-content:center;margin-inline-start:var(--rdp-nav_button-width);margin-inline-end:var(--rdp-nav_button-width);position:relative}.rdp-root[data-nav-layout=around] .rdp-button_previous{position:absolute;inset-inline-start:0;top:0;height:var(--rdp-nav-height);display:inline-flex}.rdp-root[data-nav-layout=around] .rdp-button_next{position:absolute;inset-inline-end:0;top:0;height:var(--rdp-nav-height);display:inline-flex;justify-content:center}.rdp-months{position:relative;display:flex;flex-wrap:wrap;gap:var(--rdp-months-gap);max-width:fit-content}.rdp-month_grid{border-collapse:collapse}.rdp-nav{position:absolute;inset-block-start:0;inset-inline-end:0;display:flex;align-items:center;height:var(--rdp-nav-height)}.rdp-weekday{opacity:var(--rdp-weekday-opacity);padding:var(--rdp-weekday-padding);font-weight:500;font-size:smaller;text-align:var(--rdp-weekday-text-align);text-transform:var(--rdp-weekday-text-transform)}.rdp-week_number{opacity:var(--rdp-week_number-opacity);font-weight:400;font-size:small;height:var(--rdp-week_number-height);width:var(--rdp-week_number-width);border:var(--rdp-week_number-border);border-radius:var(--rdp-week_number-border-radius);text-align:var(--rdp-weeknumber-text-align)}.rdp-today:not(.rdp-outside){color:var(--rdp-today-color)}.rdp-selected{font-weight:700;font-size:large}.rdp-selected .rdp-day_button{border:var(--rdp-selected-border)}.rdp-outside{opacity:var(--rdp-outside-opacity)}.rdp-disabled:not(.rdp-selected){opacity:var(--rdp-disabled-opacity)}.rdp-hidden{visibility:hidden;color:var(--rdp-range_start-color)}.rdp-range_start{background:var(--rdp-range_start-background)}.rdp-range_start .rdp-day_button{background-color:var(--rdp-range_start-date-background-color);color:var(--rdp-range_start-color)}.rdp-range_middle{background-color:var(--rdp-range_middle-background-color)}.rdp-range_middle .rdp-day_button{border:unset;border-radius:unset;color:var(--rdp-range_middle-color)}.rdp-range_end{background:var(--rdp-range_end-background);color:var(--rdp-range_end-color)}.rdp-range_end .rdp-day_button{color:var(--rdp-range_start-color);background-color:var(--rdp-range_end-date-background-color)}.rdp-range_start.rdp-range_end{background:revert}.rdp-focusable{cursor:pointer}@keyframes rdp-slide_in_left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes rdp-slide_in_right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rdp-slide_out_left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes rdp-slide_out_right{0%{transform:translate(0)}to{transform:translate(100%)}}.rdp-weeks_before_enter{animation:rdp-slide_in_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-weeks_before_exit{animation:rdp-slide_out_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-weeks_after_enter{animation:rdp-slide_in_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-weeks_after_exit{animation:rdp-slide_out_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_after_enter{animation:rdp-slide_in_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_before_exit{animation:rdp-slide_out_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_before_enter{animation:rdp-slide_in_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_after_exit{animation:rdp-slide_out_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}@keyframes rdp-fade_in{0%{opacity:0}to{opacity:1}}@keyframes rdp-fade_out{0%{opacity:1}to{opacity:0}}.rdp-caption_after_enter{animation:rdp-fade_in var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-caption_after_exit{animation:rdp-fade_out var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-caption_before_enter{animation:rdp-fade_in var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-caption_before_exit{animation:rdp-fade_out var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:#082f49;color:#f4f6f8;-webkit-text-size-adjust:100%}.app{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;height:100%;min-height:0;position:relative;overflow:hidden}@media (min-width: 769px){.app.panel-open{grid-template-columns:1fr 380px}}.map-pane{position:relative;min-height:0;display:flex;flex-direction:column;overflow:hidden}.map-container{position:relative;flex:1;width:100%;min-height:0;height:100%}.loading-bar-track{position:absolute;top:0;left:0;right:0;height:4px;background:#ffffff1a;overflow:hidden;pointer-events:none}.loading-bar-top{position:absolute;top:0;left:0;right:0;height:4px;z-index:1;pointer-events:none}.loading-bar-fill{height:100%;background:linear-gradient(90deg,#0ea5e9,#38bdf8);border-radius:0 2px 2px 0;transition:width .25s ease-out}.loading-bar-indeterminate{width:30%!important;animation:indeterminate-slide 1.4s ease-in-out infinite}@keyframes indeterminate-slide{0%{transform:translate(-100%)}to{transform:translate(430%)}}.spinner{width:36px;height:36px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:#38bdf8;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.header{position:absolute;top:12px;left:12px;background:#082f49d9;padding:8px 12px;border-radius:10px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);z-index:20;max-width:calc(100% - 72px);display:flex;align-items:center;gap:10px}.header-logo{width:28px;height:28px;border-radius:6px;flex-shrink:0}.header-text h1{margin:0;font-size:14px;font-weight:700;letter-spacing:-.01em}.header-text h1 .brand-accent{color:#38bdf8}.header .small{display:none}@media (min-width: 769px){.header{padding:10px 14px}.header-logo{width:32px;height:32px}.header-text h1{font-size:16px;margin-bottom:2px}.header .small{display:block}}.panel-toggle-btn{position:absolute;top:12px;right:12px;z-index:50;width:44px;height:44px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#082f49d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#e0f2fe;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px #0000004d;transition:background .15s,transform .15s;-webkit-tap-highlight-color:transparent}.panel-toggle-btn:hover{background:#0c4a6ef2}.panel-toggle-btn:active{transform:scale(.94)}.panel-backdrop{display:none}.panel-backdrop.visible{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:99;animation:fadeIn .2s ease;-webkit-tap-highlight-color:transparent}@media (min-width: 769px){.panel-backdrop.visible{display:none}}.side-panel{background:#0c4a6e;padding:0;display:flex;flex-direction:column;gap:0;overflow:hidden;border-left:1px solid rgba(255,255,255,.05);position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;transform:translate(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);-webkit-overflow-scrolling:touch}.side-panel.open{transform:translate(0)}.side-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 12px;border-bottom:1px solid rgba(255,255,255,.05);flex-shrink:0;background:#0c4a6e}.side-panel-header h2{margin:0;font-size:17px;font-weight:700;color:#e0f2fe}.side-panel-close{width:40px;height:40px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#075985;color:#bae6fd;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;transition:background .15s}.side-panel-close:hover,.side-panel-close:active{background:#0284c7;color:#e0f2fe}.side-panel-body{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:12px 16px 40px;display:flex;flex-direction:column;gap:12px}@media (min-width: 769px){.side-panel{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:auto;transform:none;transition:none;display:none}.app.panel-open .side-panel{display:flex}.side-panel-header{display:none}.side-panel-body{padding:16px;gap:16px}}.panel-layer-toggle{display:flex;gap:4px;padding:0 0 8px}.panel-layer-btn{flex:1;padding:6px 0;font-size:12px;font-weight:600;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0a;color:#94a3b8;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.panel-layer-btn:hover{background:#ffffff14;color:#e0f2fe}.panel-layer-btn.active{background:#0369a1;border-color:#0ea5e9;color:#fff}.panel-card{background:#ffffff08;border-radius:12px;padding:12px;border:1px solid rgba(255,255,255,.05)}.panel-title{font-size:11px;font-weight:700;color:#38bdf8;margin-bottom:8px;text-transform:uppercase;letter-spacing:.1em}.controls{display:flex;gap:8px;flex-wrap:wrap}.control-btn{padding:10px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#075985;color:#e0f2fe;cursor:pointer;font-size:13px;min-height:44px;-webkit-tap-highlight-color:transparent;transition:background .15s}.control-btn:active{background:#0284c7}.control-btn.active{background:#0284c7;border-color:#0ea5e9}.station-list{display:grid;gap:2px}.station-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.station-row[role=button]{cursor:pointer}.station-list .station-row{padding:12px;border-radius:10px;margin:0 -4px;-webkit-tap-highlight-color:transparent;transition:background .12s}.station-row[role=button]:hover{background:#ffffff0f}.station-row[role=button]:active{background:#ffffff1a}.station-row[role=button].selected{background:#0ea5e926;border:1px solid rgba(14,165,233,.3)}.station-row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.see-on-map-btn{background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:3px 6px;font-size:14px;line-height:1;cursor:pointer;transition:background .12s;color:inherit}.see-on-map-btn:hover{background:#ffffff2e}.see-on-map-btn:active{background:#ffffff40}.station-row.staleness-fresh{opacity:1}.station-row.staleness-old .small,.station-row.staleness-old .badge{opacity:.85;color:#7dd3fc}.station-row.staleness-stale .small,.station-row.staleness-stale .badge{opacity:.65;color:#bae6fd}.station-row.staleness-missing .small,.station-row.staleness-missing .badge{opacity:.5;color:#7dd3fc}.badge{background:#0ea5e926;padding:5px 10px;border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap;flex-shrink:0}.metric-tabs{display:flex;gap:6px;flex-wrap:wrap}.metric-tab{padding:8px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:transparent;color:#e0f2fe;cursor:pointer;font-size:13px;min-height:40px;-webkit-tap-highlight-color:transparent;transition:background .12s}.metric-tab:active,.metric-tab.active{background:#0284c7}.history-controls{margin-top:10px;display:flex;flex-direction:column;gap:8px}.date-input{background:#ffffff08;border:1px solid rgba(255,255,255,.1);color:#e0f2fe;border-radius:8px;padding:6px 8px;font-size:12px}.station-link{color:#38bdf8;font-size:13px;text-decoration:none}.station-link:hover{text-decoration:underline}.chart{margin-top:10px;background:#ffffff08;border-radius:10px;border:1px solid rgba(255,255,255,.08);padding:8px;height:140px}.chart-rain-buckets{position:relative}.rain-bar-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;background:#075985;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;box-shadow:0 4px 12px #0006;font-size:12px;color:#e0f2fe;white-space:nowrap;z-index:10;pointer-events:none}.rain-bar-tooltip-time{display:block;font-weight:600;margin-bottom:2px}.rain-bar-tooltip-value{color:#38bdf8;font-weight:600}.chart-bars{display:flex;align-items:flex-end;height:100%;gap:2px}.chart-bar{flex:1;background:#10b981;border-radius:4px 4px 0 0;opacity:.85}.chart-bar:hover{opacity:1}.measurement-list{display:grid;gap:6px;font-size:12px;color:#bae6fd;margin-top:8px;max-height:200px;overflow:auto}.small{font-size:12px;color:#7dd3fc;overflow:hidden;text-overflow:ellipsis}.station-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000080;display:flex;align-items:flex-end;justify-content:center;padding:0;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.station-modal{background:#0c4a6e;border-radius:16px 16px 0 0;border:1px solid rgba(255,255,255,.08);border-bottom:none;box-shadow:0 -8px 40px #0006;width:100%;max-height:85vh;overflow:hidden;display:flex;flex-direction:column;animation:slideUp .3s cubic-bezier(.32,.72,0,1)}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.station-modal-header{padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.station-modal-title{margin:0;font-size:1.1rem;font-weight:600;color:#e0f2fe}.station-modal-close{padding:8px 14px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#075985;color:#e0f2fe;cursor:pointer;font-size:14px;min-height:40px;-webkit-tap-highlight-color:transparent}.station-modal-close:hover{background:#0284c7}.station-modal-body{padding:16px;overflow:auto;flex:1;min-height:0;-webkit-overflow-scrolling:touch}.station-modal-body .panel-card{border:none;padding:0;background:transparent}@media (min-width: 769px){.station-modal-backdrop{align-items:center;padding:24px}.station-modal{max-width:560px;max-height:90vh;border-radius:16px;border-bottom:1px solid rgba(255,255,255,.08)}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}}.modal{position:fixed;right:24px;bottom:24px;width:320px;background:#0c4a6e;border-radius:12px;border:1px solid rgba(255,255,255,.08);padding:12px;z-index:5}.modal textarea{width:100%;min-height:120px;background:#ffffff08;border:1px solid rgba(255,255,255,.1);color:#e0f2fe;border-radius:8px;padding:8px}.empty{color:#fb923c;font-size:12px}.error{color:#fb923c}.map-marker-label{text-shadow:-1px -1px 3px rgba(0,0,0,.9),1px -1px 3px rgba(0,0,0,.9),-1px 1px 3px rgba(0,0,0,.9),1px 1px 3px rgba(0,0,0,.9),0 0 6px rgba(0,0,0,.7)}.map-key{position:absolute;top:80px;left:50%;transform:translate(-50%);z-index:10;padding:5px 14px;background:#082f49e0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:10px;border:1px solid rgba(220,220,220,.2);color:#dcdcdc;font-size:12px;font-weight:600;letter-spacing:.3px;white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.5)}.layer-bar{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:10;display:flex;gap:4px;padding:6px 10px;background:#082f49e6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:14px;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 20px #00000059}.layer-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;border:none;border-radius:10px;background:transparent;cursor:pointer;font-size:11px;color:#7dd3fc;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent;min-height:44px;justify-content:center}.layer-btn:hover{background:#0ea5e926;color:#e0f2fe}.layer-btn:active{background:#0ea5e940}.layer-btn.active{background:#0ea5e933;color:#38bdf8}.layer-btn .layer-btn-icon{font-size:18px;line-height:1}.debug-panel-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:none;color:inherit;cursor:pointer;font:inherit;padding:0;margin-bottom:8px;text-align:left}.debug-panel-chevron{font-size:10px;color:#7dd3fc}.debug-summary{margin-bottom:4px}.debug-entries{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08)}.debug-entries-title{margin-bottom:8px;text-transform:uppercase;letter-spacing:.06em}.debug-list{list-style:none;margin:0;padding:0;font-size:11px;font-family:ui-monospace,monospace;max-height:200px;overflow:auto}.debug-entry{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.05)}.debug-status{min-width:28px;font-weight:600}.debug-status.ok{color:#34d399}.debug-status.error{color:#fb923c}.debug-method{color:#38bdf8}.debug-url{color:#7dd3fc;overflow:hidden;text-overflow:ellipsis;max-width:180px}.debug-duration{color:#bae6fd}.debug-error{color:#fb923c;font-size:10px;flex:1 1 100%}.chart-legend{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:8px;font-size:12px;color:#bae6fd}.chart-legend span{display:inline-flex;align-items:center;gap:4px}.chart-legend .dot{width:8px;height:8px;border-radius:50%}.station-detail-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.station-detail-units{font-size:12px;font-weight:600;color:#38bdf8;margin-top:6px;margin-bottom:4px}.station-detail-layout{display:flex;flex-direction:column;gap:10px}.current-conditions-box{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px 14px}.current-conditions-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:10px}.current-conditions-title{font-size:13px;font-weight:700;color:#e0f2fe}.current-conditions-timestamp{font-size:11px;color:#7dd3fc;font-weight:400}.current-conditions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px}.condition-cell{display:flex;flex-direction:column;gap:2px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px 10px}.condition-label{font-size:10px;font-weight:600;color:#7dd3fc;text-transform:uppercase;letter-spacing:.4px}.condition-value{font-size:16px;font-weight:700;color:#f0f9ff;line-height:1.2}.condition-unit{font-size:11px;font-weight:500;color:#7dd3fc}.current-conditions-box .station-link{display:inline-block;margin-top:10px;font-size:11px}.history-section-box{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px 14px}.history-section-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.station-detail-all-values{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px}.station-value-item{display:flex;align-items:center;gap:5px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:5px 10px;font-size:12px}.station-value-label{color:#7dd3fc;font-weight:500}.station-value-number{color:#e0f2fe;font-weight:600}.series-toggles{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.series-toggle{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:transparent;color:#bae6fd;cursor:pointer;font-size:12px;transition:background .12s,border-color .12s;-webkit-tap-highlight-color:transparent}.series-toggle:hover:not(.disabled){background:#ffffff0f}.series-toggle.active{background:#0ea5e91f;border-color:#0ea5e94d;color:#e0f2fe}.series-toggle.disabled{opacity:.35;cursor:not-allowed}.series-toggle-dot{width:8px;height:8px;border-radius:50%;border:2px solid;flex-shrink:0}.chart-tooltip{background:#075985;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:10px 12px;box-shadow:0 4px 12px #0006;min-width:160px}.chart-tooltip-time{font-weight:600;color:#e0f2fe;margin-bottom:8px;font-size:12px}.chart-tooltip-row{display:flex;justify-content:space-between;gap:16px;font-size:12px;color:#bae6fd}.chart-tooltip-value{font-weight:600;color:#f4f6f8}.chart-container-recharts{height:220px;margin-top:8px;background:#ffffff08;border-radius:8px;border:1px solid rgba(255,255,255,.08)}.desktop-only{display:none}@media (min-width: 769px){.desktop-only{display:block}.layer-bar{bottom:auto;top:12px}}.view-mode-toggle{display:flex;justify-content:center;gap:0;margin-bottom:10px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:3px}.view-mode-btn{flex:1;padding:7px 0;border:none;border-radius:8px;background:transparent;color:#7dd3fc;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s ease;letter-spacing:.02em}.view-mode-btn:hover:not(.active){color:#bae6fd;background:#ffffff0a}.view-mode-btn.active{background:#075985;color:#e0f2fe;box-shadow:0 1px 4px #0000004d}.historical-header-box{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px;margin-bottom:8px;text-align:center}.historical-header-title{display:block;font-size:13px;font-weight:700;color:#e0f2fe}.historical-header-sub{display:block;font-size:11px;color:#7dd3fc;margin-top:2px}.historical-picker-box{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px;margin-bottom:8px}.historical-results-box{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px}.historical-rain-picker-row{display:flex;justify-content:center}.historical-rain-calendar.rdp-root{--rdp-accent-color: #0ea5e9;--rdp-accent-background-color: rgba(14, 165, 233, .15);--rdp-day-height: 34px;--rdp-day-width: 34px;--rdp-day_button-height: 32px;--rdp-day_button-width: 32px;--rdp-day_button-border-radius: 8px;--rdp-selected-border: 2px solid #38bdf8;--rdp-today-color: #38bdf8;--rdp-outside-opacity: .3;--rdp-disabled-opacity: .25;--rdp-range_middle-background-color: rgba(14, 165, 233, .12);--rdp-range_middle-color: #e0f2fe;--rdp-range_start-color: #fff;--rdp-range_start-date-background-color: #0284c7;--rdp-range_end-color: #fff;--rdp-range_end-date-background-color: #0284c7;--rdp-nav_button-height: 2rem;--rdp-nav_button-width: 2rem;--rdp-nav-height: 2.5rem;color:#e0f2fe;font-size:13px;max-width:100%}.historical-rain-calendar .rdp-month_caption{font-size:14px;font-weight:700;color:#e0f2fe}.historical-rain-calendar .rdp-weekday{color:#7dd3fc;font-size:11px;font-weight:600;text-transform:uppercase}.historical-rain-calendar .rdp-day_button{font-size:12px;color:#bae6fd;transition:background .15s ease}.historical-rain-calendar .rdp-day_button:hover:not(:disabled){background:#0ea5e92e}.historical-rain-calendar .rdp-chevron{fill:#38bdf8}.historical-rain-calendar .rdp-button_next,.historical-rain-calendar .rdp-button_previous{color:#38bdf8}.historical-rain-calendar .rdp-button_next:hover,.historical-rain-calendar .rdp-button_previous:hover{background:#0ea5e91f;border-radius:8px}.historical-rain-range-label{text-align:center;font-size:12px;color:#bae6fd;margin:6px 0 2px}.historical-rain-range-span{color:#7dd3fc;margin-left:4px}.historical-rain-fetch{display:block;width:100%;margin-top:8px;padding:9px 0;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#075985;color:#e0f2fe;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s ease}.historical-rain-fetch:hover:not(.disabled){background:#0284c7}.historical-rain-fetch:active:not(.disabled){background:#0ea5e9}.historical-rain-fetch.disabled{opacity:.4;cursor:not-allowed}.historical-rain-loading{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 0;color:#7dd3fc;font-size:13px}.historical-rain-loading .spinner{width:28px;height:28px}.historical-refining{display:flex;align-items:center;gap:8px;padding:6px 12px;margin-bottom:8px;background:#38bdf814;border:1px solid rgba(56,189,248,.15);border-radius:8px;color:#7dd3fc;font-size:12px}.spinner-small{width:14px!important;height:14px!important;border-width:2px!important}.partial-badge{display:inline-block;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#fbbf24;background:#fbbf241f;border:1px solid rgba(251,191,36,.25);border-radius:4px;vertical-align:middle}.historical-rain-results{margin-top:10px}.historical-rain-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.historical-rain-stat{flex:1;min-width:80px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:2px}.historical-rain-stat-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#7dd3fc}.historical-rain-stat-value{font-size:14px;font-weight:700;color:#e0f2fe}.admin-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:#7dd3fc;font-size:16px}.admin-login-wrapper{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#041c2c,#082f49,#0c3d5f);padding:24px}.admin-login-form{background:#0c4a6e99;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:40px 36px;width:100%;max-width:380px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 8px 40px #0000004d}.admin-login-form h1{margin:0 0 4px;font-size:24px;font-weight:700;color:#e0f2fe}.admin-login-subtitle{margin:0 0 24px;font-size:14px;color:#7dd3fc}.admin-login-error{background:#ef444426;border:1px solid rgba(239,68,68,.3);color:#fca5a5;padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px}.admin-login-form label{display:block;font-size:13px;font-weight:600;color:#bae6fd;margin-bottom:16px}.admin-login-form input{display:block;width:100%;margin-top:6px;padding:10px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#ffffff0d;color:#e0f2fe;font-size:15px;outline:none;transition:border-color .15s}.admin-login-form input:focus{border-color:#38bdf8}.admin-login-form button{width:100%;padding:12px;border-radius:10px;border:none;background:#0284c7;color:#e0f2fe;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s;margin-top:8px}.admin-login-form button:hover{background:#0ea5e9}.admin-login-form button:disabled{opacity:.6;cursor:not-allowed}.admin-dashboard{height:100%;min-height:100vh;background:#041c2c;color:#e0f2fe;overflow-y:auto;overflow-x:hidden}.admin-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:#082f49cc;border-bottom:1px solid rgba(255,255,255,.06);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:0;z-index:50}.admin-header-left{display:flex;align-items:center;gap:12px}.admin-header-left h1{margin:0;font-size:18px;font-weight:700}.admin-header-badge{background:#0ea5e933;color:#38bdf8;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.admin-header-right{display:flex;gap:8px}.admin-refresh-btn,.admin-logout-btn{padding:8px 16px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#075985;color:#e0f2fe;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.admin-refresh-btn:hover,.admin-logout-btn:hover{background:#0284c7}.admin-error-banner{background:#ef44441f;border-bottom:1px solid rgba(239,68,68,.25);color:#fca5a5;padding:10px 24px;font-size:13px}.admin-tabs{display:flex;gap:2px;padding:0 24px;background:#082f49d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.06);overflow-x:auto;position:sticky;top:57px;z-index:49}.admin-tab{padding:12px 20px;border:none;background:transparent;color:#7dd3fc;font-size:14px;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap}.admin-tab:hover{color:#e0f2fe}.admin-tab.active{color:#38bdf8;border-bottom-color:#38bdf8}.admin-main{padding:24px;max-width:1200px;margin:0 auto}.admin-section{scroll-margin-top:120px;padding-bottom:8px}.admin-section+.admin-section{padding-top:8px;border-top:1px solid rgba(255,255,255,.04)}.admin-section-title{font-size:18px;font-weight:700;color:#e0f2fe;margin:0 0 16px}.admin-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-bottom:24px}.admin-card{background:#0c4a6e66;border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:20px 16px;text-align:center;transition:background .15s,border-color .15s,transform .12s}.admin-card-clickable{cursor:pointer}.admin-card-clickable:hover{background:#0c4a6e99;border-color:#38bdf840;transform:translateY(-2px)}.admin-card-clickable:active{transform:translateY(0)}.admin-card-accent{border-color:#0ea5e94d;background:#0ea5e91a}.admin-card-accent.admin-card-clickable:hover{background:#0ea5e92e;border-color:#38bdf866}.admin-card-value{font-size:28px;font-weight:700;color:#e0f2fe;line-height:1.1;margin-bottom:6px}.admin-card-accent .admin-card-value{color:#38bdf8}.admin-card-label{font-size:12px;font-weight:600;color:#7dd3fc;text-transform:uppercase;letter-spacing:.06em}.admin-card-hint{font-size:10px;color:#38bdf8;margin-top:8px;opacity:0;transition:opacity .15s}.admin-card-clickable:hover .admin-card-hint{opacity:1}.admin-chart-section{background:#0c4a6e4d;border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:20px;margin-bottom:24px}.admin-chart-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.admin-chart-header h2{margin:0;font-size:16px;font-weight:600}.admin-chart-controls{display:flex;gap:8px}.admin-chart-controls select{padding:6px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:#ffffff0d;color:#e0f2fe;font-size:13px;cursor:pointer}.admin-chart-container{width:100%}.admin-two-col{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 769px){.admin-two-col{grid-template-columns:1fr 1fr}}.admin-panel{background:#0c4a6e4d;border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:20px}.admin-panel h2,.admin-panel h3{margin:0 0 16px;font-size:15px;font-weight:600;color:#e0f2fe}.admin-panel.admin-full{margin-bottom:24px}.admin-empty{color:#64748b;font-size:14px;text-align:center;padding:32px 0}.admin-station-bars{display:flex;flex-direction:column;gap:8px}.admin-station-bar-row{display:flex;align-items:center;gap:10px}.admin-station-id{font-size:12px;font-family:ui-monospace,monospace;color:#bae6fd;min-width:70px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-bar-track{flex:1;height:8px;background:#ffffff0f;border-radius:4px;overflow:hidden}.admin-bar-fill{height:100%;background:linear-gradient(90deg,#0ea5e9,#38bdf8);border-radius:4px;transition:width .4s ease}.admin-bar-count{font-size:12px;font-weight:600;color:#7dd3fc;min-width:28px;text-align:right}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;padding:10px 12px;font-size:11px;font-weight:700;color:#38bdf8;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid rgba(255,255,255,.08);white-space:nowrap}.admin-table td{padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.04);color:#bae6fd;vertical-align:top}.admin-table tbody tr:hover{background:#ffffff08}.admin-table-clickable .admin-visitor-row{cursor:pointer;transition:background .12s}.admin-table-clickable .admin-visitor-row:hover{background:#0ea5e914}.admin-table-clickable .admin-visitor-row.expanded{background:#0ea5e91a;border-bottom-color:transparent}.admin-expand-cell{width:24px;color:#38bdf8;font-size:12px;text-align:center;-webkit-user-select:none;user-select:none}.admin-panel-hint{font-size:12px;color:#64748b;margin:-8px 0 12px}.admin-visitor-detail-row td{padding:0 12px 16px;border-bottom:1px solid rgba(14,165,233,.15);background:#0ea5e90a}.admin-visitor-detail-row:hover{background:#0ea5e90a!important}.admin-visitor-detail-loading,.admin-visitor-detail-empty{padding:16px 0;text-align:center;color:#64748b;font-size:13px}.admin-visitor-sessions{display:flex;flex-direction:column;gap:10px;padding-top:12px}.admin-visitor-session{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:10px 12px}.admin-visitor-session-header{display:flex;align-items:center;gap:12px;margin-bottom:8px;font-size:12px}.admin-visitor-session-time{font-weight:600;color:#e0f2fe;font-family:ui-monospace,monospace}.admin-visitor-session-duration{color:#7dd3fc}.admin-visitor-session-pages{color:#64748b}.admin-visitor-station-list{display:flex;flex-wrap:wrap;gap:6px}.admin-visitor-station-tag{display:inline-flex;align-items:center;gap:6px;background:#0ea5e91f;border:1px solid rgba(14,165,233,.2);border-radius:6px;padding:4px 10px;font-size:12px}.admin-visitor-station-name{color:#e0f2fe;font-weight:600}.admin-visitor-station-id{color:#64748b;font-family:ui-monospace,monospace;font-size:10px}.admin-table .mono{font-family:ui-monospace,monospace;font-size:12px}.admin-stations-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-insights-grid{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 769px){.admin-insights-grid{grid-template-columns:1fr 1fr}}.admin-peak-hours-panel{grid-column:1 / -1}.admin-heatmap{display:flex;flex-direction:column;gap:2px;overflow-x:auto}.admin-heatmap-hours{display:flex;gap:2px}.admin-heatmap-corner{width:36px;flex-shrink:0}.admin-heatmap-hour-label{flex:1;min-width:18px;text-align:center;font-size:9px;color:#64748b;font-weight:600}.admin-heatmap-row{display:flex;gap:2px}.admin-heatmap-day-label{width:36px;flex-shrink:0;font-size:11px;font-weight:600;color:#7dd3fc;display:flex;align-items:center}.admin-heatmap-cell{flex:1;min-width:18px;aspect-ratio:1;border-radius:3px;transition:background-color .2s;cursor:default}.admin-heatmap-cell:hover{outline:1px solid rgba(255,255,255,.3);outline-offset:-1px}.admin-activity-feed{display:flex;flex-direction:column;gap:2px;max-height:500px;overflow-y:auto}.admin-activity-item{display:grid;grid-template-columns:100px 1fr;grid-template-rows:auto auto;gap:2px 12px;padding:10px 12px;border-radius:8px;transition:background .12s;font-size:13px}.admin-activity-item:hover{background:#ffffff08}.admin-activity-time{color:#64748b;font-size:11px;font-family:ui-monospace,monospace;grid-row:1 / 3;display:flex;align-items:center}.admin-activity-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.admin-activity-method{font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;font-family:ui-monospace,monospace}.admin-activity-method.GET{color:#34d399;background:#34d3991f}.admin-activity-method.POST{color:#38bdf8;background:#38bdf81f}.admin-activity-method.PUT,.admin-activity-method.PATCH{color:#facc15;background:#facc151f}.admin-activity-method.DELETE{color:#f87171;background:#f871711f}.admin-activity-path{font-family:ui-monospace,monospace;font-size:12px;color:#bae6fd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.admin-activity-status{font-size:11px;font-weight:700;font-family:ui-monospace,monospace}.admin-activity-status.ok{color:#34d399}.admin-activity-status.error{color:#f87171}.admin-activity-duration{font-size:11px;color:#64748b}.admin-activity-meta{display:flex;gap:12px;font-size:11px;color:#475569}.admin-map-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:12px}.admin-map-header h2{margin:0}.admin-map-legend{display:flex;align-items:center;gap:16px;font-size:12px;color:#94a3b8}.admin-map-legend-item{display:flex;align-items:center;gap:5px}.admin-map-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.admin-map-dot-active{background:#34d399;box-shadow:0 0 6px #34d39980}.admin-map-dot-past{background:#38bdf8}.admin-map-legend-count{color:#64748b;font-size:11px}.admin-map-container{width:100%;height:480px;border-radius:10px;overflow:hidden;position:relative;background:#0a1929}.admin-map-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#475569;font-size:14px;z-index:500;pointer-events:none}.admin-map-popup{font-family:Inter,system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.5;color:#1e293b}.admin-map-popup strong{font-size:14px}.admin-map-popup .mono{font-family:ui-monospace,monospace;font-size:11px;color:#475569}.admin-cluster-wrapper{background:transparent!important;border:none!important}.admin-cluster-icon{display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;font-size:13px;color:#fff;box-shadow:0 2px 8px #0006;transition:transform .15s}.admin-cluster-icon:hover{transform:scale(1.15)}.admin-cluster-small{width:36px;height:36px;background:#38bdf8d9;border:2px solid rgba(56,189,248,.4)}.admin-cluster-medium{width:44px;height:44px;background:#a78bfad9;border:2px solid rgba(167,139,250,.4);font-size:14px}.admin-cluster-large{width:52px;height:52px;background:#fb923cd9;border:2px solid rgba(251,146,60,.4);font-size:15px}.leaflet-container{background:#0a1929}.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large,.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:transparent!important}@media (max-width: 768px){.admin-main{padding:16px}.admin-cards{grid-template-columns:repeat(2,1fr)}.admin-header{padding:12px 16px}.admin-header-left h1{font-size:15px}.admin-tabs{padding:0 16px}.admin-panel{overflow-x:auto}.admin-activity-item{grid-template-columns:1fr;grid-template-rows:auto auto auto}.admin-activity-time{grid-row:auto}.admin-map-container{height:320px}}
