:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:#f7fbff;background:#081827;font-size:16px;--navy:#081827;--blue:#132a41;--muted:#acc1ce;--sky:#86cbf4;--gold:#ffd27a;--surface:rgba(18,43,63,.72);--line:rgba(228,245,255,.15)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(ellipse at 50% -15%,#274c62,transparent 58%),#081827;color:#f7fbff}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.46;cursor:not-allowed}a{color:#a8e0ff}a:hover{text-decoration-thickness:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffd27a;outline-offset:3px}button{touch-action:manipulation}.skip-link{position:absolute;left:-9999px;top:4px;z-index:100;background:white;color:#081827;padding:12px}.skip-link:focus{left:8px}.app-shell{max-width:1190px;margin:0 auto;padding:0 19px 110px}.topbar{height:87px;display:flex;align-items:center;justify-content:space-between;gap:18px}.place-trigger{background:transparent;border:0;display:flex;align-items:center;gap:12px;text-align:left;padding:8px 0}.brand-sun{height:37px;width:37px;display:grid;place-items:center;color:#ffd27a;font-size:36px;text-shadow:0 0 20px #ffd27a66}.place-heading{display:flex;flex-direction:column;gap:3px}.place-heading small{font-size:10px;letter-spacing:2.4px;color:#a5c4d5;font-weight:800}.place-heading strong{font-size:16px;max-width:240px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.top-actions{display:flex;gap:7px}.icon-button{width:44px;height:44px;display:grid;place-items:center;font-size:24px;border:1px solid var(--line);background:rgba(255,255,255,.07);border-radius:15px}.page{animation:page-enter .25s ease}.hidden{display:none!important}.section-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 19px}.section-bar h1{font-size:27px;margin:0;font-weight:700;letter-spacing:-.7px}.segmented{border-radius:99px;display:flex;align-items:center;background:#16364b;border:1px solid rgba(255,255,255,.1);padding:4px;gap:2px;white-space:nowrap}.segmented button{background:none;border:0;padding:9px 12px;min-height:37px;font-size:12px;border-radius:30px;color:#c4d9e8;font-weight:700}.segmented button.active{color:#102b3d;background:#d2edff;box-shadow:0 2px 8px #0004}.hero{height:min(50dvh,480px);min-height:340px;position:relative;overflow:hidden;border-radius:27px;background:#1e415d;isolation:isolate;box-shadow:0 20px 45px #0004}.hero-sky{position:absolute;inset:0;background-image:url('/assets/backgrounds/day.png');background-size:cover;background-position:center;transition:opacity .8s}.phase-night .hero-sky{background-image:url('/assets/backgrounds/night.png')}.phase-dawn .hero-sky{background-image:url('/assets/backgrounds/dawn.png')}.phase-dusk .hero-sky{background-image:url('/assets/backgrounds/dusk.png')}.hero-foreground{position:absolute;inset:35% 0 0;background:url('/assets/foregrounds/landscape.png') center bottom /cover no-repeat;opacity:.95;pointer-events:none}.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,#06172756 0%,#06182e0c 30%,#04152555 62%,#04131cba 100%)}.cloud-effect{position:absolute;inset:0;background-image:url('/assets/effects/clouds.png');background-size:125% auto;opacity:.25;animation:cloud-drift 45s ease-in-out infinite alternate;pointer-events:none}.weather-overcast .cloud-effect,.weather-fog .cloud-effect,.weather-rain .cloud-effect,.weather-heavy-rain .cloud-effect,.weather-thunderstorm .cloud-effect{opacity:.62}.weather-clear .cloud-effect{opacity:.06}.weather-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}.particle{position:absolute;left:var(--x);top:-12%;width:1px;height:var(--length);background:rgba(225,242,255,.52);transform:rotate(14deg);animation:fall var(--duration) linear infinite;animation-delay:var(--delay)}.snow-particle{height:var(--length);width:var(--length);border-radius:50%;background:#eff8ffaf;animation:snowfall var(--duration) linear infinite;animation-delay:var(--delay)}.hero-content{z-index:2;position:relative;height:100%;padding:23px 26px 26px;display:flex;flex-direction:column;justify-content:space-between;text-shadow:0 2px 9px #0005}.hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.eyebrow{font-weight:800;letter-spacing:2.1px;font-size:10px}.hero-live{font-size:11px;border:1px solid #fff6;border-radius:30px;padding:7px 10px;background:#08182755;text-align:right;max-width:48%}.hero-center{margin-top:10px}.hero-place{font-size:18px;font-weight:600}.hero-temp{font-size:clamp(75px,14vw,108px);line-height:1.04;font-weight:200;letter-spacing:-6px;margin:5px 0 0}.degree{font-size:.6em;vertical-align:17%;margin-left:4px}.hero-condition{font-size:22px;font-weight:600;margin-top:4px}.hero-feels{font-size:14px;margin-top:5px;color:#e6f4ff}.hero-bottom{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;font-size:13px;font-weight:600}.hero-insight{max-width:50%;text-align:right;font-weight:400}.notice{border:1px solid #7bb2d545;border-radius:14px;background:#1b3e52ba;padding:13px 15px;font-size:13px;color:#c5dfec;margin-top:13px}.notice.error{border-color:#ed9c9c;background:#4b2630;color:#ffe5e5}.warning-note{margin:13px 0 0;color:#b6cbd9;font-size:12px;display:flex;gap:9px;align-items:center;padding:10px 2px}.warning-note span{font-size:19px}.content-section{margin-top:29px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 15px}.section-heading h2{font-size:18px;margin:0;letter-spacing:-.2px}.section-subtitle{font-size:11px;color:var(--muted)}.text-action{border:0;background:transparent;color:var(--sky);font-size:12px;font-weight:700;padding:10px 0}.hour-strip{display:flex;gap:10px;overflow-x:auto;scrollbar-width:thin;padding-bottom:10px;scroll-snap-type:x proximity}.hour-card{flex:0 0 83px;min-height:133px;border-radius:18px;border:1px solid var(--line);background:var(--surface);padding:13px 5px;display:flex;flex-direction:column;align-items:center;gap:7px;scroll-snap-align:start}.hour-card .hour-time{font-size:12px;color:#c5d9e9}.weather-mini{width:37px;height:37px;object-fit:contain}.hour-temp{font-size:17px;font-weight:700}.rain-small{font-size:11px;color:#9ddfff}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.metric-card{min-height:136px;background:var(--surface);border:1px solid var(--line);border-radius:19px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;backdrop-filter:blur(12px)}.metric-title{font-size:12px;letter-spacing:.2px;color:#b7d5e5}.metric-value{font-size:27px;letter-spacing:-1px;font-weight:600;overflow-wrap:anywhere}.metric-help{font-size:11px;color:#b6c8d7;line-height:1.4}.daily-list{display:flex;flex-direction:column;gap:8px}.day-row{width:100%;display:grid;grid-template-columns:minmax(95px,1.4fr) 35px minmax(65px,1fr) minmax(84px,1fr);align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:10px 14px;text-align:left;min-height:66px}.day-name{font-size:14px;font-weight:650}.day-date{font-size:11px;color:var(--muted);margin-top:4px}.day-rain{font-size:11px;color:#9bd8ff;text-align:center}.day-range{text-align:right;font-size:14px;font-weight:650}.temp-track{height:4px;border-radius:8px;margin-top:9px;background:linear-gradient(90deg,#79b8e0,#ffd27a)}.intro{color:#c5d7e5;font-size:14px;line-height:1.6;margin:4px 0 24px}.card{padding:20px;border:1px solid var(--line);background:var(--surface);border-radius:20px;backdrop-filter:blur(12px)}.chart-card{padding:18px 13px}.chart-label{font-size:13px;color:#d8eaf5;font-weight:700}.chart-container{width:100%;overflow:auto;min-height:177px;margin-top:12px}.chart-container svg{width:100%;height:190px;min-width:450px;display:block}.chart-container text{fill:#d4e5f0;font-size:11px}.chart-container .chart-line{fill:none;stroke:#ffd27a;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.chart-container .chart-area{fill:#ffd27a23}.chart-container .gridline{stroke:#ffffff27;stroke-dasharray:4 5}.muted{font-size:12px;color:#a6c3d5;line-height:1.6}.table-scroller{width:100%;overflow-x:auto;max-height:280px;overflow-y:auto}.table-scroller table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}.table-scroller th,.table-scroller td{border-bottom:1px solid var(--line);padding:9px;text-align:left}.table-scroller th{position:sticky;top:0;background:#153348}.table-scroller tr:focus-within{outline:2px solid var(--gold)}.map-frame{height:min(66vh,580px);min-height:370px;background:#24435d;border-radius:21px;border:1px solid var(--line);overflow:hidden;position:relative;touch-action:none;cursor:grab}.map-frame:active{cursor:grabbing}.map-tiles{position:absolute;inset:0;overflow:hidden}.map-tiles img{position:absolute;width:256px;height:256px;max-width:none;user-select:none;pointer-events:none}.map-marker{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);height:30px;width:25px;border-radius:50% 50% 50% 0;background:#ffd27a;border:4px solid #fafcff;box-shadow:0 3px 15px #0008;rotate:-45deg;z-index:2;pointer-events:none}.map-control{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:4px;z-index:3}.map-control button{width:42px;height:42px;border-radius:10px;border:1px solid #fff5;background:#081827e9;font-size:22px}.map-attribution{position:absolute;bottom:3px;right:6px;background:#f9fafcdb;color:#132a41;font-size:10px;padding:3px;z-index:3}.map-attribution a{color:#164f7e}.search-card label{display:block;font-weight:650;margin-bottom:12px}.search-line{display:flex;gap:9px}.search-line input{background:#071c30;color:#f7fbff;padding:13px 15px;border:1px solid #63859c;border-radius:12px;min-width:0;flex:1}.primary-button,.secondary-button,.danger-button{min-height:44px;padding:11px 16px;border-radius:12px;font-weight:700;font-size:13px}.primary-button{background:#beeaff;color:#061b2c;border:1px solid #beeaff}.secondary-button{background:#254960;color:#eff8ff;border:1px solid #8cbed7}.danger-button{background:#522f37;border:1px solid #c68290;color:#ffeff2}.small-status{min-height:18px;margin-top:10px;font-size:12px;color:#c6ddeb}.results{display:flex;flex-direction:column;gap:6px;margin-top:8px}.result-row,.favorite-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 9px;border-bottom:1px solid var(--line)}.result-main,.favorite-open{background:transparent;border:0;text-align:left;flex:1;min-height:44px}.result-main strong,.favorite-open strong{display:block;font-size:14px}.result-main small,.favorite-open small{display:block;color:#a6bfd2;font-size:12px;margin-top:5px}.small-button{background:#234b62;border:1px solid #91bfd433;border-radius:10px;padding:9px;font-size:12px;min-height:40px}.favorite-row{background:#17364d88;border-radius:14px;margin-bottom:9px;padding:6px 10px}.favorite-buttons{display:flex;gap:6px}.compare-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.compare-choice{background:#21455a;border:1px solid #588199;border-radius:12px;padding:10px;font-size:13px}.compare-results{margin:16px 0;display:grid;gap:10px}.compare-result{background:#17384f;border-radius:15px;padding:14px;border:1px solid var(--line)}.compare-result strong{display:block;font-size:15px;margin-bottom:6px}.compare-result p{margin:5px 0;font-size:13px}.settings-card{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:10px 0;min-height:78px}.settings-card label{font-weight:650;font-size:14px}.settings-card select{color:#f7fbff;background:#091e31;border:1px solid #63859c;padding:11px;border-radius:10px;max-width:54%;font-size:13px}.privacy-card{margin-top:26px}.privacy-card h2{font-size:18px}.privacy-card p{color:#c1d4e2;font-size:13px;line-height:1.7}.source-footer{font-size:11px;color:#a0b9c7;padding:29px 8px;text-align:center}.source-footer a{color:#abd8f6}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(72px + env(safe-area-inset-bottom));background:#091c2af3;border-top:1px solid #38576a;display:flex;justify-content:center;gap:5px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));z-index:30;backdrop-filter:blur(20px)}.nav-item{background:transparent;border:0;color:#9ab7c8;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;border-radius:13px;min-width:65px;max-width:180px;flex:1;font-size:11px;font-weight:700}.nav-icon{font-size:23px;line-height:1.2}.nav-item.active{color:#b7e8ff;background:#1b3c50}.detail-dialog,.welcome-dialog{border:1px solid #7dacc5;border-radius:22px;background:#122c40;color:white;width:min(94vw,520px);max-height:85vh;padding:24px;box-shadow:0 20px 55px #000b}.detail-dialog::backdrop,.welcome-dialog::backdrop{background:#041420ce;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{font-size:20px}.detail-dialog dl{display:grid;grid-template-columns:1fr auto;gap:15px;font-size:14px}.detail-dialog dt{color:#b6d6e8}.detail-dialog dd{margin:0;font-weight:700}.welcome-dialog{padding:0;overflow:hidden}.welcome-image{height:160px;background:url('/assets/backgrounds/dusk.png') center/cover}.welcome-body{padding:27px}.welcome-body h2{font-size:27px;line-height:1.2;margin:16px 0}.welcome-body p{font-size:14px;color:#ccdfeb;line-height:1.6}.welcome-body button{width:100%;margin-top:10px}body[data-theme="light"]{--surface:rgba(223,238,246,.94);--line:rgba(13,60,83,.18)}body[data-theme="light"] .metric-card,body[data-theme="light"] .hour-card,body[data-theme="light"] .day-row,body[data-theme="light"] .card{color:#09253a}body[data-theme="light"] .metric-title,body[data-theme="light"] .metric-help,body[data-theme="light"] .hour-time,body[data-theme="light"] .day-date,body[data-theme="light"] .chart-label{color:#38566b}body[data-theme="light"] .card p{color:#315368}body[data-theme="light"] .metric-help{color:#38566b}.advanced-only{display:none}body[data-mode="advanced"] .advanced-only{display:block}body[data-motion="off"] *,body[data-motion="off"] *::before,body[data-motion="off"] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media (prefers-reduced-motion:reduce){body *,body *::before,body *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@keyframes cloud-drift{from{transform:translateX(-10%)}to{transform:translateX(6%)}}@keyframes fall{from{transform:translate3d(0,-12px,0) rotate(14deg)}to{transform:translate3d(-60px,550px,0) rotate(14deg)}}@keyframes snowfall{from{transform:translate3d(0,-10px,0)}to{transform:translate3d(48px,550px,0)}}@keyframes page-enter{from{opacity:.7;transform:translateY(7px)}to{opacity:1;transform:none}}@media(min-width:720px){.app-shell{padding:0 40px 65px}.hero{height:440px}.metric-grid{grid-template-columns:repeat(3,1fr)}.topbar{height:95px}.bottom-nav{position:sticky;bottom:0;max-width:660px;margin:0 auto;border:1px solid #38576a;border-radius:21px;height:70px;padding:7px;backdrop-filter:blur(20px)}.day-row{grid-template-columns:1.8fr 60px 1fr 1fr}.section-bar h1{font-size:30px}.hour-card{flex-basis:100px}}@media(min-width:1000px){.hero{height:490px}.content-section{margin-top:37px}.metric-grid{grid-template-columns:repeat(3,1fr)}.hero-temp{font-size:112px}.hero-content{padding:29px 34px}.hour-card{flex-basis:113px}.map-frame{height:550px}}@media(max-width:365px){.app-shell{padding-left:12px;padding-right:12px}.hero-content{padding:18px}.hero{min-height:320px}.hero-bottom{font-size:11px}.segmented button{padding:8px}.section-bar h1{font-size:24px}.metric-value{font-size:24px}.day-row{grid-template-columns:minmax(70px,1.2fr) 32px 50px 77px;padding:10px 7px;gap:4px}}
.installer,.admin-shell{max-width:830px;margin:22px auto;padding:18px}.installer label,.admin-login label{display:block;margin:18px 0;font-size:14px;font-weight:600}.installer input,.admin-login input{display:block;width:100%;padding:12px;background:#122e44;color:white;border:1px solid #678;border-radius:9px;margin-top:7px}.installer table{width:100%;border-collapse:collapse}.installer td,.installer th{padding:10px;border-bottom:1px solid #466;text-align:left}.installer pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#081827;padding:16px;border-radius:12px}.installer form button{margin-top:10px}.admin-shell{padding-bottom:60px}.admin-head,.admin-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:25px}.admin-head h1{font-size:27px}.admin-head h1 span{font-weight:300}.admin-head a{font-size:13px}.admin-login{max-width:520px;margin:auto}.admin-login h2{font-size:22px}.admin-login p,.admin-block p{font-size:14px;line-height:1.65;color:#bad6e5}.admin-block{margin-top:20px}.admin-block h2{font-size:20px}
