/* v1.1.318 | Satellite map-first surface. Canonical owner: assets/css/satellite.css.
   Layout, responsive behavior and controls for this component live only here. */
.ttv-satellite-page{min-width:0}
.ttv-sat{--ttv-sat-coast-ink:var(--ttv-line);--ttv-sat-border-ink:var(--ttv-warn-line);--ttv-sat-label-ink:var(--ttv-blue-50);margin:var(--ttv-space-3) 0 var(--ttv-space-5);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-lg);background:var(--ttv-surface);overflow:hidden;box-shadow:var(--ttv-shadow-soft)}
/* Band-aware cartography: color/JMA visible tiles benefit from quieter linework;
   grayscale infrared requires a little more definition. This is a visual style,
   never a claim that a political boundary is part of the observation. */
.ttv-sat__frame[data-sat-overlay-tone=visible]{--ttv-sat-coast-ink:var(--ttv-blue-50);--ttv-sat-border-ink:var(--ttv-warn-line);--ttv-sat-coast-opacity:.44;--ttv-sat-border-opacity:.35;--ttv-sat-coast-halo-opacity:.11;--ttv-sat-border-halo-opacity:.10;--ttv-sat-provider-label-opacity:.46}
.ttv-sat__frame[data-sat-overlay-tone=precipitation]{--ttv-sat-coast-ink:var(--ttv-blue-50);--ttv-sat-border-ink:var(--ttv-warn-line);--ttv-sat-coast-opacity:.53;--ttv-sat-border-opacity:.43;--ttv-sat-coast-halo-opacity:.18;--ttv-sat-border-halo-opacity:.16;--ttv-sat-provider-label-opacity:.52}
@media(prefers-contrast:more){.ttv-sat__frame[data-sat-overlay-tone]{--ttv-sat-coast-opacity:.79;--ttv-sat-border-opacity:.72;--ttv-sat-coast-halo-opacity:.3;--ttv-sat-border-halo-opacity:.28;--ttv-sat-provider-label-opacity:.84}}
.ttv-sat__top{display:flex;align-items:center;justify-content:space-between;gap:var(--ttv-space-5);padding:var(--ttv-space-4) var(--ttv-space-5) var(--ttv-space-3)}
.ttv-sat__heading{min-width:0}
.ttv-sat__eyebrow{display:block;color:var(--ttv-blue-800);font-size:var(--ttv-text-xs);letter-spacing:.09em;font-weight:700}
.ttv-sat__top h1{font-size:var(--ttv-title-card);letter-spacing:-.025em;line-height:1.25;margin:var(--ttv-space) 0 var(--ttv-space);color:var(--ttv-ink)}
.ttv-sat__top p{max-width:860px;font-size:var(--ttv-text-compact);line-height:1.55;margin:0;color:var(--ttv-muted)}
.ttv-sat__channel{flex:0 1 310px;min-width:190px;display:grid;gap:var(--ttv-space);color:var(--ttv-muted);font-size:var(--ttv-text-xs);font-weight:700}
.ttv-sat__channel select{width:100%;min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-8) var(--ttv-space-2) var(--ttv-space-3);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-sm);background:var(--ttv-surface);color:var(--ttv-ink);font-family:inherit;font-size:var(--ttv-text-compact);line-height:1.3;font-weight:700;cursor:pointer}
.ttv-sat__source{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-3);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-sm);font-size:var(--ttv-text-compact);font-weight:700;text-decoration:none;color:var(--ttv-blue-800)}
.ttv-sat__options{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ttv-space) var(--ttv-space-4);padding:var(--ttv-space-2) var(--ttv-space-5);background:var(--ttv-surface-muted);border-top:1px solid var(--ttv-line-soft);border-bottom:1px solid var(--ttv-line)}
.ttv-sat__region,.ttv-sat__modes{min-width:0;display:flex;align-items:center;gap:var(--ttv-space-2)}
.ttv-sat__modes{display:none}
.ttv-sat__region{flex:1 1 auto;overflow-x:auto;scrollbar-width:thin;overscroll-behavior-inline:contain}
.ttv-sat__control-label{flex:0 0 auto;font-size:var(--ttv-text-xs);font-weight:700;color:var(--ttv-muted);margin-right:var(--ttv-space)}
.ttv-sat__filter-caption,.ttv-sat__zoom-hint{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.ttv-sat__region button,.ttv-sat__modes button,.ttv-sat__transport button,.ttv-sat__steps button,.ttv-sat__zoom button,.ttv-sat__update button,.ttv-sat__error button,.ttv-sat__search button{font-family:inherit;font-size:var(--ttv-text-compact);line-height:1.25;font-weight:700;cursor:pointer;min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-3);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-sm);background:var(--ttv-surface);color:var(--ttv-ink-2)}
.ttv-sat__region button,.ttv-sat__modes button{flex:0 0 auto;white-space:nowrap}
.ttv-sat__region button.is-active,.ttv-sat__modes button.is-active,.ttv-sat__steps button.is-active{background:var(--ttv-blue-700);border-color:var(--ttv-blue-700);color:var(--ttv-white)}
.ttv-sat__region button:hover,.ttv-sat__modes button:hover,.ttv-sat__transport button:hover,.ttv-sat__steps button:hover,.ttv-sat__zoom button:hover,.ttv-sat__update button:hover{border-color:var(--ttv-blue-700)}
.ttv-sat button:focus-visible,.ttv-sat select:focus-visible,.ttv-sat input:focus-visible,.ttv-sat a:focus-visible,.ttv-sat__search input:focus-visible,.ttv-sat__search button:focus-visible{outline:3px solid var(--ttv-focus);outline-offset:2px}
.ttv-sat button:disabled,.ttv-sat input:disabled{opacity:.48;cursor:not-allowed}
.ttv-sat__viewer{display:grid;grid-template-columns:minmax(0,1fr);min-width:0}
.ttv-sat__frame{--ttv-sat-overlay-halo-ink:var(--ttv-ink);--ttv-sat-coast-opacity:.58;--ttv-sat-border-opacity:.48;--ttv-sat-coast-halo-opacity:.14;--ttv-sat-border-halo-opacity:.13;--ttv-sat-provider-label-opacity:.58;position:relative;display:grid;place-items:center;min-width:0;height:clamp(490px,55vw,680px);background:var(--ttv-ink);overflow:hidden;cursor:grab;touch-action:none;outline-offset:-4px;isolation:isolate}
.ttv-sat__frame:active{cursor:grabbing}
.ttv-sat__frame:focus-visible{outline:3px solid var(--ttv-focus);outline-offset:-4px}
.ttv-sat__frame img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;transform-origin:center;transform:var(--ttv-sat-image-transform,none);will-change:transform;pointer-events:none;user-select:none;-webkit-user-drag:none}
.ttv-sat__frame img:not([src]){visibility:hidden}
.ttv-sat__frame.is-fit img{object-fit:contain}
.ttv-sat__frame.is-unavailable{cursor:default;background:linear-gradient(135deg,var(--ttv-ink),var(--ttv-ink-2))}
.ttv-sat__frame.is-unavailable img,.ttv-sat__frame.is-unavailable .ttv-sat__tiles{visibility:hidden}
.ttv-sat__tiles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.ttv-sat__tiles[hidden],.ttv-sat__geography[hidden],.ttv-sat__label-grid[hidden],.ttv-sat__map-head[hidden],.ttv-sat__map-legend[hidden],.ttv-sat__fullscreen[hidden]{display:none}
.ttv-sat__tile-grid,.ttv-sat__label-grid{position:absolute;top:50%;left:50%;display:block;overflow:hidden;width:var(--ttv-sat-view-width,auto);height:var(--ttv-sat-view-height,auto);transform:var(--ttv-sat-view-transform,none);transform-origin:center;will-change:transform}
.ttv-sat__label-grid{z-index:2;opacity:var(--ttv-sat-provider-label-opacity,.58)}
.ttv-sat__tile-grid img,.ttv-sat__label-grid img{position:absolute;display:block;left:var(--ttv-sat-tile-left,0%);top:var(--ttv-sat-tile-top,0%);width:var(--ttv-sat-tile-width,auto);height:var(--ttv-sat-tile-height,auto);max-width:none;min-width:0;min-height:0;border:0;outline:0;object-fit:fill;transform:none;pointer-events:none;user-select:none}
.ttv-sat__geography{position:absolute;left:50%;top:50%;z-index:3;width:var(--ttv-sat-view-width,auto);height:var(--ttv-sat-view-height,auto);transform:var(--ttv-sat-view-transform,none);overflow:visible;transform-origin:center;pointer-events:none}
/* Map overlay owns cartographic strokes. Halos sit under hairlines, never as heavy white outlines. */
.ttv-sat__geo-coast,.ttv-sat__geo-border,.ttv-sat__geo-coast-halo,.ttv-sat__geo-border-halo{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.ttv-sat__geo-coast-halo{stroke:var(--ttv-sat-overlay-halo-ink);stroke-width:2.2;stroke-opacity:var(--ttv-sat-coast-halo-opacity,.14)}
.ttv-sat__geo-coast{stroke:var(--ttv-sat-coast-ink);stroke-width:.9;stroke-opacity:var(--ttv-sat-coast-opacity,.58)}
.ttv-sat__geo-border-halo{stroke:var(--ttv-sat-overlay-halo-ink);stroke-width:1.65;stroke-opacity:var(--ttv-sat-border-halo-opacity,.13);stroke-dasharray:3 4}
.ttv-sat__geo-border{stroke:var(--ttv-sat-border-ink);stroke-width:.7;stroke-opacity:var(--ttv-sat-border-opacity,.48);stroke-dasharray:3 4}
.ttv-sat__geo-place circle{fill:var(--ttv-sat-label-ink);stroke:var(--ttv-ink);stroke-width:1;vector-effect:non-scaling-stroke}
.ttv-sat__geo-place text,.ttv-sat__geo-country{fill:var(--ttv-sat-label-ink);font-family:inherit;font-size:var(--ttv-text-xs);font-weight:600;paint-order:stroke;stroke:var(--ttv-ink-heading);stroke-width:2px;stroke-linejoin:round}
.ttv-sat__geo-country{font-size:var(--ttv-text-sm);letter-spacing:.035em;fill:var(--ttv-sat-border-ink);stroke-width:2.5px}
.ttv-sat__tiles.has-provider-labels .ttv-sat__geo-place text,.ttv-sat__tiles.has-provider-labels .ttv-sat__geo-country{display:none}
.ttv-sat__map-head{position:absolute;z-index:4;top:12px;left:104px;right:12px;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ttv-space-3);pointer-events:none}
.ttv-sat__map-title{display:none;align-items:center;min-height:36px;padding:var(--ttv-space-2) var(--ttv-space-3);border:1px solid color-mix(in srgb,var(--ttv-white) 18%,transparent);border-radius:var(--ttv-radius-xs);background:color-mix(in srgb,var(--ttv-ink) 84%,transparent);color:var(--ttv-white);font-size:var(--ttv-text-xs);font-weight:700;letter-spacing:.06em;box-shadow:var(--ttv-shadow-icon-control)}
.ttv-sat__map-head button{pointer-events:auto;min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-3);background:color-mix(in srgb,var(--ttv-white) 96%,transparent);color:var(--ttv-ink-2);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-sm);font-family:inherit;font-size:var(--ttv-text-xs);font-weight:700;cursor:pointer;box-shadow:var(--ttv-shadow-icon-control)}
.ttv-sat__map-legend{position:absolute;z-index:3;bottom:83px;left:12px;max-width:calc(100% - 176px);padding:var(--ttv-space-2) var(--ttv-space-3);background:color-mix(in srgb,var(--ttv-ink) 84%,transparent);border-radius:var(--ttv-radius-xs);color:var(--ttv-blue-50);font-size:var(--ttv-text-xs);line-height:1.4;pointer-events:none}
.ttv-sat__zoom{position:absolute;z-index:4;left:12px;top:12px;display:flex;flex-direction:column;align-items:center;gap:var(--ttv-space);width:84px;pointer-events:none}
.ttv-sat__zoom button,.ttv-sat__zoom output{pointer-events:auto;display:grid;place-items:center;width:100%;min-height:44px;border:1px solid color-mix(in srgb,var(--ttv-line) 95%,transparent);background:color-mix(in srgb,var(--ttv-white) 97%,transparent);color:var(--ttv-ink-2);border-radius:var(--ttv-radius-sm);box-shadow:var(--ttv-shadow-icon-control)}
.ttv-sat__zoom button[data-sat-zoom-in],.ttv-sat__zoom button[data-sat-zoom-out]{width:44px;font-size:var(--ttv-title-card);padding:0;font-weight:600}
.ttv-sat__zoom output{position:absolute;width:1px;height:1px;min-height:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.ttv-sat__zoom button[data-sat-zoom-reset],.ttv-sat__zoom button[data-sat-focus]{font-size:var(--ttv-text-xs);padding:var(--ttv-space-2);line-height:1.25}

.ttv-sat__daylight{position:absolute;z-index:5;left:104px;top:66px;max-width:min(360px,calc(100% - 220px));padding:var(--ttv-space-3) var(--ttv-space-3);background:color-mix(in srgb,var(--ttv-ink) 94%,transparent);color:var(--ttv-white);border:1px solid color-mix(in srgb,var(--ttv-white) 25%,transparent);border-radius:var(--ttv-radius-sm);font-size:var(--ttv-text-xs);line-height:1.5;box-shadow:var(--ttv-shadow-elevated)}
.ttv-sat__daylight[hidden]{display:none}
.ttv-sat__daylight button{display:block;margin-top:var(--ttv-space-2);min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-3);border:1px solid var(--ttv-line-focus);border-radius:var(--ttv-radius-xs);background:var(--ttv-surface);color:var(--ttv-blue-800);font-family:inherit;font-size:var(--ttv-text-xs);font-weight:700;cursor:pointer}
.ttv-sat__loading,.ttv-sat__error{position:absolute;z-index:8;left:50%;top:50%;transform:translate(-50%,-50%);width:min(92%,480px);padding:var(--ttv-space-5) var(--ttv-space-6);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius);background:color-mix(in srgb,var(--ttv-white) 98%,transparent);color:var(--ttv-ink-2);text-align:center;box-shadow:var(--ttv-shadow-dialog)}
.ttv-sat__loading[hidden],.ttv-sat__error[hidden]{display:none}
.ttv-sat__error p{font-size:var(--ttv-text-sm);line-height:1.6;margin:var(--ttv-space-2) 0 var(--ttv-space-4)}
.ttv-sat__error a{display:inline-flex;min-height:44px;align-items:center;padding:var(--ttv-space-2) var(--ttv-space-3);font-size:var(--ttv-text-compact);font-weight:700}
/* AccuWeather-style interaction layout, but the data is licensed JMA imagery.
   Timeline is on the map; advanced controls remain accessible on demand. */
.ttv-sat__quickline{position:absolute;z-index:6;bottom:14px;left:14px;right:74px;max-width:670px;min-height:52px;display:flex;align-items:center;gap:var(--ttv-space-3);padding:var(--ttv-space) var(--ttv-space-3) var(--ttv-space) var(--ttv-space);border:1px solid color-mix(in srgb,var(--ttv-line) 86%,transparent);border-radius:var(--ttv-radius-pill);background:color-mix(in srgb,var(--ttv-white) 96%,transparent);box-shadow:var(--ttv-shadow-hover);cursor:default;touch-action:pan-y}
.ttv-sat__quickline .ttv-sat__quick-play{flex:0 0 44px;width:44px;height:44px;border:0;border-radius:var(--ttv-radius-circle);background:var(--ttv-blue-700);color:var(--ttv-white);font:700 19px/1 Arial,sans-serif;cursor:pointer}
.ttv-sat__quickline span{white-space:nowrap;color:var(--ttv-ink-2);font-size:var(--ttv-text-xs);font-weight:700;font-variant-numeric:tabular-nums}
.ttv-sat__quickline input{flex:1 1 auto;min-width:35px;width:100%;height:44px;margin:0;accent-color:var(--ttv-blue-700);cursor:pointer;touch-action:none}
.ttv-sat__quickline .ttv-sat__quick-now{font-size:var(--ttv-text-xs);font-weight:400;color:var(--ttv-muted)}
.ttv-sat__fullscreen{position:absolute;z-index:7;right:14px;bottom:17px;width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-circle);background:color-mix(in srgb,var(--ttv-white) 97%,transparent);color:var(--ttv-ink-2);font:700 28px/1 Arial,sans-serif;box-shadow:var(--ttv-shadow-hover);cursor:pointer}
/* Fullscreen API on desktop; fixed-position fallback on browsers such as iOS Safari.
   Keep both modes in this one satellite owner, with the same overlay controls. */
body.ttv-sat-expanded{overflow:hidden}
.ttv-sat__frame:is(:fullscreen,.is-expanded){height:100vh;height:100dvh;width:100vw;max-width:none;background:var(--ttv-ink)}
.ttv-sat__frame.is-expanded{position:fixed;inset:0;z-index:999999;border-radius:0}
.ttv-sat__frame:is(:fullscreen,.is-expanded) .ttv-sat__quickline{bottom:max(24px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left))}
.ttv-sat__frame:is(:fullscreen,.is-expanded) .ttv-sat__fullscreen{bottom:max(24px,env(safe-area-inset-bottom));right:max(12px,env(safe-area-inset-right))}
.ttv-sat__legend{padding:var(--ttv-space-3) var(--ttv-space-5) var(--ttv-space-3);background:var(--ttv-surface);border-bottom:1px solid var(--ttv-line-soft)}
.ttv-sat__legend-row{display:flex;align-items:center;justify-content:space-between;gap:var(--ttv-space-3);margin-bottom:var(--ttv-space-2)}
.ttv-sat__legend-row strong{font-size:var(--ttv-text-compact);color:var(--ttv-ink)}
.ttv-sat__legend-row span{min-width:0;max-width:75%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ttv-text-xs);color:var(--ttv-muted)}
.ttv-sat__legend-scale{height:10px;border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-xs);background:linear-gradient(90deg,var(--ttv-ink),var(--ttv-muted),var(--ttv-line),var(--ttv-line-soft),var(--ttv-white))}
.ttv-sat__legend-labels{display:flex;justify-content:space-between;gap:var(--ttv-space-2);color:var(--ttv-muted);font-size:var(--ttv-text-xs)}
.ttv-sat__legend p{margin:var(--ttv-space) 0 0;font-size:var(--ttv-text-xs);line-height:1.4;color:var(--ttv-muted)}
.ttv-sat__advanced{border-bottom:1px solid var(--ttv-line-soft)}
.ttv-sat__advanced>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:var(--ttv-space-3);min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-5);cursor:pointer;font-size:var(--ttv-text-compact);font-weight:700;color:var(--ttv-blue-800)}
.ttv-sat__advanced>summary::-webkit-details-marker{display:none}
.ttv-sat__advanced>summary span{transition:transform .15s}
.ttv-sat__advanced[open]>summary span{transform:rotate(180deg)}
.ttv-sat__controls{display:grid;gap:var(--ttv-space-3);padding:var(--ttv-space-4) var(--ttv-space-5) var(--ttv-space-4);border-bottom:1px solid var(--ttv-line);background:var(--ttv-surface)}
.ttv-sat__timeline-head{display:flex;justify-content:space-between;align-items:center;gap:var(--ttv-space-3)}
.ttv-sat__timeline-head>div{display:flex;flex-direction:column;gap:var(--ttv-space)}
.ttv-sat__timeline-head strong{font-size:var(--ttv-text-body);color:var(--ttv-ink)}
.ttv-sat__timeline-head span{font-size:var(--ttv-text-xs);color:var(--ttv-muted)}
.ttv-sat__timeline-head output{flex:0 0 auto;padding:var(--ttv-space-2) var(--ttv-space-2);border-radius:var(--ttv-radius-xs);background:var(--ttv-blue-50);color:var(--ttv-blue-800);font-size:var(--ttv-text-lead);font-weight:700;font-variant-numeric:tabular-nums}
.ttv-sat__transport{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ttv-space-2)}
.ttv-sat__playback{display:flex;align-items:center;gap:var(--ttv-space-2)}
.ttv-sat__playback button:not(.ttv-sat__play-button){min-width:44px;font-size:var(--ttv-text-lead);padding:var(--ttv-space-2)}
.ttv-sat__transport .ttv-sat__play-button{min-width:126px;background:var(--ttv-blue-700);border-color:var(--ttv-blue-700);color:var(--ttv-white)}
.ttv-sat__transport .ttv-sat__play-button[aria-pressed=true]{background:var(--ttv-ink);border-color:var(--ttv-ink)}
.ttv-sat__speed{display:inline-flex;align-items:center;gap:var(--ttv-space-2);font-size:var(--ttv-text-xs);font-weight:700;color:var(--ttv-muted)}
.ttv-sat__speed select{min-height:44px;min-width:116px;border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-sm);background:var(--ttv-surface);color:var(--ttv-ink);padding:var(--ttv-space-2) var(--ttv-space-2);font-size:var(--ttv-text-compact)}
.ttv-sat__scrubber{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--ttv-space-3)}
.ttv-sat__scrubber span{font-size:var(--ttv-text-xs);font-weight:700;color:var(--ttv-muted);font-variant-numeric:tabular-nums}
.ttv-sat__scrubber input{display:block;width:100%;min-width:0;height:44px;margin:0;cursor:pointer;accent-color:var(--ttv-blue-700);touch-action:pan-y}
.ttv-sat__steps{display:flex;align-items:center;gap:var(--ttv-space-2);overflow-x:auto;scrollbar-width:thin;overscroll-behavior-inline:contain;padding:var(--ttv-space) var(--ttv-space) var(--ttv-space-2)}
.ttv-sat__steps button{flex:1 0 auto;min-width:72px;min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-2);font-size:var(--ttv-text-xs);font-variant-numeric:tabular-nums}
.ttv-sat__update{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ttv-space-2);padding-top:var(--ttv-space-2);border-top:1px solid var(--ttv-line-soft)}
.ttv-sat__update button{min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-3);font-size:var(--ttv-text-xs)}
.ttv-sat__update [data-sat-auto-toggle][aria-pressed=true]{background:var(--ttv-good-bg);border-color:var(--ttv-good-line);color:var(--ttv-good-ink)}
.ttv-sat__auto-state{flex:1 1 220px;font-size:var(--ttv-text-xs);color:var(--ttv-muted);line-height:1.5}
.ttv-sat__help{margin:0;font-size:var(--ttv-text-xs);color:var(--ttv-muted);line-height:1.5}
.ttv-sat__region-note{padding:var(--ttv-space-2) var(--ttv-space-5);margin:0;background:var(--ttv-surface-muted);font-size:var(--ttv-text-xs);line-height:1.5;color:var(--ttv-muted)}
.ttv-sat__side{min-width:0;padding:var(--ttv-space-4) var(--ttv-space-5);display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:var(--ttv-space-4);align-items:start;border-top:1px solid var(--ttv-line-soft)}
.ttv-sat__side strong{display:block;font-size:var(--ttv-text-sm);color:var(--ttv-ink)}
.ttv-sat__side p,.ttv-sat__side span{display:block;margin:var(--ttv-space) 0 0;font-size:var(--ttv-text-xs);line-height:1.55;color:var(--ttv-muted)}
.ttv-sat__time{border-left:1px solid var(--ttv-line);padding-left:var(--ttv-space-4)}
.ttv-sat__time small{display:block;color:var(--ttv-muted);font-size:var(--ttv-text-xs);margin-bottom:var(--ttv-space)}
.ttv-sat__time strong{font-size:var(--ttv-text-body);font-variant-numeric:tabular-nums}
.ttv-sat__time .ttv-sat__freshness{font-weight:700;color:var(--ttv-warn)}
.ttv-sat__time .ttv-sat__freshness.is-stale{color:var(--ttv-danger-ink)}
.ttv-sat__checked{font-variant-numeric:tabular-nums}
.ttv-sat__caution{padding:var(--ttv-space-3);border:1px solid var(--ttv-warn-line);border-radius:var(--ttv-radius-sm);background:var(--ttv-surface-warning)}
.ttv-sat__links{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:var(--ttv-space-2)}
.ttv-sat__links a{display:inline-flex;align-items:center;min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-3);background:var(--ttv-surface-muted);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-xs);font-size:var(--ttv-text-xs);font-weight:700;text-decoration:none;color:var(--ttv-blue-800)}
.ttv-sat__credits{padding:var(--ttv-space-3) var(--ttv-space-5);margin:0;background:var(--ttv-surface-muted);font-size:var(--ttv-text-xs);line-height:1.65;color:var(--ttv-muted);border-top:1px solid var(--ttv-line-soft)}
.ttv-sat__credits summary{cursor:pointer;min-height:44px;display:list-item;padding:var(--ttv-space-2) 0;font-weight:700}
.ttv-sat__search{display:grid;gap:var(--ttv-space-3);margin:var(--ttv-space-5) 0 var(--ttv-space-8);padding:var(--ttv-space-5);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius);background:var(--ttv-surface)}
.ttv-sat__search h2{margin:0 0 var(--ttv-space-2);font-size:var(--ttv-text-xl)}
.ttv-sat__search p{margin:0;color:var(--ttv-muted)}
.ttv-sat__search form{max-width:650px}
.ttv-sat__search label{font-weight:700;font-size:var(--ttv-text-compact);display:block;margin-bottom:var(--ttv-space-2)}
.ttv-sat__search form>div{display:flex;gap:var(--ttv-space-2)}
.ttv-sat__search input{min-height:44px;min-width:0;flex:1;border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-xs);padding:var(--ttv-space-2) var(--ttv-space-3);font:inherit}
.ttv-sat__search button{background:var(--ttv-blue-700);color:var(--ttv-white);border-color:var(--ttv-blue-700)}
@media(max-width:980px){
 .ttv-sat__options{gap:var(--ttv-space) var(--ttv-space-2)}
 .ttv-sat__frame{height:clamp(460px,72vw,640px)}
 .ttv-sat__side{grid-template-columns:1fr 1fr}
 .ttv-sat__caution{grid-column:1/-1}
}
@media(max-width:640px){
 .ttv-sat{margin-top:var(--ttv-space-2);border-radius:var(--ttv-radius)}
 .ttv-sat__top{padding:var(--ttv-space-3);gap:var(--ttv-space-2);align-items:stretch;flex-direction:column}
 .ttv-sat__top h1{font-size:var(--ttv-title-sm)}
 .ttv-sat__top p{font-size:var(--ttv-text-xs)}
 .ttv-sat__eyebrow{font-size:var(--ttv-text-xs)}
 .ttv-sat__channel{flex:auto;min-width:0;gap:var(--ttv-space)}
 .ttv-sat__channel select{min-height:44px}
 .ttv-sat__source{display:none}
 .ttv-sat__options{padding:var(--ttv-space-2) var(--ttv-space-2);gap:var(--ttv-space)}
 .ttv-sat__region{width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;padding:var(--ttv-space) 0 var(--ttv-space)}
 .ttv-sat__control-label{position:sticky;left:0;z-index:1;align-self:stretch;display:inline-flex;align-items:center;background:var(--ttv-surface-muted);padding-right:var(--ttv-space-2);font-size:var(--ttv-text-xs)}
 .ttv-sat__region button,.ttv-sat__modes button{padding:var(--ttv-space-2) var(--ttv-space-3);font-size:var(--ttv-text-xs);min-height:44px}
 .ttv-sat__frame{height:clamp(410px,125vw,560px)}
 .ttv-sat__map-head{top:10px;left:74px;right:10px;gap:var(--ttv-space-2)}
 .ttv-sat__map-title{font-size:var(--ttv-text-xs);letter-spacing:0;min-height:36px;padding:var(--ttv-space-2) var(--ttv-space-2)}
 .ttv-sat__map-head button{max-width:140px;min-height:44px;font-size:var(--ttv-text-xs);padding:var(--ttv-space-2) var(--ttv-space-2)}
 .ttv-sat__zoom{top:10px;left:10px;width:60px;gap:var(--ttv-space)}
 .ttv-sat__zoom button[data-sat-zoom-in],.ttv-sat__zoom button[data-sat-zoom-out]{width:44px}
 .ttv-sat__zoom button[data-sat-zoom-reset],.ttv-sat__zoom button[data-sat-focus]{font-size:var(--ttv-text-xs);padding:var(--ttv-space) var(--ttv-space);min-height:44px}
 .ttv-sat__map-legend{left:10px;bottom:80px;max-width:calc(100% - 20px);font-size:var(--ttv-text-xs);padding:var(--ttv-space-2)}
 .ttv-sat__daylight{left:74px;top:62px;max-width:calc(100% - 86px);font-size:var(--ttv-text-xs);padding:var(--ttv-space-2)}
 .ttv-sat__loading,.ttv-sat__error{padding:var(--ttv-space-4);width:calc(100% - 28px)}
 .ttv-sat__quickline{left:max(8px,env(safe-area-inset-left));right:62px;bottom:10px;gap:var(--ttv-space);min-height:48px;padding:var(--ttv-space) var(--ttv-space-2) var(--ttv-space) var(--ttv-space)}
 .ttv-sat__quickline .ttv-sat__quick-play{flex-basis:44px}
 .ttv-sat__quickline span{font-size:var(--ttv-text-xs)}
 .ttv-sat__quickline .ttv-sat__quick-now,.ttv-sat__quickline .ttv-sat__quick-start{display:none}
 .ttv-sat__fullscreen{right:max(8px,env(safe-area-inset-right));bottom:11px;width:44px;height:44px}
 .ttv-sat__legend{padding:var(--ttv-space-2) var(--ttv-space-3)}
 .ttv-sat__legend-row{align-items:flex-start;flex-direction:column;gap:var(--ttv-space)}
 .ttv-sat__legend-row span{max-width:100%;width:100%}
 .ttv-sat__advanced>summary{padding:var(--ttv-space-2) var(--ttv-space-3);font-size:var(--ttv-text-xs)}
 .ttv-sat__controls{padding:var(--ttv-space-3) var(--ttv-space-3);gap:var(--ttv-space-2)}
 .ttv-sat__timeline-head strong{font-size:var(--ttv-text-sm)}
 .ttv-sat__timeline-head output{font-size:var(--ttv-text-md)}
 .ttv-sat__transport{gap:var(--ttv-space-2)}
 .ttv-sat__playback{flex:1 1 auto}
 .ttv-sat__play-button{min-width:112px}
 .ttv-sat__speed{flex:1 1 auto;justify-content:flex-end}
 .ttv-sat__speed select{min-width:104px}
 .ttv-sat__transport>[data-sat-latest]{flex:1 1 100%}
 .ttv-sat__scrubber{gap:var(--ttv-space-2)}
 .ttv-sat__steps button{flex:0 0 auto;min-width:68px}
 .ttv-sat__update button{flex:1 1 auto}
 .ttv-sat__auto-state{flex-basis:100%}
 .ttv-sat__region-note{padding:var(--ttv-space-2) var(--ttv-space-3)}
 .ttv-sat__side{grid-template-columns:1fr;padding:var(--ttv-space-3) var(--ttv-space-3);gap:var(--ttv-space-3)}
 .ttv-sat__time{border-left:0;border-top:1px solid var(--ttv-line);padding:var(--ttv-space-3) 0 0}
 .ttv-sat__caution{grid-column:auto}
 .ttv-sat__links{grid-column:auto}
 .ttv-sat__credits{padding:var(--ttv-space-3)}
 .ttv-sat__search{padding:var(--ttv-space-4)}
 .ttv-sat__search form>div{flex-direction:column}
}
@media(max-width:360px){.ttv-sat__top h1{font-size:var(--ttv-text-lg)}.ttv-sat__region{gap:var(--ttv-space)}.ttv-sat__region button{padding:var(--ttv-space-2) var(--ttv-space-2)}.ttv-sat__frame{height:420px}.ttv-sat__quickline .ttv-sat__quick-current{font-size:var(--ttv-text-xs)}}
@media(prefers-reduced-motion:reduce){.ttv-sat *{scroll-behavior:auto;transition:none}}


/* Native MapLibre owner: a true Web Mercator JMA z5 raster layer over an
   independently loaded geographic basemap. Existing mosaic stays available. */
.ttv-sat__native-map{position:absolute;inset:0;z-index:1;visibility:hidden;pointer-events:none}
.ttv-sat__frame.has-native-map .ttv-sat__native-map{visibility:visible;pointer-events:auto}
.ttv-sat__frame.has-native-map .ttv-sat__tiles,.ttv-sat__frame.has-native-map>[data-sat-image]{visibility:hidden;pointer-events:none}
.ttv-sat__native-map .maplibregl-canvas{cursor:grab}
.ttv-sat__native-map .maplibregl-canvas:active{cursor:grabbing}
.ttv-sat__native-map .maplibregl-control-container .maplibregl-ctrl-bottom-right{bottom:76px;right:7px}
.ttv-sat__native-map .maplibregl-ctrl-attrib{font:10px/1.4 Arial,sans-serif;max-width:260px}
.ttv-sat__native-label{display:block;white-space:nowrap;color:var(--ttv-sat-label-ink);font:600 var(--ttv-text-xs)/1.2 Arial,sans-serif;text-shadow:0 1px 2px var(--ttv-ink),0 0 2px var(--ttv-ink);pointer-events:none;user-select:none}
.ttv-sat__native-label--country{color:var(--ttv-sat-border-ink);font-size:var(--ttv-text-compact);letter-spacing:.035em}
.ttv-sat__native-label[hidden]{display:none}
@media(max-width:640px){.ttv-sat__native-map .maplibregl-control-container .maplibregl-ctrl-bottom-right{bottom:74px}.ttv-sat__native-label--country{font-size:var(--ttv-text-xs)}}

/* v1.1.318: one canonical owner for the admin-only live connection check. */
.ttv-sat__diagnostics{margin:var(--ttv-space-3) 0;padding:var(--ttv-space-3) var(--ttv-space-4);border:1px solid var(--ttv-line);border-radius:var(--ttv-radius-sm);background:var(--ttv-surface-info);color:var(--ttv-ink-2)}
.ttv-sat__diagnostics summary{cursor:pointer;font-weight:700;min-height:44px;display:list-item;align-content:center}
.ttv-sat__diagnostics p{margin:var(--ttv-space-2) 0;font-size:var(--ttv-text-compact);line-height:1.6}
.ttv-sat__diagnostics button{min-height:44px;padding:var(--ttv-space-2) var(--ttv-space-4);border:1px solid var(--ttv-blue-700);border-radius:var(--ttv-radius-xs);background:var(--ttv-blue-700);color:var(--ttv-white);font:700 13px/1.3 Arial,sans-serif;cursor:pointer}
.ttv-sat__diagnostics button:disabled{opacity:.55;cursor:wait}
.ttv-sat__diagnostics pre{margin:var(--ttv-space-3) 0 0;padding:var(--ttv-space-3);background:var(--ttv-blue-50);border-radius:var(--ttv-radius-xs);white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 Consolas,monospace}
