:root{--bg:#061629;--bg2:#0b2748;--card:rgba(10,34,62,.88);--line:rgba(180,215,255,.12);--text:#f5f9fc;--muted:#8fa6b7;--accent:#d8ef4c;--blue:#4ba4ea;--amber:#d09a5a;--red:#c66f73;--score-good:#c8d96b;--score-mid:#d09a5a;--score-stop:#c66f73;--shadow:0 18px 55px rgba(0,8,24,.34)}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{--tennis:#c8d96b;margin:0;min-height:100vh;background:radial-gradient(circle at 10% 0,#184f8c 0,transparent 30%),linear-gradient(160deg,var(--bg),#071a31 55%,#050f1d);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}body[data-theme=roland]{--bg:#1d3a30;--bg2:#285044;--card:rgba(42,72,60,.88);--accent:#d7c77b;--blue:#8fbda0;--line:rgba(231,241,235,.14);--text:#f2f5f2;--muted:#aebfb7;--tennis:#c8d96b}button{font:inherit}.topbar{height:68px;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:0 max(16px,calc((100vw - 1240px)/2));background:rgba(4,14,26,.78);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.brand strong{display:block}.brand span{font-size:10px;color:var(--muted)}.top-actions{display:flex;gap:7px;align-items:center}.theme-btn,.auto-pill{border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--muted);border-radius:999px;padding:7px 10px;font-size:11px}.theme-btn{cursor:pointer}.theme-btn.active{color:#081522;background:var(--accent)}.shell{max-width:1240px;margin:auto;padding:24px 18px 70px}.card{background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card));border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.hero{padding:36px;display:grid;grid-template-columns:1.35fr .65fr;gap:30px;align-items:center}.eyebrow,.kicker{font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);margin-right:7px}.hero h1{font-size:clamp(38px,5vw,64px);line-height:1.04;letter-spacing:-.045em;margin:16px 0 12px}.provider-summary{font-size:16px;color:#b7c7d3;max-width:760px;line-height:1.65}.hero-meta{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:11px}.hero-actions{margin-top:22px}.primary{border:0;border-radius:13px;background:var(--accent);color:#07131f;padding:11px 16px;font-weight:750;cursor:pointer}.score-panel{text-align:center;justify-self:center}.score-ring{--score:0;--ring-color:var(--score-good);width:178px;height:178px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ring-color) calc(var(--score)*1.0526%),rgba(255,255,255,.07) 0);position:relative}.score-panel.suitable .score-ring{--ring-color:var(--score-good)}.score-panel.caution .score-ring{--ring-color:var(--score-mid)}.score-panel.stop .score-ring{--ring-color:var(--score-stop)}.score-ring:before{content:"";position:absolute;inset:10px;border-radius:50%;background:var(--bg2)}.score-ring div{z-index:1}.score-ring b{font-size:62px}.score-ring small{display:block;color:var(--muted)}.score-panel>strong,.score-panel>span{display:block;margin-top:10px}.score-panel>span{font-size:11px;color:var(--muted)}.current-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:12px 0}.metric{padding:18px}.metric span,.metric small{display:block;color:var(--muted);font-size:11px}.metric strong{display:block;font-size:22px;margin:8px 0 4px}.two-col{display:grid;grid-template-columns:1.25fr .75fr;gap:12px;margin-top:12px}.minute-card,.status-card,.hourly-card,.detail-card{padding:24px}.section-head,.section-title{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.section-head h2,.section-title h2{margin:4px 0 0;font-size:20px}.badge{border:1px solid var(--line);border-radius:999px;padding:6px 9px;color:var(--muted);font-size:10px}.badge.success{color:#cfff79}.badge.caution{color:var(--amber)}.badge.stop{color:var(--red)}.source-text{color:#b3c3cf;line-height:1.6}.rain-bars{height:120px;display:flex;align-items:flex-end;gap:2px;margin:22px 0 8px;padding:8px 4px;border-bottom:1px solid var(--line)}.rain-bars i{flex:1;min-height:3px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--blue),#66d2ed)}.axis{display:flex;justify-content:space-between;color:var(--muted);font-size:9px}.note,.soft{color:var(--muted);font-size:10px;line-height:1.5}.risk-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.risk{padding:13px;border-radius:14px;background:rgba(255,255,255,.035);border:1px solid transparent}.risk span{display:block;color:var(--muted);font-size:10px}.risk strong{display:block;margin-top:5px;font-size:12px}.risk.caution{border-color:color-mix(in srgb,var(--score-mid) 28%,transparent)}.risk.stop{border-color:color-mix(in srgb,var(--score-stop) 30%,transparent)}.hourly-card{margin-top:12px}.hourly-strip{display:grid;grid-auto-flow:column;grid-auto-columns:92px;gap:8px;overflow-x:auto;padding:18px 0 6px;scroll-snap-type:x proximity}.hour{scroll-snap-align:start;padding:11px 9px;border-radius:14px;background:rgba(255,255,255,.03);border:1px solid var(--line);display:grid;gap:6px}.hour>span,.hour small,.hour em{font-size:10px;color:var(--muted);font-style:normal}.hour b{font-size:20px}.hour strong{font-size:23px}.hour.suitable{border-color:color-mix(in srgb,var(--score-good) 30%,transparent)}.hour.suitable strong{color:var(--score-good)}.hour.caution{border-color:color-mix(in srgb,var(--score-mid) 30%,transparent)}.hour.caution strong{color:var(--score-mid)}.hour.stop{opacity:.72;border-color:color-mix(in srgb,var(--score-stop) 28%,transparent)}.hour.stop strong{color:var(--score-stop)}.week-section{margin-top:30px}.week-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-top:12px}.day{padding:17px;min-width:0}.day.featured{background:linear-gradient(155deg,color-mix(in srgb,var(--card) 82%,var(--blue) 18%),var(--card))}.day-head{display:flex;justify-content:space-between;gap:8px}.day-head span,.day-head small{display:block}.day-head span{font-size:11px}.day-head small{font-size:9px;color:var(--muted);margin-top:3px}.day-head b{font-size:30px}.day h3{font-size:14px;margin:18px 0 5px}.day p{font-size:10px;color:var(--muted);min-height:28px}.meter{height:5px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}.meter i{display:block;height:100%;background:var(--score-good)}.day.caution .meter i{background:var(--score-mid)}.day.stop .meter i{background:var(--score-stop)}.tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px}.tags span{font-size:9px;color:var(--muted);background:rgba(255,255,255,.035);padding:5px 6px;border-radius:999px}.bottom{margin-top:18px}.detail-card dl{margin:16px 0 0}.detail-card dl div{padding:12px 0;border-top:1px solid var(--line)}dt{font-size:10px;color:var(--muted)}dd{margin:5px 0 0;line-height:1.55}.life-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0}.life-grid div{padding:14px;border-radius:14px;background:rgba(255,255,255,.035)}.life-grid span{display:block;font-size:9px;color:var(--muted)}.life-grid strong{display:block;margin-top:5px;font-size:12px}.empty{color:var(--muted)}footer{text-align:center;padding:30px 18px 60px;color:#607a8d;font-size:10px}
@media(max-width:980px){.week-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:760px){.topbar{padding:0 12px}.auto-pill{display:none}.shell{padding:14px 12px 55px}.hero{grid-template-columns:1fr;padding:25px}.score-panel{justify-self:start;display:grid;grid-template-columns:auto 1fr;column-gap:14px;text-align:left;align-items:center}.score-ring{grid-row:1/4;width:112px;height:112px}.score-ring b{font-size:42px}.current-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}.week-grid{grid-template-columns:1fr 1fr}.minute-card,.status-card,.hourly-card,.detail-card{padding:19px}}
@media(max-width:420px){.hero h1{font-size:37px}.current-grid{gap:8px}.metric{padding:14px}.metric strong{font-size:18px}.day{padding:14px}}

.rain-bars.all-zero{position:relative}.rain-bars.all-zero:after{content:"分钟级降水曲线为 0";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:10px;color:var(--muted);white-space:nowrap}
@media(max-width:760px){.hourly-strip{grid-auto-columns:84px}.hour{padding:9px 6px}.hour>span,.hour small,.hour em{font-size:8px}.hour strong{font-size:18px}.hour b{font-size:20px}}

.today-note{margin:10px 0 0;color:var(--muted);font-size:10px;line-height:1.5}
@media(max-width:760px){.hero h1{font-size:clamp(24px,6.4vw,30px);line-height:1.08;letter-spacing:-.035em;white-space:nowrap}}
@media(max-width:360px){.hero h1{font-size:22px}}

.minute-only{grid-template-columns:1fr}.minute-only .minute-card{width:100%}
@media(max-width:980px){.current-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.current-grid{grid-template-columns:1fr 1fr}}

.share-btn{width:32px;height:32px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);border-radius:50%;display:grid;place-items:center;padding:0;font-size:17px;line-height:1;cursor:pointer}.share-btn:active{transform:scale(.96)}.share-btn[disabled]{opacity:.45;cursor:default}

.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{width:22px;height:22px;border-radius:50%;flex:0 0 auto;background:radial-gradient(circle at 35% 35%,#dfe79a 0,#c6d46f 56%,#96a34f 100%);box-shadow:0 0 0 1px rgba(255,255,255,.08) inset,0 0 14px rgba(200,217,107,.08);position:relative}.brand-mark:before,.brand-mark:after{content:"";position:absolute;inset:4px;border:1px solid rgba(255,255,255,.28);border-top-color:transparent;border-bottom-color:transparent;border-radius:50%}.brand-copy{min-width:0}.brand-copy strong{display:block;font-size:17px;font-weight:760;letter-spacing:.015em;line-height:1.05;color:var(--text)}.brand-copy span{display:block;margin-top:3px;font-size:9px;letter-spacing:.08em;color:var(--muted)}
.hero h1,.section-head h2,.section-title h2{color:var(--text)}.score-panel.suitable .score-ring b,.score-panel.suitable #todayLabel{color:var(--score-good)}.score-panel.caution .score-ring b,.score-panel.caution #todayLabel{color:var(--score-mid)}.score-panel.stop .score-ring b,.score-panel.stop #todayLabel{color:var(--score-stop)}.day.suitable .day-head b{color:var(--score-good)}.day.caution .day-head b{color:var(--score-mid)}.day.stop .day-head b{color:var(--score-stop)}.today-note{color:color-mix(in srgb,var(--tennis) 72%,var(--muted) 28%)}.live-dot{background:var(--tennis);box-shadow:0 0 10px color-mix(in srgb,var(--tennis) 45%,transparent)}.theme-btn.active{background:color-mix(in srgb,var(--tennis) 80%,white 20%);color:#0b1712}.badge.success{color:var(--tennis)}
body[data-theme=roland]{background:radial-gradient(circle at 12% 0,rgba(143,189,160,.18) 0,transparent 30%),linear-gradient(160deg,var(--bg),#18342b 56%,#11261f)}body[data-theme=roland] .card{background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card))}body[data-theme=roland] .brand-mark{background:radial-gradient(circle at 35% 35%,#e0dda1 0,#cbbf72 58%,#9b8f4f 100%)}
@media(max-width:420px){.brand{gap:8px}.brand-mark{width:20px;height:20px}.brand-copy strong{font-size:15px}.brand-copy span{font-size:8px}}
body[data-theme=roland] .topbar{background:rgba(24,52,43,.80);border-bottom-color:rgba(231,241,235,.12)}
body[data-theme=roland] .provider-summary,body[data-theme=roland] .source-text{color:#bdcbc4}
body[data-theme=roland] .hour.best{border-color:rgba(200,217,107,.22)}
body[data-theme=roland] .day.featured{background:linear-gradient(155deg,color-mix(in srgb,var(--card) 86%,#7fa98e 14%),var(--card))}

/* Brand refinement: static-only, no animation or runtime paint loop. */
.brand-copy strong{position:relative;display:inline-block;font-weight:780;letter-spacing:.02em;line-height:1.05;background:linear-gradient(90deg,var(--text) 0%,color-mix(in srgb,var(--text) 88%,var(--tennis) 12%) 58%,color-mix(in srgb,var(--text) 76%,var(--tennis) 24%) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 1px 8px rgba(200,217,107,.06)}
.brand-copy strong:after{content:none}
.brand-copy span{display:block!important;opacity:.68}
.brand-mark{display:block!important}
@media(max-width:420px){.brand-copy strong{font-size:15px}.brand-copy span{display:block!important;font-size:7.5px;letter-spacing:.055em;margin-top:5px}.brand-mark{display:block!important;width:19px;height:19px}.top-actions{gap:5px}.theme-btn{padding:6px 8px;font-size:10px}.share-btn{width:29px;height:29px;font-size:15px}}

.hourly-wrap{position:relative}.hour-nav{position:absolute;top:50%;z-index:5;width:22px;height:42px;transform:translateY(-50%);border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--bg2) 84%,transparent);color:var(--tennis);font-size:26px;line-height:1;display:grid;place-items:center;padding:0;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.18);backdrop-filter:blur(5px);transition:opacity .18s ease,transform .18s ease}.hour-nav.left{left:-26px}.hour-nav.right{right:-26px}.hour-nav:active{transform:translateY(-50%) scale(.94)}.hour-nav.is-end{opacity:.18;pointer-events:none}.hourly-strip{padding-left:0;padding-right:0}.hour-nav:not(.is-end){opacity:.9}
@media(max-width:760px){.hour-nav{width:28px;height:40px;font-size:24px}.hourly-strip{padding-left:0;padding-right:0}}

@media(max-width:760px){.hour-nav.left{left:-20px}.hour-nav.right{right:-20px}.hour-nav{width:20px;height:36px;font-size:21px;border-radius:10px}}

/* Brand lockup v18: equal visual width + tennis seam mark, static only. */
.brand{gap:9px}
.brand-mark{width:24px;height:24px;border-radius:50%;position:relative;flex:0 0 24px;background:radial-gradient(circle at 34% 30%,#e6ed9a 0 18%,#cfda70 42%,#a8b454 76%,#7f8b3e 100%);box-shadow:inset -2px -3px 5px rgba(0,0,0,.18),inset 1px 1px 2px rgba(255,255,255,.20),0 0 0 1px rgba(255,255,255,.08)}
.brand-mark:before,.brand-mark:after{content:"";position:absolute;background:transparent;border:1.35px solid rgba(246,248,220,.78);border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;width:16px;height:23px;top:.5px}
.brand-mark:before{left:-3px;transform:rotate(-18deg)}
.brand-mark:after{right:-3px;transform:rotate(18deg)}
.brand-copy{width:116px;display:grid;grid-template-rows:auto auto;row-gap:3px;line-height:1}
.brand-copy strong{display:block!important;width:116px;font-size:17px;font-weight:780;line-height:1.02;letter-spacing:.045em;white-space:nowrap;color:var(--text);background:none!important;-webkit-background-clip:initial!important;-webkit-text-fill-color:currentColor!important;text-shadow:0 1px 7px rgba(200,217,107,.07)}
.brand-copy span{display:block!important;width:116px;font-size:8.8px;line-height:1;letter-spacing:.13em;white-space:nowrap;color:color-mix(in srgb,var(--muted) 80%,var(--tennis) 20%);opacity:.82}
@media(max-width:420px){.brand{gap:7px}.brand-mark{width:21px;height:21px;flex-basis:21px}.brand-mark:before,.brand-mark:after{width:14px;height:20px;top:.5px}.brand-copy{width:102px;row-gap:3px}.brand-copy strong{width:102px;font-size:15px;letter-spacing:.035em}.brand-copy span{width:102px;font-size:7.6px;letter-spacing:.105em}}
body[data-theme=roland] .brand-mark{background:radial-gradient(circle at 34% 30%,#e6e3a0 0 18%,#cec576 42%,#aba159 76%,#817844 100%)}

/* Brand lockup v19: simplified after visual review. */
.brand{display:flex;align-items:center;gap:0;min-width:0}
.brand-mark{display:none!important}
.brand-copy{display:flex;flex-direction:column;align-items:flex-start;width:auto!important;min-width:0;row-gap:2px}
.brand-copy strong{display:block!important;width:auto!important;font-size:17px!important;font-weight:760!important;line-height:1.05!important;letter-spacing:.015em!important;white-space:nowrap;color:var(--text)!important;background:none!important;-webkit-background-clip:initial!important;-webkit-text-fill-color:currentColor!important;text-shadow:none!important;position:relative}
.brand-copy strong:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin:0 7px 2px 0;background:var(--tennis);box-shadow:0 0 0 2px color-mix(in srgb,var(--tennis) 12%,transparent)}
.brand-copy strong:after{content:none!important}
.brand-copy span{display:block!important;width:auto!important;margin:2px 0 0 12px!important;font-size:8.5px!important;line-height:1!important;letter-spacing:.08em!important;color:var(--muted)!important;opacity:.72!important;white-space:nowrap}
@media(max-width:420px){.brand{gap:0}.brand-copy strong{font-size:15px!important;letter-spacing:.01em!important}.brand-copy strong:before{width:4px;height:4px;margin-right:6px}.brand-copy span{font-size:7.3px!important;margin-left:10px!important;letter-spacing:.07em!important}}

/* Header compact refinement v20 */
.topbar{height:58px;padding:0 max(14px,calc((100vw - 1240px)/2));}
.brand{gap:0!important;align-items:center;}
.brand-copy strong{font-size:16px!important;font-weight:760!important;letter-spacing:0!important;line-height:1.05!important;text-shadow:none!important;}
.brand-copy strong:before{content:none!important;}
.brand-copy span{font-size:8.6px!important;letter-spacing:.045em!important;opacity:.62!important;margin-top:3px!important;margin-left:0!important;}
.top-actions{gap:6px!important;}
.share-btn{width:30px!important;height:30px!important;font-size:15px!important;}
.theme-btn,.auto-pill{padding:6px 9px!important;font-size:10px!important;}
@media(max-width:420px){
 .topbar{height:56px;padding:0 10px;}
 .brand-copy strong{font-size:14px!important;}
 .brand-copy span{font-size:7.4px!important;letter-spacing:.035em!important;margin-top:2px!important;}
 .top-actions{gap:4px!important;}
 .share-btn{width:28px!important;height:28px!important;font-size:14px!important;}
 .theme-btn{padding:5px 7px!important;font-size:9.5px!important;}
}
