/* V8.61: a single square holds the poster, film and atmosphere from first paint.
   Its size follows width, never the changing height of the forecast text. */
.landing-globe .globe-art,#currentWeather .globe-art{
 inset:0 auto auto 0;width:100%;height:auto;aspect-ratio:1;margin:0;
 animation:none;pointer-events:none;
}
.globe-art .wj-globe-stage{
 --globe-surface:brightness(1.04) saturate(1.03) contrast(1.02);
 position:absolute;top:5%;left:5%;width:90%;aspect-ratio:1;
 border-radius:50%;isolation:isolate;pointer-events:none;
}
html[data-theme=dark] .wj-globe-stage{
 --globe-surface:brightness(1.5) saturate(.95) contrast(.96);
}
/* A feathered outer atmosphere; no orbit line crossing the weather information. */
.globe-art .wj-globe-stage:before{
 content:"";position:absolute;inset:-8%;border-radius:50%;z-index:0;
 background:radial-gradient(circle closest-side,transparent 80%,#6acbff18 86%,#75ceff24 89%,#3e9bed0c 94%,transparent 100%);
 opacity:.8;
}
.globe-art .wj-globe-stage:after{
 content:"";position:absolute;inset:.5%;border-radius:50%;z-index:3;
 background:radial-gradient(ellipse at 30% 12%,#fff4d924,transparent 48%),

  radial-gradient(circle closest-side,transparent 84%,#60bdff10 93%,#7fdcff48 98%,#e1f8ff96 100%);
 box-shadow:inset 0 0 4px 1px #def6ff70,0 0 5px 1px #aee5ff64,0 0 22px 2px #469fdd36;
}
html[data-theme=dark] .globe-art .wj-globe-stage:after{
 background:radial-gradient(ellipse at 65% 14%,#bfe7ff1a,transparent 47%),

  radial-gradient(circle closest-side,transparent 82%,#398fef10 91%,#56bdff2b 96%,#9cdeff70 99%,#d1efff80 100%);
 box-shadow:inset 0 0 5px 1px #c0edff60,0 0 6px 1px #92dcff50,0 0 26px 3px #439cdf38;
}
/* Identical crops and colour treatment for the still and moving Earth. Keeping
   the poster underneath the fade avoids a transparent flash during handover. */
.globe-art .wj-globe-stage>img,
.globe-art .wj-globe-film{
 position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;
 border-radius:50%;clip-path:circle(49.5% at 50% 50%);
 filter:var(--globe-surface);transform:none;transition:none;
}
.globe-art .wj-globe-stage>img{z-index:1}
.globe-art .wj-globe-disc{
 position:absolute;inset:0;width:100%;height:100%;border-radius:50%;z-index:2;
 pointer-events:none;opacity:0;transition:none;
}
.globe-art .wj-globe-disc.is-ready{opacity:1;transition:opacity .4s ease}
/* The previous full-disc darkening hid both cloud detail and the blue ocean. */
.landing-globe:after{display:none}
@media(prefers-reduced-motion:reduce){.globe-art .wj-globe-disc.is-ready{transition:none}}


/* A square wrapper makes the circular hit area follow width, including on phones
   where the weather copy extends below the disc. Vertical scrolling and pinch zoom stay native; horizontal gestures rotate the sphere. */
.wj-globe-touch{position:absolute;top:0;left:0;width:100%;aspect-ratio:1;z-index:1;pointer-events:none}
.wj-globe-touch>.wj-globe-spin{
 appearance:none;position:absolute;top:5%;left:5%;width:90%;height:auto;aspect-ratio:1;
 display:block;min-width:0;min-height:0;margin:0;padding:0;border:0;border-radius:50%;
 clip-path:circle(49.5% at 50% 50%);background:transparent;box-shadow:none;
 pointer-events:auto;touch-action:pan-y pinch-zoom;cursor:grab;
 -webkit-tap-highlight-color:transparent;
}
.wj-globe-touch>.wj-globe-spin:active{cursor:grabbing}
.wj-globe-touch>.wj-globe-spin:focus-visible{outline:none;box-shadow:inset 0 0 0 4px #eefaff,inset 0 0 0 7px #174968}
.wj-globe-touch>.wj-globe-spin:disabled{cursor:default;pointer-events:none}

/* V8.57: text never participates in dragging/selection of the decorative Earth. */
.weather-orb,.landing-globe{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.wj-globe-spin,.wj-globe-spin:active{transform:none;transition:none}
.wj-globe-spin[data-held=true],.wj-globe-spin[data-dragging=true]{cursor:grabbing}

/* V8.61: one weather composition; contrast belongs to the labels, not the Earth. */
html[data-theme] #currentWeather .weather-orb{
 width:min(590px,100%);max-width:590px;min-height:0;height:auto;aspect-ratio:1;
 container-type:inline-size;
}
@media(min-width:1024px){html[data-theme] #currentWeather .weather-orb{width:min(760px,100%);max-width:760px}}
@media(min-width:1800px){html[data-theme] #currentWeather .weather-orb{width:min(840px,100%);max-width:840px}}
html[data-theme] #currentWeather .orb-copy{
 position:absolute;inset:5%;width:90%;height:90%;max-width:none;margin:0;padding:0;
 display:flex;align-items:center;justify-content:center;gap:0;
 color:#fff!important;text-align:center;line-height:1.3;z-index:2;
 text-shadow:0 1px 2px #021525,0 0 4px #021525,0 0 8px #021525b8;pointer-events:none;
}
#currentWeather .orb-copy :is(button,a){pointer-events:auto}
#currentWeather .orb-copy :is(span,b,small,svg){pointer-events:none}
#currentWeather .orb-copy :is(#placeTitle,#placeSubtitle,.summary-degree,.orb-condition,.solar-event>strong){-webkit-text-stroke:0}
#currentWeather .orb-main{width:72%;display:flex;flex-direction:column;align-items:center;gap:clamp(10px,2cqw,17px);min-width:0}
html[data-theme] #currentWeather .orb-copy .orb-heading{
 width:100%;max-width:100%;margin:0;padding:8px 8px;position:relative;isolation:isolate;
 background:none;border:0;border-radius:0;box-shadow:none;
}
html[data-theme] #currentWeather .orb-copy h1{
 font:500 clamp(24px,5.4cqw,44px)/1.12 Georgia,serif;letter-spacing:-.035em;
 margin:0 0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
html[data-theme] #currentWeather .orb-copy #placeSubtitle{
 font-size:clamp(11px,1.9cqw,15px);font-weight:500;color:#eef6ff;
 line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
html[data-theme] #currentWeather .orb-copy .orb-now{
 width:72%;min-width:0;margin:0;padding:6px 0 9px;position:relative;isolation:isolate;
 background:none;border:0;border-radius:0;box-shadow:none;
}
/* Feathered scrims move with the text, leaving the continents around it bright. */
#currentWeather .orb-copy :is(.orb-heading,.orb-now):before{
 content:none;
}
.orb-temperature-heading{display:flex;align-items:center;justify-content:center;gap:3px;min-height:32px}
#currentWeather .orb-copy .orb-temperature-heading .eyebrow{
 color:#eef6ff!important;font-size:clamp(9px,1.55cqw,12px);font-weight:600;letter-spacing:.1em;white-space:nowrap;
}
html[data-theme] #currentWeather .orb-copy .summary-degree strong{
 font-size:clamp(60px,17cqw,124px);font-weight:400;line-height:1;letter-spacing:-.06em;
 font-variant-numeric:tabular-nums;
}
html[data-theme] #currentWeather .orb-copy .orb-condition{
 display:flex;justify-content:center;align-items:center;gap:6px;margin-top:7px;
 font-size:clamp(12px,2.4cqw,19px);font-weight:500;line-height:1.25;
}
#currentWeather .orb-copy .orb-condition .wx{display:block;width:clamp(26px,4.2cqw,35px);height:clamp(26px,4.2cqw,35px);flex-shrink:0;margin:0}
html[data-theme] #currentWeather .orb-copy .orb-facts{
 width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;
 margin:0;padding:12px 6px;border:0;border-radius:0;
 background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;text-shadow:inherit;
}
html[data-theme] #currentWeather .orb-copy .orb-facts>span{
 min-width:0;padding:0 6px;border:0;display:flex;align-items:center;flex-direction:column;justify-content:flex-start;
 color:#f4faff;font-size:12px;line-height:1.3;
}
html[data-theme] #currentWeather .orb-copy .orb-facts>span+span{border-left:1px solid #d9eeff26}
html[data-theme] #currentWeather .orb-copy .orb-facts :is(span,b,small,button){color:#f4faff!important;text-shadow:inherit}
#currentWeather .orb-copy .orb-facts .orb-fact-label{display:flex;align-items:center;justify-content:center;gap:5px;font-size:clamp(10px,1.65cqw,13px);font-weight:500;white-space:nowrap}
#currentWeather .orb-fact-label svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;opacity:.9}
html[data-theme] #currentWeather .orb-copy .orb-facts b{display:block;font-size:clamp(15px,2.8cqw,23px);font-weight:600;line-height:1.3;margin-top:7px;white-space:nowrap}
html[data-theme] #currentWeather .orb-copy .orb-facts small{font-size:clamp(10px,1.4cqw,11px);font-weight:400;margin-top:2px;line-height:1.2;color:#dcebf7!important}
#currentWeather .orb-copy #windOpen{min-height:44px;padding:0;background:transparent;border:0;gap:0;text-decoration:none;border-radius:8px}
#currentWeather .orb-copy #windOpen>span{text-decoration:none}
#currentWeather .orb-copy #windOpen:hover{background:#a9e3ff12}
html[data-theme] #currentWeather .orb-copy .solar-event{
 position:absolute;grid-area:auto;inset:50% auto auto;align-self:auto;justify-self:auto;transform:translateY(-50%);width:16%;margin:0;padding:7px 0;
 display:flex;flex-direction:column;gap:3px;border:0;border-radius:0;background:none;
 color:#edf6ff;text-shadow:inherit;isolation:isolate;
}
#currentWeather .orb-copy .solar-event:before{content:none}
html[data-theme] #currentWeather .orb-copy .sunrise{left:1%}
html[data-theme] #currentWeather .orb-copy .sunset{right:1%}
html[data-theme] #currentWeather .orb-copy .solar-event>svg{width:24px;height:24px;margin:0;stroke:#e5d4ac;filter:none}
html[data-theme] #currentWeather .orb-copy .solar-event>span{font-size:clamp(8px,1.45cqw,11px);font-weight:500;letter-spacing:0;line-height:1.25;color:#e4eef7}
html[data-theme] #currentWeather .orb-copy .solar-event>strong{font:500 clamp(16px,2.8cqw,22px)/1.2 ui-sans-serif,system-ui,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:#fff;margin:0}
/* Server-rendered place names stay visible while forecast data arrives. */
html[data-page-state=identity] #currentWeather .orb-copy>.orb-main{visibility:visible}
html[data-page-state=identity] #currentWeather .orb-main>:not(.orb-heading){visibility:hidden}
@media(max-width:760px){
 #currentWeather .orb-main{width:70%;gap:5px;transform:translateY(-1.5cqw)}
 html[data-theme] #currentWeather .orb-copy .orb-heading{padding:0}
 html[data-theme] #currentWeather .orb-copy h1{font-size:clamp(23px,6.3cqw,34px);margin-bottom:3px}
 html[data-theme] #currentWeather .orb-copy #placeSubtitle{font-size:clamp(10px,2.75cqw,14px)}
 html[data-theme] #currentWeather .orb-copy .orb-now{width:75%;padding:0}
 #currentWeather .orb-temperature-heading{min-height:24px;gap:0;padding:0}
 #currentWeather .orb-copy .orb-temperature-heading .eyebrow{font-size:clamp(8px,2.1cqw,11px);letter-spacing:.06em}
 html[data-theme] #currentWeather .orb-copy .summary-degree strong{font-size:clamp(53px,16cqw,80px)}
 html[data-theme] #currentWeather .orb-copy .orb-condition{font-size:clamp(12px,3.3cqw,16px);margin-top:3px;gap:4px}
 #currentWeather .orb-copy .orb-condition .wx{width:23px;height:23px}
 html[data-theme] #currentWeather .orb-copy .orb-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 0;padding:8px 5px;border-radius:0}
 html[data-theme] #currentWeather .orb-copy .orb-facts>span{padding:0 4px}
 html[data-theme] #currentWeather .orb-copy .orb-facts>span:nth-child(3){border-left:0}
 #currentWeather .orb-copy .orb-facts .orb-fact-label{font-size:clamp(9px,2.6cqw,12px);gap:3px}
 #currentWeather .orb-fact-label svg{width:15px;height:15px}
 html[data-theme] #currentWeather .orb-copy .orb-facts b{font-size:clamp(14px,4cqw,20px);margin-top:2px}
 html[data-theme] #currentWeather .orb-copy .orb-facts small{font-size:9px;line-height:1.15}
 #currentWeather .orb-copy #windDirection{display:none}
 html[data-theme] #currentWeather .orb-copy .solar-event{width:19%;gap:2px}
 html[data-theme] #currentWeather .orb-copy .sunrise{left:1%}
 html[data-theme] #currentWeather .orb-copy .sunset{right:1%}
 html[data-theme] #currentWeather .orb-copy .solar-event>svg{width:21px;height:21px}
}
@media(max-width:350px){
 #currentWeather .orb-main{gap:2px;width:72%}
 html[data-theme] #currentWeather .orb-copy h1{font-size:21px}
 html[data-theme] #currentWeather .orb-copy #placeSubtitle{display:none}
 html[data-theme] #currentWeather .orb-copy .orb-facts{padding-block:6px;gap:5px 0}
 html[data-theme] #currentWeather .orb-copy .summary-degree strong{font-size:53px}
}

/* V8.67: transparent energy layers stay inside the artwork stacking context,
   below text and controls. Only opacity and transform animate, never blur. */
.globe-art .wj-globe-sphere{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:50%;pointer-events:none}
.globe-art :is(.wj-globe-glow,.wj-globe-heat,.wj-globe-fire){position:absolute;inset:-6%;z-index:4;border-radius:50%;pointer-events:none;opacity:0;will-change:opacity}
.globe-art .wj-globe-glow{background:radial-gradient(circle closest-side,#d5f4ff50 0%,#b0e8ff30 75%,#a5e9ff80 88%,#d9f8ffc0 89%,#53beff40 95%,transparent 100%)}
.globe-art .wj-globe-heat{inset:-7%;z-index:5;background:radial-gradient(circle closest-side,#ffb75b18 0%,#ffac4e28 74%,#ffcd8050 83%,#ffe1aacc 87%,#ff9b4380 90%,#ff612330 96%,transparent 100%)}
.globe-art .wj-globe-fire{inset:-10%;z-index:6;background:radial-gradient(circle closest-side,#ffb14c18 0%,#ffa43d1a 72%,#ffb83d40 80%,#ffe9a9b0 83%,#ff812840 91%,transparent 100%)}
.wj-globe-fire:before,.wj-globe-fire:after{content:"";position:absolute;inset:0;border-radius:50%;
 background:var(--globe-fire-image,none) center/130% 130% no-repeat;
 mask:radial-gradient(circle closest-side,transparent 78%,#000 84%,#0008 88%,transparent 98%);
 -webkit-mask:radial-gradient(circle closest-side,transparent 78%,#000 84%,#0008 88%,transparent 98%);
 animation:wj-fire-drift 7s linear infinite;animation-play-state:paused;
}
.wj-globe-fire:after{inset:1.5%;opacity:.45;animation-direction:reverse;animation-duration:11s}
.wj-globe-stage[data-burning=true] .wj-globe-fire:before,.wj-globe-stage[data-burning=true] .wj-globe-fire:after{animation-play-state:running}
@keyframes wj-fire-drift{from{transform:rotate(0deg) scale(.99)}50%{transform:rotate(180deg) scale(1.025)}to{transform:rotate(360deg) scale(.99)}}
@media(prefers-reduced-motion:reduce){.wj-globe-glow,.wj-globe-heat,.wj-globe-fire{display:none}}

/* V8.66: shadows follow the letters, rather than a rectangular line box.
   The degree sign has a taller box than the numeral and needs no oval scrim. */
#currentWeather .orb-copy :is(#placeTitle,#placeSubtitle,.orb-temperature-heading,.summary-degree,.orb-condition,.orb-fact-label,.orb-facts b,#windDirection,.solar-event>span,.solar-event>strong){
 position:relative;width:fit-content;max-width:100%;margin-inline:auto;
}
html[data-theme] #currentWeather .orb-copy .summary-degree strong{
 text-shadow:0 2px 3px #021525e6,0 0 7px #021525bf,0 0 14px #02152580;
}
/* A normal-flow action below the globe cannot be covered by its drag surface. */
#currentWeather>.orb-info-action{position:relative;z-index:2;display:flex;justify-content:center;margin:0 auto 14px;padding:0 8px}
#currentWeather>.orb-info-action>.section-info{min-height:44px;background:var(--panel);box-shadow:0 3px 16px #102d4210;pointer-events:auto;touch-action:manipulation}
html[data-page-state=identity] #currentWeather>.orb-info-action{visibility:hidden}

/* V8.102: the small poster is visible while the animated globe loads.
   It also remains available without JavaScript or WebGL. */
.landing-globe .globe-art,#currentWeather .globe-art{opacity:1;transition:opacity .65s ease}
/* Show the lightweight poster immediately, then crossfade to the first real frame. */
.globe-art .wj-globe-stage>img{transition:opacity .4s ease}
.globe-art .wj-globe-stage.wj-globe-ready>img{opacity:0!important}
@media(prefers-reduced-motion:reduce){.globe-art .wj-globe-stage>img{transition:none}}
@media(prefers-reduced-motion:reduce){.landing-globe .globe-art,#currentWeather .globe-art{transition:none}}

/* V8.78: the renderer, stills and film share the same finished color grade.
   Extra CSS brightening would wash out the night sea and double the rim. */
html[data-theme] .wj-globe-stage{--globe-surface:none}
html[data-theme] .wj-globe-stage:after{content:none}
.globe-art .wj-globe-film{
 mask-image:radial-gradient(circle closest-side,#000 93.9%,#000 94.7%,transparent 96.8%);
 -webkit-mask-image:radial-gradient(circle closest-side,#000 93.9%,#000 94.7%,transparent 96.8%);
}

/* V8.80: a quiet depth shadow follows the sphere, below every text layer. */
.globe-art .wj-globe-disc:before{content:"";position:absolute;inset:3%;border-radius:50%;z-index:-1;box-shadow:0 24px 42px -20px #0613266b;pointer-events:none}
html[data-theme=light] .globe-art .wj-globe-disc:before{box-shadow:0 24px 42px -20px #142e4e5c}

/* V8.82: a compact reading hierarchy. Shadows follow glyphs, with no panel
   or oval scrim covering the Earth. The camera stays fixed during hover. */
html[data-theme] #currentWeather .orb-copy{
 font-family:"Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;
 text-shadow:0 1px 2px #021322,0 2px 6px #021322e6,0 0 2px #021322;
}
#currentWeather .orb-main{width:78%;gap:clamp(12px,2.6cqw,22px);transform:translateY(-1cqw)}
html[data-theme] #currentWeather .orb-copy .orb-heading{padding:0}
html[data-theme] #currentWeather .orb-copy h1{
 font:600 clamp(24px,4.5cqw,36px)/1.15 "Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;
 letter-spacing:-.025em;margin:0 auto 5px;
}
html[data-theme] #currentWeather .orb-copy #placeSubtitle{
 font-size:clamp(11px,1.8cqw,14px);font-weight:400;color:#e4eff7;
}
html[data-theme] #currentWeather .orb-copy .orb-now{
 width:100%;padding:0;display:flex;align-items:center;flex-direction:column;
}
#currentWeather .orb-temperature-heading{min-height:0;margin-bottom:4px;order:0}
#currentWeather .orb-copy .orb-temperature-heading .eyebrow{
 font-size:clamp(9px,1.45cqw,11px);font-weight:600;letter-spacing:.12em;color:#e2eff8!important;
}
html[data-theme] #currentWeather .orb-copy .summary-degree{order:1;line-height:1}
html[data-theme] #currentWeather .orb-copy .summary-degree strong{
 display:block;font:600 clamp(68px,16.5cqw,126px)/1 "Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;
 letter-spacing:-.07em;font-variant-numeric:lining-nums tabular-nums;
 text-shadow:0 2px 4px #021322e6,0 0 3px #021322,0 4px 12px #02132299;
}
html[data-theme] #currentWeather .orb-copy .orb-condition{
 order:2;font-size:clamp(14px,2.6cqw,20px);font-weight:600;gap:7px;margin:7px auto 0;
}
#currentWeather .orb-copy .orb-condition .wx{width:clamp(24px,4cqw,30px);height:clamp(24px,4cqw,30px)}
html[data-theme] #currentWeather .orb-copy .orb-feels{
 order:3;font-size:clamp(12px,2cqw,15px);font-weight:400;line-height:1.4;margin:4px auto 0;color:#e6f0f8;text-shadow:inherit;
}
#currentWeather .orb-copy .orb-feels strong{font-weight:650;font-size:1em;margin-left:3px;color:#fff}
html[data-theme] #currentWeather .orb-copy .orb-facts{
 grid-template-columns:repeat(4,minmax(0,1fr));padding:0;gap:0;
}
html[data-theme] #currentWeather .orb-copy .orb-facts>span{padding:0 7px}
html[data-theme] #currentWeather .orb-copy .orb-facts>span+span{border-left:1px solid #e3f1ff33}
#currentWeather .orb-copy .orb-facts .orb-fact-label{font-size:clamp(10px,1.65cqw,13px);font-weight:500;gap:4px}
html[data-theme] #currentWeather .orb-copy .orb-facts b{
 font-size:clamp(15px,2.9cqw,22px);font-weight:650;letter-spacing:-.025em;margin-top:6px;
}
html[data-theme] #currentWeather .orb-copy .orb-facts small{font-size:clamp(9px,1.4cqw,11px);margin-top:4px}
html[data-theme] #currentWeather .orb-copy .solar-event{top:48%;width:16%;opacity:.92}
html[data-theme] #currentWeather .orb-copy .solar-event>span{font-size:clamp(8px,1.35cqw,10px);font-weight:500;letter-spacing:0;text-transform:none}
html[data-theme] #currentWeather .orb-copy .solar-event>strong{font-size:clamp(15px,2.5cqw,19px);font-weight:600}
@media(max-width:760px){
 #currentWeather .orb-main{width:80%;gap:clamp(9px,2.5cqw,15px);transform:translateY(-1cqw)}
 html[data-theme] #currentWeather .orb-copy h1{font-size:clamp(21px,5.8cqw,30px);margin-bottom:3px}
 html[data-theme] #currentWeather .orb-copy #placeSubtitle{font-size:clamp(10px,2.7cqw,13px)}
 #currentWeather .orb-temperature-heading{margin-bottom:2px}
 #currentWeather .orb-copy .orb-temperature-heading .eyebrow{font-size:clamp(8px,2cqw,10px);letter-spacing:.09em}
 html[data-theme] #currentWeather .orb-copy .summary-degree strong{font-size:clamp(60px,18cqw,98px)}
 html[data-theme] #currentWeather .orb-copy .orb-condition{font-size:clamp(13px,3.6cqw,18px);margin-top:3px;gap:5px;max-width:75%}
 #currentWeather .orb-copy .orb-condition .wx{width:24px;height:24px}
 html[data-theme] #currentWeather .orb-copy .orb-feels{font-size:clamp(11px,3.1cqw,14px);margin-top:2px}
 html[data-theme] #currentWeather .orb-copy .orb-facts>span{padding:0 3px}
 #currentWeather .orb-copy .orb-facts .orb-fact-label{flex-direction:column;gap:3px;font-size:clamp(9px,2.7cqw,11px);line-height:1.2;white-space:normal}
 #currentWeather .orb-fact-label svg{width:16px;height:16px}
 html[data-theme] #currentWeather .orb-copy .orb-facts b{font-size:clamp(14px,3.8cqw,18px);margin-top:auto;padding-top:4px;letter-spacing:-.04em}
 #currentWeather .orb-copy #windOpen{height:100%;display:flex;flex-direction:column;align-items:center}
 html[data-theme] #currentWeather .orb-copy .orb-facts small{display:none}
 html[data-theme] #currentWeather .orb-copy .solar-event{top:46%;width:18%;gap:2px}
 html[data-theme] #currentWeather .orb-copy .solar-event>svg{width:20px;height:20px}
 html[data-theme] #currentWeather .orb-copy .solar-event>span{font-size:clamp(8px,2.2cqw,10px);letter-spacing:0}
 html[data-theme] #currentWeather .orb-copy .solar-event>strong{font-size:clamp(14px,3.8cqw,18px)}
}
@media(max-width:350px){
 /* Leave room for mm/h between rain chance and wind on narrow phones. */
 html[data-theme] #currentWeather .orb-copy .orb-facts{grid-template-columns:1fr 1.35fr 1fr .65fr}
 #currentWeather .orb-main{gap:8px}
 html[data-theme] #currentWeather .orb-copy #placeSubtitle{display:block}
 html[data-theme] #currentWeather .orb-copy h1{font-size:19px}
 html[data-theme] #currentWeather .orb-copy .summary-degree strong{font-size:54px}
}

/* V8.83: small, soft black backings sit immediately behind the text. They
   never darken the whole globe, catch gestures or change the layout. */
html[data-theme] #currentWeather .orb-copy{--orb-text-shade:#0008}
html[data-theme=light] #currentWeather .orb-copy{--orb-text-shade:#000a}
html[data-theme] #currentWeather .orb-copy :is(#placeTitle,#placeSubtitle,.orb-temperature-heading,.summary-degree strong,.orb-feels,.orb-condition,.orb-fact-label,.orb-facts b,#windDirection,.solar-event>span,.solar-event>strong){
 position:relative;isolation:isolate;width:fit-content;max-width:100%;margin-inline:auto;
}
html[data-theme] #currentWeather .orb-copy :is(#placeTitle,#placeSubtitle,.orb-temperature-heading,.summary-degree strong,.orb-feels,.orb-condition,.orb-fact-label,.orb-facts b,#windDirection,.solar-event>span,.solar-event>strong)::before{
 content:"";position:absolute;inset:-3px -6px;z-index:-1;pointer-events:none;
 border-radius:50%;background:radial-gradient(ellipse,var(--orb-text-shade) 15%,#0005 48%,transparent 76%);filter:blur(2px);
}
html[data-theme] #currentWeather .orb-copy .summary-degree strong::before{inset:12% -4% -2%;filter:blur(4px)}

/* V8.84: larger supporting type and solar times beside the globe on desktop.
   The central temperature and the phone composition keep their scale. */
@media(min-width:761px){
 html[data-theme] #currentWeather .weather-orb{width:min(590px,calc(100% - 216px));overflow:visible}
 html[data-theme] #currentWeather .orb-copy h1{font-size:clamp(30px,5.6cqw,42px)}
 html[data-theme] #currentWeather .orb-copy #placeSubtitle{font-size:clamp(14px,2.3cqw,17px)}
 #currentWeather .orb-copy .orb-temperature-heading .eyebrow{font-size:clamp(11px,1.8cqw,13px);letter-spacing:.1em}
 html[data-theme] #currentWeather .orb-copy .orb-condition{font-size:clamp(18px,3.2cqw,24px)}
 #currentWeather .orb-copy .orb-condition .wx{width:34px;height:34px}
 html[data-theme] #currentWeather .orb-copy .orb-feels{font-size:clamp(15px,2.6cqw,19px)}
 #currentWeather .orb-copy .orb-facts .orb-fact-label{font-size:clamp(12px,2.1cqw,15px);white-space:normal;line-height:1.25}
 html[data-theme] #currentWeather .orb-copy .orb-facts b{font-size:clamp(20px,3.5cqw,26px)}
 html[data-theme] #currentWeather .orb-copy .orb-facts small{font-size:clamp(12px,1.9cqw,14px)}
 html[data-theme] #currentWeather .orb-copy .solar-event{top:48%;width:110px;opacity:1;gap:5px}
 html[data-theme] #currentWeather .orb-copy .sunrise{left:-126px;right:auto}
 html[data-theme] #currentWeather .orb-copy .sunset{right:-126px;left:auto}
 html[data-theme] #currentWeather .orb-copy .solar-event>span{font-size:14px}
 html[data-theme] #currentWeather .orb-copy .solar-event>strong{font-size:26px}
 html[data-theme] #currentWeather .orb-copy .solar-event>svg{width:30px;height:30px}
}
@media(min-width:1024px){html[data-theme] #currentWeather .weather-orb{width:min(760px,calc(100% - 216px))}}
@media(min-width:1800px){html[data-theme] #currentWeather .weather-orb{width:min(840px,calc(100% - 216px))}}

/* V8.87: solar times sit in the lower outside corners, within the phone. */
@media(max-width:760px){
 html[data-theme] #currentWeather .weather-orb{overflow:visible;margin-bottom:24px}
 html[data-theme] #currentWeather .orb-copy .solar-event{top:98%;width:22%;padding:0;gap:2px;opacity:1;text-shadow:0 1px 3px #061526cc}
 html[data-theme] #currentWeather .orb-copy .sunrise{left:-4%;right:auto}
 html[data-theme] #currentWeather .orb-copy .sunset{right:-4%;left:auto}
 html[data-theme] #currentWeather .orb-copy .solar-event>svg{width:25px;height:25px;stroke:#ffdc94;filter:drop-shadow(0 1px 2px #06152688)}
 html[data-theme] #currentWeather .orb-copy .solar-event>span{font-size:10px;font-weight:600;line-height:1.3}
 html[data-theme] #currentWeather .orb-copy .solar-event>strong{font-size:20px;font-weight:650}
 html[data-theme=light] #currentWeather .orb-copy .solar-event{color:#163d50;text-shadow:0 1px 6px #ffffffe6}
 html[data-theme=light] #currentWeather .orb-copy .solar-event>:is(span,strong){color:#163d50}
 html[data-theme=light] #currentWeather .orb-copy .solar-event>svg{stroke:#96601b;filter:drop-shadow(0 1px 2px #fff9)}
 html[data-theme=light] #currentWeather .orb-copy .solar-event>:is(span,strong)::before{background:radial-gradient(ellipse,#f2f7fa99,transparent 75%)}
}
@media(max-width:360px){
 html[data-theme] #currentWeather .weather-orb{margin-bottom:54px}
 html[data-theme] #currentWeather .orb-copy .solar-event{top:108%}
}

/* V8.88: solar labels are outside the Earth, so exclude the old dark scrims.
   The legacy :is() list includes IDs; explicitly override its pseudo-element. */
html[data-theme] #currentWeather .orb-copy .solar-event>:is(span,strong)::before{content:none!important;background:none!important;filter:none!important}
html[data-theme] #currentWeather .orb-copy .solar-event,
html[data-theme] #currentWeather .orb-copy .solar-event>:is(span,strong){color:#fff;text-shadow:0 1px 2px #09283f,0 0 5px #09283fa6;-webkit-text-stroke:0}
html[data-theme] #currentWeather .orb-copy .sunrise>svg{stroke:#ffdc70;filter:drop-shadow(0 1px 1px #173d55)}
html[data-theme] #currentWeather .orb-copy .sunset>svg{stroke:#ffad63;filter:drop-shadow(0 1px 1px #333453)}
html[data-theme=light] #currentWeather .orb-copy .sunrise>svg{stroke:#e5ab20;filter:drop-shadow(0 1px 1px #684b2260)}
html[data-theme=light] #currentWeather .orb-copy .sunset>svg{stroke:#dd782c;filter:drop-shadow(0 1px 1px #684b2260)}

html[data-graphics=lite] .globe-art :is(.wj-globe-disc,.wj-globe-glow,.wj-globe-heat,.wj-globe-fire),
html[data-graphics=lite] .wj-globe-touch{display:none}
