/* AstroLab design contract — app, public site and standalone documents.
   Component CSS owns layout; this file alone owns typography and glass tokens. */
@font-face{font-family:Manrope;src:url('./assets/manrope.ttf') format('truetype');font-weight:200 800;font-display:swap}
:root{
 --ui-font:Manrope,'Avenir Next',Arial,sans-serif;
 --text-caption:calc(.75rem * var(--app-text-scale,1));
 --text-small:calc(.875rem * var(--app-text-scale,1));
 --text-body:calc(1rem * var(--app-text-scale,1));
 --text-lead:calc(1.125rem * var(--app-text-scale,1));
 --text-heading:calc(1.25rem * var(--app-text-scale,1));
 --text-title:calc(1.5rem * var(--app-text-scale,1));
 --text-display:calc(2rem * var(--app-text-scale,1));
 --text-hero:calc(3rem * var(--app-text-scale,1));
 --text-hero-large:calc(4rem * var(--app-text-scale,1));
 --control-radius:11px;--surface-radius:16px;
 --control-glass:#1020300f;--control-hover:#273b501a;--control-active:#eac08b1f;--selected-text:#f0d39a;
 --control-border:#c2cfe03d;--control-selected-border:#eac08b99;--control-focus:#eac08b;
 --menu-glass:#171b201a;--menu-hover:#c2cfe00d;--menu-active:#eac08b1f;
 --menu-border:var(--control-border);--menu-selected-border:#eac08b99;--menu-selected-text:#f0d39a;
 --popup-glass:#171b2047;--popup-blur:blur(8px);--discover-glass:var(--popup-glass);--widget-glass:#10203033;--reading-surface:var(--widget-glass);
 --widget-blur:blur(4px);--navigation-blur:blur(8px);
 --ui-line-height:1.45;--reading-line-height:1.65;
}
body{font-family:var(--ui-font)}
:where(button,input,select,textarea){font-family:inherit}
:where(button,[role=button],.button,.launch){border-radius:var(--control-radius);background:var(--control-glass);border:1px solid var(--control-border);-webkit-backdrop-filter:var(--widget-blur);backdrop-filter:var(--widget-blur);min-height:44px;line-height:var(--ui-line-height)}
:where(button,[role=button],a,input,select,summary):focus-visible{outline:2px solid var(--control-focus);outline-offset:3px}
.system-text-probe{position:fixed;left:-10000px;top:0;visibility:hidden;pointer-events:none;font:1rem system-ui}
@supports(font:-apple-system-body){.system-text-probe{font:-apple-system-body}}
.text-comfort{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0;border-top:1px solid var(--control-border)}
.text-comfort label{flex:1 1 100%;font-size:var(--text-small)}
.text-comfort input{min-width:0;width:100%;accent-color:var(--control-focus)}
.text-comfort output{font-size:var(--text-small);font-variant-numeric:tabular-nums}
.text-comfort button{font-size:var(--text-small);color:inherit;padding:8px 12px}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:root{--popup-glass:#152231;--menu-glass:#152231;--control-glass:#152231;--widget-glass:#132130;--reading-surface:#101b28}}
@media(prefers-reduced-transparency:reduce){:root{--popup-glass:#152231;--menu-glass:#152231;--menu-hover:#273b50;--menu-active:#29313c;--control-glass:#152231;--control-hover:#273b50;--control-active:#29313c;--widget-glass:#132130;--reading-surface:#101b28;--widget-blur:none;--navigation-blur:none}}
@media(forced-colors:active){:root{--popup-glass:Canvas;--menu-glass:Canvas;--menu-hover:Canvas;--menu-active:Canvas;--menu-border:ButtonText;--menu-selected-border:Highlight;--menu-selected-text:Highlight;--control-glass:Canvas;--control-hover:Canvas;--control-active:Canvas;--widget-glass:Canvas;--reading-surface:Canvas;--control-border:ButtonText;--control-selected-border:Highlight;--control-focus:Highlight;--widget-blur:none}}

/* First imported layer: important paint rules defeat historical component skins.
   Geometry, state and scientific renderer styles remain with their components. */
@layer design-surfaces{
 :is(button,[role=button],input[type=button],input[type=submit],input[type=reset],.button,.launch,.cta,.open-poi,.settings-done>button,.moment-done>button):not(.planet-label,.moon-marker,.mission-label){
  background:var(--control-glass)!important;
  border:1px solid var(--control-border)!important;
  border-radius:var(--control-radius)!important;
  -webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important;
  color:var(--text,var(--paper,#e8edf3))!important;box-shadow:none!important;
 }
 :is(button,[role=button],.button,.launch,.cta):not(.planet-label,.moon-marker,.mission-label):hover{background:var(--control-hover)!important}
 :is(button,[role=button],.button,.launch,.cta):not(.planet-label,.moon-marker,.mission-label):is(.active:not([aria-pressed=false],[aria-selected=false]),[aria-pressed=true],[aria-selected=true],[aria-current=page]){background:var(--control-active)!important;border-color:var(--control-selected-border)!important;color:var(--selected-text)!important}
 /* Selection has one appearance across navigation, filters and toggles. */
 :is(#app header nav button,.site-primary>a,.site-menu>a,#catalogDialog :is(#catalogFilters,#catalogFormats,#catalogLearning,.agenda-sections,.agenda-scope,.agenda-context,.agenda-filters) button){
  --control-glass:var(--menu-glass);--control-hover:var(--menu-hover);
  --control-active:var(--menu-active);--control-border:var(--menu-border);
  --control-selected-border:var(--menu-selected-border);--selected-text:var(--menu-selected-text);
  background:var(--control-glass)!important;border:1px solid var(--control-border)!important;
  border-radius:var(--control-radius)!important;
  -webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important;
 }
 :is(#app header nav button,.site-primary>a,.site-menu>a,#catalogDialog :is(#catalogFilters,#catalogFormats,#catalogLearning,.agenda-sections,.agenda-scope,.agenda-context,.agenda-filters) button):hover{background:var(--control-hover)!important}
 :is(#app header nav button,.site-primary>a,.site-menu>a,#catalogDialog :is(#catalogFilters,#catalogFormats,#catalogLearning,.agenda-sections,.agenda-scope,.agenda-context,.agenda-filters) button):is(.active:not([aria-pressed=false],[aria-selected=false]),[aria-pressed=true],[aria-selected=true],[aria-current=page]){
  background:var(--control-active)!important;border-color:var(--control-selected-border)!important;color:var(--selected-text)!important;
 }
 /* Editorial emphasis is explicit; an ordinary action is never a selection. */
 :is(.quiet-link,.discover-search input,.discover-search input::placeholder){color:var(--text,var(--paper,#e8edf3))!important}
 body .scene-subtitles{background:transparent!important;border:0!important;border-radius:0!important;-webkit-backdrop-filter:blur(2px)!important;backdrop-filter:blur(2px)!important;text-shadow:0 1px 3px #0009,0 0 2px #0006!important}
 /* Inline help and grouped zoom controls belong to their surrounding surface. */
 :root body :is(.settings-quick-caption,.setting-help,.setting-help-label){background:transparent!important;border:0!important;border-radius:0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
 :root body .leaflet-control-zoom a{border:0!important;border-radius:0!important;background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
 :root body .leaflet-control-zoom a+a{border-top:1px solid var(--control-border)!important}
 /* The tutorial ring highlights the actual scene, never a frosted overlay. */
 .tutorial-highlight[popover]{background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
 /* A tracking label and its dismiss action share a single glass surface. */
 body :is(#orbitCenterGroup,#skyCenter) > button{background:transparent!important;border:0!important;border-radius:0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
 body :is(#orbitCenterGroup,#skyCenter) > :is(#releaseOrbit,#releaseTracking,#releaseLook){border-left:1px solid var(--control-border)!important}
 /* Scene annotations are text, even when clickable: never paint a glass tile. */
 body :is(.planet-label,.moon-marker,.mission-label,.orbit-star-labels span){
  background:transparent!important;border:0!important;border-radius:0!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;
  text-shadow:0 1px 2px rgba(0,0,0,.45)!important;
 }
 #app header nav button:is(.active:not([aria-pressed=false],[aria-selected=false]),[aria-pressed=true],[aria-selected=true],[aria-current=page]) :is(span,svg){color:inherit!important}
 @media(max-width:760px){
  html[data-large-text=true] #app header nav button,
  html[data-large-text=true] #app header nav :is(.nav-short,.nav-wide){font-size:var(--text-caption)!important;overflow-wrap:normal;word-break:normal}
 }
 /* Main place/time/speed dock uses the same light glass as its controls. */
 body #app :is(#timeline,.sky-time-dock,.exploration-clock){background:var(--control-glass)!important;-webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important;border:1px solid var(--control-border)!important}
 body #app :is(.navigation-place,.navigation-date,.wheel-drum,.speed-wheel>[role=slider]){background:var(--control-glass)!important;-webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important;border:1px solid var(--control-border)!important}
 body #app .navigation-date button{background:transparent!important;border:0!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
 /* Explicit product policy: focus moves normally but adds no frame or halo. */
 :root body :is(:focus,:focus-visible,:focus-within){outline:none!important;box-shadow:none!important}
 :root body :is(:focus,:focus-visible,:focus-within)::before,
 :root body :is(:focus,:focus-visible,:focus-within)::after{outline:none!important;box-shadow:none!important}
 :where(dialog,[role=dialog],[popover],.side-dock,.widget-dialog,.first-run-guide,.site-menu,.site-header,.object-card,#soundPanel,#toast,.public-discovery-panel){
  background:var(--widget-glass)!important;
  border-radius:var(--surface-radius)!important;
  -webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important;
 }
 :is(.settings-done,.moment-done,.discovery-actions,.console-head,.settings-page-head){
  background:var(--control-glass)!important;
  -webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important;
 }
 dialog::backdrop{background:#080d174d!important;-webkit-backdrop-filter:var(--widget-blur)!important;backdrop-filter:var(--widget-blur)!important}
 /* A filtered parent becomes a backdrop root: its out-of-flow menu cannot blur
    the page below it. Paint the header glass on a sibling pseudo-element. */
 .site-header{background:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
 .site-header::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--widget-glass);border-radius:inherit;-webkit-backdrop-filter:var(--widget-blur);backdrop-filter:var(--widget-blur)}
 .site-menu{-webkit-backdrop-filter:var(--navigation-blur)!important;backdrop-filter:var(--navigation-blur)!important}
}

.site-menu .text-comfort{grid-column:1 / -1}


/* Pop-ups use 70% transparency; the shared blur separates the scene below. */
:is(dialog,[role=dialog],[popover],.side-dock,.widget-dialog,.first-run-guide,.site-menu,.public-discovery-panel){--widget-glass:var(--popup-glass);--widget-blur:var(--popup-blur)}
@media(prefers-reduced-transparency:reduce){:root{--popup-glass:#132130;--popup-blur:none}}
@media(forced-colors:active){:root{--popup-glass:Canvas;--popup-blur:none}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:root{--popup-glass:#132130;--popup-blur:none}}
/* Discover keeps more of the scene visible under its shared light blur. */
#catalogDialog{--widget-glass:var(--discover-glass)}
@media(prefers-reduced-transparency:reduce){:root{--discover-glass:#132130}}
@media(forced-colors:active){:root{--discover-glass:Canvas}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:root{--discover-glass:#132130}}

/* Main navigation shares one emphasis; gold remains the selected state. */
#app header nav button,#app header nav button span,.site-primary>a,.site-menu>a{font-weight:700!important}

@layer design-surfaces{body header nav button,body header nav button span,.site-primary>a,.site-menu>a{font-weight:700!important}}

@layer design-surfaces{body .site-header .site-primary>a,body .site-header .site-menu>a{font-weight:400!important}}
