/* Shared glass primitives, opt-in via body[data-glass-ui]. Load after owner CSS.
 * Token map: surface=data/dialog; field=editable text/native options; ink=reading;
 * muted=secondary reading; edge=control boundary; selected=active state;
 * focus=keyboard/selection; warning/error=semantic notices. Geometry stays owned.
 * .glass-surface / .glass-data / .glass-toolbar / .glass-note are reusable.
 * Theme setter must mirror the application palette onto data-glass-theme.
 * Deliberately opaque reading surfaces: frosted depth is confined to chrome.
 */
[data-glass-ui] {
 --glass-surface:#e4e0d7; --glass-raised:#d8d4ca; --glass-chrome:#d8d4ca;
 --glass-ink:#111111; --glass-muted:#3a3a3a; --glass-edge:#8a8275;
 --glass-field:#ece9e1; --glass-field-ink:#111111;
 --glass-selected:#000000; --glass-selected-ink:#ffffff;
 --glass-focus:#096790; --glass-row:#dceefa; --glass-row-ink:#103e60;
 --glass-warning:#714500; --glass-warning-bg:#fff3d5;
 --glass-error:#8c202b; --glass-error-bg:#ffecef;
 --glass-radius:16px; --glass-control-radius:9px;
 --glass-shadow:0 18px 48px #17253826,0 3px 10px #17253812;
 --glass-inner:inset 0 1px 0 #ffffffcc;
 --glass-scheme:light;
}
[data-glass-ui][data-glass-theme="dark"] {
 --glass-surface:#172331; --glass-raised:#213245; --glass-chrome:#24374b;
 --glass-ink:#eff5ff; --glass-muted:#c2d1e3; --glass-edge:#8496ac;
 --glass-focus:#84d4ff; --glass-row:#183f5b; --glass-row-ink:#e5f6ff;
 --glass-warning:#ffdf9d; --glass-warning-bg:#48351c;
 --glass-error:#ffd0d7; --glass-error-bg:#522932;
 --glass-shadow:0 18px 48px #00000055,0 3px 10px #00000033;
 --glass-inner:inset 0 1px 0 #ffffff14; --glass-scheme:dark;
}
/* Specificity intentionally exceeds legacy ID rules; no display/position/size,
 * overflow, transform, resize, pointer-events or canvas painting is changed. */
[data-glass-ui] :is(.glass-surface,.rectification-capabilities,.direction-lab-shell,
 .dlab-panel,.lsr-panel,.lsr-modal,.srlr-chart-window,.sph-nav-tool-content,
 .sphere-date-picker-body,[data-sphere-tool-window],[role="dialog"],[popover],
 #sphere-companion,#sphere-speculum,#sphere-direction-worksheet,#sphere-direction-list,
 #tables-panel,#research-panel,#info-box,#map-box,#save-dialog,#library-modal,
 #admin-dialog,#bug-report-dialog,#settings-window,#graph-modal,#rail-flyout,
 #data-menu,#log-overlay,#ingr-detail-popup,#globe-mini,.settings-float) {
 --tx:var(--glass-ink); --tb:var(--glass-ink); --td:var(--glass-muted);
 --bg:var(--glass-surface); --sf:var(--glass-chrome); --pn:var(--glass-raised);
 --bd:var(--glass-edge); --ac:var(--glass-focus); --a2:var(--glass-focus);
 --rect-bg:var(--glass-surface); --rect-surface:var(--glass-raised);
 --rect-text:var(--glass-ink); --rect-muted:var(--glass-muted);
 --rect-border:var(--glass-edge); --rect-accent:var(--glass-warning);
 background:var(--glass-surface)!important; color:var(--glass-ink)!important;
 color-scheme:var(--glass-scheme); border-color:var(--glass-edge)!important;
 border-radius:var(--glass-radius)!important;
 box-shadow:var(--glass-inner),var(--glass-shadow)!important;
 font-family:TopoGlyph,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
 line-height:1.45;
}
[data-glass-ui] :is(.direction-lab-shell,.srlr-chart-inline) {
 border-radius:10px!important; box-shadow:var(--glass-inner)!important;
}
/* Reusable component scope includes tool windows even when moved under body. */
[data-glass-ui] :is(.glass-surface,.rectification-capabilities,.direction-lab-shell,
 .lsr-modal,.srlr-chart-window,.sph-nav-tool-content,[data-sphere-tool-window],
 [role="dialog"],[popover],#sphere-companion,#sphere-speculum,
 #sphere-direction-worksheet,#sphere-direction-list,#tables-panel,
 #research-panel,#info-box,#save-dialog,#library-modal,#admin-dialog,
 #bug-report-dialog,#settings-window,.settings-float) :where(button,select,input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),textarea,summary) {
 border-radius:var(--glass-control-radius)!important;
 border-color:var(--glass-edge)!important; color:var(--glass-ink)!important;
 background:var(--glass-raised)!important; text-shadow:none!important;
 -webkit-text-fill-color:currentColor;
 box-shadow:var(--glass-inner); font-family:inherit;
}
[data-glass-ui] :is(.glass-surface,.rectification-capabilities,.direction-lab-shell,
 .lsr-modal,.srlr-chart-window,[data-sphere-tool-window],[role="dialog"],[popover],
 #sphere-companion,#sphere-speculum,#sphere-direction-worksheet,#sphere-direction-list,
 #tables-panel,#save-dialog,#library-modal,#admin-dialog,#bug-report-dialog)
 :is(select,option,optgroup,input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),textarea) {
 background:var(--glass-field)!important; color:var(--glass-field-ink)!important;
 -webkit-text-fill-color:var(--glass-field-ink)!important; color-scheme:var(--glass-scheme);
}
[data-glass-ui] :is(.glass-surface,.rectification-capabilities,.direction-lab-shell,
 .lsr-modal,.srlr-chart-window,[data-sphere-tool-window],[role="dialog"],[popover],
 #sphere-speculum,#sphere-direction-worksheet,#sphere-direction-list,#tables-panel)
 :is(input,textarea)::placeholder { color:#52657c!important; opacity:1; }
[data-glass-ui] :is(.glass-surface,.rectification-capabilities,.direction-lab-shell,
 .lsr-modal,.srlr-chart-window,[data-sphere-tool-window],[role="dialog"],[popover],
 #sphere-companion,#sphere-speculum,#sphere-direction-worksheet,#sphere-direction-list,
 #tables-panel) :is(button.is-active,button[aria-pressed="true"],button[aria-expanded="true"]) {
 background:var(--glass-selected)!important; color:var(--glass-selected-ink)!important;
 -webkit-text-fill-color:var(--glass-selected-ink)!important;
 border-color:var(--glass-selected)!important; text-shadow:none!important;
 box-shadow:inset 0 0 0 1px #ffffff44!important; font-weight:650;
}
[data-glass-ui] :is(.glass-surface,.rectification-capabilities,.direction-lab-shell,
 .lsr-modal,[data-sphere-tool-window],[role="dialog"],[popover],#sphere-companion,
 #sphere-direction-list,#sphere-speculum,#sphere-direction-worksheet,#tables-panel)
 :is(button,input,select,textarea,summary,a):focus-visible {
 outline:3px solid var(--glass-focus)!important; outline-offset:3px!important;
}
[data-glass-ui] :is(.lsr-panel,.lsr-modal,.rectification-capabilities)
 :is(p,span,label,legend,summary,th,td,h2,h3) {
 color:var(--glass-ink)!important;
}
[data-glass-ui] :is(.lsr-panel,.lsr-modal,.rectification-capabilities)
 :is(.lsr-note,.lsr-calibration,.lsr-warn,.rectification-capabilities-warning,.glass-note) {
 background:var(--glass-warning-bg)!important; color:var(--glass-warning)!important;
 border-color:var(--glass-warning)!important; border-radius:8px;
}
[data-glass-ui] :is(.lsr-panel,.lsr-modal,.glass-surface) .lsr-error {
 background:var(--glass-error-bg)!important; color:var(--glass-error)!important;
 border-color:var(--glass-error)!important;
}
[data-glass-ui] :is(.lsr-panel,.rectification-capabilities)
 :is(.lsr-inline,.lsr-status,.lsr-empty,.lsr-cap,.lsr-suggestion,.rectification-capabilities-note,.rectification-capabilities-badge) {
 color:var(--glass-muted)!important; opacity:1!important;
}
[data-glass-ui] :is(.glass-toolbar,.lsr-head,.dlab-panel-heading,.sphere-tool-header,
 #sphere-direction-worksheet>header,#sphere-direction-list>header,#sphere-speculum>header) {
 background:var(--glass-chrome)!important; color:var(--glass-ink)!important;
 border-color:var(--glass-edge)!important;
 border-radius:var(--glass-radius) var(--glass-radius) 0 0!important;
 box-shadow:var(--glass-inner)!important;
}
[data-glass-ui] :is(.glass-data,.lsr-table,.speculum-table,
 #sphere-direction-list table,#sphere-direction-worksheet table,#sphere-speculum table,#tables-panel table) {
 color:var(--glass-ink); font-variant-numeric:tabular-nums;
}
[data-glass-ui] :is(.glass-data,.lsr-table,.speculum-table,
 #sphere-direction-list table,#sphere-direction-worksheet table,#sphere-speculum table,#tables-panel table) th {
 background:var(--glass-chrome)!important; color:var(--glass-ink)!important;
 border-color:var(--glass-edge)!important;
}
[data-glass-ui] :is(.glass-data,.lsr-table,.speculum-table,
 #sphere-direction-list table,#sphere-direction-worksheet table,#sphere-speculum table,#tables-panel table)
 :is(tr.current-time,tr.is-active,tr[aria-selected="true"]) td {
 background:var(--glass-row)!important; color:var(--glass-row-ink)!important;
 border-color:var(--glass-focus)!important;
}
/* 2D charts retain renderer-owned glyph, planet color, geometry and SVG fill.
 * Only the surrounding panel and its controls receive the shared chrome. */
@supports ((backdrop-filter:blur(12px)) or (-webkit-backdrop-filter:blur(12px))) {
 [data-glass-ui] .glass-toolbar {
  background:color-mix(in srgb,var(--glass-chrome) 96%,transparent)!important;
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
 }
}
@media (prefers-reduced-transparency:reduce),(prefers-contrast:more) {
 [data-glass-ui] .glass-toolbar {
  background:var(--glass-chrome)!important;
  backdrop-filter:none!important; -webkit-backdrop-filter:none!important;
 }
}
@media (forced-colors:active) {
 [data-glass-ui], [data-glass-ui][data-glass-theme="dark"] { --glass-surface:Canvas; --glass-raised:Canvas; --glass-chrome:Canvas;
  --glass-ink:CanvasText; --glass-muted:CanvasText; --glass-edge:ButtonText;
  --glass-field:Field; --glass-field-ink:FieldText; --glass-selected:Highlight;
  --glass-selected-ink:HighlightText; --glass-focus:Highlight;
  --glass-row:Highlight; --glass-row-ink:HighlightText;
  --glass-warning:CanvasText; --glass-warning-bg:Canvas;
  --glass-error:CanvasText; --glass-error-bg:Canvas; }
}

/* Narrow viewports: data belongs in the existing inner scroller, not outside
 * the floating window. Drag position is still managed by SphereToolWindow. */
@media (max-width:600px) {
 [data-glass-ui] :is(.lsr-panel,.lsr-modal,.rectification-capabilities,#tables-panel,
  #sphere-direction-worksheet,#sphere-speculum,#sphere-direction-list,.glass-surface) {
  box-sizing:border-box; max-inline-size:calc(100vw - 24px)!important;
  min-inline-size:min(280px,calc(100vw - 24px))!important;
 }
 [data-glass-ui] :is(.lsr-body,.lsr-scroll,.lsr-results,.rectification-capabilities) {
  min-inline-size:0; max-inline-size:100%;
 }
 [data-glass-ui] :is(.lsr-scroll,#tables-panel) { overflow-x:auto; }
 [data-glass-ui] :is(.lsr-row,.lsr-research,.lsr-head,.glass-toolbar) {
  flex-wrap:wrap; overflow-wrap:anywhere;
 }
[data-glass-ui] :is(.lsr-note,.lsr-calibration,.lsr-error,.lsr-status) { overflow-wrap:anywhere; }

/* Master rectification stays a compact action in the Lab row; its research
   content opens beneath the controls with its own readable measure. */
[data-glass-ui] .rectification-dock {
  display:block; width:min(100% - 16px, 760px); max-width:760px; min-width:0;
  margin:5px 8px 8px; padding:0; border:1px solid var(--glass-border);
  border-radius:14px; background:var(--glass-surface); color:var(--glass-ink);
  box-shadow:var(--glass-shadow); overflow:hidden;
}
[data-glass-ui] .rectification-dock[hidden] { display:none !important; }
[data-glass-ui] .rectification-dock > .rectification-capabilities {
  margin:0; border:0; border-radius:0; background:transparent;
  max-height:min(52vh,520px); overflow:auto;
}
[data-glass-ui] .dlab-actions > .rectification-capabilities-toggle {
  flex:0 0 auto; margin-left:2px;
}
@media (max-width:600px) {
  [data-glass-ui] .rectification-dock { width:calc(100% - 8px); margin:4px; }
}
}

[data-glass-ui] :is(.lsr-panel,.lsr-modal,.rectification-capabilities)
 :is(.lsr-note,.lsr-calibration,.lsr-warn,.lsr-error,.rectification-capabilities-warning)
 :is(p,span,strong,em) { color:inherit!important; }

/* Master rectification stays a compact action in the Lab row; its research
   content opens beneath the controls with its own readable measure. */
[data-glass-ui] .rectification-dock {
 display:block; width:min(100% - 16px,760px); max-width:760px; min-width:0;
 margin:5px 8px 8px; padding:0; border:1px solid var(--glass-edge);
 border-radius:14px; background:var(--glass-surface); color:var(--glass-ink);
 box-shadow:var(--glass-shadow); overflow:hidden;
}
[data-glass-ui] .rectification-dock[hidden] { display:none!important; }
[data-glass-ui] .rectification-dock > .rectification-capabilities {
 margin:0; border:0; border-radius:0; background:transparent;
 max-height:min(52vh,520px); overflow:auto;
}
[data-glass-ui] .dlab-actions > .rectification-capabilities-toggle {
 flex:0 0 auto; margin-left:2px;
}
@media (max-width:600px) {
 [data-glass-ui] .rectification-dock { width:calc(100% - 8px); margin:4px; }
}
