@import './mix-atmosphere.css';
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#0f172a;background:#f5f7fb;font-synthesis:none;font-size:15px;--muted:#64748b;--line:#e8edf5;--blue:#2563eb}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 12%,#eaf1fc80,transparent 55%),#f5f7fb}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #77acf5;outline-offset:4px}button{color:inherit}a{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3,.brand{font-family:Manrope,-apple-system,sans-serif}button svg{flex-shrink:0}.app-header{max-width:1200px;margin:auto;padding:29px 42px;display:flex;align-items:center;justify-content:space-between}.brand{border:0;background:none;display:flex;align-items:center;gap:8px;font-weight:800;font-size:24px;letter-spacing:-1.2px;padding:0;min-height:44px}.logo-icon{display:inline-flex;width:42px;height:42px}.logo-icon svg{width:100%}.brand-mix{color:var(--blue)}.header-right{display:flex;align-items:center;gap:24px}.header-caption{font-size:12px;color:var(--muted)}.icon-button{border:1px solid #e2e8f0;background:#ffffff80;border-radius:13px;min-width:44px;height:44px;display:grid;place-items:center;font-size:26px}.icon-button:hover{background:white}.hero{max-width:1060px;text-align:center;margin:12px auto 0;padding:0 24px}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;color:#7889a5}.hero h1{font-size:clamp(36px,5vw,60px);line-height:1.19;letter-spacing:-2.8px;font-weight:800;margin:17px 0 20px}.hero h1>span{color:#2563eb}.hero>p{color:var(--muted);font-size:16px;line-height:1.8}.hero-art{position:relative;width:270px;height:180px;margin:0 auto 16px}.orbit{position:absolute;left:45px;top:4px;width:175px;height:175px;border:1px solid #dfe7f4;border-radius:50%}.orbit-two{inset:-14px auto auto 25px;width:215px;height:215px;border-style:dashed;opacity:.6}.art-sun{position:absolute;width:72px;height:72px;top:27px;left:133px;background:linear-gradient(135deg,#ffeab3,#ffcd68);border-radius:50%;box-shadow:0 0 40px #ffe6a16b}.art-cloud{position:absolute;background:linear-gradient(150deg,#fff 30%,#e5eefa);border:1px solid white;border-radius:45px;box-shadow:0 15px 25px #8ea7cb26}.art-cloud:before,.art-cloud:after{content:'';position:absolute;background:inherit;border-radius:50%;border-top:1px solid white}.cloud-front{width:151px;height:55px;left:53px;top:100px;z-index:2}.cloud-front:before{width:70px;height:70px;left:25px;top:-39px}.cloud-front:after{width:52px;height:52px;right:14px;top:-25px}.cloud-back{width:106px;height:37px;left:134px;top:78px;opacity:.75}.cloud-back:before{width:46px;height:46px;left:20px;top:-24px}.cloud-back:after{width:33px;height:33px;right:10px;top:-13px}.art-spark{position:absolute;color:#99afe0;font-size:23px;font-weight:400}.s1{left:36px;top:63px}.s2{left:224px;top:119px;font-size:17px}.art-dot{position:absolute;left:78px;top:29px;width:5px;height:5px;border-radius:50%;background:#a8cde6}.search-container{position:relative;z-index:10;width:100%;max-width:590px;text-align:left}.hero .search-container{margin:30px auto 0}.search-box{height:66px;background:#fff;border:1px solid #e1e7f0;border-radius:18px;display:flex;align-items:center;padding:0 21px;gap:15px;box-shadow:0 7px 24px #334d7b08;transition:box-shadow .2s,border .2s}.search-box:focus-within{border-color:#9ebcf4;box-shadow:0 0 0 4px #2563eb0b,0 8px 26px #334d7b0a}.search-box>svg{color:#8597b1}.search-box input{min-width:0;flex:1;border:0;background:transparent;outline:none!important;font-size:16px;height:100%;color:#0f172a}.search-box input::placeholder{color:#8390a5}.search-box kbd{background:#f5f7fb;border:1px solid #e9edf5;color:#93a0b4;border-radius:6px;padding:2px 7px;font-size:15px}.search-results{position:absolute;top:calc(100% + 9px);left:0;right:0;background:white;border-radius:16px;border:1px solid var(--line);box-shadow:0 16px 45px #26395c26;max-height:360px;overflow:auto;padding:6px}.suggestion{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:0;background:none;border-radius:10px;padding:12px;min-height:65px}.suggestion:hover,.suggestion.selected{background:#f1f5fc}.suggestion-pin{color:#889bb7;background:#f4f7fc;padding:10px;border-radius:10px;display:flex}.suggestion>span:nth-child(2){flex:1}.suggestion strong,.suggestion small{display:block}.suggestion small{color:var(--muted);margin-top:4px;font-size:12px}.suggestion>svg{color:#9aa8bc}.search-message{padding:22px 16px;color:var(--muted);font-size:14px}.providers{display:flex;justify-content:center;gap:17px;align-items:center;margin-top:21px;color:var(--muted);font-size:12px}.providers>span{display:flex;align-items:center;gap:7px}.providers>b{font-weight:400;color:#b6c0cf}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.dot.ecmwf{background:#7b62e9}.dot.mf{background:#12accf}.last-city{margin:19px auto 0;display:flex;align-items:center;gap:7px;min-height:44px;border:0;background:none;color:#52698d;font-size:12px}.hero-bottom{margin:64px auto 0;padding:31px 12px;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #e2e9f3;max-width:850px;text-align:left;gap:35px}.hero-bottom>div{position:relative;padding-left:34px}.hero-bottom>div>span{position:absolute;left:0;top:2px;font-size:11px;color:#8b9cba}.hero-bottom strong{font-size:12px;font-weight:600}.hero-bottom p{font-size:11px;color:#8593a8;margin-top:6px}footer{max-width:1116px;margin:35px auto 0;padding:24px 24px max(25px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);color:#7b899f;font-size:10px}footer a{text-decoration:none}footer a:hover{text-decoration:underline}.footer-brand{font-weight:700;color:#536781}.dashboard{max-width:1032px;padding:10px 24px 0;margin:auto}.dashboard .search-container{max-width:100%}.dashboard .search-box{height:58px;border-radius:15px}.city-heading{display:flex;justify-content:space-between;align-items:center;margin:37px 0 30px}.city-heading h1{font-size:40px;letter-spacing:-1.7px;margin:6px 0}.city-heading p{color:var(--muted);font-size:13px}.city-pin{display:inline-flex;vertical-align:middle;margin-left:13px;color:#bac6d9}.city-date{text-align:right;display:flex;flex-direction:column;gap:6px;font-size:12px}.city-date strong{text-transform:capitalize;font-weight:500}.city-date span{color:var(--muted);font-size:11px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:24px}.tabs,.segmented{display:flex;background:#eaf0f8;border-radius:12px;padding:4px;gap:2px}.tabs button,.segmented button{border:0;background:none;border-radius:9px;padding:12px 20px;color:#667791;white-space:nowrap;font-size:12px;font-weight:550;min-height:44px}.tabs .active,.segmented .active{background:#fff;color:#203656;box-shadow:0 2px 5px #1938670a}.refresh-button{display:flex;align-items:center;gap:7px;border:0;background:none;color:#6a7d98;padding:12px 0 12px 12px;min-height:44px;font-size:12px}.cards-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.source-card{background:white;border:1px solid #e4eaf4;border-radius:23px;padding:26px 28px;box-shadow:0 3px 10px #253b6503;overflow:hidden;position:relative;animation:appear .28s ease}.source-card:before{content:'';position:absolute;top:0;left:28px;right:28px;height:2px;background:linear-gradient(90deg,#7c5cfc70,transparent)}.source-card.mf:before{background:linear-gradient(90deg,#22c7e870,transparent)}.source-header{display:flex;align-items:center;justify-content:space-between}.source-header h3{font-size:16px;letter-spacing:-.4px;display:flex;align-items:center;gap:9px}.source-header p{font-size:11px;color:var(--muted);margin:5px 0 0 16px}.source-tag{font-size:8px;font-weight:700;letter-spacing:1px;color:#8a96ae;border:1px solid #edf0f6;padding:6px 8px;border-radius:6px}.current-main{display:flex;justify-content:space-between;align-items:center;margin:30px 0 27px}.temperature{font-family:Manrope,sans-serif;font-size:64px;font-weight:500;letter-spacing:-4px;line-height:1.2}.current-main p{font-size:12px;color:var(--muted);margin-top:5px}.condition{display:flex;flex-direction:column;align-items:center;max-width:110px}.condition span{font-size:11px;color:#6b7a90;text-align:center}.weather-icon{flex-shrink:0;overflow:visible}.metrics{display:grid;grid-template-columns:repeat(3,1fr);row-gap:24px;padding:23px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.metrics span{display:block;font-size:10px;color:var(--muted);margin-bottom:7px}.metrics strong{font-size:15px;font-weight:550}.source-note{font-size:9px;color:#7c8aa1;margin-top:13px;line-height:1.6}.source-note+ .source-note{margin-top:6px}.source-note span{color:#97a1b1}.mix-card{border:1px solid #dde6f5;background:linear-gradient(120deg,#fafdff,#f2f5ff 70%,#effaff);border-radius:23px;padding:28px;margin-top:20px;animation:appear .28s ease}.mix-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.mix-heading .eyebrow{font-size:8px;letter-spacing:1.5px}.mix-heading h2{font-size:28px;letter-spacing:-1px;margin-top:5px}.mix-mark{font-family:serif;color:#6691dc;font-weight:400;font-size:23px;margin-left:8px}.agreement{border:1px solid #d3e8df;background:#e9f5ef;color:#38785b;border-radius:30px;padding:9px 13px;font-size:11px;display:flex;align-items:center;gap:7px;white-space:nowrap}.agreement i{width:6px;height:6px;background:currentColor;border-radius:50%}.level-1{background:#fff7dc;border-color:#efe4b8;color:#8b6d16}.level-2{background:#fff0df;border-color:#f4d7b6;color:#a5611c}.level-none{background:#edf0f5;border-color:#dce3ed;color:#65748c}.mix-grid{display:grid;grid-template-columns:repeat(3,1fr);margin-top:29px}.mix-metric{padding:0 25px;border-right:1px solid #dfe7f2}.mix-metric:first-child{padding-left:0}.mix-metric:last-child{padding-right:0;border:0}.mix-metric>span{font-size:11px;color:#5c708e}.mix-metric>strong{display:block;font-size:34px;letter-spacing:-1.3px;font-family:Manrope,sans-serif;font-weight:600;margin:7px 0}.mix-metric>small{font-size:9px;color:#7c8da5}.mix-details{display:flex;flex-direction:column;gap:8px;margin-top:20px}.mix-details>span{display:flex;align-items:center;gap:6px;font-size:9px;color:#6a7d99}.mix-details b{font-weight:500;color:#344765;margin-left:auto}.mix-details .dot{width:5px;height:5px}.mix-metric>p{font-size:10px;color:#526d97;margin-top:14px}.probability-summary{border-top:1px solid #e1e8f3;padding-top:17px;margin-top:24px;font-size:11px;color:#546a8c}.probability-summary span{display:block;color:#7d8ba2;font-size:10px;margin-top:6px}details{font-size:10px;color:#7b8ba4;margin-top:19px}summary{cursor:pointer;min-height:24px}details p{line-height:1.8;margin-top:8px;max-width:760px}.mix-title{display:flex;align-items:center;gap:7px}.mix-title .logo-icon{width:30px;height:30px}.mix-title>span:last-child{margin-left:auto;font-size:9px;color:#7888a3}.mix-card>h2{font-size:21px;margin:18px 0 8px}.mix-card>p{font-size:12px;color:var(--muted)}.update-info{margin:20px 0;display:flex;justify-content:space-between;font-size:9px;gap:14px;color:#8b98ac;line-height:1.7}.error-state{height:285px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;text-align:center}.error-state>svg{color:#98a9c5}.error-state strong{font-size:14px;max-width:230px;line-height:1.6}.error-state p{color:var(--muted);font-size:11px}.small-button{border:1px solid #dfe6f2;background:#fff;color:#4266a0;padding:10px 18px;border-radius:11px;font-size:12px;min-height:44px}.skeleton{height:36px;border-radius:9px;background:linear-gradient(90deg,#edf1f8,#f8faff,#edf1f8);background-size:200% 100%;animation:shimmer 1.4s infinite}.skeleton.big{height:70px;width:65%;margin-top:37px}.skeleton.middle{height:15px;width:35%;margin:15px 0 40px}.skeleton-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px 16px;margin-bottom:28px}.forecast-panel{border:1px solid #e4eaf4;background:white;border-radius:23px;padding:28px;animation:appear .25s ease}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.panel-heading h2{font-size:22px;letter-spacing:-.8px}.panel-heading p{font-size:11px;color:var(--muted);margin-top:8px}.segmented button{padding:9px 11px;font-size:10px}.timeline{display:flex;overflow-x:auto;overscroll-behavior-x:contain;padding:5px 0 16px;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#d4dfed transparent}.hour-cell{flex:0 0 105px;text-align:center;border-right:1px solid #edf0f6;scroll-snap-align:start;padding:0 7px}.hour-cell>strong{display:block;font-size:12px}.hour-cell>small{font-size:9px;color:#8a97ac}.hour-source{display:flex;flex-direction:column;align-items:center;margin-top:17px;min-height:150px}.hour-label{font-size:8px;display:flex;align-items:center;gap:5px;color:#7a8ba6;margin-bottom:4px}.hour-source b{font-size:17px;font-weight:550;margin:6px 0}.hour-source>small{font-size:8px;color:#8d99ad;margin-top:5px}.rain-value{color:#5885b6;font-size:10px}.unavailable{font-size:9px;color:#8c99ad;padding:30px 0}.panel-note{font-size:10px;line-height:1.8;color:#8491a6;margin-top:17px}.subtle-badge{font-size:10px;background:#f3f6fb;padding:9px 12px;border-radius:9px;color:#7588a4}.day-row{display:flex;align-items:center;gap:20px;padding:20px 0;border-top:1px solid var(--line)}.day-date{width:100px;flex-shrink:0}.day-date strong{display:block;text-transform:capitalize;font-size:12px;font-weight:550}.day-date>span{font-size:10px;color:#8a98ad;display:block;margin-top:5px}.day-sources{flex:1;min-width:0}.day-source{display:grid;grid-template-columns:110px 36px 85px 100px 90px;align-items:center;gap:15px;position:relative;min-height:45px}.day-provider{font-size:10px;color:#6b7d99;display:flex;align-items:center;gap:6px}.day-temps{font-size:14px;display:flex;gap:12px}.day-temps>span{color:#8b9ab0}.day-temps b{font-weight:550}.day-rain,.day-wind{font-size:11px;color:#6680a4;display:flex;align-items:center;gap:5px;flex-wrap:wrap}.day-rain small{font-size:8px;color:#97a1b1;flex-basis:100%}.partial{font-size:8px;color:#8c7b5b;grid-column:2/-1;margin-bottom:5px}.day-missing{grid-column:2/-1;font-size:10px;color:#9ba6b7}.empty{padding:40px;text-align:center;color:var(--muted);font-size:13px}dialog{border:1px solid #e2e8f0;border-radius:22px;padding:25px;max-width:440px;width:calc(100% - 32px);box-shadow:0 25px 100px #182e5640}dialog::backdrop{background:#18243b40;backdrop-filter:blur(4px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.dialog-heading h2{font-size:22px}dialog>p{font-size:13px;color:var(--muted);line-height:1.7;margin:12px 0 23px}.preference-line{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:17px 0;font-size:12px}.preference-line strong{font-weight:500}.muted{color:var(--muted)}@keyframes shimmer{to{background-position:-200% 0}}@keyframes appear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(min-width:1000px){.hero{padding-top:15px}.hero-bottom{margin-top:70px}}@media(max-width:800px){.day-source{grid-template-columns:90px 32px 65px 80px 70px;gap:8px}.day-row{gap:10px}.day-date{width:80px}.panel-heading{align-items:flex-start;flex-direction:column}}@media(max-width:600px){.app-header{padding:18px 20px}.brand{font-size:21px;gap:5px}.logo-icon{width:37px;height:37px}.header-caption{display:none}.icon-button{height:42px;min-width:42px}.hero{margin:12px auto 0;padding:0 22px}.hero-art{transform:scale(.86);height:172px;margin-bottom:2px}.hero h1{font-size:37px;letter-spacing:-1.7px;margin:16px 0}.hero .eyebrow{font-size:8px;letter-spacing:1.65px}.hero>p{font-size:13px;line-height:1.8}.desktop-br{display:none}.hero .search-container{margin-top:26px}.search-box{height:62px;border-radius:16px;padding:0 16px;gap:12px}.search-box kbd{display:none}.providers{font-size:11px}.hero-bottom{margin-top:44px;grid-template-columns:1fr;gap:22px;padding:25px 13px;text-align:left}.hero-bottom>div{padding-left:34px}.hero-bottom strong{font-size:12px}.hero-bottom p{font-size:11px}footer{flex-wrap:wrap;justify-content:center;font-size:9px;padding:20px 20px max(25px,env(safe-area-inset-bottom));margin-top:22px;gap:9px 18px}footer>span:last-child{width:100%;text-align:center}.dashboard{padding:6px 16px 0}.city-heading{margin:29px 2px 23px;align-items:flex-start;gap:12px}.city-heading h1{font-size:34px;overflow-wrap:anywhere;letter-spacing:-1.4px}.city-heading .eyebrow{font-size:7px;letter-spacing:1px}.city-heading p{font-size:10px}.city-pin{display:none}.city-date{font-size:9px;padding-top:7px;max-width:114px;line-height:1.6;flex-shrink:0}.city-date span{font-size:8px}.toolbar{gap:5px;margin-bottom:17px}.tabs{flex:1;justify-content:space-between;padding:4px}.tabs button{padding:10px 10px;font-size:11px}.refresh-button{padding:8px;min-width:36px}.refresh-button span{display:none}.cards-grid{grid-template-columns:1fr;gap:14px}.source-card{padding:23px;border-radius:21px}.source-header h3{font-size:16px}.current-main{margin:23px 0}.temperature{font-size:60px;letter-spacing:-3.5px}.metrics{row-gap:22px;padding:21px 0}.metrics span{font-size:10px}.metrics strong{font-size:14px}.mix-card{padding:23px 20px;border-radius:21px;margin-top:15px}.mix-heading{align-items:flex-start;flex-direction:column;gap:14px}.mix-heading h2{font-size:27px}.agreement{padding:8px 12px;font-size:10px}.mix-grid{grid-template-columns:1fr;margin-top:23px}.mix-metric,.mix-metric:first-child,.mix-metric:last-child{padding:20px 0;border-right:0;border-bottom:1px solid #dfe7f2}.mix-metric:first-child{padding-top:0}.mix-metric:last-child{border-bottom:0;padding-bottom:0}.mix-metric>strong{font-size:35px;margin:6px 0}.mix-details{margin-top:14px;gap:7px}.mix-details>span{font-size:10px}.mix-metric>p{margin-top:10px}.probability-summary{font-size:10px;line-height:1.6}.update-info{flex-direction:column;gap:5px;font-size:8px}.forecast-panel{padding:23px 17px;border-radius:21px}.panel-heading{gap:19px}.panel-heading h2{font-size:21px}.segmented{width:100%;justify-content:space-between}.segmented button{flex:1;padding:8px 7px;font-size:10px}.timeline{margin:0 -5px}.hour-cell{flex-basis:98px}.day-row{flex-direction:column;align-items:stretch;padding:17px 0;gap:9px}.day-date{display:flex;width:auto;align-items:center;gap:9px}.day-date>span{margin:0}.day-source{grid-template-columns:80px 28px 64px 75px 1fr;gap:6px;min-height:45px}.day-provider{font-size:8px}.day-temps{font-size:12px;gap:8px}.day-rain,.day-wind{font-size:9px}.day-rain svg,.day-wind svg{width:12px}.day-missing{font-size:9px}.subtle-badge{display:none}.day-wind{justify-content:flex-end}.partial{font-size:8px}.search-results{max-height:310px}.source-note{font-size:9px}}@media(max-width:370px){.tabs button{font-size:10px;padding:10px 7px}.hero h1{font-size:33px}.day-source{grid-template-columns:68px 25px 52px 67px 1fr;gap:4px}.day-provider{font-size:7px}.day-rain,.day-wind{font-size:8px}.metrics strong{font-size:13px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.brand{text-decoration:none}.preview-badge{font-size:9px;letter-spacing:1.3px;color:#64748b;background:#eaf0f8;padding:9px 11px;border-radius:8px;font-weight:600}.preview-hint{color:#64748b;text-align:center;font-size:10px;margin-top:11px}.visual-preview{margin-top:62px}.preview-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}.preview-heading h2{font-size:24px;font-weight:650;letter-spacing:-.8px;margin-top:9px}.preview-status{display:flex;align-items:center;gap:7px;font-size:10px;color:#64748b}.preview-status i{width:6px;height:6px;border-radius:50%;background:#a4b4ca}.empty-current{display:flex;justify-content:space-between;align-items:center;min-height:145px;gap:20px}.empty-temp{width:130px;height:56px;border-radius:10px}.empty-feels{width:95px;height:12px;margin-top:16px}.empty-icon{width:75px;height:75px;color:#aabbd4;background:#f6f8fc;border-radius:50%;padding:10px}.metric-placeholder{width:64%;height:17px;border-radius:5px}.mix-placeholder{width:105px;height:35px;margin-top:14px}.mix-sub-placeholder{width:75%;height:10px;margin:14px 0 11px}.mix-empty-note{font-size:10px!important;color:#64748b!important;border-top:1px solid #dfe7f2;padding-top:18px;margin-top:24px!important}.skeleton{animation:none;background:#edf1f7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.placeholder-hour{padding:15px;display:flex;flex-direction:column;align-items:center;gap:18px}.placeholder-hour-label{height:10px;width:38px}.placeholder-hour-icon{height:35px;width:35px;border-radius:50%}.placeholder-hour-value{height:20px;width:48px}.empty-day{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:30px;padding:22px 0;border-top:1px solid var(--line)}.empty-day .skeleton{height:15px;max-width:130px}.metrics span,.source-note,.mix-metric>small,.mix-metric>span,.panel-note,.eyebrow{color:#64748b}.source-tag{color:#64748b}.mix-heading .eyebrow{color:#64748b}@media(max-width:600px){.visual-preview{margin-top:38px}.preview-heading{margin:0 5px 21px;align-items:flex-start;flex-direction:column;gap:13px}.preview-heading h2{font-size:21px}.preview-heading .eyebrow{font-size:8px;letter-spacing:1.3px}.preview-status{font-size:9px}.empty-current{min-height:138px}.empty-temp{height:51px;width:125px}.mix-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.mix-metric,.mix-metric:first-child,.mix-metric:last-child{border:none;padding:0;min-width:0}.mix-metric>span{font-size:9px}.mix-placeholder{width:100%;height:30px}.mix-sub-placeholder{width:85%;height:9px}.mix-metric>small{font-size:8px;line-height:1.6}.mix-empty-note{font-size:9px!important;line-height:1.7}.empty-day{gap:17px}.tabs{flex:none;width:100%}.tabs button{flex:1}.source-note{font-size:10px}.metrics span{font-size:11px}.preview-badge{font-size:8px}.brand{min-height:44px}}
.hero.has-city{margin-top:10px;padding-top:0}.hero.has-city>.hero-art,.hero.has-city>.eyebrow,.hero.has-city>h1,.hero.has-city>p,.hero.has-city>.providers{display:none}.hero.has-city .search-container{margin-top:0;max-width:100%}.hero.has-city{max-width:1032px}.hero.has-city+ .dashboard{margin-top:32px}.selected-location h2{font-size:34px;margin-top:5px;overflow-wrap:anywhere}.location-region{font-size:13px;color:#64748b;margin-top:7px}.location-coordinates{font-size:11px;color:#64748b;margin-top:11px}.location-date{text-align:right;display:flex;flex-direction:column;gap:7px;font-size:12px;flex-shrink:0}.location-date strong{font-weight:500;text-transform:capitalize}.location-date span{font-size:10px;color:#64748b}.suggestion small{overflow-wrap:anywhere}.suggestion>span:nth-child(2){min-width:0}.preview-hint{min-height:16px;line-height:1.6}.search-results{z-index:20}.search-box kbd{user-select:none}@media(max-width:600px){.hero.has-city{padding:0 16px}.hero.has-city+ .dashboard{margin-top:26px}.selected-location{gap:15px}.selected-location h2{font-size:30px;letter-spacing:-1px}.location-region{font-size:12px}.location-coordinates{font-size:10px}.location-date{text-align:left;gap:4px;font-size:11px}.suggestion{min-height:68px}.suggestion small{font-size:12px;line-height:1.5}.preview-hint{font-size:11px}.search-results{max-height:310px}}
.weather-loading{background:linear-gradient(90deg,#edf1f8,#f8faff,#edf1f8);background-size:200% 100%;animation:shimmer 1.4s infinite}.current-main{gap:12px}.current-main>div:first-child{min-width:0}.temperature{font-size:clamp(44px,5vw,64px)}@media(max-width:370px){.temperature{font-size:49px}.condition{max-width:90px}.condition>.weather-icon{width:72px;height:72px}.metrics strong{font-size:12px}}@media(prefers-reduced-motion:reduce){.weather-loading{animation:none}}
.metrics>div{min-height:44px}.metric-absent{visibility:hidden}
.mix-live{background:linear-gradient(120deg,#fafdff,#f2f5ff 70%,#effaff);border-color:#d9e5f6;box-shadow:0 8px 30px #38558b06}.mix-live .mix-agreement{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.mix-agreement>span:first-child{font-size:10px;color:#64748b}.mix-live .mix-metric{min-width:0}.mix-live .mix-metric>strong{font-size:32px;overflow-wrap:anywhere}.mix-live .mix-details>span{font-size:11px;gap:7px}.mix-live .mix-details b{white-space:nowrap;font-size:11px}.mix-live .mix-metric>small{font-size:10px;line-height:1.7;display:block;color:#64748b}.mix-gap{display:inline-block;background:#e6eefb99;padding:6px 9px;border-radius:7px;font-size:10px!important;line-height:1.5;color:#49628c}.mix-gap b{font-weight:600}.mix-missing-value{font-size:16px!important;color:#425877!important;line-height:1.5;margin:15px 0 8px!important;max-width:220px}.mix-rain-amount{border-top:1px solid #dfe7f2;margin-top:19px;padding-top:14px}.mix-rain-amount>span{font-size:10px;color:#64748b}.mix-rain-amount>strong{display:block;margin:5px 0;font-size:22px;font-family:Manrope,sans-serif;font-weight:600}.mix-rain-amount>small{font-size:9px;color:#64748b}.mix-rain-amount .mix-details{margin-top:12px}.mix-rain-amount>p{font-size:10px;color:#64748b;margin-top:10px}.mix-indicator-note{border-top:1px solid #dfe7f2;padding-top:19px;margin-top:25px!important;display:flex;align-items:center;gap:7px;font-size:11px!important;line-height:1.7;color:#64748b}.mix-indicator-note>svg{flex-shrink:0;color:#6b8abe}.mix-method{font-size:11px;line-height:1.8;color:#64748b;margin-top:13px}.mix-method summary{min-height:44px;display:list-item;padding:10px 0;font-size:11px}.mix-method p{margin:7px 0;line-height:1.8}.mix-state-message{font-size:13px!important;line-height:1.8;padding:25px 0 5px;color:#64748b}@media(max-width:600px){.mix-live .mix-grid{grid-template-columns:1fr;gap:0;margin-top:24px}.mix-live .mix-metric,.mix-live .mix-metric:first-child,.mix-live .mix-metric:last-child{padding:21px 0;border-bottom:1px solid #dfe7f2}.mix-live .mix-metric:first-child{padding-top:0}.mix-live .mix-metric:last-child{border:0;padding-bottom:0}.mix-live .mix-metric>span{font-size:12px}.mix-live .mix-metric>strong{font-size:34px}.mix-live .mix-details{margin-top:15px;gap:9px}.mix-live .mix-details>span,.mix-live .mix-details b{font-size:12px}.mix-live .mix-agreement{align-items:flex-start;gap:7px}.mix-live .agreement{font-size:11px;padding:9px 12px}.mix-indicator-note{align-items:flex-start;font-size:10px!important}.mix-indicator-note>svg{margin-top:3px}.mix-method{font-size:11px}.mix-state-message{padding:20px 0 0}}
.hourly-panel{min-width:0}.hourly-panel .panel-heading{flex-wrap:wrap}.hourly-timeline{max-width:100%;min-width:0;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}.hourly-timeline .hour-cell{flex:0 0 120px;padding:0 10px}.hourly-timeline .hour-cell>strong{font-size:13px}.hourly-timeline .hour-cell>small{display:block;font-size:10px;color:#64748b;margin-top:6px}.hourly-timeline .hour-source{margin-top:18px;min-height:137px;padding-bottom:10px}.hourly-timeline .hour-source+.hour-source{border-top:1px dashed #e6edf6;padding-top:15px;margin-top:3px}.hourly-timeline .hour-label{font-size:9px;color:#64748b;gap:6px}.hourly-timeline .hour-source>b{font-size:20px;margin:8px 0 7px}.hourly-timeline .rain-value{font-size:11px;margin-top:7px;color:#52769c}.hour-risk{font-size:10px;color:#64748b}.hour-unavailable{font-size:10px;color:#64748b;padding-top:32px;line-height:1.6}.hourly-source-error{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#f5f7fc;border:1px solid #e7edf6;border-radius:12px;padding:10px 13px;margin-bottom:20px;font-size:11px;color:#64748b}.hourly-source-error .small-button{flex-shrink:0;font-size:10px;padding:8px 12px}.hourly-panel .segmented button{font-size:11px;min-height:44px}@media(max-width:600px){.hourly-timeline .hour-cell{flex-basis:112px}.hourly-panel .panel-heading{gap:18px}.hourly-panel .segmented{width:100%}.hourly-panel .segmented button{font-size:10px;padding:9px 6px}.hourly-source-error{font-size:10px;line-height:1.6;gap:10px}.hourly-source-error .small-button{padding:8px 10px}.hourly-timeline{margin:0;scroll-snap-type:x proximity}.hourly-panel .panel-note{font-size:10px}.hourly-timeline .hour-label{font-size:9px}}
/* Finalisation : prévisions quotidiennes et commandes */
.daily-list{display:grid;gap:16px}.daily-day{border:1px solid #e8edf5;border-radius:18px;padding:20px;min-width:0;background:#fff}.daily-date{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}.daily-date h3{font-size:16px;margin:0;text-transform:capitalize}.daily-date>span{font-size:13px;color:#64748b}.daily-pair{display:grid;grid-template-columns:1fr 1fr;gap:24px}.daily-source{min-width:0}.daily-provider{display:flex;align-items:center;gap:7px;font-size:12px;margin-bottom:12px;flex-wrap:wrap}.daily-values{display:flex;align-items:center;gap:14px}.daily-temperature{display:flex;gap:12px;white-space:nowrap;font-size:20px}.daily-temperature>span{display:flex;flex-direction:column}.daily-temperature small{font-size:10px;color:#64748b;margin-bottom:3px}.daily-details{display:flex;flex-direction:column;gap:6px;font-size:11px;color:#64748b;margin-left:auto}.daily-details b{color:#0f172a;font-weight:600}.daily-missing{font-size:12px;color:#64748b}.daily-skeleton{display:grid;grid-template-columns:1fr 2fr 2fr;gap:20px}.daily-skeleton .skeleton{height:36px}.refresh-button:disabled{opacity:.5;cursor:default}.last-city{min-height:44px}.source-card,.mix-card,.forecast-panel{min-width:0}.toolbar{gap:14px;flex-wrap:wrap}footer a{color:inherit;text-decoration:none}footer a:hover{text-decoration:underline}.daily-panel{animation:appear .22s ease-out}.update-info{min-height:44px}.app-header .header-right{min-width:0}
@media(max-width:600px){.daily-day{padding:16px}.daily-pair{grid-template-columns:1fr;gap:16px}.daily-source+.daily-source{border-top:1px solid #edf1f7;padding-top:15px}.daily-values{gap:12px}.daily-temperature{font-size:21px}.daily-details{font-size:12px}.daily-panel .panel-heading{margin-bottom:20px}.update-info{width:100%;flex-direction:row;justify-content:space-between;align-items:center}.refresh-button span{display:inline}.refresh-button{min-height:44px;min-width:44px;padding:8px 12px}.toolbar{gap:8px}footer{padding-bottom:calc(24px + env(safe-area-inset-bottom));flex-wrap:wrap}.daily-details span{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.daily-panel{animation:none}}
@media(max-width:420px){.daily-values{display:grid;grid-template-columns:36px minmax(0,1fr)}.daily-details{grid-column:1/-1;flex-direction:row;justify-content:space-between;margin-left:0;padding-top:4px;gap:8px}.daily-temperature{justify-content:flex-end}.daily-date{flex-wrap:wrap;gap:5px 12px}}
/* Audit V1 : lisibilité, valeurs manquantes et contraintes iPhone */
body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.dashboard{margin-top:48px}.hero.has-city+.dashboard{margin-top:28px}.search-results{top:calc(66px + 8px);max-height:min(360px,50dvh)}.suggestion strong{overflow-wrap:anywhere}.metric-missing small{display:block;font-size:12px;color:#64748b;margin-top:6px}.missing-temperature{font-size:16px;color:#64748b;line-height:1.5}.update-info{margin:0;font-size:12px;color:#64748b;align-items:center}.source-note{line-height:1.7}.mix-heading,.source-header,.current-main{gap:14px}.source-header>div:first-child{min-width:0}.condition{flex-shrink:0}.condition span{line-height:1.5}.mix-details>span{flex-wrap:wrap}.mix-live .mix-details b{white-space:normal;overflow-wrap:anywhere}.hourly-source-error{flex-wrap:wrap}.hourly-timeline{scroll-padding-inline:8px}.daily-provider .partial{font-size:11px;padding:3px 7px;background:#f6f0e4;border-radius:5px;margin:0}.empty{padding:30px 12px;line-height:1.7}.refresh-button,.small-button{transition:background .18s,transform .18s}.refresh-button:active,.small-button:active{transform:scale(.97)}.refresh-button:hover:enabled{background:#eaf0f8;border-radius:10px}
@media(max-width:600px){.app-header{padding-top:max(18px,env(safe-area-inset-top))}.dashboard{margin-top:36px}.search-results{top:70px;max-height:min(310px,45dvh)}.source-header h3{font-size:17px}.source-header p{font-size:12px}.source-tag{font-size:9px;padding:6px 7px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}.metrics span{font-size:12px}.metrics strong{font-size:16px;overflow-wrap:anywhere}.metric-missing small{font-size:12px}.source-note{font-size:11px}.current-main>div>p,.condition span{font-size:12px}.location-region{font-size:13px;line-height:1.6}.location-coordinates{font-size:11px;line-height:1.6;overflow-wrap:anywhere}.location-date{font-size:12px}.location-date span{font-size:11px}.preview-heading .eyebrow{font-size:9px}.tabs button{font-size:12px;padding:10px 8px}.hourly-panel .segmented button{font-size:11px}.hourly-timeline .hour-label{font-size:11px}.hourly-timeline .hour-cell{flex-basis:124px}.hourly-timeline .hour-cell>small,.hour-risk,.hourly-timeline .rain-value{font-size:12px}.hourly-source-error{font-size:12px}.hourly-source-error .small-button{font-size:12px}.panel-heading p,.panel-note,.hourly-panel .panel-note{font-size:12px;line-height:1.7}.mix-live .mix-metric>small,.mix-agreement>span:first-child,.mix-rain-amount>span,.mix-rain-amount>small,.mix-rain-amount>p{font-size:12px}.mix-indicator-note{font-size:12px!important}.mix-method,.mix-method summary{font-size:12px}.mix-live .mix-missing-value{font-size:15px!important}.mix-gap{font-size:12px!important}.mix-live .mix-metric>strong{font-size:36px}.mix-heading .eyebrow{font-size:9px;line-height:1.7;letter-spacing:1.4px}.update-info{gap:10px;line-height:1.5}.daily-values{display:grid;grid-template-columns:36px minmax(0,1fr)}.daily-temperature{justify-content:flex-end}.daily-details{grid-column:1/-1;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin:0;gap:8px}.daily-details span{white-space:normal}.daily-missing{line-height:1.6}.daily-provider{font-size:13px}footer{font-size:11px;line-height:1.7}.preview-hint{font-size:12px}.search-box input{font-size:16px}.current-main{flex-wrap:wrap}.condition{margin-left:auto}.mix-live .agreement{font-size:12px}}
@media(max-width:370px){.tabs button{font-size:11px;padding:10px 6px}.temperature{font-size:44px}.metrics strong{font-size:15px}.mix-live .mix-details>span,.mix-live .mix-details b{font-size:12px}}
/* Une échelle commune pour les libellés et les commandes */
@media(max-width:600px){.metrics span,.current-main>div>p,.condition span,.location-region,.daily-provider{font-size:14px}.hourly-panel .segmented button{font-size:12px}.hourly-timeline .hour-label{font-size:12px}.source-header p,.metric-missing small,.source-note,.location-coordinates,.location-date span,.preview-hint{font-size:12px}.daily-temperature small{font-size:12px}.mix-live .mix-metric>span,.mix-live .mix-details>span,.mix-live .mix-details b{font-size:14px}.mix-live .mix-details{line-height:1.6}.daily-values{row-gap:12px}.source-header{align-items:flex-start}.source-tag{font-size:10px}.mix-live .mix-metric{padding-top:24px;padding-bottom:24px}}
/* Villes locales : favoris et historique */
.saved-cities{margin-top:18px;display:grid;gap:14px;text-align:left}.saved-cities[hidden],.saved-cities-notice[hidden]{display:none}.saved-city-group{min-width:0}.saved-city-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;color:#64748b;margin-bottom:8px}.saved-city-label>span{font-size:11px;color:#64748b}.city-pills{display:flex;flex-wrap:wrap;gap:8px}.city-pill{display:flex;align-items:center;max-width:100%;min-width:0;border:1px solid #dfe7f2;border-radius:14px;background:#fff;transition:background .18s,border-color .18s}.city-pill.is-current{border-color:#a9c5f7;background:#eef5ff}.city-shortcut{display:flex;align-items:center;min-height:44px;min-width:0;padding:10px 14px;border:0;border-radius:13px;background:none;color:#334b6f;font-size:13px;text-align:left}.city-shortcut>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.remove-favorite{width:44px;min-width:44px;min-height:44px;padding:0;display:grid;place-items:center;border:0;border-left:1px solid #e8edf5;background:none;border-radius:0 13px 13px 0;color:#64748b}.city-shortcut:hover,.remove-favorite:hover{background:#edf3fc}.city-title-row{display:flex;align-items:center;gap:12px;min-width:0}.city-title-row h2{min-width:0}.favorite-city-button{display:grid;place-items:center;flex-shrink:0;min-height:44px;min-width:44px;border:1px solid #dfe7f2;border-radius:14px;background:#fff;color:#64748b;transition:color .18s,background .18s,transform .18s}.favorite-city-button.is-favorite{color:#2563eb;background:#eef5ff;border-color:#bbd1f7}.favorite-city-button:active,.city-shortcut:active,.remove-favorite:active{transform:scale(.97)}.saved-cities-notice{font-size:12px;color:#526887;margin-top:12px;line-height:1.7;text-align:left}.city-title-row+ .location-region{margin-top:7px}
@media(max-width:600px){.saved-cities{gap:14px;margin-top:16px}.saved-city-label{font-size:12px}.city-shortcut{font-size:14px;padding:10px 12px}.city-title-row{width:100%;justify-content:space-between}.selected-location>div:first-child{width:100%;min-width:0}.favorite-city-button{margin-left:auto}.city-title-row h2{overflow-wrap:anywhere}.city-pills{gap:8px}.saved-cities-notice{font-size:12px}}
/* Comparaison : valeurs côte à côte et deux courbes horaires */
.comparison-view{margin-top:28px;border-top:1px solid #dbe5f3;padding-top:24px}.comparison-heading{margin-bottom:16px}.comparison-heading h3,.chart-heading h3{font-size:18px;font-weight:650;letter-spacing:-.4px}.comparison-heading p{font-size:13px;color:#64748b;margin-top:7px}.comparison-rows{display:grid;gap:10px}.comparison-row{display:grid;grid-template-columns:minmax(110px,.75fr) minmax(0,2fr) minmax(90px,.6fr);align-items:center;gap:18px;padding:16px;border:1px solid #dfe7f3;border-radius:15px;background:#ffffffa6}.comparison-name h4{font-size:14px;font-weight:600;margin:0}.comparison-name>span{display:block;font-size:12px;line-height:1.6;color:#64748b;margin-top:5px}.comparison-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.comparison-source{min-width:0}.comparison-source>span{display:flex;align-items:center;gap:6px;font-size:12px;color:#64748b}.comparison-source>strong{display:block;margin-top:7px;font-size:20px;font-weight:600;overflow-wrap:anywhere}.comparison-gap{padding:10px 12px;border-radius:11px;background:#eaf0fa;color:#455d84;min-width:0}.comparison-gap>span{display:block;font-size:12px}.comparison-gap>strong{display:block;font-size:14px;font-weight:600;margin-top:5px;overflow-wrap:anywhere}.comparison-note{font-size:12px!important;color:#64748b;margin-top:13px;line-height:1.7}.hourly-chart{padding:20px 0 24px;border-bottom:1px solid #e6edf6;margin-bottom:26px;min-width:0}.chart-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:#64748b}.chart-legend>span,.chart-reading>span{display:flex;align-items:center;gap:7px}.chart-instructions{font-size:12px;color:#64748b;line-height:1.7;margin-top:12px}.chart-reading{margin:14px 0 20px;padding:14px 16px;border:1px solid #e3ebf6;border-radius:13px;background:#f7f9fd;display:flex;flex-wrap:wrap;gap:12px 24px;font-size:13px;min-height:66px;align-items:center}.chart-reading>strong{font-weight:600}.chart-reading b{font-weight:600;color:#0f172a}.chart-reading>span{color:#64748b}.chart-layout{display:grid;grid-template-columns:40px minmax(0,1fr);gap:6px;max-width:800px;margin:auto}.chart-axis{height:180px;display:flex;flex-direction:column;justify-content:space-between;padding:4px 0;font-size:12px;color:#64748b}.temperature-chart-plot{min-width:0;touch-action:pan-y pinch-zoom;border-radius:8px;cursor:crosshair}.temperature-chart-plot svg{display:block;width:100%;height:180px;overflow:visible}.chart-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.chart-line.ecmwf{stroke:#7b62e9}.chart-line.mf{stroke:#12accf;stroke-dasharray:5 4}.chart-point.ecmwf,.chart-marker.ecmwf{fill:#7b62e9}.chart-point.mf,.chart-marker.mf{fill:#12accf}.chart-marker{stroke:white;stroke-width:1.8;vector-effect:non-scaling-stroke}.chart-cursor{stroke:#94a3b8;stroke-width:1;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.chart-times{display:flex;justify-content:space-between;gap:8px;padding:8px 0 0;color:#64748b;font-size:12px;cursor:default}.chart-summary{font-size:14px;color:#425877;line-height:1.7;margin-top:20px}.chart-summary strong{color:#0f172a;font-weight:600}.chart-coverage{font-size:12px;color:#64748b;line-height:1.7;margin-top:6px}
@media(max-width:600px){.comparison-view{margin-top:26px;padding-top:22px}.comparison-row{grid-template-columns:minmax(0,1fr);gap:14px;padding:16px}.comparison-name{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.comparison-name h4{font-size:15px}.comparison-name>span{margin:0;font-size:12px}.comparison-pair{gap:12px}.comparison-source>span{font-size:12px;flex-wrap:wrap;line-height:1.6}.comparison-source>strong{font-size:20px}.comparison-gap{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px}.comparison-gap>strong{margin:0}.chart-heading{gap:12px}.chart-heading h3{font-size:17px}.chart-legend{font-size:12px;gap:14px}.chart-reading{display:grid;grid-template-columns:1fr;gap:10px;padding:13px 14px;min-height:112px;font-size:14px}.chart-reading>span{flex-wrap:wrap}.chart-reading b{margin-left:auto}.chart-layout{grid-template-columns:34px minmax(0,1fr);gap:3px}.chart-axis{font-size:12px}.chart-summary{font-size:14px}.temperature-chart-plot:focus-visible{outline-offset:3px}.comparison-note,.chart-coverage{font-size:12px}}
/* Présentation installée : zones sûres, clavier et gestes tactiles */
html{color-scheme:light;min-height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%;background:#f5f7fb;scroll-padding-top:20px}body{min-height:100vh;min-height:100dvh}#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}#app>main{flex:1;width:100%;min-width:0}.app-header,footer{width:100%}.search-box input{font-size:max(16px,1rem)}button,input,a,summary{touch-action:manipulation}button{min-height:44px}.city-shortcut,.remove-favorite,.favorite-city-button,.small-button,.refresh-button{min-height:44px}.tabs button,.segmented button,.suggestion{min-height:44px}.search-results{overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}.hourly-timeline{touch-action:pan-x pan-y pinch-zoom}.temperature-chart-plot{touch-action:pan-y pinch-zoom}.app-header{padding-top:max(24px,env(safe-area-inset-top))}footer{padding-bottom:calc(24px + env(safe-area-inset-bottom))}.tabs button,.segmented button,.favorite-city-button,.city-shortcut,.remove-favorite{transition:background .16s,color .16s,transform .16s}.tabs button:active,.segmented button:active{transform:scale(.98)}
@media(max-width:600px){.app-header{padding-top:max(18px,env(safe-area-inset-top))}}
@media(display-mode:standalone),(display-mode:fullscreen){html{overscroll-behavior-y:none}.app-header{padding-top:calc(16px + env(safe-area-inset-top))}footer{padding-bottom:calc(22px + env(safe-area-inset-bottom))}.hero.has-city{margin-top:6px}}
@media(prefers-reduced-motion:reduce){button{transition:none!important}}
/* Accueil épuré : aucune météo avant une sélection volontaire */
.dashboard[hidden],#app>footer[hidden]{display:none!important}.home-state .hero{max-width:720px;width:100%;margin:0 auto;padding:clamp(64px,14svh,145px) 24px 48px}.home-state .hero h1{font-size:clamp(36px,5vw,52px);line-height:1.2;letter-spacing:-1.8px;margin:0 0 18px}.home-state .hero>p{font-size:14px;line-height:1.7;max-width:430px;margin:0 auto}.home-state .hero .search-container{margin-top:30px;max-width:590px}.home-state .preview-hint{font-size:12px}.home-state .saved-cities{margin-top:20px}.weather-state .dashboard{animation:appear .22s ease-out}.weather-state .hero.has-city .search-container{margin-top:0}.home-state .search-box{height:68px}.home-state .search-results{top:76px}
@media(max-width:600px){.home-state .hero{padding:clamp(56px,12svh,110px) 20px 40px}.home-state .hero h1{font-size:clamp(31px,8.5vw,38px);letter-spacing:-1.25px;line-height:1.22;margin-bottom:16px}.home-state .hero>p{font-size:13px;max-width:280px}.home-state .hero .search-container{margin-top:28px}.home-state .search-box{height:64px;padding:0 16px;gap:12px}.home-state .search-results{top:72px;max-height:min(310px,45dvh)}.home-state .preview-hint{font-size:12px;line-height:1.6}.home-state .saved-cities{gap:12px}.weather-state .hero.has-city{padding-left:16px;padding-right:16px}}
@media(max-height:550px){.home-state .hero{padding-top:30px}}
@media(prefers-reduced-motion:reduce){.weather-state .dashboard{animation:none}}

/* DWD extends the existing source system; mobile cards stay stacked. */
.dot.icon{background:#149d99}.source-card.icon{border-top-color:#149d99}.source-header .source-description{font-size:12px;color:#64748b;margin-top:5px}.daily-pair{grid-template-columns:1fr}.daily-source+.daily-source{border-top:1px solid #edf1f7;padding-top:15px}.hourly-panel .segmented{max-width:100%;flex-wrap:wrap;gap:3px}.hourly-panel .segmented button{flex:1 1 auto;white-space:nowrap}
@media(min-width:1100px){.cards-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.source-card{padding:24px}.daily-pair{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.daily-source+.daily-source{border-top:0;padding-top:0}.daily-values{flex-wrap:wrap}.daily-details{margin-left:0;width:100%;flex-direction:row;justify-content:space-between;gap:8px}.daily-temperature{font-size:19px}}
@media(max-width:600px){.hourly-panel .segmented button{flex-basis:calc(50% - 4px);font-size:12px}.cards-grid{grid-template-columns:1fr}}

.source-flag{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:16px;line-height:1;vertical-align:middle;letter-spacing:0}.source-header .source-flag{margin-left:5px}.segmented button .source-flag{font-size:14px;margin-right:6px}.daily-provider .source-flag{font-size:15px}
.mix-consensus{display:flex;flex-direction:column;gap:7px;margin-top:22px}.mix-consensus>strong{font-size:16px;font-weight:600}.mix-consensus>span,.mix-consensus>small{font-size:13px;color:#64748b;line-height:1.7}.mix-range{font-size:12px;color:#64748b;line-height:1.8;margin-top:12px}.mix-live .comparison-pair{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.comparison-gap>small{display:block;font-size:12px;color:#64748b;margin-top:6px}.mix-live .comparison-source>span{flex-wrap:wrap;line-height:1.6}
@media(max-width:600px){.mix-range{font-size:13px}.mix-consensus>span{font-size:14px}.mix-live .comparison-pair{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));row-gap:18px}}
/* Now: consensus first, compact sources, progressively disclosed detail. */
#weather-content>.mix-primary{margin-top:0;padding:26px 28px;background:linear-gradient(135deg,#edf4ff,#f6faff 70%);border:1px solid #dbe7f7}.mix-primary>h2{font-size:24px;margin:0;letter-spacing:-.6px}.mix-main-temperature{font-size:76px;font-weight:650;letter-spacing:-4px;line-height:1.15;margin:12px 0 4px}.mix-main-temperature>span{font-size:22px;letter-spacing:0}.mix-primary .mix-main-consensus{font-size:15px;color:#526580;line-height:1.6}.mix-main-consensus small{display:block;font-size:12px}.mix-main-metrics{display:flex;gap:24px;flex-wrap:wrap;margin:20px 0}.mix-main-metrics>div{flex:1;min-width:100px}.mix-main-metrics span{display:block;font-size:13px;color:#64748b;margin-bottom:6px}.mix-main-metrics strong{font-size:18px;font-weight:600}.mix-main-metrics small{display:block;font-size:12px;color:#64748b;margin-top:5px}.mix-primary .mix-agreement{align-items:flex-start}.mix-primary .mix-agreement>span:first-child{display:none}.mix-primary .mix-main-sources{font-size:12px;color:#64748b;margin-top:16px;line-height:1.7}.mix-primary .mix-main-note{font-size:12px;color:#64748b;margin-top:5px;line-height:1.7}.models-section{margin-top:25px}.models-section>h2{font-size:19px;letter-spacing:-.4px;margin:0 0 14px}.source-card.model-preview{padding:18px 20px;min-height:0}.model-preview[role=button]{cursor:pointer;transition:box-shadow .16s,transform .16s,border-color .16s}.model-preview[role=button]:hover{box-shadow:0 5px 20px #253b6510;border-color:#cbd9ed}.model-preview[role=button]:active{transform:scale(.985)}.model-preview[role=button]:focus-visible{outline:3px solid #77acf5;outline-offset:4px}.model-preview .source-header h3{font-size:16px}.model-preview .source-header p{font-size:12px}.preview-weather{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:12px 0 10px}.preview-temperature{font-size:33px;line-height:1.2;letter-spacing:-1px;font-weight:600}.preview-essentials{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:#64748b}.preview-essentials b{font-weight:600;color:#334155}.preview-detail-link{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#64748b;margin-top:14px}.preview-detail-link>span{font-size:22px;line-height:1}.preview-loading{display:flex;gap:18px;margin-top:16px}.preview-loading .skeleton{height:36px;flex:1}.preview-error{font-size:13px;color:#64748b;line-height:1.7;margin:14px 0}.mix-extras{font-size:14px;margin-top:22px}.mix-extras>summary{min-height:44px;line-height:1.6;padding:12px 0;color:#526580}.mix-extras .mix-card{margin-top:12px}.sheet-open{overflow:hidden}.model-dialog{padding:0;max-width:570px;width:calc(100% - 32px);max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;border:1px solid #e2e8f0;border-radius:24px;background:#fff;animation:appear .18s ease}.model-dialog::backdrop{background:#0f172a55;backdrop-filter:blur(5px)}.model-dialog-header{position:sticky;top:0;background:#ffffffed;backdrop-filter:blur(10px);z-index:1;display:flex;align-items:center;justify-content:space-between;padding:16px 22px;gap:15px;border-bottom:1px solid #edf1f7}.model-dialog-header h2{font-size:17px;letter-spacing:-.4px}.sheet-close{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:#f3f6fa;font-size:26px;color:#475569}.model-dialog-content .source-card{border:0;border-radius:0;box-shadow:none;animation:none;padding:24px}.model-dialog-content .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.model-dialog-content .metrics span{font-size:14px}.model-dialog-content .metrics strong{font-size:17px}.model-dialog-content .source-note{font-size:12px;line-height:1.8}.model-dialog-content{padding-bottom:env(safe-area-inset-bottom)}.sheet-grip{display:none}
@media(max-width:600px){.weather-state .hero.has-city{margin-top:0}.weather-state .hero.has-city .search-container{margin-top:10px}.weather-state .dashboard{margin-top:18px}.weather-state .selected-location{margin-bottom:14px;gap:10px}.weather-state .location-coordinates{display:none}.weather-state .selected-location .eyebrow{display:none}.weather-state .location-date span{display:none}.weather-state .toolbar{margin-bottom:12px}.weather-state .update-info{min-height:32px}.weather-state .refresh-button{padding-top:2px;padding-bottom:2px}.weather-state #weather-content>.mix-primary{padding:22px 20px;border-radius:22px}.mix-primary>h2{font-size:22px}.mix-main-temperature{font-size:68px;line-height:1.05;margin-top:10px}.mix-main-metrics{gap:12px;margin:16px 0}.mix-main-metrics>div{min-width:0}.mix-main-metrics>div:first-child{flex-basis:100%}.mix-main-metrics strong{font-size:17px}.mix-main-metrics>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}.mix-main-metrics>div:first-child>span{margin:0}.mix-primary .agreement{font-size:13px;min-height:34px}.mix-primary .mix-main-sources{margin-top:12px}.mix-primary .mix-main-note{font-size:11px}.models-section{margin-top:22px}.models-section .cards-grid{gap:10px}.source-card.model-preview{padding:16px 18px;border-radius:18px}.model-preview .source-header{float:left;width:55%;min-width:0}.model-preview .preview-weather{margin:0 0 12px;justify-content:flex-end;gap:10px}.model-preview .preview-temperature{font-size:30px}.model-preview .preview-weather svg{width:34px;height:34px}.preview-essentials{clear:both;font-size:14px}.preview-detail-link{margin-top:10px}.model-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:none;max-height:90dvh;border-radius:26px 26px 0 0;border-bottom:0;animation:sheet-rise .22s ease-out}.sheet-grip{display:flex;align-items:center;justify-content:center;height:26px;touch-action:none}.sheet-grip span{width:38px;height:4px;background:#cbd5e1;border-radius:10px}.model-dialog-header{padding:8px 18px 12px}.model-dialog-content .source-card{padding:20px}.model-dialog-content .location-coordinates{display:block}.model-dialog-content .current-main{margin:18px 0}}
@keyframes sheet-rise{from{opacity:.6;transform:translateY(35px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.model-dialog,.model-preview{animation:none!important;transition:none!important}}
@media(max-width:600px){.weather-state .hero.has-city+.dashboard{margin-top:18px}.weather-state .saved-cities{display:flex;gap:16px;overflow-x:auto;max-width:100%;margin-top:10px;padding-bottom:2px;overscroll-behavior-x:contain}.weather-state .saved-city-group{display:flex;align-items:center;gap:8px;flex-shrink:0}.weather-state .saved-city-label{white-space:nowrap;font-size:11px;margin:0}.weather-state .city-pills{flex-wrap:nowrap;gap:6px}.weather-state .preview-hint{font-size:11px;margin-top:8px}}
/* A clear signature surface for the main weather synthesis. */
#weather-content>.mix-primary{background:linear-gradient(125deg,#dceaff 0%,#e6eafa 58%,#dcf2f8 100%);border-color:#bdcff0;box-shadow:0 8px 28px #2563eb0a}.mix-primary-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.mix-primary-title h2{font-size:24px;letter-spacing:-.6px}.mix-primary-title>span{font-size:12px;font-weight:600;color:#42618e;border:1px solid #9ebce259;padding:6px 10px;border-radius:999px;background:#ffffff45}.mix-current-overview{display:flex;align-items:center;justify-content:space-between;gap:16px}.mix-condition{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;max-width:190px;min-width:0}.mix-condition-icons{display:flex;align-items:center;justify-content:center;gap:0}.mix-condition-icons svg+svg{margin-left:-17px}.mix-condition-icons:has(svg+svg) svg{width:57px;height:57px}.mix-condition strong{font-size:14px;font-weight:600;color:#334b70}.mix-condition small{font-size:11px;line-height:1.5;color:#566c8d}.city-country-flag{display:inline-block;vertical-align:middle;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:.68em;line-height:1;letter-spacing:0;margin-left:3px;white-space:nowrap}
@media(max-width:600px){.mix-primary-title h2{font-size:22px}.mix-primary-title>span{font-size:11px}.mix-current-overview{gap:10px}.mix-condition{max-width:145px}.mix-condition-icons svg{width:64px;height:64px}.mix-condition-icons:has(svg+svg) svg{width:47px;height:47px}.mix-condition-icons svg+svg{margin-left:-12px}.mix-condition strong{font-size:13px}.mix-condition small{font-size:10px}.mix-current-overview .mix-main-temperature{font-size:clamp(46px,15vw,68px);flex-shrink:0}.mix-current-overview .mix-main-temperature>span{font-size:16px;white-space:normal;display:block;max-width:145px}}
.mix-condition-icons{max-width:100%}.mix-condition-icons svg{min-width:0;flex-shrink:1}
/* Plain-language weather first; expert information remains opt-in. */
.models-disclosure,.forecast-experts{border:1px solid #e1e8f2;border-radius:18px;background:#ffffff;margin-top:18px;min-width:0;padding:0 18px}.models-disclosure>summary,.forecast-experts>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 0;min-height:72px;cursor:pointer}.models-disclosure>summary::-webkit-details-marker,.forecast-experts>summary::-webkit-details-marker{display:none}.models-disclosure summary strong,.forecast-experts summary strong{display:block;font-size:16px;font-weight:600;color:#0f172a}.models-disclosure summary small,.forecast-experts summary small{display:block;font-size:12px;line-height:1.7;color:#64748b;margin-top:4px}.disclosure-chevron{font-size:25px;color:#64748b;transition:transform .16s}.models-disclosure[open]>summary .disclosure-chevron,.forecast-experts[open]>summary .disclosure-chevron{transform:rotate(90deg)}.models-explanation{font-size:13px;color:#64748b;line-height:1.7;margin:0 0 16px}.models-disclosure>.cards-grid{padding-bottom:18px}.models-disclosure>.mix-extras{margin:0 0 12px}.forecast-experts>.forecast-panel{border:0;padding:18px 0;box-shadow:none;background:transparent;animation:none}.synthesis-timeline .mix-condition{margin:14px auto;min-height:80px}.synthesis-timeline .mix-condition-icons svg{width:48px;height:48px}.synthesis-timeline .mix-condition-icons:has(svg+svg) svg{width:35px;height:35px}.synthesis-timeline .mix-condition strong{font-size:12px}.synthesis-hour>.synthesis-metric{display:block;margin-bottom:18px}.synthesis-hour>.synthesis-metric>span{display:none}.synthesis-hour>.synthesis-metric>strong{font-size:24px}.synthesis-values{display:flex;flex-direction:column;gap:10px}.synthesis-metric{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;color:#64748b;flex-wrap:wrap}.synthesis-metric strong{color:#0f172a;font-weight:600}.synthesis-coverage{font-size:11px;color:#64748b;margin-top:16px;line-height:1.6}.synthesis-missing{font-size:12px;color:#64748b}.synthesis-unavailable{font-size:13px;color:#64748b;line-height:1.8;padding:20px 0}.synthesis-unavailable small{font-size:12px}.synthesis-date{display:flex;flex-direction:column;gap:6px;text-transform:capitalize}.synthesis-date>small{font-size:12px;color:#64748b}.synthesis-day{display:grid;grid-template-columns:minmax(100px,1fr) minmax(100px,1fr) minmax(100px,1fr);gap:18px;align-items:center}.synthesis-day .mix-condition{max-width:180px}.synthesis-day .mix-condition-icons svg{width:48px;height:48px}.synthesis-day .mix-condition-icons:has(svg+svg) svg{width:38px;height:38px}.synthesis-daily-temperatures{display:flex;gap:20px}.synthesis-day .synthesis-values{grid-column:2/-1;flex-direction:row;flex-wrap:wrap;gap:14px 25px}.synthesis-day .synthesis-coverage{margin:0}.synthesis-loading{display:grid;gap:15px;padding:22px 0}.synthesis-loading .skeleton{height:46px}.mix-primary .mix-primary-title h2{font-size:23px}.mix-primary .mix-main-consensus{font-size:13px;margin-top:8px}.mix-primary .mix-agreement>.agreement{font-size:14px;line-height:1.6;white-space:normal}.mix-primary .mix-main-metrics>div:first-child{flex-basis:auto;display:block}.mix-primary .mix-main-metrics>div{flex:1;min-width:0}.mix-primary .mix-main-metrics>div:first-child>span{margin-bottom:6px}
@media(max-width:600px){.mix-primary .mix-primary-title h2{font-size:21px}.mix-primary .mix-primary-title>span{font-size:11px}.mix-primary .mix-main-metrics strong{font-size:22px}.models-disclosure,.forecast-experts{padding:0 14px}.models-disclosure summary strong,.forecast-experts summary strong{font-size:15px}.synthesis-day{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:16px;gap:15px}.synthesis-day>.mix-condition{justify-self:end;max-width:135px}.synthesis-daily-temperatures{grid-column:1/-1;justify-content:space-between;gap:12px}.synthesis-daily-temperatures strong{font-size:22px}.synthesis-day .synthesis-values{grid-column:1/-1;gap:15px;justify-content:space-between}.synthesis-day .synthesis-coverage{grid-column:1/-1}.synthesis-unavailable{grid-column:1/-1}.synthesis-timeline .hour-cell{flex-basis:145px}.synthesis-hour .mix-condition{max-width:120px}.synthesis-hour .synthesis-coverage{font-size:11px}.synthesis-panel .panel-note{font-size:11px}}

/* NOAA GFS uses the shared source layout and a restrained deep-blue accent. */
.dot.gfs{background:#315daf}.source-card.gfs{border-top-color:#315daf}.chart-line.gfs{stroke:#315daf}.chart-line.icon{stroke:#149d99}.chart-point.gfs,.chart-marker.gfs{fill:#315daf}.chart-point.icon,.chart-marker.icon{fill:#149d99}
.mix-model-count{margin:8px 0 0;font-size:12px;color:#475569}.models-disclosure .cards-grid,.daily-experts .daily-pair{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-legend{flex-wrap:wrap}.chart-reading{flex-wrap:wrap}.hour-label{white-space:normal}
@media(max-width:600px){.models-disclosure .cards-grid,.daily-experts .daily-pair{grid-template-columns:minmax(0,1fr)}.chart-legend{gap:8px 12px}.chart-reading>span{flex:0 1 calc(50% - 8px);min-width:0}.chart-reading{display:flex}.chart-reading>strong{flex-basis:100%}.segmented button{min-height:44px}}

/* Supplied MeteoMix mark; preserve the existing Manrope wordmark. */
.brand .logo-icon{flex-shrink:0}.brand .logo-icon img{display:block;width:100%;height:100%;object-fit:contain;border-radius:0;mix-blend-mode:multiply}.brand .brand-name{color:#103f87}.brand .brand-mix{color:#007d9f}

/* Independent native 15-minute precipitation outlook. */
.rain-card{background:#fff;border:1px solid #e5ecf5;border-radius:24px;padding:22px;margin:16px 0;min-width:0;box-shadow:0 5px 22px #0f172a04;animation:fade-in .2s ease-out}
.rain-heading{display:flex;align-items:center;gap:9px;color:#2563eb}.rain-heading h3{color:#0f172a;font-size:16px;line-height:1.4;margin:0;font-weight:700}.rain-heading svg{flex-shrink:0}
.rain-summary{color:#334155;font-size:15px;line-height:1.55;margin:12px 0 8px}.rain-unavailable{color:#64748b;font-size:14px;line-height:1.6;margin:12px 0}
.rain-timeline{display:flex;overflow-x:auto;gap:4px;padding:8px 2px 10px;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}
.rain-point{flex:1 0 64px;min-width:64px;min-height:104px;padding:8px 2px;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer;color:#475569;font:inherit;touch-action:pan-x;transition:background .15s,transform .15s}
.rain-point:first-child{min-width:76px}.rain-point[aria-pressed=true]{background:#eff6ff;border-color:#bfdbfe}.rain-point:focus-visible{outline:2px solid #2563eb;outline-offset:1px}.rain-point:active{transform:scale(.97)}
.rain-bar-track{height:48px;display:flex;align-items:flex-end;justify-content:center;margin-bottom:10px;border-bottom:1px solid #e2e8f0}.rain-bar{display:block;width:19px;max-height:48px;border-radius:5px 5px 2px 2px;background:linear-gradient(180deg,#22c7e8,#2563eb)}.rain-bar.rain-missing{height:3px!important;background:#cbd5e1;width:10px}.rain-time{font-size:13px;white-space:nowrap}.rain-detail{font-size:13px;line-height:1.65;color:#475569;background:#f5f7fb;border-radius:10px;padding:9px 12px;margin:4px 0 10px;min-height:38px}.rain-footnote{font-size:12px;line-height:1.6;color:#64748b;margin:0}.rain-skeleton{height:112px;margin-top:16px;border-radius:12px}.rain-retry{min-height:44px;padding:8px 14px;border:1px solid #dbeafe;border-radius:10px;background:#eff6ff;color:#2563eb;font:inherit;font-size:14px;cursor:pointer}
@media(max-width:600px){.rain-card{padding:18px;border-radius:20px}.rain-heading h3{font-size:15px}.rain-timeline{margin-right:-4px}.rain-summary{font-size:14px}}
@media(prefers-reduced-motion:reduce){.rain-card{animation:none}.rain-point{transition:none}}

/* Zero is dry: blue bars are reserved for positive precipitation amounts. */
.rain-amount{display:block;margin-top:5px;font-size:13px;line-height:1.4;font-weight:600;white-space:nowrap;color:#64748b}.rain-amount.has-rain{color:#2563eb}.rain-detail:empty{display:none}

/* Observed RainViewer radar; forecasts and model comparison stay independent. */
.radar-card{background:#fff;border:1px solid #e5ecf5;border-radius:24px;padding:22px;min-width:0}.radar-title{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.radar-title h3{font-size:20px;margin:0;color:#0f172a}.radar-title p{font-size:14px;line-height:1.5;color:#64748b;margin:6px 0 12px}.radar-observation-badge{font-size:11px;color:#2563eb;background:#eff6ff;padding:6px 9px;border-radius:20px;white-space:nowrap}.radar-status{font-size:14px;line-height:1.5;color:#475569;margin:8px 0}.radar-status:empty{display:none}.radar-map-wrap{position:relative;isolation:isolate;border-radius:18px;overflow:hidden;background:#eef2f6}.radar-map{width:100%;height:54svh;min-height:300px;max-height:610px}.radar-center{position:absolute;top:116px;right:10px;z-index:800;width:44px;height:44px;background:white;border:1px solid #dbe3ee;border-radius:12px;font-size:26px;color:#2563eb;box-shadow:0 3px 12px #0f172a12;cursor:pointer}.radar-city-marker span{display:block;width:18px;height:18px;border:3px solid white;background:#0f172a;border-radius:50%;box-shadow:0 0 0 2px #2563eb,0 2px 7px #0f172a40}.radar-map .leaflet-control-zoom{border:0;box-shadow:0 3px 12px #0f172a12;border-radius:12px;overflow:hidden}.radar-map .leaflet-control-zoom a{width:44px;height:44px;line-height:44px;color:#0f172a;border-color:#e2e8f0}.radar-map .leaflet-control-attribution{font-size:11px;line-height:1.6;background:#ffffffed}.radar-map .leaflet-tooltip{border:1px solid #e2e8f0;border-radius:8px;font-family:inherit;color:#0f172a}.radar-controls{padding:16px 0 6px}.radar-control-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.radar-control-heading>div{text-align:right;min-width:0}.radar-frame-time{font-size:20px;display:block;font-variant-numeric:tabular-nums}.radar-latest{display:block;font-size:12px;color:#64748b;line-height:1.5}.radar-play,.radar-retry{min-height:44px;padding:10px 16px;border:1px solid #dbeafe;border-radius:12px;background:#eff6ff;font:inherit;font-size:14px;font-weight:600;color:#2563eb;cursor:pointer}.radar-retry{margin:0 0 12px}.radar-slider{width:100%;height:44px;accent-color:#2563eb;cursor:pointer;margin:4px 0 0;padding:0;box-sizing:border-box;touch-action:pan-y}.radar-range-labels{display:flex;justify-content:space-between;color:#64748b;font-size:13px}.radar-note,.radar-zoom-note,.radar-coverage{font-size:13px;line-height:1.6;color:#64748b;margin:12px 0}.radar-coverage{color:#475569;background:#f5f7fb;padding:10px 12px;border-radius:12px}.radar-zoom-note:empty{display:none}.radar-attribution{font-size:12px;color:#64748b;margin:12px 0 0}.radar-attribution a{color:#2563eb;text-decoration:underline}.radar-forecast{margin-top:16px;padding:14px;background:#f5f7fb;border-radius:14px;font-size:14px}.radar-forecast strong{color:#0f172a}.radar-forecast p{margin:6px 0;line-height:1.5}.radar-forecast small{font-size:12px;color:#64748b}.radar-play:focus-visible,.radar-center:focus-visible,.radar-slider:focus-visible,.radar-retry:focus-visible{outline:2px solid #2563eb;outline-offset:3px}
@media(max-width:600px){.radar-card{padding:16px;border-radius:20px}.radar-title{display:block}.radar-observation-badge{display:inline-block;margin-bottom:10px}.radar-title h3{font-size:19px}.radar-map{height:54svh;min-height:300px}.tabs{width:100%;display:flex}.tabs [data-tab]{flex:1;min-width:0;white-space:normal;padding-left:8px;padding-right:8px;font-size:12px;min-height:44px}.radar-map .leaflet-control-attribution{max-width:240px}.radar-play{padding:10px 12px}}

/* One precipitation player, with stable dimensions during frame changes. */
.radar-current-reading{text-align:center;min-height:56px}.radar-current-reading .radar-frame-time{font-size:28px;line-height:1.2}.radar-frame-type{display:block;color:#64748b;font-size:13px;line-height:1.5}.radar-transport{display:flex;justify-content:center;gap:10px;margin:12px 0}.radar-prev,.radar-next{height:44px;min-width:44px;border:1px solid #dbeafe;border-radius:12px;background:#eff6ff;color:#2563eb;font-size:28px;line-height:1}.radar-controls>.radar-latest{text-align:center;min-height:18px}.radar-timeline-phases{position:relative;display:flex;justify-content:space-between;min-height:38px;margin-top:12px;align-items:center;font-size:12px;color:#64748b;gap:12px}.radar-now{position:absolute;left:clamp(42px,var(--radar-now-position,50%),calc(100% - 48px));transform:translateX(-50%);border:0;border-radius:8px;background:white;color:#0f172a;font-size:12px;font-weight:700;min-height:38px;padding:6px}.radar-timeline-phases>span:last-child{margin-left:auto}.radar-planned-label.unavailable{visibility:hidden}.radar-future-status{font-size:13px;line-height:1.6;color:#64748b;margin:12px 0}.radar-future-status:empty{display:none}.radar-status{min-height:42px;margin:0;display:flex;align-items:center}.radar-status:empty{display:flex}.radar-prev:focus-visible,.radar-next:focus-visible,.radar-now:focus-visible{outline:2px solid #2563eb;outline-offset:3px}
/* Compact favorite weather tiles: two columns, up to six cities. */
.favorite-weather-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;text-align:left}.home-state .saved-city-label{font-size:16px;font-weight:600;color:#0f172a;margin-bottom:12px}.home-state .saved-city-label>span{font-size:12px;font-weight:400}.favorite-tile{position:relative;min-width:0;border-radius:20px;overflow:hidden;background:linear-gradient(135deg,#e8f0f8,#cfdfec);color:#172c47;box-shadow:0 5px 16px #163b6914,inset 0 1px 0 #ffffff55;border:1px solid #ffffff66;transition:transform .16s,box-shadow .16s}.favorite-open{display:flex;flex-direction:column;width:100%;height:100%;min-height:192px;padding:15px;text-align:left;color:inherit;border:0;background:transparent;font-family:inherit;cursor:pointer}.favorite-open:focus-visible,.favorite-remove:focus-visible{outline:3px solid #22c7e8;outline-offset:-4px}.favorite-open:active{transform:scale(.975)}.favorite-tile:hover{box-shadow:0 8px 22px #163b6928,inset 0 1px 0 #ffffff55}.favorite-name{display:block;min-height:22px;padding-right:25px;font-size:16px;font-weight:650;line-height:1.25;overflow-wrap:anywhere}.favorite-forecast{display:flex;align-items:center;justify-content:space-between;gap:2px;width:100%;margin:9px 0 6px}.favorite-temperature{display:block;font-size:42px;font-weight:550;line-height:1;letter-spacing:-1.7px}.favorite-condition{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;line-height:1.35;min-height:18px}.favorite-weather-icon{display:flex;flex-shrink:0;align-items:center;filter:drop-shadow(0 3px 5px #14325825);max-width:64px}.favorite-range{display:block;font-size:13px;line-height:1.5;margin-top:4px;white-space:nowrap}.favorite-range>span{padding:0 3px;opacity:.55}.favorite-indicators{display:flex;flex-direction:column;gap:1px;font-size:13px;line-height:1.5;margin:5px 0 7px}.favorite-indicators b{font-weight:600}.favorite-updated{display:block;font-size:12px;line-height:1.5;margin-top:auto;padding-top:5px;border-top:1px solid #ffffff35;white-space:normal}.favorite-updated time{white-space:nowrap;font-variant-numeric:tabular-nums}.favorite-remove{position:absolute;right:0;top:0;width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:20px;cursor:pointer;opacity:.8}.favorite-remove:hover{background:#ffffff20}.favorite-sun,.favorite-partly{background:linear-gradient(145deg,#b8e5ff 0%,#d9f1ff 55%,#f1fbff 100%);color:#143b59}.favorite-cloud,.favorite-nightcloud{background:linear-gradient(145deg,#d7e4ee,#a8c0d3);color:#17374c}.favorite-rain{background:linear-gradient(145deg,#294b6b,#467791);color:#fff}.favorite-storm{background:linear-gradient(145deg,#252d4e,#4e5f81);color:#fff}.favorite-fog{background:linear-gradient(145deg,#e4ecef,#c3d1d8);color:#293d4e}.favorite-snow{background:linear-gradient(145deg,#c6e5f6,#f0faff);color:#153c58}.favorite-moon,.favorite-night{background:linear-gradient(145deg,#132341,#294869 65%,#3c6686);color:#fff;border-color:#ffffff15}.favorite-night.favorite-rain{background:linear-gradient(145deg,#1a2c42,#35566b)}.favorite-night.favorite-storm{background:linear-gradient(145deg,#1c2036,#3e4769)}.favorite-unavailable{font-size:14px;margin:25px 0;line-height:1.5}.favorite-skeleton{display:grid;gap:14px;margin-top:20px;min-height:124px;width:100%}.favorite-skeleton .skeleton:first-child{height:38px;width:60px}.favorite-skeleton .skeleton:nth-child(2){height:13px;width:75%}.favorite-skeleton .skeleton:nth-child(3){height:13px;width:90%}.favorite-tile .skeleton{background:#c0d1e1}.favorite-tile .skeleton::after{background:linear-gradient(90deg,transparent,#ffffff88,transparent)}
@media(max-width:600px){.favorite-weather-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;overflow:visible;margin:0;padding:0}.favorite-tile{border-radius:18px}.favorite-open{padding:13px;min-height:194px}.favorite-name{font-size:15px}.favorite-temperature{font-size:38px}.favorite-weather-icon svg{width:44px;height:44px}.favorite-weather-icon:has(svg+svg) svg{width:28px;height:28px}.home-state .saved-cities{margin-top:20px}.home-state .saved-city-group{min-width:0;max-width:100%}}
@media(max-width:360px){.favorite-open{padding:11px}.favorite-name{font-size:14px}.favorite-temperature{font-size:35px}.favorite-weather-icon svg{width:38px;height:38px}.favorite-updated time{display:block}.favorite-range{font-size:12px}}
@media(prefers-reduced-motion:reduce){.favorite-tile,.favorite-open{transition:none}}
/* Rain and wind share one row; UV is adjacent to the day's temperature range. */
.favorite-range-row{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-top:5px;min-height:24px}.favorite-range-row .favorite-range{margin:0;font-size:12px}.favorite-range-row .favorite-range>span{padding:0 1px}.favorite-uv{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;padding:3px 5px;border-radius:7px;font-size:12px;line-height:1.2;font-variant-numeric:tabular-nums;font-weight:500}.favorite-uv b{font-weight:650}.uv-low{background:#387b27;color:#fff}.uv-moderate{background:#f5d13a;color:#3b3000}.uv-high{background:#f4a33a;color:#452400}.uv-very-high{background:#c93850;color:#fff}.uv-extreme{background:#754ab4;color:#fff}.favorite-indicators{flex-direction:row;justify-content:space-between;align-items:center;gap:5px;font-size:13px;white-space:nowrap;margin:8px 0 10px}.favorite-indicators>span{display:inline-flex;align-items:center;gap:3px;min-width:0}.favorite-indicators svg{flex-shrink:0;opacity:.9}.favorite-indicators b{font-weight:550}.favorite-open{min-height:182px}.favorite-updated{border-color:#1a3b581a}.favorite-night .favorite-updated{border-color:#ffffff30}
/* Day precipitation is a pale, overcast sky; every night sky stays distinctly deep. */
.favorite-rain:not(.favorite-night){background:linear-gradient(145deg,#dcecf2,#b3d0dd 70%,#c8dfe8);color:#153b50;border-color:#ffffff88}.favorite-storm:not(.favorite-night){background:linear-gradient(145deg,#c1cadc,#96a9c5);color:#192e4e}.favorite-cloud:not(.favorite-night){background:linear-gradient(145deg,#edf3f7,#cedee9);color:#204257}.favorite-sun:not(.favorite-night),.favorite-partly:not(.favorite-night){background:linear-gradient(145deg,#a9dcff,#d2edff 65%,#e8f8ff);color:#143b59}.favorite-night{background:linear-gradient(145deg,#0b1530,#192a4c 75%,#223653);color:#fff}.favorite-night.favorite-rain{background:linear-gradient(145deg,#101b2d,#21394e)}.favorite-night.favorite-storm{background:linear-gradient(145deg,#111329,#2c2948)}
@media(max-width:600px){.favorite-open{min-height:182px}.favorite-weather-grid{gap:10px}.favorite-indicators{font-size:12px}.favorite-range-row .favorite-range{font-size:12px}.favorite-uv{font-size:12px;padding:3px 4px}}
@media(max-width:360px){.favorite-indicators{gap:3px;font-size:12px}.favorite-indicators svg{width:12px;height:12px}.favorite-range-row{gap:3px}.favorite-range-row .favorite-range{font-size:12px}.favorite-uv{padding:3px}}
/* UV color belongs to the index only, with contrast adapted to the sky. */
.favorite-uv{background:transparent;color:inherit;padding:0;border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;gap:4px}.favorite-uv b{font-weight:650}.favorite-uv.uv-low b{color:#25732a}.favorite-uv.uv-moderate b{color:#806100}.favorite-uv.uv-high b{color:#965000}.favorite-uv.uv-very-high b{color:#b52442}.favorite-uv.uv-extreme b{color:#7040aa}.favorite-night .favorite-uv.uv-low b{color:#77de89}.favorite-night .favorite-uv.uv-moderate b{color:#f4da5b}.favorite-night .favorite-uv.uv-high b{color:#ffbb6b}.favorite-night .favorite-uv.uv-very-high b{color:#ff929f}.favorite-night .favorite-uv.uv-extreme b{color:#c7a4ff}
/* MeteoMix coherence: descriptive similarity, always paired with a label. */
.coherence-block{position:relative;display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0 8px;min-width:0}.coherence-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:94px;min-height:79px;padding:12px 15px;border-radius:18px;border:1px solid var(--coherence-border);background:var(--coherence-bg);color:var(--coherence-ink);flex-shrink:0}.coherence-badge>strong{font-size:30px;line-height:1;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-1px;white-space:nowrap}.coherence-badge>strong>span{font-size:18px;letter-spacing:0}.coherence-badge>span{font-size:12px;font-weight:500}.coherence-low{--coherence-bg:#fff0f1;--coherence-border:#efbec6;--coherence-ink:#a8203b}.coherence-limited{--coherence-bg:#fff3e5;--coherence-border:#eec79b;--coherence-ink:#99500d}.coherence-medium{--coherence-bg:#fff9dd;--coherence-border:#e8d27c;--coherence-ink:#756000}.coherence-high{--coherence-bg:#e6f3d6;--coherence-border:#b6d58d;--coherence-ink:#436b17}.coherence-very_high{--coherence-bg:#daf0e8;--coherence-border:#98c6b5;--coherence-ink:#116047}.coherence-perfect{--coherence-border:#aec4e6;--coherence-ink:#334c8c;background:linear-gradient(120deg,#e0faff,#e9efff,#eee7ff,#fbeaf4,#fff,#e0faff);background-size:300% 100%;box-shadow:0 0 16px #7c9cdf16;animation:coherence-shine 14s ease-in-out infinite}.coherence-perfect>strong{background:linear-gradient(110deg,#086679,#285caf,#6744a7,#a54e81,#285caf);background-size:220% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:coherence-shine 14s ease-in-out infinite}.coherence-description{display:flex;flex-direction:column;gap:5px;flex:1;min-width:100px}.coherence-description>strong{font-size:14px;line-height:1.5;font-weight:600;color:#253d5c}.coherence-description>small{font-size:12px;line-height:1.5;color:#526780}.coherence-info{margin-left:auto;flex-shrink:0}.coherence-info>summary{list-style:none;width:44px;height:44px;display:grid;place-items:center;border:1px solid #d2deec;border-radius:50%;background:#ffffffb0;font-size:20px;line-height:1;color:#526887;cursor:pointer;user-select:none}.coherence-info>summary::-webkit-details-marker{display:none}.coherence-info>summary:focus-visible{outline:3px solid #2563eb;outline-offset:3px}.coherence-info[open]{flex-basis:100%;display:flex;align-items:flex-start;gap:12px}.coherence-info[open]>summary{flex-shrink:0}.coherence-info>p{margin:0;padding:14px 16px;background:#fff;border:1px solid #d6e1ef;border-radius:15px;color:#334155;font-size:14px;line-height:1.65;flex:1;min-width:0}.coherence-unavailable{font-size:14px;line-height:1.6;color:#526780;margin:16px 0}.coherence-compact{margin:14px 0 7px;gap:10px}.coherence-compact .coherence-badge{min-width:79px;min-height:64px;padding:9px 11px;border-radius:14px}.coherence-compact .coherence-badge>strong{font-size:24px}.coherence-compact .coherence-badge>strong>span{font-size:15px}.coherence-compact .coherence-description{min-width:90px}.coherence-compact .coherence-description>strong{font-size:14px}.coherence-compact .coherence-info{margin-left:0}
@keyframes coherence-shine{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@media(max-width:600px){.coherence-block{gap:11px;margin-top:16px}.coherence-badge{min-width:88px;min-height:74px;padding:11px 12px}.coherence-badge>strong{font-size:29px}.coherence-description{min-width:94px}.coherence-info>p{padding:12px;font-size:14px}.coherence-compact{gap:9px}.coherence-compact .coherence-info{margin-left:auto}}
@media(prefers-reduced-motion:reduce){.coherence-perfect,.coherence-perfect>strong{animation:none}}
@media(forced-colors:active){.coherence-badge{border:1px solid CanvasText;background:Canvas;color:CanvasText}.coherence-perfect>strong{background:none;color:CanvasText}}

/* Supplemental city UV: color only the number, never a highlighted badge. */
.city-uv{padding:12px 0;margin:4px 0 14px;border-top:1px solid rgba(100,116,139,.16)}
.city-uv>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.city-uv>div>span:first-child{font-size:14px;color:var(--secondary,#64748B)}
.city-uv .favorite-uv{font-size:20px;color:var(--text,#0F172A);background:transparent}
.city-uv-level{font-size:13px;color:#475569}
.city-uv>small{display:block;font-size:11px;line-height:1.5;color:#64748B;margin-top:5px}
.model-dialog-content>.city-uv{padding:16px 20px;margin:0;background:#fff;border-radius:18px}

/* Voluntary geolocation: secondary action, retained when changing cities. */
.position-action{display:flex;flex-direction:column;align-items:center;gap:8px;margin:8px 0 0;min-width:0}
.position-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border:1px solid #dfe7f2;border-radius:14px;background:#ffffffa6;color:#425877;font:inherit;font-size:14px;max-width:100%;cursor:pointer;transition:background .16s,transform .16s,box-shadow .16s}
.position-button:hover{background:#fff;box-shadow:0 3px 12px #1b406008}.position-button:active{transform:scale(.98)}
.position-button:focus-visible{outline:2px solid #2563eb;outline-offset:3px}.position-button:disabled{cursor:wait;opacity:.7}
.position-action>p{font-size:13px;line-height:1.6;color:#64748b;margin:0;text-align:center;max-width:420px;overflow-wrap:anywhere}.position-action>p[hidden]{display:none}
.weather-state .position-action{align-items:flex-start;margin-top:6px}.weather-state .position-action>p{text-align:left}
@media(prefers-reduced-motion:reduce){.position-button{transition:none}.position-button:active{transform:none}}

/* Air & environment: three plain-language indicators, technical detail on tap. */
.environment-card{display:block;width:100%;min-width:0;margin:18px 0 0;padding:20px;border:1px solid #e2e8f0;border-radius:22px;background:#fff;text-align:left;color:#0f172a;font:inherit;box-shadow:0 3px 14px #15335904}
button.environment-card{cursor:pointer;transition:box-shadow .16s,transform .16s}.environment-card:active{transform:scale(.99)}.environment-card:focus-visible{outline:2px solid #2563eb;outline-offset:3px}
.environment-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.environment-heading>strong,.environment-error h3{font-size:18px;font-weight:650;letter-spacing:-.3px}.environment-chevron{font-size:26px;color:#94a3b8}
.environment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.environment-zone{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}.environment-zone>svg{color:#64748b}.environment-zone-title{font-size:13px;color:#64748b}.environment-zone>strong{font-size:15px;line-height:1.3;font-weight:600;overflow-wrap:anywhere}.environment-zone>small{font-size:12px;color:#64748b;line-height:1.5}.environment-foot{display:block;font-size:12px;color:#64748b;margin-top:16px}.environment-skeleton{height:86px;width:100%;border-radius:12px}.environment-error p{font-size:14px;color:#64748b;line-height:1.6;margin:12px 0}
.aqi-good{color:#247346}.aqi-fair{color:#63791e}.aqi-moderate{color:#8c680a}.aqi-poor{color:#a55717}.aqi-very-poor{color:#b63643}.aqi-extreme{color:#733766}.pollen-low{color:#247346}.pollen-moderate{color:#8c680a}.pollen-high{color:#a55717}
.environment-detail{padding:20px;min-width:0}.environment-date,.environment-attribution{font-size:12px;color:#64748b;line-height:1.7}.environment-detail section{margin:20px 0;padding-bottom:20px;border-bottom:1px solid #edf1f7}.environment-detail h3{font-size:17px;margin:0 0 12px}.environment-detail section>p{font-size:14px;line-height:1.6;margin:0 0 12px}.environment-detail-rows>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 0;font-size:14px}.environment-detail-rows strong{font-weight:600;text-align:right}.environment-detail-rows small{font-size:12px;font-weight:400;color:#64748b}.environment-pollen-method{font-size:12px;color:#64748b;line-height:1.7;margin-top:12px}.environment-pollen-method summary{min-height:44px;display:flex;align-items:center;font-size:14px;cursor:pointer}.environment-detail .favorite-uv{color:#0f172a}.environment-attribution a{color:#526580}
@media(max-width:360px){.environment-card{padding:16px}.environment-grid{gap:8px}.environment-zone>strong{font-size:14px}.environment-zone-title{font-size:12px}}
@media(prefers-reduced-motion:reduce){button.environment-card{transition:none}.environment-card:active{transform:none}}

/* Two native home links: no new navigation state or visible logo button chrome. */
.app-header .header-right{display:flex;align-items:center;gap:18px}
.brand{cursor:pointer;text-decoration:none}
.home-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border-radius:12px;color:#526580;text-decoration:none;background:transparent;transition:background .16s,color .16s,transform .16s}
.home-button:hover{background:#eaf0f9;color:#2563eb}.home-button:active{transform:scale(.96)}.home-button:focus-visible{outline:2px solid #2563eb;outline-offset:3px}
@media(max-width:600px){.app-header .header-right{gap:8px}}
@media(prefers-reduced-motion:reduce){.home-button{transition:none}.home-button:active{transform:none}}

/* Daily essentials: compact two-column layout, whole-day total underneath. */
.today-card{min-width:0;margin:18px 0 0;padding:20px;border:1px solid #e2e8f0;border-radius:22px;background:#fff;box-shadow:0 3px 14px #15335904}
.today-card h3{margin:0 0 18px;font-size:18px;font-weight:650;letter-spacing:-.3px}
.today-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px}
.today-group{min-width:0}.today-label{display:flex;align-items:center;gap:7px;font-size:14px;color:#64748b;margin-bottom:10px}.today-label svg{flex-shrink:0;color:#526580}
.today-values{display:flex;flex-wrap:wrap;gap:7px 14px;font-size:14px;line-height:1.65;color:#526580}.today-values strong{font-size:16px;color:#0f172a;font-weight:600;white-space:nowrap}.today-values>span{white-space:nowrap}.today-sun{flex-direction:column;gap:3px}
.today-group>small{display:block;margin-top:6px;font-size:12px;line-height:1.5;color:#64748b}.today-rain{grid-column:1/-1;padding-top:16px;border-top:1px solid #edf1f7}.today-rain-value{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px}.today-rain-value strong{font-size:23px;letter-spacing:-.5px;font-weight:600}.today-rain-value>span{font-size:14px;color:#64748b}.today-note{font-size:12px;line-height:1.6;color:#64748b;margin:8px 0 0}.today-missing,.today-unavailable{font-size:14px;line-height:1.6;color:#64748b;margin:0}.today-skeleton{height:50px;border-radius:10px;width:100%}
@media(max-width:390px){.today-card{padding:16px}.today-grid{gap:16px 10px}.today-values{gap:4px 9px}.today-label{gap:6px}}

/* MeteoMix thematic accents: quiet surfaces, readable numbers, unchanged layout. */
body{background:radial-gradient(ellipse at 50% 8%,#e6effb99,transparent 58%),#f5f7fb}
.today-card,.environment-card,.rain-card{border-color:#dbe5f1;box-shadow:0 5px 20px #234c7809}
.today-card h3,.environment-heading>strong,.rain-heading h3{color:#152943}
.today-grid{gap:12px}
.today-group{padding:12px;border-radius:14px;background:#fff7f2;border:1px solid #f2e6de}
.today-group:first-child .today-label svg{color:#b96638}
.today-group:first-child .today-values strong{color:#8d4129}
.today-group:nth-child(2){background:#fffbef;border-color:#efe9d7}
.today-group:nth-child(2) .today-label svg{color:#a17a21}
.today-sun strong{color:#70551b}
.today-label{color:#51627a}
.today-rain{background:#f2f8fe;border-color:#dfeaf6;padding:14px}
.today-rain .today-label svg{color:#2976b9}
.today-rain-value strong{color:#215b97;font-weight:650}
.today-group>small,.today-note,.today-missing{color:#596c83}
.rain-card{background:#fbfdff}
.rain-heading{color:#2878bb}
.rain-summary{color:#294761}
.rain-timeline{background:#f1f7fd;border:1px solid #e0ebf6;border-radius:14px;padding:10px 4px;scrollbar-color:#b2c9df transparent}
.rain-point{color:#47617d}
.rain-time{color:#47617d}
.rain-amount{color:#4c6783}
.rain-amount.has-rain{color:#205ea2}
.rain-bar-track{border-bottom-color:#bed2e7}
.rain-point[aria-pressed=true]{background:#e4effc;border-color:#96bce5}
.rain-detail{color:#365673;background:#edf4fc}
.rain-footnote{color:#596d85}
.environment-grid{gap:10px}
.environment-zone{padding:10px 8px;border-radius:13px;background:#f2f9f5;border:1px solid #e1ede5}
.environment-zone>svg{color:#398261}
.environment-zone:nth-child(2){background:#fffbef;border-color:#f0e9d7}
.environment-zone:nth-child(2)>svg{color:#a47820}
.environment-zone:nth-child(3){background:#f6f9ef;border-color:#e7ecd9}
.environment-zone:nth-child(3)>svg{color:#6c813c}
.environment-zone-title,.environment-zone>small{color:#53667c}
.environment-zone>strong{font-weight:650}
.environment-zone:first-child>small{font-weight:600}
.environment-chevron,.disclosure-chevron{color:#657fa0}
.environment-foot{color:#536982}
@media(max-width:390px){.today-grid{gap:10px}.today-group{padding:10px}.today-rain{padding:12px}.environment-grid{gap:8px}.environment-zone{padding:10px 6px}}
@media(forced-colors:active){.today-group,.environment-zone,.rain-timeline{background:Canvas;border-color:CanvasText}.today-group .today-values strong,.today-sun strong,.today-rain-value strong,.rain-amount,.rain-time{color:CanvasText}}

/* Country flags enrich suggestions without changing row height or controls. */
.suggestion strong{display:flex;align-items:center;gap:7px;min-width:0}
.suggestion strong>span:last-child{min-width:0;overflow-wrap:anywhere}
.suggestion .city-country-flag{display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px;width:22px;font-size:20px;line-height:1;margin:0;vertical-align:middle}

/* Model comparison palette: identity stays local to each model card. */
:root{background:#f3f6fc}html{background:#f3f6fc}
body{background:linear-gradient(145deg,#f3f6fc 0%,#f8faff 100%)}
.source-card.ecmwf{--model-pastel:#f3efff;--model-accent:#7957e8;--model-ink:#5c48b5;--model-border:#ddd3f5}
.source-card.mf{--model-pastel:#edf7ff;--model-accent:#168bd2;--model-ink:#166ca5;--model-border:#cde5f5}
.source-card.icon{--model-pastel:#ecf8f5;--model-accent:#109c91;--model-ink:#127878;--model-border:#cce9e2}
.source-card.gfs{--model-pastel:#eff3ff;--model-accent:#3865cb;--model-ink:#2e51a0;--model-border:#d5dff7}
.source-card:before{content:none}
.source-card.model-preview{background:linear-gradient(135deg,var(--model-pastel) 0%,var(--model-pastel) 28%,#fdfefe 100%);border-color:var(--model-border);box-shadow:inset 3px 0 0 var(--model-accent),0 4px 14px #234c7808}
.source-card .source-header h3,.source-card .preview-detail-link{color:var(--model-ink)}
.source-card .dot{background:var(--model-accent)}
.source-card .source-header p,.source-card .preview-essentials{color:#53667c}
.source-card .preview-temperature{color:#17243d}
.source-card .preview-essentials b{color:#223450}
.source-card.model-preview[role=button]:hover{border-color:var(--model-border);box-shadow:inset 3px 0 0 var(--model-accent),0 6px 20px #234c7812}
.source-card.model-preview[role=button]:focus-visible{outline-color:var(--model-accent)}
@media(forced-colors:active){.source-card.model-preview{background:Canvas;border-color:CanvasText;box-shadow:none}.source-card .source-header h3,.source-card .preview-detail-link,.source-card .preview-temperature,.source-card .preview-essentials,.source-card .preview-essentials b{color:CanvasText}.source-card .dot{background:CanvasText}}

/* Clear-sky palette: the page is visibly blue; white cards carry the content. */
:root,html{background:#e5effa}
body{background:linear-gradient(180deg,#d7e9fc 0%,#e3effb 42%,#eaf2fb 100%)}
.today-card,.environment-card,.rain-card{background:#fff;border-color:#cbdced;box-shadow:0 6px 22px #244f7f0d}
.today-group:first-child{background:#fff0e3;border-color:#efd9c6}
.today-group:nth-child(2){background:#fff4c9;border-color:#ecdfa8}
.today-group:nth-child(2) .today-label svg{color:#aa740c}
.today-rain{background:#e5f2ff;border-color:#c7dfF5}
.rain-timeline{background:#e7f3ff;border-color:#c9dff2}
.rain-bar-track{border-bottom-color:#aac7e2}
.environment-zone:first-child{background:#ecf6ef;border-color:#d2e7d9}
.environment-zone:nth-child(2){background:#fff4ce;border-color:#ecdfa9}
.environment-zone:nth-child(2)>svg{color:#aa740c}
.environment-zone:nth-child(3){background:#f0f5de;border-color:#dce5bf}
.environment-zone .aqi-fair{color:#596d1b}
.source-card.ecmwf{--model-pastel:#e8dbff;--model-soft:#f2eaff;--model-border:#ccb8f0}
.source-card.mf{--model-pastel:#dcefff;--model-soft:#f0f8ff;--model-border:#b4d9f2}
.source-card.icon{--model-pastel:#d9f0ea;--model-soft:#ecf8f4;--model-ink:#106f70;--model-border:#aedbd0}
.source-card.gfs{--model-pastel:#dee7ff;--model-soft:#f0f4ff;--model-border:#bccdf2}
.source-card.model-preview{background:linear-gradient(135deg,var(--model-pastel) 0%,var(--model-pastel) 48%,var(--model-soft) 100%)}
@media(forced-colors:active){:root,html,body,.today-group:first-child,.today-group:nth-child(2),.today-rain,.rain-timeline,.environment-zone:first-child,.environment-zone:nth-child(2),.environment-zone:nth-child(3),.source-card.model-preview{background:Canvas}.environment-zone .aqi-fair{color:CanvasText}}
:root{--muted:#53667c}
.preview-hint,.location-region,.location-coordinates,.location-date span,.update-info,.saved-city-label,.saved-city-label>span,.position-action>p{color:#53667c}
.selected-location .eyebrow{color:#526580}

/* Compact home / weather hierarchy; existing palette and interactions retained. */
body{background:linear-gradient(180deg,#e1edfa 0%,#eef4fb 52%,#f6f8fc 100%)}
.home-button[hidden]{display:none}
.home-state .hero{padding:24px 20px 24px}
.home-state .hero h1{margin-bottom:12px}
.home-state .hero .search-container{margin-top:20px}
.home-state .saved-cities{margin-top:16px}
.city-search-panel{min-width:0;text-align:left}
.city-search-panel>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;width:fit-content;border:1px solid #cbdced;background:#ffffffa8;border-radius:14px;color:#425c7c;font-size:14px;cursor:pointer}
.city-search-panel>summary::-webkit-details-marker{display:none}
.home-state .city-search-panel>summary{display:none}
.city-search-panel[open]>.city-search-expanded{margin-top:8px}
.home-state .city-search-panel[open]>.city-search-expanded{margin-top:0}
.weather-state .hero.has-city{padding-top:0;padding-bottom:0;margin-top:0}
.weather-state .hero.has-city .search-container{margin-top:0}
.weather-state .search-box{height:52px;border-radius:16px}
.weather-state .search-results{top:60px}
.weather-state .city-search-expanded{position:relative}
.weather-state .position-action{margin-top:4px}
.weather-state .saved-cities{display:block;margin-top:8px;overflow:visible}
.weather-state .saved-city-group:nth-child(n+2){display:none}
.weather-state .saved-city-label{display:none}
.weather-state .city-pills{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;max-width:100%;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.weather-state .city-pill{flex-shrink:0;border-radius:14px}
.weather-state .city-shortcut{padding:6px 10px;min-height:44px}
.weather-state .remove-favorite{display:none}
.weather-state .hero.has-city+.dashboard{margin-top:12px}
.selected-location{margin-bottom:12px;gap:8px}
.selected-location h2{font-size:28px;margin-top:0;line-height:1.2}
.location-region{margin-top:4px;line-height:1.4}
.location-coordinates{display:none}
.location-date{gap:0;line-height:1.4}
.toolbar{gap:8px;margin-bottom:12px}
.tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;min-width:0}
.tabs button{white-space:nowrap;padding:8px 6px;font-size:13px;min-width:0}
.update-info{width:100%;justify-content:space-between;font-size:12px;gap:8px}
.refresh-button{padding:6px 8px}
.mix-primary{padding:18px 20px;border-radius:24px}
.mix-primary .mix-primary-title h2{font-size:20px}
.mix-primary .mix-current-overview{gap:12px}
.mix-primary .mix-main-temperature{font-size:60px;margin:8px 0 0;line-height:1.05}
.mix-primary .mix-main-metrics{margin:12px 0;gap:16px}
.mix-primary .mix-main-metrics span{margin-bottom:2px;font-size:13px}
.mix-primary .mix-main-metrics strong{font-size:21px}
.mix-primary .coherence-block{margin:12px 0 0;gap:10px}
.mix-primary .coherence-badge{min-height:48px;min-width:72px;padding:7px 10px;border-radius:14px}
.mix-primary .coherence-badge>strong{font-size:24px;line-height:1.1}
.mix-primary .coherence-badge>span{display:none}
.mix-primary .coherence-description>strong{font-size:14px}
.mix-primary .mix-model-count{font-size:12px;margin:4px 0 0;color:#53667c}
.today-card,.environment-card,.rain-card{margin:12px 0 0;padding:16px;border-radius:24px}
.today-card h3,.environment-heading>strong,.rain-heading h3{font-size:17px}
.today-card h3,.environment-heading{margin-bottom:12px}
.today-grid{gap:10px}
.today-group{padding:10px;border-radius:18px}
.today-label{margin-bottom:6px}
.today-values{gap:4px 10px;line-height:1.5}
.today-rain{padding:10px 12px;position:relative}
.today-rain-value strong{font-size:22px}
.today-about{margin-top:0;font-size:12px;line-height:1.5;color:#53667c}
.today-about>summary{position:absolute;right:8px;top:4px;min-width:44px;min-height:44px;display:grid;place-items:center;font-size:18px;cursor:pointer;list-style:none}
.today-about>p{margin-top:8px}.today-rain .today-label{padding-right:32px}
.rain-heading h3{line-height:1.35}
.rain-summary{margin:8px 0;font-size:14px;line-height:1.5}
.rain-dry-detail>summary,.rain-about>summary{min-height:44px;display:flex;align-items:center;font-size:13px;color:#42658c;cursor:pointer;list-style:none}
.rain-about>p{font-size:12px;color:#53667c;line-height:1.5;margin:4px 0 0}
.rain-timeline{border-radius:18px;padding:4px}
.rain-point{min-height:92px}.rain-bar-track{height:40px}
.rain-dry .rain-about{border-top:1px solid #e1e9f3}
.environment-grid{align-items:stretch;gap:8px}
.environment-zone{padding:10px 8px;border-radius:18px;gap:5px;min-width:0}
.environment-zone-title{min-height:36px;display:flex;align-items:center;line-height:1.35}
.environment-zone>svg{margin-bottom:2px}
.environment-zone>strong{min-height:22px;line-height:1.4}
.environment-foot{margin-top:12px}
.models-disclosure{margin-top:12px;border-radius:24px}
.favorite-remove{top:4px;right:4px;min-width:44px;min-height:44px}
.favorite-name{padding-right:31px}
.home-state .saved-city-group+.saved-city-group .saved-city-label{font-size:13px;font-weight:500;margin-bottom:8px}
.home-state .saved-city-group+.saved-city-group .city-shortcut{font-size:13px;color:#53667c}
.favorite-night.favorite-cloud,.favorite-night.favorite-nightcloud{background:linear-gradient(145deg,#18243a,#30435c)}
.favorite-night.favorite-fog{background:linear-gradient(145deg,#273444,#4b5c6a)}
.favorite-night.favorite-snow{background:linear-gradient(145deg,#1c304a,#45617c)}
.favorite-unknown:not(.favorite-night){background:linear-gradient(145deg,#cde9fb,#e8f2f9);color:#204257}
footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;margin-top:20px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));font-size:12px;line-height:1.5;min-height:0}
footer>span:last-child{font-size:11px}.footer-brand{font-size:inherit}
@media(max-width:600px){.app-header{padding-top:max(12px,env(safe-area-inset-top));padding-bottom:12px}.selected-location{gap:6px}.tabs button{font-size:12px}.mix-primary .mix-main-temperature{font-size:56px}.home-state .hero{padding-top:20px}.home-state .hero h1{font-size:34px}.favorite-open{padding:12px}.environment-zone{padding:10px 6px}}
@media(min-width:768px){.toolbar .tabs{width:auto;min-width:400px}.update-info{width:auto;margin-left:auto}.selected-location{align-items:center}.weather-state .city-search-panel{max-width:590px}}
@media(prefers-reduced-motion:reduce){.city-search-panel,.rain-dry-detail,.models-disclosure{scroll-behavior:auto;transition:none}}
.mix-primary .mix-condition{margin:6px 0;min-height:0;max-width:130px}
.mix-primary .mix-condition-icons svg{width:54px;height:54px}
.mix-primary .mix-condition-icons:has(svg+svg) svg{width:38px;height:38px}
.home-state .hero .search-results{top:74px}
.city-search-panel:not([open])>.city-search-expanded{display:none}
.rain-dry{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px}
.rain-dry>.rain-heading,.rain-dry>.rain-summary{grid-column:1/-1}
.rain-dry>.rain-about{border-top:0;align-self:start}
.rain-dry>.rain-about>summary{justify-content:center;min-width:44px;font-size:18px}
.rain-dry>.rain-dry-detail[open],.rain-dry>.rain-about[open]{grid-column:1/-1}
.rain-dry>.rain-about[open]>summary{justify-content:flex-start}

/* Maintenant — micro-finitions, sans changement des données ni de la palette. */
.weather-state .city-search-panel>summary{line-height:1.4}
.weather-state .city-pills{align-items:center}
.weather-state .city-title-row{align-items:center;gap:8px}
.weather-state .city-title-row+.location-region{margin-top:4px}
.weather-state .update-info{align-items:center}
.mix-primary{padding:16px 20px}
.mix-primary .mix-primary-title{align-items:center;gap:8px}
.mix-primary .mix-primary-title>span{font-size:11px;padding:4px 8px;line-height:1.4}
.mix-primary .mix-main-temperature{margin-top:6px}
.mix-primary .mix-current-overview{align-items:center}
.mix-primary .mix-main-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;margin:10px 0;gap:12px}
.mix-primary .mix-main-metrics>div>span,.mix-primary .mix-main-metrics>div:first-child>span{display:block;margin-bottom:2px;line-height:1.4}
.mix-primary .mix-main-metrics strong{display:block;line-height:1.3}
.mix-primary .coherence-block{display:grid;grid-template-columns:auto minmax(0,1fr) 44px;align-items:center;gap:10px;margin:10px 0 0}
.mix-primary .coherence-badge{min-height:44px;padding:6px 10px}
.mix-primary .coherence-description{min-width:0}
.mix-primary .coherence-description>strong{display:block;line-height:1.4}
.mix-primary .coherence-description>small{display:block;margin-top:2px;line-height:1.4;color:#53667c;font-size:12px}
.mix-primary .coherence-info{margin:0;align-self:center}
.mix-primary .coherence-info>summary{width:44px;height:44px;display:grid;place-items:center}
.today-grid{align-items:stretch}
.today-label{align-items:center;min-height:24px;line-height:1.4}
.today-label>svg{flex-shrink:0}
.today-values>span{line-height:1.5}
.today-rain .today-about>summary{top:6px;right:6px}
.rain-heading{align-items:center;gap:10px}
.rain-heading>svg{flex-shrink:0}
.rain-dry{position:relative;display:block;padding:16px}
.rain-dry>.rain-heading{padding-right:30px}
.rain-dry>.rain-summary{margin:6px 0 0}
.rain-dry>.rain-about>summary{position:absolute;right:6px;top:6px;width:44px;height:44px;min-height:44px;display:grid;place-items:center}
.rain-dry>.rain-about>p{margin-top:8px}
.environment-zone{align-items:flex-start}
.environment-zone>svg{flex-shrink:0}
.environment-zone-title{width:100%;margin:0}
.environment-zone>strong{margin:0}
.environment-zone>small{margin:0;line-height:1.4}
.environment-foot{line-height:1.5;margin-top:10px}
@media(max-width:600px){.mix-primary{padding:16px}.mix-primary .coherence-block{gap:8px}.mix-primary .coherence-description>strong{font-size:14px}}
.mix-primary .coherence-description{gap:0}
.mix-primary .coherence-info[open]{grid-column:1/-1;display:flex;align-items:flex-start;width:100%;gap:10px}
.mix-primary .coherence-info[open]>summary{flex-shrink:0}
.rain-dry>.rain-heading{padding-right:38px}

.rain-estimation{font-size:12px;line-height:1.5;color:#53667c;margin:8px 0 0}

/* 7 jours : cartes condensées et aide sur toute la largeur, uniquement dans cet onglet. */
.synthesis-daily-panel{padding:16px;border-radius:24px}
.synthesis-daily-panel>.panel-heading{margin-bottom:12px;gap:6px}
.synthesis-daily-panel .panel-heading h2{font-size:20px;line-height:1.3}
.synthesis-daily-panel .panel-heading p{font-size:12px;margin-top:4px}
.synthesis-daily-panel .synthesis-list{gap:10px}
.synthesis-daily-panel .synthesis-day{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:10px 12px;padding:14px;border-radius:18px}
.synthesis-daily-panel .synthesis-date{gap:2px;line-height:1.4}
.synthesis-daily-panel .synthesis-date>strong{font-size:15px;color:#17243d}
.synthesis-daily-panel .synthesis-date>small{font-size:12px;color:#53667c}
.synthesis-daily-panel .synthesis-day>.mix-condition{justify-self:end;display:flex;flex-direction:row;gap:6px;max-width:100%;margin:0;text-align:right;min-width:0}
.synthesis-daily-panel .mix-condition-icons{flex-shrink:0}
.synthesis-daily-panel .mix-condition-icons svg{width:32px;height:32px}
.synthesis-daily-panel .mix-condition-icons:has(svg+svg) svg{width:25px;height:25px}
.synthesis-daily-panel .mix-condition-icons svg+svg{margin-left:-10px}
.synthesis-daily-panel .mix-condition strong{font-size:12px;line-height:1.4;font-weight:500;overflow-wrap:normal}
.synthesis-day-metrics{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.synthesis-daily-panel .synthesis-day-metrics>.synthesis-metric{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;font-size:12px;line-height:1.4}
.synthesis-daily-panel .synthesis-metric>strong{font-size:15px;line-height:1.4;white-space:nowrap;font-variant-numeric:tabular-nums}
.synthesis-daily-panel .synthesis-metric>.synthesis-missing{font-size:12px;line-height:1.4}
.synthesis-daily-panel .coherence-block{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr) 44px;align-items:center;gap:8px;margin:0;padding-top:8px;border-top:1px solid #e1e9f3;min-width:0}
.synthesis-daily-panel .coherence-badge{min-width:62px;min-height:38px;padding:5px 8px;border-radius:12px;gap:0}
.synthesis-daily-panel .coherence-badge>strong{font-size:20px;line-height:1.2}
.synthesis-daily-panel .coherence-badge>strong>span{font-size:13px}
.synthesis-daily-panel .coherence-badge>span{display:none}
.synthesis-daily-panel .coherence-description{min-width:0;gap:2px}
.synthesis-daily-panel .coherence-description>strong{font-size:13px;line-height:1.4}
.synthesis-daily-panel .coherence-description>small{font-size:12px;line-height:1.4}
.synthesis-daily-panel .coherence-info{margin:0;min-width:0}
.synthesis-daily-panel .coherence-info>summary{width:44px;height:44px;font-size:18px}
.synthesis-daily-panel .coherence-info[open]{grid-column:1/-1;display:block;position:relative;width:100%;padding-top:44px}
.synthesis-daily-panel .coherence-info[open]>summary{position:absolute;top:0;right:0;font-size:0}
.synthesis-daily-panel .coherence-info[open]>summary::after{content:'×';font-size:24px}
.synthesis-daily-panel .coherence-info>p{display:block;width:100%;min-width:0;padding:12px;font-size:14px;line-height:1.6;white-space:normal;overflow-wrap:normal;word-break:normal;box-shadow:0 4px 12px #26395c08}
.synthesis-daily-panel .synthesis-day-partial{grid-column:1/-1;font-size:12px;line-height:1.4;color:#53667c;margin:0}
.synthesis-daily-panel .synthesis-unavailable{grid-column:1/-1;padding:4px 0}
.synthesis-daily-panel>.panel-note{margin-top:12px;line-height:1.5}
@media(max-width:390px){.synthesis-daily-panel{padding:12px}.synthesis-daily-panel .synthesis-day{padding:12px}.synthesis-day-metrics{gap:6px}.synthesis-daily-panel .synthesis-metric>strong{font-size:14px}}
/* Aujourd’hui : journée locale, carrousel horaire compact. */
.hourly-day-panel{padding:16px;border-radius:24px}
.hour-day-heading{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;margin-bottom:12px;align-items:start}
.hour-day-heading h2{font-size:20px;line-height:1.3;letter-spacing:-.5px}
.hour-day-heading p{font-size:13px;line-height:1.5;margin-top:4px;color:#425c7c;text-transform:capitalize}
.hour-day-heading small{font-size:12px;line-height:1.5;color:#53667c}
.hour-day-info{min-width:0}
.hour-day-info>summary{list-style:none;width:44px;height:44px;display:grid;place-items:center;border:1px solid #d2deec;border-radius:50%;background:#fff;color:#526887;font-size:18px;cursor:pointer}
.hour-day-info>summary::-webkit-details-marker{display:none}
.hour-day-info[open]{grid-column:1/-1;display:block;position:relative;padding-top:44px;width:100%}
.hour-day-info[open]>summary{position:absolute;top:0;right:0;font-size:0}
.hour-day-info[open]>summary:after{content:'×';font-size:24px}
.hour-day-info>p{font-size:14px;line-height:1.6;color:#334155;white-space:normal;word-break:normal;padding:12px;border:1px solid #d6e1ef;background:#fff;border-radius:15px;box-shadow:0 4px 12px #26395c08}
.hour-day-timeline{display:flex;gap:6px;margin:0;padding:0 0 6px;scroll-snap-type:x proximity;scroll-padding-inline:0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;min-width:0}
.hour-day-card{flex:0 0 88px;width:88px;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 5px 8px;border:1px solid #dce7f3;background:#f2f8ff;border-radius:16px;scroll-snap-align:start;text-align:center}
.hour-day-card.is-night{background:#edf0f8;border-color:#d7dfee}
.hour-day-card.is-wet{background:#edf4f8}
.hour-day-card.is-current{background:#e5f0ff;border-color:#8eb7ee;box-shadow:inset 0 0 0 1px #8eb7ee}
.hour-day-time>strong{display:block;font-size:14px;line-height:1.4;white-space:nowrap;font-variant-numeric:tabular-nums}
.hour-day-current{display:block;min-height:18px;font-size:11px;line-height:18px;color:#235ba4;font-weight:600}
.hour-day-card .mix-condition{height:38px;min-height:38px;margin:0;max-width:100%;justify-content:center}
.hour-day-card .mix-condition>strong{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hour-day-card .mix-condition-icons svg{width:36px;height:36px}
.hour-day-card .mix-condition-icons:has(svg+svg) svg{width:25px;height:25px}
.hour-day-card .mix-condition-icons svg+svg{margin-left:-12px}
.hour-day-no-icon{height:38px}
.hour-day-temperature{font-size:24px;font-weight:650;line-height:1.3;letter-spacing:-1px;color:#17243d;font-variant-numeric:tabular-nums}
.hour-day-metric{display:flex;align-items:center;justify-content:center;gap:3px;min-height:20px;font-size:12px;line-height:1.4;color:#425c7c;white-space:nowrap}
.hour-day-metric>svg{color:#2878bb;flex-shrink:0}
.hour-day-metric>strong{font-weight:500;font-variant-numeric:tabular-nums}
.hour-day-cumul{font-size:12px;line-height:1.4;min-height:17px;color:#2878bb}
@media(max-width:600px){.hourly-day-panel{padding:12px}.tabs button{font-size:12px;padding-inline:4px}.hour-day-card{flex-basis:88px}}

.hour-day-timeline::after{content:"";flex:0 0 max(0px,calc(100% - 88px));pointer-events:none}

.hourly-day-panel .hour-day-heading{grid-template-columns:minmax(0,1fr)}
.hour-day-uv-space{display:block;min-height:20px}

.hour-day-card .hour-day-coherence{width:100%;min-width:0;min-height:42px;padding:4px 6px;border-radius:10px;gap:1px;margin-top:2px}
.hour-day-card .hour-day-coherence>strong{font-size:18px;line-height:1.2;letter-spacing:-.4px}
.hour-day-card .hour-day-coherence>strong>span{font-size:12px}
.hour-day-card .hour-day-coherence>span:not(.sr-only){font-size:11px;line-height:1.3;font-weight:500}
.hour-day-coherence-space{display:block;min-height:44px}

/* Présentation de la cohérence : shiny au-dessus de 80 %. */
/* Felt temperature and meteorological wind bearings stay secondary. */
.mix-temperature-group{min-width:0;flex-shrink:0}.mix-feels{font-size:14px;line-height:1.4;color:#476184;margin:5px 0 0;font-weight:500}.wind-variable{display:block;font-size:11px;font-weight:400;color:#536982;margin-top:2px}.synthesis-wind strong{font-size:13px;white-space:nowrap}.hour-day-wind{gap:3px;font-size:11px}.hour-day-wind strong{white-space:nowrap}.hour-wind-direction{font-size:10px}.favorite-wind-direction{font-weight:500}.favorite-range-row{align-items:center}.favorite-indicators{align-items:center}.favorite-wind{min-width:0;white-space:nowrap}
@media(max-width:430px){.favorite-wind-direction{display:none}.hour-day-wind svg{display:none}.hour-day-wind strong{font-size:11px}.synthesis-wind strong{font-size:11px}}
/* One radar map, with restrained chrome and a native/overlay fullscreen fallback. */
.radar-title{display:flex;align-items:center;margin-bottom:10px}.radar-title p{margin:3px 0 0;font-size:12px}.radar-title-actions{display:flex;align-items:center;gap:6px}.radar-observation-badge{margin:0;font-size:10px}.radar-expand,.radar-close{width:44px;height:44px;border:1px solid #dce6f3;border-radius:12px;background:#f4f8ff;color:#2c5688;font-size:24px;cursor:pointer;flex-shrink:0}.radar-close{font-size:29px}.radar-status:empty{display:none;min-height:0}.radar-map{height:58svh;min-height:280px;max-height:680px}.radar-legend{display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 0 0;color:#52647b;font-size:11px;flex-wrap:wrap}.radar-legend>span{display:flex;align-items:center;gap:4px}.radar-legend i{width:10px;height:7px;border-radius:3px;box-shadow:inset 0 0 0 1px #243c551a}.radar-controls{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 10px;padding:8px 0 0}.radar-current-reading{text-align:left;min-height:0}.radar-current-reading .radar-frame-time{font-size:24px}.radar-frame-type{font-size:11px}.radar-transport{justify-content:flex-end;margin:0;gap:6px}.radar-controls>.radar-latest,.radar-timeline-phases,.radar-slider,.radar-range-labels{grid-column:1/-1}.radar-controls>.radar-latest{margin-top:6px;min-height:0}.radar-timeline-phases{margin-top:4px;min-height:32px}.radar-slider{margin:0;height:44px}.radar-now{min-height:32px}.radar-observed-only .radar-planned-label{display:none}.radar-observed-only .radar-now{left:auto;right:0;transform:none}.radar-note,.radar-zoom-note,.radar-coverage{margin:8px 0;font-size:11px}.radar-attribution{margin-top:8px;font-size:11px}.radar-forecast{margin-top:10px;padding:10px 12px}.radar-expand:focus-visible,.radar-close:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.radar-fullscreen,.radar-card:fullscreen{position:fixed;inset:0;z-index:3000;width:100%;height:100dvh;border:0;border-radius:0;padding:max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));box-sizing:border-box;display:flex;flex-direction:column;background:#f8fbff;overflow:auto;overscroll-behavior:contain}.radar-fullscreen .radar-map-wrap{flex:1 0 35dvh;min-height:0}.radar-fullscreen .radar-map{height:100%;min-height:0;max-height:none;position:absolute;inset:0}.radar-fullscreen .radar-controls{flex-shrink:0}.radar-fullscreen .radar-forecast,.radar-fullscreen .radar-note,.radar-fullscreen .radar-zoom-note{display:none}.radar-fullscreen .radar-coverage{padding:4px 8px;margin:4px 0}.radar-fullscreen .radar-title p{display:none}.radar-fullscreen .radar-title{margin-bottom:6px}.radar-fullscreen .radar-attribution{margin-top:4px}.radar-card [hidden]{display:none!important}
@media(max-width:390px){.radar-title h3{font-size:17px}.radar-observation-badge{display:none}.radar-play{font-size:12px;padding:10px}.radar-legend{gap:8px}.mix-feels{font-size:13px}}
@media(prefers-reduced-motion:reduce){.daily-trend *,.radar-card *{scroll-behavior:auto;transition:none!important}}

/* Arrow points toward the wind destination; cardinal text remains its origin. */
.wind-bearing{display:inline-block;vertical-align:-3px;flex-shrink:0;margin-right:4px;transform-origin:50% 50%;color:inherit}.hour-wind-direction{white-space:nowrap}.hour-day-wind .wind-bearing{display:inline-block;width:12px;height:12px;margin-right:2px;vertical-align:-2px}.synthesis-wind .wind-bearing{width:13px;height:13px;margin-right:2px}.favorite-wind>.wind-bearing{margin-right:0}.mix-main-metrics .wind-bearing{color:#345f91}
@media(max-width:430px){.hour-day-wind strong{font-size:11px}.hour-wind-direction{font-size:10px}.synthesis-wind>span:first-child{white-space:nowrap}}
/* Daily summaries stay compact; only the selected day mounts its hourly cards. */
.synthesis-day[data-day-time]{position:relative;isolation:isolate}.day-toggle{position:absolute;inset:0;z-index:1;width:100%;height:100%;border:0;border-radius:inherit;background:transparent;cursor:pointer;color:#587499}.day-toggle:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.day-chevron{position:absolute;top:16px;left:calc(50% - 32px);transition:transform .18s ease}.day-is-open .day-chevron{transform:rotate(180deg)}.synthesis-day[data-day-time]>.synthesis-date{padding-right:22px}.synthesis-day[data-day-time]>.coherence-block .coherence-info{position:relative;z-index:3}.daily-hourly-detail{position:relative;z-index:2;grid-column:1/-1;min-width:0;width:100%;padding-top:12px;border-top:1px solid #dce7f3;animation:daily-hours-appear .18s ease-out}.daily-hourly-detail[hidden]{display:none}.daily-hours-heading{font-size:13px;font-weight:600;color:#415c7d;margin:0 0 10px}.daily-hours-empty{font-size:14px;line-height:1.5;color:#526780;margin:0}.daily-hourly-detail .hour-day-timeline{position:relative;margin:0;min-width:0;max-width:100%}.daily-hourly-detail .hour-day-coherence>span:not(.sr-only){display:block}.daily-hourly-detail .hour-day-coherence .sr-only{position:absolute}.day-toggle:hover{background:#2563eb03}.day-toggle:active{background:#2563eb08}@keyframes daily-hours-appear{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.day-chevron{transition:none}.daily-hourly-detail{animation:none}}

/* Search hierarchy and a dedicated 44 px clear action. */
.suggestion strong>span:last-child{font-size:17px;line-height:1.3;font-weight:650}.suggestion small{font-size:12px;line-height:1.4}.search-clear{flex:0 0 44px;width:44px;height:44px;min-height:44px;border:0;border-radius:14px;background:#edf3fb;color:#526d91;font-size:25px;line-height:1;cursor:pointer}.search-clear[hidden]{display:none}.search-clear:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.search-clear:active{background:#dfeafa}.search-box input::-webkit-search-cancel-button{display:none}.search-box input{min-width:0}.search-box:has(.search-clear:not([hidden])) kbd{display:none}.brand{min-height:44px;display:inline-flex;align-items:center;cursor:pointer;border-radius:12px}.brand:active{opacity:.8}.brand:focus-visible{outline:2px solid #2563eb;outline-offset:4px}
/* The fullscreen action is explicit; transport controls remain central. */
.radar-expand{width:auto;min-width:44px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 10px;font-size:12px;white-space:nowrap}.radar-expand>span{font-size:22px}.radar-title>div:first-child{min-width:0}.radar-controls{grid-template-columns:minmax(0,1fr);gap:6px}.radar-current-reading{text-align:center}.radar-transport{justify-content:center;grid-column:1/-1}.radar-current-reading .radar-frame-type{display:block}.radar-title-actions{flex-shrink:0}
/* Daily weather surfaces distinguish conditions without changing risk colours. */
.synthesis-day.daily-weather-sun{background:linear-gradient(135deg,#d9ebff,#edf5ff);border-color:#cbdff1}.synthesis-day.daily-weather-partly{background:linear-gradient(135deg,#dfeaf8,#eff4fb);border-color:#d0ddeb}.synthesis-day.daily-weather-cloud{background:linear-gradient(135deg,#d9e1ed,#eaf0f7);border-color:#cdd7e4}.synthesis-day.daily-weather-rain{background:linear-gradient(135deg,#cee4f7,#e5f0fa);border-color:#bdd5e8}.synthesis-day.daily-weather-storm{background:linear-gradient(135deg,#ded6f1,#ebe7f6);border-color:#cdc6e2}.synthesis-day.daily-weather-snow{background:linear-gradient(135deg,#d9eef3,#edf8fa);border-color:#c4e2e7}.synthesis-day.daily-weather-fog{background:linear-gradient(135deg,#e0e7e5,#eef3f1);border-color:#d0dcd9}.synthesis-day[data-day-time] .synthesis-date strong{color:#17243d}.synthesis-day[data-day-time] .synthesis-metric strong{color:#17243d}


/* Today ends at its last real hour, without an artificial trailing viewport. */
.hourly-day-panel .hour-day-timeline::after{content:none;display:none}.hourly-day-panel .hour-day-card:last-child{scroll-snap-align:end}
.synthesis-daily-panel .mix-condition>.storm-risk-label{color:#57417f;font-weight:650;line-height:1.35}

/* Daily weather occupies a bounded group; short labels keep a natural single line. */
.synthesis-daily-panel .synthesis-day{grid-template-columns:minmax(0,1fr) minmax(172px,1.6fr)}
.synthesis-daily-panel .synthesis-day>.mix-condition{width:100%;justify-content:flex-end;gap:6px;align-items:center}
.synthesis-daily-panel .mix-condition-icons{display:flex;align-items:center;justify-content:center;width:46px;max-width:46px;flex:0 0 46px}
.synthesis-daily-panel .mix-condition-icons svg{width:28px;height:28px;flex-shrink:0}
.synthesis-daily-panel .mix-condition-icons:has(svg+svg) svg{width:22px;height:22px}
.synthesis-daily-panel .mix-condition-icons svg+svg{margin-left:-12px}
.synthesis-daily-panel .mix-condition>strong{min-width:0;white-space:nowrap;font-size:12px;line-height:1.35}
.synthesis-daily-panel .day-chevron{left:94px;top:16px}.synthesis-daily-panel .synthesis-day[data-day-time]>.synthesis-date{padding-right:0;white-space:nowrap}
/* Environment colours express the existing levels, never missing values. */
.environment-card .environment-zone{--state-ink:#526780;--state-bg:#edf2f8;--state-border:#d8e2ed;background:var(--state-bg);border:1px solid var(--state-border);padding:10px 8px;border-radius:18px;display:grid;grid-template-rows:24px 36px minmax(22px,auto) 1fr;align-items:start;align-content:start;gap:5px;height:100%;min-width:0}
.environment-card .environment-state-green{--state-ink:#24673d;--state-bg:#e7f4ec;--state-border:#bfdcc9}
.environment-card .environment-state-amber{--state-ink:#935009;--state-bg:#fff0dd;--state-border:#edcfaa}
.environment-card .environment-state-red{--state-ink:#a12d3c;--state-bg:#fce9ec;--state-border:#e9bfc6}
.environment-card .environment-zone>svg,.environment-card .environment-zone>strong{color:var(--state-ink);margin:0}
.environment-card .environment-zone-title{color:#42556e;margin:0;font-size:12px;min-height:36px;line-height:1.35}
.environment-card .environment-zone>strong{font-size:14px;line-height:1.4;overflow-wrap:normal}
.environment-zone-secondary{display:block;font-size:12px;line-height:1.4;color:#465b74;overflow-wrap:normal;min-height:17px}
@media(forced-colors:active){.environment-card .environment-zone{background:Canvas;border-color:CanvasText}.environment-card .environment-zone>svg,.environment-card .environment-zone>strong,.environment-card .environment-zone-title,.environment-zone-secondary{color:CanvasText}}

/* Stabilisation: true carousel ends in both hourly contexts. */
.hour-day-timeline::after{content:none;display:none}.hour-day-card:last-child{scroll-snap-align:end}
/* Long environmental states wrap within their column and align secondary lines. */
.environment-card .environment-zone{grid-template-rows:24px 36px minmax(60px,auto) 1fr}.environment-card .environment-zone>strong{overflow-wrap:anywhere}
.daily-hourly-detail .hour-day-card .mix-condition{width:100%}.daily-hourly-detail .hour-day-card .mix-condition-icons{width:auto;max-width:100%;flex-basis:auto}
.daily-hourly-detail .hour-day-card .mix-condition-icons svg{width:36px;height:36px}.daily-hourly-detail .hour-day-card .mix-condition-icons:has(svg+svg) svg{width:25px;height:25px}.daily-hourly-detail .hour-day-card .mix-condition-icons svg+svg{margin-left:-12px}
.today-about>summary,.rain-about>summary,.small-button,.remove-favorite{min-height:44px;min-width:44px}.rain-point{min-width:44px}.radar-card button:disabled{cursor:default}.source-card,.environment-card,.selected-location{min-width:0}.source-header h3{overflow-wrap:anywhere}.model-dialog-content .source-note{overflow-wrap:anywhere}
@media(prefers-reduced-motion:reduce){.hour-day-timeline,.daily-hourly-detail{scroll-behavior:auto!important}}
/* Local preferences: a compact, accessible settings sheet. */
.settings-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;border:1px solid #cddff1;border-radius:14px;background:#f4f8fd;color:#365980;cursor:pointer}.settings-button:hover{background:#e7f0fa}.settings-button:focus-visible,.settings-dialog :focus-visible{outline:2px solid #2563eb;outline-offset:3px}.settings-dialog{width:min(480px,calc(100% - 24px));max-height:calc(100dvh - 32px);padding:0}.settings-dialog .model-dialog-header{position:sticky;top:0;z-index:1;background:inherit}.settings-content{padding:0 20px max(20px,env(safe-area-inset-bottom));text-align:left}.settings-intro,.settings-note,.settings-status{font-size:13px;line-height:1.5;color:#526780}.settings-dialog fieldset{min-width:0;border:1px solid #dce7f3;border-radius:18px;margin:16px 0;padding:8px 14px}.settings-dialog legend{padding:0 6px;font-weight:650;color:#25456e;font-size:14px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;font-size:14px}.settings-row>span{flex-shrink:0}.settings-row select{font:inherit;font-size:16px;min-width:0;max-width:62%;min-height:44px;padding:8px;border:1px solid #d3e0ee;border-radius:12px;background:#f4f8fd;color:#243f60}.settings-row input{width:44px;height:28px;accent-color:#2563eb;cursor:pointer}.settings-row:has(input){min-height:48px;padding-block:8px}.settings-reset,.settings-confirm button{min-height:44px;padding:10px 14px;border:1px solid #d3e0ee;border-radius:12px;background:#f4f8fd;color:#25456e;font:inherit;font-size:14px;cursor:pointer}.settings-confirm{padding:12px 0;font-size:14px;line-height:1.5}.settings-confirm[hidden]{display:none}.settings-confirm button+button{margin-left:8px}.settings-status{min-height:40px;margin-bottom:0}.environment-grid{grid-template-columns:repeat(var(--environment-columns,3),minmax(0,1fr))!important}
html[data-show-uv="false"] .favorite-uv,html[data-show-uv="false"] .hour-day-uv-space,html[data-show-uv="false"] [data-environment-indicator="uv"],html[data-show-air="false"] [data-environment-indicator="air"],html[data-show-pollen="false"] [data-environment-indicator="pollen"],html[data-show-uv="false"][data-show-air="false"][data-show-pollen="false"] [data-environment-card]{display:none!important}
html[data-theme="dark"]{color-scheme:dark;background:#101c30}html[data-theme="dark"] body{background:linear-gradient(160deg,#101c30,#16253b);color:#e7eef9}html[data-theme="dark"] .hero h1,html[data-theme="dark"] h2,html[data-theme="dark"] h3,html[data-theme="dark"] h4,html[data-theme="dark"] .brand-name{color:#edf3ff}html[data-theme="dark"] :is(.hero p,.preview-hint,.location-region,.location-date,.update-info,.panel-heading p,.panel-note,.source-note,.eyebrow,.header-caption,footer,.mix-feels,.mix-range,.mix-gap,.comparison-note,.chart-instructions,.chart-summary,.chart-coverage,.environment-foot,.environment-date,.environment-attribution,.settings-note,.settings-intro,.settings-status,.today-missing,.today-unavailable,.rain-summary,.rain-time,.rain-amount,.radar-note,.radar-attribution,.radar-coverage,.radar-frame-type){color:#adbed5}html[data-theme="dark"] :is(.search-box,.search-results,.forecast-panel,.today-card,.rain-card,.environment-card,.radar-card,.model-dialog,.coherence-dialog,.models-disclosure,.mix-card,.comparison-view){background:#1a2c45;border-color:#354b66;color:#e7eef9;box-shadow:0 5px 20px #0002}html[data-theme="dark"] .mix-primary{background:linear-gradient(135deg,#193753,#223250);border-color:#406287}html[data-theme="dark"] :is(.mix-main-temperature,.mix-main-metrics strong,.mix-current-overview,.temperature,.preview-temperature,.synthesis-metric strong,.synthesis-date strong,.hour-day-temperature,.today-values strong,.today-rain-value strong,.metrics strong,.comparison-source strong,.comparison-gap strong){color:#eef4ff}html[data-theme="dark"] :is(.search-box input,.suggestion,.suggestion strong,.settings-row){color:#edf3ff}html[data-theme="dark"] .suggestion small{color:#b6c7dc}html[data-theme="dark"] :is(.suggestion:hover,.suggestion.selected){background:#2a4464}html[data-theme="dark"] :is(.today-group,.hour-day-card,.rain-timeline,.rain-detail,.radar-forecast,.comparison-row,.comparison-source,.metrics>div){background:#223750;border-color:#3b526c;color:#dbe7f6}html[data-theme="dark"] .today-group:nth-child(1){background:#3a302a}html[data-theme="dark"] .today-group:nth-child(2){background:#383525}html[data-theme="dark"] .today-rain{background:#203c56}html[data-theme="dark"] .hour-day-card.is-current{background:#28466a;border-color:#72a4e9}html[data-theme="dark"] .hour-day-card.is-night{background:#1a2945}html[data-theme="dark"] :is(.today-label,.today-values,.today-rain-value,.mix-main-metrics>div>span,.environment-heading,.environment-zone-title,.environment-zone-secondary,.coherence-label,.coherence-models,.daily-hours-heading){color:#baccdf}html[data-theme="dark"] :is(.settings-button,.settings-row select,.settings-reset,.settings-confirm button,.home-button,.position-button,.search-clear,.small-button,.radar-expand,.radar-close,.radar-card button,.refresh-button,.tabs,.saved-city,.recent-city,.favorite-city-button,.sheet-close){background:#243b58;color:#d8e7fc;border-color:#47617f}html[data-theme="dark"] .tabs button{color:#b9cde5}html[data-theme="dark"] .tabs button.active{background:#375781;color:#fff}html[data-theme="dark"] .settings-dialog fieldset{border-color:#405571}html[data-theme="dark"] .settings-dialog legend{color:#b9d3f6}html[data-theme="dark"] .environment-state-green{--state-bg:#203e32;--state-border:#426e52;--state-ink:#a1d8b1}html[data-theme="dark"] .environment-state-amber{--state-bg:#443721;--state-border:#78603a;--state-ink:#f5c780}html[data-theme="dark"] .environment-state-red{--state-bg:#462b37;--state-border:#7d4854;--state-ink:#f5b1ba}html[data-theme="dark"] .environment-state-neutral{--state-bg:#26394e;--state-border:#445a73;--state-ink:#bccde1}html[data-theme="dark"] .source-card{--model-bg:#283146;--model-ink:#c3b2ff;background:linear-gradient(135deg,var(--model-bg),#1b2c44);border-color:#495c79;color:#e7eef9}html[data-theme="dark"] .source-card.meteofrance{--model-bg:#213c52;--model-ink:#85c5ed}html[data-theme="dark"] .source-card.icon{--model-bg:#203e40;--model-ink:#80d1c5}html[data-theme="dark"] .source-card.gfs{--model-bg:#253657;--model-ink:#a2bfff}html[data-theme="dark"] .synthesis-day{color:#e7eef9;border-color:#415570}html[data-theme="dark"] :is(.daily-weather-sun,.daily-weather-partly){background:linear-gradient(135deg,#254361,#263750)}html[data-theme="dark"] .daily-weather-cloud{background:linear-gradient(135deg,#354053,#29374b)}html[data-theme="dark"] .daily-weather-rain{background:linear-gradient(135deg,#25455d,#26394f)}html[data-theme="dark"] .daily-weather-storm{background:linear-gradient(135deg,#403454,#302d48)}html[data-theme="dark"] :is(.daily-weather-snow,.daily-weather-fog){background:linear-gradient(135deg,#314651,#293b46)}html[data-theme="dark"] .synthesis-day[data-day-time] :is(.synthesis-date strong,.synthesis-metric strong){color:#eef4ff}html[data-theme="dark"] .mix-condition>strong{color:#d2e0f4}html[data-theme="dark"] .storm-risk-label{color:#f5d590!important}html[data-theme="dark"] :is(.mix-main-metrics,.coherence-block,.daily-hourly-detail,.favorite-updated,.rain-bar-track){border-color:#4a617d}html[data-theme="dark"] .skeleton{background:linear-gradient(90deg,#263951,#354a63,#263951)}html[data-theme="dark"] :is(.coherence-info-panel,.today-about p,.rain-about p){background:#243a55;color:#dbe7f8;border-color:#47617e}html[data-theme="dark"] .radar-fullscreen{background:#142238}html[data-theme="dark"] .environment-detail section{border-color:#405570}
@media(max-width:390px){.settings-content{padding-inline:16px}.settings-dialog fieldset{padding-inline:10px}.settings-row{gap:8px;font-size:13px}.settings-row select{max-width:60%}}
html[data-show-uv="false"] .city-uv{display:none!important}html[data-temperature="F"] .favorite-temperature{font-size:clamp(27px,7.6vw,38px)}html[data-temperature="F"] .mix-main-temperature{font-size:clamp(40px,12vw,62px)}html[data-theme="dark"]{--muted:#adbed5;--line:#405570;--blue:#87b8ff}html[data-theme="dark"] .source-card.mf{--model-bg:#213c52;--model-ink:#85c5ed}html[data-theme="dark"] :is(.city-pill,.segmented,.city-search-panel>summary){background:#243b58;border-color:#47617f;color:#d8e7fc}html[data-theme="dark"] .city-shortcut{color:#d8e7fc}html[data-theme="dark"] .city-pill.is-current{background:#30517a;border-color:#79a4d6}html[data-theme="dark"] :is(.coherence-info p,.today-about p,.rain-about p){background:#243a55;color:#e7eef9;border-color:#47617e}html[data-theme="dark"] .source-card :is(h3,.preview-detail-link){color:var(--model-ink)}html[data-theme="dark"] .environment-detail-rows strong{color:#e7eef9}html[data-theme="dark"] .model-dialog-header{border-color:#405570}html[data-theme="dark"] :is(.chart-axis,.chart-times,.hour-day-metric,.synthesis-metric>span,.coherence-description,.coherence-description small,.radar-legend,.daily-hours-empty){color:#bacce3}html[data-theme="dark"] .logo-icon{border-radius:10px;overflow:hidden}html[data-theme="dark"] .settings-dialog input[type="checkbox"]{accent-color:#87b8ff}
.notification-settings .notification-options{border-top:1px solid var(--line);margin-top:12px;padding-top:4px}.notification-settings .settings-row:has(input:disabled){opacity:.65}.notification-settings .notification-check{margin-top:10px}.notification-settings [data-notification-check]:empty{display:none}.notification-settings .settings-note{margin-top:8px}
.map-layer-picker{display:flex;gap:6px;margin:0 0 12px}.map-layer-picker button{min-height:44px;padding:8px 20px;border:1px solid #cadbef;border-radius:14px;background:#f0f5fc;color:#345879;font-size:14px}.map-layer-picker button[aria-pressed="true"]{background:#dfecfc;color:#204f91;border-color:#8eb4e7;font-weight:650}.map-layer-picker button:disabled{opacity:.5;cursor:default}.air-map-info{padding:12px 0;font-size:13px;line-height:1.5;color:#49617c}.air-map-info strong{color:#203e60;font-size:14px}.air-map-info p{margin:5px 0}.air-map-info img{max-width:100%;height:auto;display:block;margin:8px auto}.air-map-active :is(.radar-controls,.radar-legend,.radar-note,.radar-zoom-note,.radar-coverage,.radar-future-status,.radar-forecast,.radar-attribution){display:none!important}.radar-fullscreen .air-map-info{flex-shrink:0;padding:6px 0}.radar-fullscreen .map-layer-picker{margin-bottom:6px}html[data-theme="dark"] .map-layer-picker button{background:#243b58;color:#c6dcf4;border-color:#47617f}html[data-theme="dark"] .map-layer-picker button[aria-pressed="true"]{background:#335681;color:#fff}html[data-theme="dark"] .air-map-info{color:#bacce3}html[data-theme="dark"] .air-map-info strong{color:#e7f0fc}

/* Short-range rain: useful facts visible, without increasing the dry state. */
.rain-insights{display:flex;flex-wrap:wrap;gap:8px 16px;margin:10px 0 12px;color:#526982;font-size:14px;line-height:1.5}.rain-insights>span{display:flex;flex-direction:column;flex:1 1 105px}.rain-insights strong{color:#245e91;font-size:15px;font-variant-numeric:tabular-nums}.rain-insights small{font-size:12px;line-height:1.4}.rain-dry .rain-summary{margin-bottom:0}html[data-theme="dark"] .rain-insights{color:#baccdf}html[data-theme="dark"] .rain-insights strong{color:#95c7ef}

.daily-trend{position:relative;min-width:0;margin:0 -6px 14px;padding:10px 8px 6px;border:1px solid #dce8f5;border-radius:18px;background:linear-gradient(135deg,#f4f8ff,#fff)}.trend-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.trend-heading h3{font-size:14px;color:#243c5c}.trend-key{display:flex;gap:12px;font-size:12px;font-weight:700}.trend-key>span:before{content:'';display:inline-block;width:12px;height:2px;background:currentColor;vertical-align:middle;margin-right:4px}.trend-max{color:#b66d37}.trend-min{color:#2877c4}.trend-chart{display:block;width:100%;height:82px;overflow:visible}.trend-line{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.trend-point{fill:currentColor}.trend-band{fill:#9cc2ea;opacity:.14}.trend-days{display:grid;grid-template-columns:repeat(var(--trend-count),minmax(0,1fr));gap:0}.trend-day>summary{list-style:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:48px;padding:4px 0;cursor:pointer;font-size:12px;text-transform:capitalize;border-radius:10px;color:#425a78}.trend-day>summary::-webkit-details-marker{display:none}.trend-day[open]>summary{background:#e2edfc;color:#23598e}.trend-rain{display:flex;align-items:center;justify-content:center;gap:2px;color:#3575a7;font-variant-numeric:tabular-nums;font-size:12px}.trend-rain svg{flex-shrink:0}.trend-tooltip{position:absolute;z-index:3;left:8px;right:8px;bottom:55px;padding:12px 14px;border:1px solid #cbdbed;border-radius:14px;background:#fff;box-shadow:0 8px 24px #223b5e26;color:#233c5a;display:flex;flex-direction:column;gap:5px;font-size:14px;line-height:1.4}.trend-tooltip strong{text-transform:capitalize}.trend-tooltip small{color:#526984;font-size:12px}.trend-unavailable{height:82px;display:flex;align-items:center;color:#526984;font-size:14px}html[data-theme="dark"] .daily-trend{background:#20364f;border-color:#405873}html[data-theme="dark"] :is(.trend-heading h3,.trend-day>summary){color:#d3e4f7}html[data-theme="dark"] .trend-max{color:#efb27e}html[data-theme="dark"] :is(.trend-min,.trend-rain){color:#94c7f4}html[data-theme="dark"] .trend-day[open]>summary{background:#31557c}html[data-theme="dark"] .trend-tooltip{background:#243b58;border-color:#526d8b;color:#e7eef9}html[data-theme="dark"] .trend-tooltip small{color:#baccdf}

/* Weather atmosphere sits behind content; surfaces and semantic colors stay intact. */
body{isolation:isolate}.city-ambience{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.city-ambience-layer{position:absolute;inset:0;background:linear-gradient(180deg,var(--ambience-top),var(--ambience-bottom) 65%,transparent);opacity:0;transition:opacity 400ms ease}.city-ambience-layer.is-visible{opacity:.13}html[data-theme="dark"] .city-ambience-layer.is-visible{opacity:.12}
/* Favorite cards retain their stronger existing day/night identity, sharing sky hues. */
.favorite-sun:not(.favorite-night),.favorite-partly:not(.favorite-night){background:linear-gradient(145deg,#aadcf9,#d3ecfb 65%,#edf8ff)}.favorite-cloud:not(.favorite-night){background:linear-gradient(145deg,#e3edf5,#c6d5e4)}.favorite-rain:not(.favorite-night){background:linear-gradient(145deg,#d6e6f2,#b0c9de 70%,#c6dce9)}.favorite-storm:not(.favorite-night){background:linear-gradient(145deg,#d4d5e9,#b5b9d5);color:#233451}.favorite-snow:not(.favorite-night){background:linear-gradient(145deg,#c9e6f3,#edfaff)}.favorite-night.favorite-cloud,.favorite-night.favorite-nightcloud{background:linear-gradient(145deg,#202f48,#3c506b)}
@media(prefers-reduced-motion:reduce){.city-ambience-layer{transition:none}}
@media(forced-colors:active){.city-ambience{display:none}}
/* Slightly darker secondary labels keep contrast on the subtle night atmosphere. */
html:not([data-theme="dark"]) .weather-state{--muted:#465a70}html:not([data-theme="dark"]) .weather-state :is(.location-region,.location-date,.update-info,.header-caption){color:#465a70}

.network-banner{max-width:1060px;margin:0 auto 12px;padding:12px 16px;border:1px solid #d8c697;border-radius:16px;background:#fff8e8;color:#635024;font-size:14px;line-height:1.5}.network-banner[hidden],.pwa-update[hidden]{display:none}.pwa-update{position:fixed;bottom:max(16px,env(safe-area-inset-bottom));left:16px;right:16px;max-width:480px;margin:auto;z-index:1100;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:18px;background:#fff;border:1px solid #c7d9ef;box-shadow:0 8px 30px #233e6633;font-size:14px;color:#233e61}.pwa-update button{min-height:44px;padding:8px 14px;border:1px solid #b9d1f1;border-radius:12px;background:#edf5ff;color:#235a94;font-weight:650;flex-shrink:0}html[data-theme="dark"] .network-banner{background:#3f3522;color:#f1d598;border-color:#756140}html[data-theme="dark"] .pwa-update{background:#213751;color:#e7eef9;border-color:#45607e}@media(max-width:600px){.network-banner{margin:0 20px 12px}}

.radar-offline :is(.radar-map-wrap,.radar-legend,.radar-controls,.radar-coverage,.radar-note,.radar-zoom-note,.radar-forecast,.radar-future-status,.air-map-info,.radar-title-actions){display:none}.radar-offline .radar-status{margin:12px 0 0}

/* Targeted iPhone finishing: retain data, reduce empty space. */
.rain-insights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 8px;margin:8px 0;color:#526982}
.rain-insights>div{min-width:0;display:flex;flex-direction:column;gap:2px}
.rain-insights>div>span{font-size:12px;line-height:1.4}
.rain-insights strong{font-size:14px;line-height:1.4;white-space:nowrap}
.rain-insights small{font-size:11px}
.rain-insights .rain-peak{grid-column:1/-1;margin:4px 0 0;font-size:12px;line-height:1.5}
.rain-peak b,.rain-peak>span{white-space:nowrap}
.rain-summary{margin-top:10px;margin-bottom:8px}
.environment-card .environment-zone{height:auto;grid-template-rows:22px minmax(30px,auto) minmax(20px,auto) auto;gap:4px;padding:9px 7px;align-content:start}
.environment-card .environment-zone-title{min-height:0;align-items:flex-start;line-height:1.25}
.environment-card .environment-zone>strong{min-height:0;line-height:1.3}
.environment-zone-secondary{min-height:0;line-height:1.3}
.environment-grid{align-items:stretch}
.environment-skeleton{height:112px}
.environment-foot{margin-top:10px}
.hour-day-card>.hour-day-cumul{margin-top:-2px;margin-bottom:3px}
.trend-plot{position:relative;padding-left:48px}
.trend-axis{position:absolute;inset:0 auto 0 0;width:44px;color:#526984;font-size:10px;font-variant-numeric:tabular-nums}
.trend-axis>span{position:absolute;right:4px;transform:translateY(-50%);white-space:nowrap}
.trend-gridline{stroke:#cedbea;stroke-width:1;stroke-dasharray:2 4;vector-effect:non-scaling-stroke}
.daily-trend .trend-days{margin-left:38px}
html[data-theme="dark"] .trend-axis{color:#baccdf}
html[data-theme="dark"] .trend-gridline{stroke:#506782}
.map-layer-picker button{min-height:44px;white-space:nowrap}
.radar-bottom{min-width:0}
/* Fixed overlay is the iOS fallback, independent of native Fullscreen support. */
.radar-fullscreen,.radar-card:fullscreen{inset:auto;top:var(--map-viewport-top,0px);left:var(--map-viewport-left,0px);width:var(--map-viewport-width,100vw);height:var(--map-viewport-height,100dvh);padding:0;overflow:hidden;background:#eaf0f6;display:block}
.radar-fullscreen .radar-map-wrap{position:absolute;inset:0;border-radius:0;min-height:0}
.radar-fullscreen .radar-map{position:absolute;inset:0;height:100%;min-height:0;max-height:none}
.radar-fullscreen .radar-title{position:absolute;z-index:900;top:max(8px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));margin:0;padding:8px 10px;border:1px solid #d8e3ef;border-radius:16px;background:#ffffffed;box-shadow:0 3px 12px #19355318}
.radar-fullscreen .radar-title h3{font-size:16px}
.radar-fullscreen .map-layer-picker{position:absolute;z-index:900;top:calc(max(8px,env(safe-area-inset-top)) + 68px);left:max(8px,env(safe-area-inset-left));margin:0;padding:4px;border-radius:14px;background:#ffffffec;max-width:calc(100% - 76px)}
.radar-fullscreen .map-layer-picker button{font-size:12px;padding:7px 10px}
.radar-fullscreen .radar-map .leaflet-top{top:calc(max(8px,env(safe-area-inset-top)) + 128px)}
.radar-fullscreen .radar-center{top:calc(max(8px,env(safe-area-inset-top)) + 234px)}
.radar-fullscreen .radar-bottom{position:absolute;z-index:900;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));bottom:calc(max(6px,env(safe-area-inset-bottom)) + 27px);padding:7px 10px;border-radius:16px;border:1px solid #d8e3ef;background:#ffffffef;box-shadow:0 3px 12px #19355318;max-height:42%;overflow:auto;overscroll-behavior:contain}
.radar-fullscreen .radar-legend{padding:0;font-size:10px;gap:10px}
.radar-fullscreen .radar-controls{padding-top:4px}
.radar-fullscreen .radar-controls .radar-frame-time{font-size:20px}
.radar-fullscreen .radar-transport{justify-content:center}
.radar-fullscreen .radar-timeline-phases{margin:0;min-height:24px}
.radar-fullscreen .radar-range-labels{font-size:11px}
.radar-fullscreen .radar-attribution{margin:4px 0 0;font-size:11px}
.radar-fullscreen .radar-latest{font-size:10px}
.radar-fullscreen .radar-coverage{background:transparent;padding:0;font-size:10px}
.radar-fullscreen .radar-status:not(:empty){position:absolute;z-index:950;top:calc(max(8px,env(safe-area-inset-top)) + 120px);left:8px;right:68px;background:#ffffffef;border-radius:12px;padding:8px;font-size:12px}
.radar-fullscreen .radar-retry{position:absolute;z-index:950;top:calc(max(8px,env(safe-area-inset-top)) + 160px);left:8px}
.radar-fullscreen .air-map-info{margin:0;padding:0;font-size:11px}
.radar-fullscreen .air-map-info>strong{font-size:12px}
.radar-fullscreen .air-map-info>p{margin:3px 0}
.radar-fullscreen .air-map-info img{max-height:38px;width:auto;max-width:100%;margin:4px auto}
.radar-fullscreen .radar-map .leaflet-bottom{bottom:max(0px,env(safe-area-inset-bottom))}
html[data-theme="dark"] .radar-fullscreen :is(.radar-title,.map-layer-picker,.radar-bottom){background:#20364fed;border-color:#48617d;color:#e7eef9}
@media(max-width:390px){.rain-insights strong{font-size:13px}.rain-peak small{display:block}.environment-card .environment-zone{padding:8px 6px}.trend-axis{font-size:9px}}
.trend-axis small{display:block;font-size:9px;line-height:1.2;color:inherit}.day-guidance{margin:0 0 12px;padding:10px 12px;background:#f0f6fd;border:1px solid #dce8f5;border-radius:14px;font-size:13px;line-height:1.5;color:#365575}.day-guidance>p{margin:0}.day-guidance>small{display:block;margin-top:4px}.outing-guidance{margin-top:6px}.outing-guidance summary{min-height:44px;cursor:pointer;display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.outing-guidance summary strong{font-weight:600}.outing-guidance p{margin:4px 0}.forecast-freshness{font-size:11px;line-height:1.5;color:#526984;margin:10px 0 0}.forecast-freshness.is-stale{color:#8b4c12}.comparison-insight{padding:12px;border:1px solid #dce8f5;border-radius:14px;background:#f0f6fd;font-size:13px;line-height:1.5;margin-bottom:14px}.comparison-insight h4{margin:0 0 6px;font-size:14px}.comparison-insight p{margin:4px 0}.comparison-insight small{display:block;color:#526984;margin-top:6px}.hour-day-card[role="button"]{cursor:pointer}.hour-day-card[role="button"]:focus-visible{outline:2px solid #2563eb;outline-offset:-3px}.hour-details-dialog{width:min(480px,calc(100% - 24px));max-height:calc(100dvh - 32px)}.hour-detail-values{margin:0}.hour-detail-values>div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 0;border-bottom:1px solid #dce8f5}.hour-detail-values dt{font-size:13px;color:#526984}.hour-detail-values dd{margin:0;text-align:right;font-size:15px;font-weight:600}.hour-detail-values dd .wind-bearing{vertical-align:middle}html[data-theme="dark"] :is(.day-guidance,.comparison-insight){background:#223750;border-color:#405571;color:#dbe7f6}html[data-theme="dark"] :is(.forecast-freshness,.comparison-insight small,.hour-detail-values dt){color:#baccdf}html[data-theme="dark"] .forecast-freshness.is-stale{color:#f5c780}html[data-theme="dark"] .hour-detail-values>div{border-color:#405571}
@media(prefers-reduced-motion:reduce){.radar-fullscreen *{scroll-behavior:auto}}
.favorite-weather-icon{filter:none}.weather-icon{flex-shrink:0;overflow:visible}
/* One shared weather symbol: retain readable dimensions when models disagree. */
.mix-primary .mix-condition-icons svg{width:62px;height:62px}
.synthesis-daily-panel .mix-condition-icons svg{width:36px;height:36px}
.hour-day-card .mix-condition-icons svg,.daily-hourly-detail .hour-day-card .mix-condition-icons svg{width:42px;height:42px}
.favorite-weather-icon svg{width:52px;height:52px}
.preview-weather>.weather-icon{width:46px;height:46px}
.current-main .condition>.weather-icon{width:92px;height:92px}
@media(max-width:600px){.favorite-weather-icon svg{width:48px;height:48px}}
@media(max-width:360px){.favorite-weather-icon svg{width:42px;height:42px}}

/* Compact storm cue, aligned with the other daily summary icons. */
.day-guidance-storm{display:flex;align-items:flex-start;gap:10px}.day-guidance-storm>svg{flex:0 0 20px;margin-top:2px;color:#9b650c}.day-guidance-storm>span{min-width:0}html[data-theme="dark"] .day-guidance-storm>svg{color:#f4c568}

/* Main forecast finishing: quieter title and visually smaller contextual help. */
.mix-primary .mix-primary-title h2{font-size:18px;font-weight:650;letter-spacing:-.35px}
.mix-primary .coherence-info>summary{width:44px;height:44px;min-width:44px;min-height:44px;border:0;background:transparent;font-size:18px;box-shadow:none}
.mix-primary .coherence-info>summary:hover{background:#ffffff18}

/* Official lightning embed, loaded only when selected. */
.map-layer-picker button{flex:1;min-width:0;padding:8px 9px;font-size:13px}
.lightning-map-active .radar-map{visibility:hidden}
.lightning-map-frame{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:inherit;background:#edf3fb}
.lightning-map-active :is(.radar-controls,.radar-legend,.radar-note,.radar-zoom-note,.radar-coverage,.radar-future-status,.radar-forecast,.radar-attribution){display:none!important}
.lightning-map-info{padding:10px 0 0;color:#49617c;font-size:12px;line-height:1.5}.lightning-map-info p+p{margin-top:4px}.lightning-map-info a{text-underline-offset:3px}
.lightning-map-active .radar-center{z-index:500}
.radar-fullscreen .lightning-map-info{padding:0}
html[data-theme="dark"] .lightning-map-info{color:#bacce3}

/* Hour details have no source-card wrapper: provide their own comfortable inset. */
.hour-details-dialog .model-dialog-content{
 padding:16px 20px max(20px,env(safe-area-inset-bottom));
 min-width:0;
}
.hour-details-dialog .model-dialog-content>p:first-child{
 margin:0 0 10px;font-size:14px;line-height:1.5;
}
.hour-details-dialog .hour-detail-values>div{
 display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
 align-items:baseline;gap:8px 12px;padding:12px 0;
}
.hour-details-dialog .hour-detail-values :is(dt,dd){min-width:0;line-height:1.5}
.hour-details-dialog .hour-detail-values dt{font-size:14px}
.hour-details-dialog .hour-detail-values dd{font-size:15px;overflow-wrap:break-word}
.hour-details-dialog .settings-note{margin:14px 0 0}

/* Home favorite editing preserves the established weather cards. */
.favorite-edit-toolbar{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin:0 0 8px;font-size:13px;color:#526780}
.favorite-edit-toolbar>span{flex:1;min-width:140px;line-height:1.4}
.favorite-edit-toolbar>div{display:flex;gap:8px}
.favorite-edit-toolbar button{min-height:44px;padding:8px 12px;border:1px solid #ccdaec;border-radius:14px;background:#f4f8fd;color:#25456e;font:inherit;cursor:pointer}
.favorite-edit-toolbar [data-favorite-edit="done"]{background:#2563eb;border-color:#2563eb;color:white;font-weight:600}
.saved-cities:not(.is-editing-favorites) .favorite-remove{display:none}
.is-editing-favorites .favorite-weather-grid{touch-action:none}
.is-editing-favorites .favorite-tile{outline:2px solid #84b4f4;outline-offset:0;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.favorite-open{-webkit-touch-callout:none}
.is-editing-favorites .favorite-open:active{transform:none}
.is-editing-favorites .favorite-remove{background:#edf3fc;color:#25456e;opacity:1}
.favorite-tile.is-dragging{opacity:.35}
.favorite-drag-ghost{position:fixed!important;z-index:2000;pointer-events:none;opacity:.95;transform:scale(1.035);box-shadow:0 12px 32px #17243d44;transition:none}
html[data-theme="dark"] .favorite-edit-toolbar{color:#bacce3}
html[data-theme="dark"] .favorite-edit-toolbar button{background:#243b58;color:#d8e7fc;border-color:#47617f}
html[data-theme="dark"] .favorite-edit-toolbar [data-favorite-edit="done"]{background:#2563eb;color:white}
@media(prefers-reduced-motion:reduce){.favorite-tile{transition:none}.favorite-drag-ghost{transform:none}}

/* A gentle edit-only jiggle, with the removal badge straddling the card corner. */
.is-editing-favorites .favorite-weather-grid{padding:14px 10px 4px;row-gap:22px}
.is-editing-favorites .favorite-tile{overflow:visible;transform-origin:50% 55%;animation:favorite-edit-jiggle .24s ease-in-out infinite alternate}
.is-editing-favorites .favorite-tile:nth-child(even){animation-delay:-.13s;animation-direction:alternate-reverse}
.is-editing-favorites .favorite-open{border-radius:inherit;overflow:hidden}
.is-editing-favorites .favorite-remove{top:-18px;left:-18px;right:auto;z-index:3;width:44px;height:44px;display:grid;place-items:center;background:transparent;color:#334155;font-size:20px;line-height:1;isolation:isolate}
.is-editing-favorites .favorite-remove::before{content:"";position:absolute;inset:8px;z-index:-1;border-radius:50%;background:#e1e7ef;border:1px solid #fff;box-shadow:0 2px 5px #17243d24}
.is-editing-favorites .favorite-remove:hover::before{background:#cdd8e6}
.is-editing-favorites .favorite-tile.is-dragging{animation:none;transform:none}
.favorite-drag-ghost{animation:none!important}
html[data-theme="dark"] .is-editing-favorites .favorite-remove{color:#edf3ff}
html[data-theme="dark"] .is-editing-favorites .favorite-remove::before{background:#435570;border-color:#71829b}
@keyframes favorite-edit-jiggle{from{transform:rotate(-.65deg)}to{transform:rotate(.65deg)}}
@media(prefers-reduced-motion:reduce){.is-editing-favorites .favorite-tile{animation:none;transform:none}}
.home-state .saved-city-label:has(.favorite-edit-toolbar){display:flex;align-items:center;gap:8px;margin-bottom:8px}
.saved-city-label .favorite-edit-toolbar{margin:0 0 0 auto;flex:none}
.saved-city-label .favorite-edit-toolbar button{padding:4px 8px;min-height:44px;background:transparent;border:0;border-radius:12px;font-size:13px;font-weight:500;color:#365980}
.saved-city-label .favorite-edit-toolbar button:hover{background:#e1ecf8}
html[data-theme="dark"] .saved-city-label .favorite-edit-toolbar button{background:transparent;color:#bad3f4}

.air-map-info .air-city-reading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 14px;margin:10px 0;padding:12px 14px;border:1px solid #cbdfee;border-radius:14px;background:#edf6fb;line-height:1.35}
.air-city-place{display:flex;flex-direction:column;gap:3px;min-width:0}.air-city-place strong{overflow-wrap:anywhere}.air-city-place>span{font-size:12px}
.air-city-value{display:flex;align-items:baseline;gap:5px;color:#215779;white-space:nowrap;font-size:13px}.air-map-info .air-city-value strong{font-size:28px;font-weight:750;color:inherit;letter-spacing:-.8px;font-variant-numeric:tabular-nums}.air-city-value>span{font-size:12px}
.air-city-note{grid-column:1/-1;font-size:12px;font-weight:400}
html[data-theme="dark"] .air-city-reading{background:#21374b;border-color:#405c77}html[data-theme="dark"] .air-city-value{color:#a7d7f5}
.radar-fullscreen .air-city-reading{margin:4px 0;padding:7px 10px;gap:3px 10px}.radar-fullscreen .air-city-value strong{font-size:24px}
@media(max-width:380px){.air-map-info .air-city-reading{padding:10px;column-gap:10px}.air-city-place strong{font-size:13px}.air-map-info .air-city-value strong{font-size:26px}}

.lightning-data-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#233e60}.lightning-data-heading span{font-size:11px;white-space:nowrap;border-radius:999px;background:#edf3fb;padding:4px 8px}.lightning-map-info .lightning-data-delay{margin:5px 0;color:#61748a}.lightning-map-info details{margin:4px 0}.lightning-map-info summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:6px;font-weight:600}.lightning-map-info summary::before{content:'ⓘ';font-size:15px}.lightning-map-info details p{margin:0 0 8px}.lightning-map-info a{display:inline-block;padding:4px 0}.lightning-map-info summary:focus-visible{outline:2px solid #2563eb;outline-offset:2px;border-radius:6px}html[data-theme="dark"] .lightning-data-heading{color:#d7e6fa}html[data-theme="dark"] .lightning-data-heading span{background:#243b58}html[data-theme="dark"] .lightning-map-info .lightning-data-delay{color:#bacce3}

/* Compact fullscreen navigation and source-only lightning footer. */
.map-layer-air-short{display:none}
.radar-fullscreen .map-layer-picker{right:max(8px,env(safe-area-inset-right));max-width:none;box-sizing:border-box}
.radar-fullscreen .map-layer-picker button{flex:1 1 0;min-width:0}
.radar-fullscreen .map-layer-air-full{display:none}
.radar-fullscreen .map-layer-air-short{display:inline}
.radar-fullscreen .lightning-map-info>:not(.lightning-source):not(.lightning-age-legend){display:none}
.radar-fullscreen .lightning-source{margin:0;font-size:12px;line-height:1.4}
.radar-fullscreen.lightning-map-active .radar-bottom{padding:4px 10px;border-radius:10px}
@media(max-width:360px){.map-layer-air-full{display:none}.map-layer-air-short{display:inline}}

/* Strike age uses the provider’s six 20-minute bands; no fabricated filtering. */
.lightning-age-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px 8px;margin:8px 0;font-size:12px;line-height:1.4}
.lightning-age-legend>span{display:flex;align-items:center;gap:5px;white-space:nowrap}
.lightning-age-legend i{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;border-radius:5px;background:#23364c;font-size:23px;line-height:1;font-style:normal;font-weight:700}
.strike-white{color:#fff}.strike-yellow{color:#ffff00}.strike-orange{color:#ffb000}.strike-orange-red{color:#ff6000}.strike-red{color:#ff0000}.strike-dark-red{color:#b52222}
.radar-fullscreen .lightning-age-legend{margin:3px 0 5px;gap:3px 7px;font-size:11px}
@media(max-width:360px){.lightning-age-legend{gap:4px;font-size:11px}}

/* Leave the provider’s native menu reachable below our fullscreen controls. */
.radar-fullscreen .lightning-map-frame{top:calc(max(8px,env(safe-area-inset-top)) + 126px);height:calc(100% - max(8px,env(safe-area-inset-top)) - 126px)}

/* Fullscreen finishing: one segmented control and a discreet floating legend. */
.radar-fullscreen .map-layer-picker{display:flex;gap:3px;padding:4px;border:1px solid #d2deed;border-radius:16px;background:#eaf1f9;box-shadow:0 3px 10px #162e4710}
.radar-fullscreen .map-layer-picker button{min-height:44px;padding:8px 6px;border:0;border-radius:12px;background:transparent;color:#48617e;font-size:14px;font-weight:550;box-shadow:none;transition:background-color .15s,color .15s}
.radar-fullscreen .map-layer-picker button[aria-pressed="true"]{background:#2563eb;color:#fff;font-weight:650;box-shadow:0 2px 5px #1c4ba529}
.radar-fullscreen .map-layer-picker button:focus-visible{outline:2px solid #173d75;outline-offset:-2px}
.radar-fullscreen.lightning-map-active .radar-bottom{left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));padding:8px 12px 6px;border:1px solid #ffffff30;border-radius:18px;background:#172a3fed;color:#eef4fb;box-shadow:0 4px 16px #06111c28}
.radar-fullscreen .lightning-map-info{color:#d3e0ef}
.radar-fullscreen .lightning-age-legend{margin:0 0 5px;gap:5px 8px;font-size:12px;font-variant-numeric:tabular-nums}
.radar-fullscreen .lightning-age-legend i{width:16px;height:16px;flex-basis:16px;border-radius:0;background:transparent;font-size:22px}
.radar-fullscreen .lightning-age-legend .strike-dark-red{text-shadow:0 0 1px #fff,0 0 2px #fff}
.radar-fullscreen .lightning-source{padding-top:5px;border-top:1px solid #ffffff20;color:#bacce1;font-size:11px;line-height:1.4}
.radar-fullscreen .lightning-source a{color:#d3e0ef;padding:1px 0;text-decoration-color:#8fa9c8;text-underline-offset:3px}
html[data-theme="dark"] .radar-fullscreen .map-layer-picker{background:#243b54;border-color:#48617d}
html[data-theme="dark"] .radar-fullscreen .map-layer-picker button{background:transparent;color:#cad9eb}
html[data-theme="dark"] .radar-fullscreen .map-layer-picker button[aria-pressed="true"]{background:#2563eb;color:#fff}
html[data-theme="dark"] .radar-fullscreen.lightning-map-active .radar-bottom{background:#172a3fed;border-color:#ffffff30}
@media(prefers-reduced-motion:reduce){.radar-fullscreen .map-layer-picker button{transition:none}}

/* A single sliding selection surface; map loading remains independent. */
@supports selector(:has(*)){
.radar-fullscreen .map-layer-picker::before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:calc((100% - 14px)/3);border-radius:12px;background:#2563eb;box-shadow:0 2px 5px #1c4ba529;pointer-events:none;transform:translateX(0);transition:transform .25s cubic-bezier(.22,.75,.25,1)}
.radar-fullscreen .map-layer-picker:has([data-map-layer="air"][aria-pressed="true"])::before{transform:translateX(calc(100% + 3px))}
.radar-fullscreen .map-layer-picker:has([data-map-layer="lightning"][aria-pressed="true"])::before{transform:translateX(calc(200% + 6px))}
.radar-fullscreen .map-layer-picker button{position:relative;z-index:1;transition:color .15s}
.radar-fullscreen .map-layer-picker button[aria-pressed="true"],html[data-theme="dark"] .radar-fullscreen .map-layer-picker button[aria-pressed="true"]{background:transparent;box-shadow:none}
@media(prefers-reduced-motion:reduce){.radar-fullscreen .map-layer-picker::before,.radar-fullscreen .map-layer-picker button{transition:none}}

}

/* Match the approved lightning footer for rain and air in fullscreen only. */
.radar-fullscreen:not(.lightning-map-active) .radar-bottom{left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));padding:10px 12px 8px;border:1px solid #ffffff30;border-radius:18px;background:#172a3fed;color:#eef4fb;box-shadow:0 4px 16px #06111c28}
html[data-theme="dark"] .radar-fullscreen:not(.lightning-map-active) .radar-bottom{background:#172a3fed;border-color:#ffffff30}
.radar-fullscreen .radar-bottom :is(.radar-legend,.radar-frame-type,.radar-latest,.radar-timeline-phases,.radar-range-labels,.radar-coverage,.radar-future-status,.radar-attribution){color:#cad8e9;font-size:12px}
.radar-fullscreen .radar-bottom a{color:#d3e0ef;text-decoration-color:#8fa9c8;text-underline-offset:3px}
.radar-fullscreen .radar-legend{justify-content:center;gap:6px 10px;line-height:1.4;padding-bottom:6px;border-bottom:1px solid #ffffff20}
.radar-fullscreen .radar-controls{grid-template-columns:minmax(0,1fr);gap:2px 8px;padding-top:8px}
.radar-fullscreen .radar-current-reading{display:flex;align-items:baseline;justify-content:center;gap:10px;text-align:center;min-width:0}
.radar-fullscreen .radar-controls .radar-frame-time{font-size:26px;color:#fff;line-height:1.2}
.radar-fullscreen .radar-transport{grid-column:1/-1;justify-self:center;justify-content:center;gap:4px;margin:5px 0 2px;padding:3px;border:1px solid #ffffff1c;border-radius:14px;background:#ffffff08}
.radar-fullscreen .radar-bottom :is(.radar-prev,.radar-next,.radar-play,.radar-now){background:transparent;color:#edf5ff;border:0;min-height:44px}
.radar-fullscreen .radar-bottom :is(.radar-prev,.radar-next){width:44px;padding:0;border-radius:10px}
.radar-fullscreen .radar-bottom .radar-play{background:#2563eb;padding:8px 18px;font-size:14px;border-radius:10px;min-width:116px}
.radar-fullscreen .radar-bottom button:disabled{opacity:.4}
.radar-fullscreen .radar-timeline-phases{min-height:32px;gap:8px}
.radar-fullscreen .radar-bottom .radar-now{padding:0 8px;min-height:32px;font-size:12px;border-radius:8px;color:#c9deff}
.radar-fullscreen .radar-bottom :is(.radar-prev,.radar-next,.radar-now):hover:not(:disabled){background:#ffffff12}
.radar-fullscreen .radar-bottom button:focus-visible{outline:2px solid #a7caff;outline-offset:2px}
.radar-fullscreen .radar-slider{accent-color:#71a6ff}
.radar-fullscreen .radar-coverage{margin:5px 0;line-height:1.4}
.radar-fullscreen .radar-attribution{padding-top:6px;border-top:1px solid #ffffff20;line-height:1.4}
.radar-fullscreen .air-map-info{color:#cad8e9;font-size:12px;line-height:1.45}
.radar-fullscreen .air-map-info>strong{color:#eef4fb;font-size:13px}
.radar-fullscreen .air-map-info>p{margin:5px 0}
.radar-fullscreen .air-map-info .air-city-reading{padding:9px 10px;margin:8px 0;border:1px solid #ffffff24;border-radius:12px;background:#ffffff0b;color:#cad8e9;gap:4px 10px}
.radar-fullscreen .air-city-place strong{color:#fff;font-size:14px}
.radar-fullscreen .air-city-place>span,.radar-fullscreen .air-city-note{font-size:12px}
.radar-fullscreen .air-city-value,.radar-fullscreen .air-map-info .air-city-value strong{color:#a7d9ff}
.radar-fullscreen .air-map-info .air-city-value strong{font-size:27px}
.radar-fullscreen .air-map-info img{display:block;padding:5px 8px;background:#f5f8fc;border-radius:8px;max-height:50px;box-sizing:border-box;margin:7px auto}
.radar-fullscreen .air-map-info>p:last-child{padding-top:6px;border-top:1px solid #ffffff20;margin-bottom:0}

/* Tighten only the rain footer, preserving its approved layout and controls. */
.radar-fullscreen:not(.air-map-active):not(.lightning-map-active) .radar-bottom{padding-top:7px;padding-bottom:6px}
.radar-fullscreen .radar-legend{padding-bottom:4px}
.radar-fullscreen .radar-controls{padding-top:4px;row-gap:0}
.radar-fullscreen .radar-transport{margin:2px 0 0;padding:0}
.radar-fullscreen .radar-controls>.radar-latest{margin-top:2px;line-height:1.3}
.radar-fullscreen .radar-slider{height:32px;margin:0}
.radar-fullscreen .radar-range-labels{line-height:1.3}
.radar-fullscreen .radar-coverage{margin:3px 0;line-height:1.3}
.radar-fullscreen .radar-attribution{padding-top:4px;margin-top:3px;line-height:1.3}

/* Compact forecast context: uncertainty, revisions and the next local day. */
.metric-agreement{position:relative;margin:16px 0 0;border-top:1px solid #36557520;padding-top:12px}
.metric-agreement>summary{list-style:none;cursor:pointer;min-height:44px}
.metric-agreement>summary::-webkit-details-marker{display:none}
.metric-agreement-heading{display:flex;justify-content:space-between;align-items:center;color:#365575;font-size:14px;font-weight:600;margin-bottom:8px}
.metric-agreement-heading::after{content:'+';font-size:20px;font-weight:400}
.metric-agreement[open] .metric-agreement-heading::after{content:'−'}
.metric-agreement-pills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.metric-agreement-pill{display:flex;align-items:flex-start;gap:4px;border:1px solid #36557518;border-radius:10px;padding:7px 6px;background:#ffffff70;color:#365575;font-size:12px;line-height:1.4;min-width:0}
.metric-agreement-pill svg{flex-shrink:0;margin-top:1px}
.metric-agreement-pill b{display:block;font-size:12px;font-weight:600;overflow-wrap:anywhere}
.metric-agreement-pill.agreement-close b{color:#176343}
.metric-agreement-pill.agreement-mixed b{color:#7d5310}
.metric-agreement-pill.agreement-wide b{color:#963448}
.metric-agreement-pill.agreement-missing b{color:#53677e}
.metric-agreement-ranges{display:grid;gap:10px;margin-top:14px}
.metric-agreement-ranges>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;font-size:14px;color:#365575}
.metric-agreement-ranges strong{color:#142d49;font-variant-numeric:tabular-nums;text-align:right}
.metric-agreement-ranges small{grid-column:1/-1;font-size:12px}
.metric-agreement>p{font-size:12px;line-height:1.5;color:#53677e;margin:10px 0 0}
.metric-agreement>summary:focus-visible{outline:2px solid #2563eb;outline-offset:4px;border-radius:6px}
.forecast-changes{margin:0 0 16px;padding:16px 18px;border:1px solid #d0e0f3;background:#edf5ff;border-radius:20px;color:#365575}
.forecast-changes-title{display:flex;gap:8px;align-items:center;color:#173d70;font-size:15px}
.forecast-changes-title>span{font-size:20px;color:#2563eb}
.forecast-changes>p,.forecast-changes>small{font-size:12px;line-height:1.5;margin:5px 0 0}
.forecast-changes ul{list-style:none;padding:0;margin:10px 0}
.forecast-changes li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #36557518;font-size:14px}
.forecast-changes li>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.forecast-changes li>div span{font-size:12px}
.forecast-change-values{flex-shrink:0;font-variant-numeric:tabular-nums}
.forecast-change-values b{color:#173d70}
.tomorrow-preview{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-top:14px;padding-top:12px;border-top:1px solid #36557520;color:#365575;font-size:14px}
.tomorrow-preview>div{display:flex;flex-direction:column;gap:3px}
.tomorrow-preview strong{color:#173d70}
.tomorrow-preview span{font-size:12px}
.tomorrow-preview p{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.update-info{flex-wrap:wrap;gap:6px 12px}
.update-info #last-updated{flex:1;min-width:130px}
html[data-theme="dark"] .metric-agreement{border-color:#9db9d42b}
html[data-theme="dark"] :is(.metric-agreement-heading,.metric-agreement-ranges,.metric-agreement>p,.tomorrow-preview){color:#c4d7eb}
html[data-theme="dark"] .metric-agreement-pill{background:#1b3044b0;border-color:#9db9d42b;color:#c4d7eb}
html[data-theme="dark"] .metric-agreement-pill.agreement-close b{color:#86dbb0}
html[data-theme="dark"] .metric-agreement-pill.agreement-mixed b{color:#f0ce86}
html[data-theme="dark"] .metric-agreement-pill.agreement-wide b{color:#ffabb4}
html[data-theme="dark"] .metric-agreement-pill.agreement-missing b{color:#b7c8db}
html[data-theme="dark"] :is(.metric-agreement-ranges strong,.tomorrow-preview strong,.forecast-changes-title,.forecast-change-values b){color:#e6f0ff}
html[data-theme="dark"] .forecast-changes{background:#20364f;border-color:#405b78;color:#c4d7eb}
html[data-theme="dark"] :is(.forecast-changes li,.tomorrow-preview){border-color:#9db9d42b}
@media(max-width:360px){.metric-agreement-pill{flex-direction:column}.forecast-changes li{flex-wrap:wrap}.forecast-change-values{margin-left:auto}}

/* Forecast first: connected hourly values and a shared daily temperature scale. */
.hourly-day-panel{overflow:hidden}
.hourly-visual-scroll{padding:0;margin:14px 0 0;scroll-snap-type:x proximity;overscroll-behavior-x:contain}
.hourly-visual-track{position:relative;display:flex;flex:none;min-height:202px}
.hourly-visual-plot{position:absolute;inset:0;pointer-events:none;overflow:visible}
.hourly-visual-plot polyline{fill:none;stroke:var(--hourly-visual-color);stroke-width:2.8;stroke-linejoin:round;stroke-linecap:round}
.hourly-visual-plot circle{fill:var(--hourly-visual-color);stroke:#fff;stroke-width:1.5}
.hourly-visual-grid{stroke:#36557512;stroke-width:1;stroke-dasharray:3 5}
.hour-day-card.hourly-visual-point{position:relative;display:block;flex:0 0 80px;width:80px;min-width:80px;height:202px;min-height:202px;box-sizing:border-box;padding:0;margin:0;border:0;border-radius:14px;background:transparent!important;box-shadow:none;scroll-snap-align:start;text-align:center;cursor:pointer;color:#173d70}
.hourly-visual-point.is-current{background:#2563eb08!important}
.hourly-visual-time{font-size:14px;font-weight:600;line-height:1.4;color:#49617c}
.hourly-visual-time small{display:block;font-size:10px;min-height:15px;font-weight:500;color:#2563eb}
.hourly-visual-point .mix-condition{position:absolute;top:37px;left:0;right:0;margin:0;min-height:0;max-width:none}
.hourly-visual-point .mix-condition-icons{justify-content:center}
.hourly-visual-point .mix-condition-icons svg{width:30px;height:30px}
.hourly-visual-point .mix-condition>strong{display:none}
.hourly-visual-value{position:absolute;left:0;right:0;font-size:17px;line-height:1.3;color:#142d49;font-variant-numeric:tabular-nums;white-space:nowrap}
.hourly-visual-risk{position:absolute;top:174px;left:0;right:0;color:#49617c;font-size:11px;line-height:1.4}
.hourly-visual-controls{display:flex;gap:6px;overflow-x:auto;padding:5px 0 3px;scrollbar-width:none}
.hourly-visual-controls::-webkit-scrollbar{display:none}
.hourly-visual-controls button{flex-shrink:0;min-height:40px;padding:7px 13px;border:1px solid #ccdcf1;border-radius:999px;background:#f5f9ff;color:#365575;font:inherit;font-size:14px;cursor:pointer;transition:background-color .18s,color .18s}
.hourly-visual-controls button[aria-pressed="true"]{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 2px 6px #2563eb20}
.hourly-visual-controls button:focus-visible{outline:2px solid #173d70;outline-offset:2px}
.hourly-visual-note{font-size:12px;color:#61748c;margin:8px 0 0;line-height:1.5}
.hourly-all-data{margin-top:16px;border-top:1px solid #36557518;padding-top:6px}
.hourly-all-data>summary{cursor:pointer;min-height:44px;font-size:14px;color:#365575;padding:6px 0}
.hourly-all-data>summary>span{display:block;font-size:12px;color:#61748c;margin:3px 0 0 18px}
.hour-day-detail-timeline{padding-top:10px}
.daily-temperature-bar{display:flex;align-items:center;gap:10px;grid-column:1/-1;width:100%;margin:4px 0 9px;min-width:0}
.daily-temperature-bar>span:first-child,.daily-temperature-bar>span:nth-child(3){display:flex;flex-direction:column;gap:3px;flex-shrink:0;min-width:54px}
.daily-temperature-bar>span:nth-child(3){text-align:right}
.daily-temperature-bar small{font-size:11px;color:#58718d}
.daily-temperature-bar strong{font-size:18px;font-variant-numeric:tabular-nums;color:#183957;white-space:nowrap}
.daily-temperature-track{position:relative;flex:1;height:7px;min-width:30px;border-radius:999px;background:#36557512;overflow:hidden}
.daily-temperature-track i{position:absolute;top:0;bottom:0;border-radius:999px;background:linear-gradient(90deg,#22b8d8,#f1cb56 55%,#ee963d)}
.synthesis-day-metrics:has(.daily-temperature-bar){grid-template-columns:repeat(2,minmax(0,1fr))}
.synthesis-day-metrics:has(.daily-temperature-bar)>.synthesis-metric{flex-direction:row;justify-content:space-between;align-items:baseline;gap:6px}
.rain-card:not(.rain-dry){background:linear-gradient(145deg,#eef7ff,#fff 70%);border-color:#cee2f5}
.rain-event{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:5px 10px;padding:10px 12px;margin:12px 0 0;border-radius:12px;background:#dfefff;color:#365575;font-size:12px}
.rain-event strong{font-size:16px;color:#173d70;font-variant-numeric:tabular-nums}
.rain-timeline{border-radius:16px;padding:12px 6px;background:#fff9;gap:3px;border-color:#d5e4f3}
.rain-bar-track{height:72px;background:repeating-linear-gradient(to top,transparent 0,transparent 23px,#3655750c 23px,#3655750c 24px);border-bottom:1px solid #bacfe7}
.rain-bar{width:10px;max-width:60%;max-height:64px;border-radius:6px 6px 2px 2px;background:linear-gradient(to top,#2563eb,#22b8d8)}
.rain-time{font-variant-numeric:tabular-nums;font-size:11px}
.rain-point[aria-pressed="true"]{background:#dfefff;border-radius:8px;box-shadow:inset 0 0 0 1px #8cb7ef}
.rain-insights{border:1px solid #d5e4f3;border-radius:14px;padding:10px 12px;background:#fff8}
html[data-theme="dark"] :is(.hourly-visual-time,.hourly-visual-risk,.hourly-visual-note,.hourly-all-data>summary,.hourly-all-data>summary>span,.daily-temperature-bar small){color:#b9cde5}
html[data-theme="dark"] :is(.hourly-visual-value,.daily-temperature-bar strong){color:#eef4ff}
html[data-theme="dark"] .hourly-visual-grid{stroke:#b9cde51c}
html[data-theme="dark"] .hourly-visual-plot circle{stroke:#1a2c45}
html[data-theme="dark"] .hourly-visual[data-visual-metric="temperature"]{--hourly-visual-color:#f4be6c!important}
html[data-theme="dark"] .hourly-visual[data-visual-metric="apparent"]{--hourly-visual-color:#b9a7ff!important}
html[data-theme="dark"] .hourly-visual[data-visual-metric="rain"]{--hourly-visual-color:#66d8f2!important}
html[data-theme="dark"] .hourly-visual[data-visual-metric="wind"]{--hourly-visual-color:#62d3c5!important}
html[data-theme="dark"] .hourly-visual-point.is-current{background:#87b8ff12!important}
html[data-theme="dark"] .hourly-visual-controls button{background:#243b58;border-color:#47617f;color:#d8e7fc}
html[data-theme="dark"] .hourly-visual-controls button[aria-pressed="true"]{background:#2563eb;border-color:#2563eb;color:#fff}
html[data-theme="dark"] .daily-temperature-track{background:#b9cde518}
html[data-theme="dark"] .hourly-all-data{border-color:#47617f}
html[data-theme="dark"] .rain-card:not(.rain-dry){background:linear-gradient(145deg,#1a3653,#1a2c45);border-color:#47617f}
html[data-theme="dark"] .rain-event{background:#284767;color:#b9cde5}
html[data-theme="dark"] .rain-event strong{color:#eef4ff}
html[data-theme="dark"] :is(.rain-timeline,.rain-insights){background:#14283b80;border-color:#47617f}
html[data-theme="dark"] .rain-point[aria-pressed="true"]{background:#294b70}
@media(prefers-reduced-motion:reduce){.hourly-visual-controls button{transition:none}}

/* Reference composition: continuous daily rows and a centered weather hero. */
.synthesis-daily-panel .synthesis-list{gap:0;border:1px solid #dce7f3;border-radius:18px;overflow:hidden;background:#ffffffa8}
.synthesis-daily-panel .daily-compact-row{grid-template-columns:54px 36px minmax(0,1fr);gap:5px 9px;padding:12px;border:0;border-bottom:1px solid #dce7f3;border-radius:0;background:transparent;box-shadow:none}
.synthesis-daily-panel .daily-compact-row:last-child{border-bottom:0}
.daily-compact-row .synthesis-date{grid-column:1;grid-row:1;padding:0!important}
.daily-compact-row>.mix-condition{display:contents!important}
.daily-compact-row>.mix-condition>.mix-condition-icons{grid-column:2;grid-row:1;justify-self:center}
.daily-compact-row>.mix-condition>strong{grid-column:2/-1;grid-row:2;text-align:left;color:#536982;font-size:12px;line-height:1.4}
.daily-compact-row .daily-temperature-bar,.daily-compact-row .compact-day-temperatures{grid-column:3;grid-row:1;margin:0;gap:7px}
.daily-compact-row .daily-temperature-bar>span:first-child,.daily-compact-row .daily-temperature-bar>span:nth-child(3){min-width:42px}
.daily-compact-row .daily-temperature-bar strong{font-size:17px}
.daily-compact-row .daily-temperature-bar small{font-size:10px}
.daily-compact-row .compact-day-temperatures{display:flex;justify-content:space-between}
.daily-compact-row .day-chevron{left:auto;right:5px;top:12px;width:12px;height:12px}
.compact-day-facts{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding-top:3px;font-size:12px}
.compact-day-facts .synthesis-metric{display:flex;align-items:center;gap:5px}
.compact-day-facts .synthesis-metric strong{font-size:12px!important}
.daily-trend-disclosure{margin:0 0 12px;color:#48617e;font-size:14px}
.daily-trend-disclosure>summary{min-height:40px;padding:8px 0;cursor:pointer}
.daily-trend-disclosure .daily-trend{margin-top:8px}
.hourly-visual-plot polyline{stroke-width:4.5}
.hourly-visual-plot circle{display:none}
.hourly-visual-value{left:50%;right:auto;transform:translateX(-50%);font-size:20px;font-weight:750;line-height:1.1;background:#fff;border-radius:6px;padding:1px 3px}
.hourly-visual-controls{padding-top:10px}
.mix-primary .mix-primary-title h2{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#48617e}
.mix-primary .mix-current-overview{display:grid;grid-template-columns:76px auto;justify-content:center;align-items:center;gap:0 16px;margin:20px 0 18px}
.mix-primary .mix-temperature-group{grid-column:2;grid-row:1}
.mix-primary .mix-main-temperature{font-size:clamp(48px,13vw,64px);line-height:1.1}
.mix-primary .mix-current-overview>.mix-condition{display:contents}
.mix-primary .mix-current-overview .mix-condition-icons{grid-column:1;grid-row:1;justify-content:center}
.mix-primary .mix-current-overview .mix-condition-icons svg{width:68px;height:68px}
.mix-primary .mix-current-overview .mix-condition>strong{grid-column:1/-1;grid-row:2;text-align:center;margin-top:14px;font-size:16px;font-weight:550;line-height:1.4}
.mix-primary .mix-current-overview .mix-condition-icons:has(svg+svg) svg{width:40px;height:40px}
.mix-primary .mix-main-metrics{border-radius:14px;background:#ffffff60;border:1px solid #ffffff70;padding:12px;margin-top:0;gap:12px}
.mix-primary .mix-main-metrics strong{font-size:20px}
html[data-theme="dark"] .synthesis-daily-panel .synthesis-list{background:#1b304480;border-color:#415570}
html[data-theme="dark"] .synthesis-daily-panel .daily-compact-row{background:transparent;border-color:#415570}
html[data-theme="dark"] :is(.daily-trend-disclosure,.daily-compact-row>.mix-condition>strong,.mix-primary .mix-primary-title h2){color:#b9cde5}
html[data-theme="dark"] .hourly-visual-value{background:#1a2c45}
html[data-theme="dark"] .mix-primary .mix-main-metrics{background:#14283b70;border-color:#9db9d426}
@media(max-width:360px){.synthesis-daily-panel .daily-compact-row{grid-template-columns:48px 30px minmax(0,1fr);column-gap:6px;padding:10px 8px}.daily-compact-row .daily-temperature-bar strong{font-size:15px}.daily-compact-row .daily-temperature-bar>span:first-child,.daily-compact-row .daily-temperature-bar>span:nth-child(3){min-width:38px}.compact-day-facts{gap:8px}}

/* Main forecast: lighter surfaces and readable context on every sky. */
#weather-content>.mix-primary{padding:18px 20px;border-radius:24px}
#weather-content>.mix-primary .mix-primary-title h2{font-size:11px;letter-spacing:.07em;font-weight:550}
#weather-content>.mix-primary .mix-current-overview{margin:18px 0 20px;gap:0 18px}
#weather-content>.mix-primary .mix-current-overview .mix-condition>strong{margin-top:12px;font-size:16px}
#weather-content>.mix-primary .mix-main-metrics{padding:0;margin:0 0 12px;background:transparent;border:0;gap:10px;border-radius:0}
#weather-content>.mix-primary .mix-main-metrics>div{padding:11px 12px;border:1px solid #36557514;border-radius:14px;background:#ffffff55;min-width:0}
#weather-content>.mix-primary .mix-main-metrics>div>span{font-size:12px;margin-bottom:4px}
#weather-content>.mix-primary .mix-main-metrics strong{font-size:18px;line-height:1.3}
#weather-content>.mix-primary .coherence-block{padding:0 0 12px;margin:0;gap:10px;border-bottom:1px solid #36557520}
#weather-content>.mix-primary .coherence-badge{min-width:62px;min-height:42px;padding:8px;border-radius:12px}
#weather-content>.mix-primary .coherence-badge>strong{font-size:24px}
#weather-content>.mix-primary .coherence-description>strong{font-size:14px}
#weather-content>.mix-primary .coherence-description>small{font-size:12px}
#weather-content>.mix-primary .metric-agreement{margin:0;padding-top:12px;border:0}
#weather-content>.mix-primary .metric-agreement-heading{font-size:13px;line-height:1.4;margin-bottom:8px;gap:10px}
#weather-content>.mix-primary .metric-agreement-pill{border:1px solid #36557514;background:#ffffff38;gap:5px;padding:7px 6px;border-radius:10px;font-size:11px}
#weather-content>.mix-primary .metric-agreement-pill b{font-size:12px}
#weather-content>.mix-primary .forecast-freshness{font-size:11px;margin:12px 0 0;line-height:1.5;opacity:.9}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .mix-main-metrics>div{background:#0c203d55;border-color:#ffffff22}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .mix-main-metrics .wind-bearing{color:#c7e1ff}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .coherence-block{border-color:#ffffff24}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-heading{color:#edf5ff}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-pill{background:#0c203d40;border-color:#ffffff20;color:#d1dfee}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-pill.agreement-close b{color:#9de3ba}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-pill.agreement-mixed b{color:#f3d393}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-pill.agreement-wide b{color:#ffc0c8}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-pill.agreement-missing b{color:#d1dfee}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-ranges{color:#d1dfee}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement-ranges strong{color:#fff}
#weather-content>.mix-primary:is(.mix-sky-night,.mix-sky-sun) .metric-agreement>p{color:#d1dfee}
html[data-theme="dark"] #weather-content>.mix-primary .mix-main-metrics>div{background:#0c203d55;border-color:#ffffff22}
html[data-theme="dark"] #weather-content>.mix-primary .coherence-block{border-color:#ffffff24}
html[data-theme="dark"] #weather-content>.mix-primary .metric-agreement-pill{background:#0c203d40;border-color:#ffffff20;color:#d1dfee}
html[data-theme="dark"] #weather-content>.mix-primary .metric-agreement-heading{color:#edf5ff}
@media(max-width:360px){#weather-content>.mix-primary{padding:16px}#weather-content>.mix-primary .mix-main-metrics>div{padding:10px}#weather-content>.mix-primary .mix-main-metrics strong{font-size:16px}}

/* Always-visible daily agreement; no disclosure or additional tap. */
.compact-day-footer{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:3px;color:#61748c;pointer-events:none}
.daily-score{display:inline-flex;align-items:center;gap:6px;padding:4px 7px;border-radius:7px;background:#edf3f9;font-size:11px;line-height:1.3;color:#48617e}
.daily-score b{font-size:12px;font-variant-numeric:tabular-nums}
.compact-day-footer>small,.daily-score-unavailable{font-size:11px}
.daily-score-high,.daily-score-very_high,.daily-score-perfect{background:#e7f3ec;color:#226045}
.daily-score-medium{background:#fff5da;color:#78600f}
.daily-score-limited{background:#fff0df;color:#8b501b}
.daily-score-low{background:#ffedf0;color:#953047}
html[data-theme="dark"] .compact-day-footer{color:#b9cde5}
html[data-theme="dark"] .daily-score{background:#2b4058;color:#d4e1f0}
html[data-theme="dark"] :is(.daily-score-high,.daily-score-very_high,.daily-score-perfect){background:#264738;color:#a9dfbf}
html[data-theme="dark"] .daily-score-medium{background:#443c25;color:#f2d895}
html[data-theme="dark"] .daily-score-limited{background:#493725;color:#f3c59c}
html[data-theme="dark"] .daily-score-low{background:#492e3c;color:#ffc1cc}
