/* Object Browser (object-browser.js; new-object plan section 4, lane C). Right-panel idiom: o-pill / o-seg controls,
 * --ui-font, theme anchors only (--tx --tb --td --bd --pn --sf --bg --ac --a2), so Day / Night / every theme and the glass
 * skin recolour it live. Family colours arrive as --fam-* custom properties on .obr (OsirisBodyFamilies.cssVars).
 * Every selector is prefixed html:not(#o) so the app's legacy blanket button / input rules do not reach in. */
html:not(#o) .obr{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--tx);font:400 12px/1.35 var(--ui-font,system-ui,sans-serif)}
html:not(#o) .obr-head{display:flex;flex-direction:column;gap:6px;position:sticky;top:0;z-index:1;padding:2px 0 6px;
  background:var(--glass-surface,var(--sf,var(--pn)));border-bottom:1px solid color-mix(in srgb,var(--bd) 60%,transparent)}
html:not(#o) .obr-head-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
html:not(#o) .obr-search{flex:1 1 160px;min-width:0;box-sizing:border-box;height:28px;padding:3px 9px;border:1px solid var(--bd);border-radius:8px;
  background:var(--bg);color:var(--tx);font:400 12px/1.2 var(--ui-font,system-ui,sans-serif);box-shadow:none;background-image:none}
html:not(#o) .obr-search::placeholder{color:var(--td);opacity:1}
html:not(#o) .obr-search:focus-visible{outline:2px solid var(--a2);outline-offset:1px;border-color:var(--ac)}
html:not(#o) .obr-filter>button[aria-pressed=true]{background:var(--o-active-bg,#000);color:var(--o-active-fg,#fff)}
html:not(#o) .obr-summary{font-size:11px;color:var(--td)}
html:not(#o) .obr-origin:empty,html:not(#o) .obr-hint:empty{display:none}
html:not(#o) .obr-origin,html:not(#o) .obr-hint{margin:0;font-size:var(--fs-caption);color:var(--td)}

/* presets: a pill that opens an inline pill list */
html:not(#o) .obr-presets{position:relative}
html:not(#o) .obr-preset-list[hidden]{display:none}
html:not(#o) .obr-preset-list{position:absolute;right:0;top:calc(100% + 4px);z-index:5;display:flex;flex-direction:column;align-items:stretch;gap:3px;
  min-width:190px;padding:6px;border:1px solid var(--bd);border-radius:10px;background:var(--pn);box-shadow:0 8px 24px rgba(0,0,0,.28)}
html:not(#o) .obr-preset-list .o-pill{justify-content:flex-start}

/* tree: one flat list of treeitems (aria-level), every row the same height so a long list can be virtualised
   (object-browser.js reads --obr-row-h; past 150 rows only the rows in view are in the DOM, placed absolutely) */
html:not(#o) .obr-tree{--obr-row-h:26px;display:flex;flex-direction:column;min-width:0}
html:not(#o) .obr-tree.is-virtual{display:block;position:relative;contain:strict;width:100%}
html:not(#o) .obr-tree.is-virtual>.obr-node{position:absolute;left:0;right:0}
html:not(#o) .obr-node{outline:none;min-width:0}
html:not(#o) .obr-row{display:flex;align-items:center;gap:6px;min-width:0;box-sizing:border-box;height:var(--obr-row-h);padding:1px 4px;border-radius:6px;cursor:pointer;
  padding-left:calc(4px + (var(--obr-level,1) - 1) * 14px)}
html:not(#o) .obr-node[aria-level="1"]>.obr-row{--obr-level:1}
html:not(#o) .obr-node[aria-level="2"]>.obr-row{--obr-level:2}
html:not(#o) .obr-node[aria-level="3"]>.obr-row{--obr-level:3}
html:not(#o) .obr-node[aria-level="4"]>.obr-row{--obr-level:4}
html:not(#o) .obr-node[aria-level="5"]>.obr-row{--obr-level:5}
html:not(#o) .obr-row:hover{background:color-mix(in srgb,var(--tx) 7%,transparent)}
html:not(#o) .obr-node:focus-visible>.obr-row{outline:2px solid var(--a2);outline-offset:-2px}
html:not(#o) .obr-node--item[aria-selected=true]>.obr-row{background:color-mix(in srgb,var(--ac) 18%,transparent);box-shadow:inset 2px 0 0 var(--ac)}
html:not(#o) .obr-row--group{font-weight:600;color:var(--tb,var(--tx))}
html:not(#o) .obr-node[aria-level="1"]>.obr-row--group{border-top:1px solid color-mix(in srgb,var(--bd) 45%,transparent);border-radius:0 0 6px 6px}
html:not(#o) .obr-caret{flex:none;width:10px;font-size:var(--fs-caption);color:var(--td);text-align:center}
html:not(#o) .obr-tri{flex:none;margin:0;width:14px;height:14px;accent-color:var(--ac);cursor:pointer}
html:not(#o) .obr-glyph{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;font-size:15px;line-height:1}
html:not(#o) .obr-glyph svg{display:block;width:16px;height:16px}
html:not(#o) .obr-glyph.obr-glyph--tag{width:30px;font-size:var(--fs-caption);font-weight:600;letter-spacing:-.01em;justify-content:flex-start}
html:not(#o) .obr-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html:not(#o) .obr-name{flex:1 1 auto;min-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html:not(#o) .obr-count{flex:none;font-size:var(--fs-caption);font-weight:400;color:var(--td);font-variant-numeric:tabular-nums}
html:not(#o) .obr-meta{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-caption);color:var(--td);font-variant-numeric:tabular-nums}
html:not(#o) .obr-chip{flex:none;font-size:var(--fs-caption);line-height:1;padding:3px 6px;border-radius:999px;border:1px solid var(--bd);color:var(--td);white-space:nowrap}
html:not(#o) .obr-chip[data-status=available]{display:none}
html:not(#o) .obr-chip[data-status=file_missing],html:not(#o) .obr-chip[data-status=integrity]{border-color:color-mix(in srgb,#e05242 60%,var(--bd));color:var(--tx)}
html:not(#o) .obr-chip[data-status=out_of_coverage]{border-color:color-mix(in srgb,#e0a05a 60%,var(--bd));color:var(--tx)}
html:not(#o) .obr-chip[data-status=circumpolar],html:not(#o) .obr-chip[data-status=never_rises]{border-style:dashed}
html:not(#o) .obr-chip[data-status=fetchable]{border-style:dashed;border-color:color-mix(in srgb,var(--ac,#5a9be0) 70%,var(--bd));color:var(--tx)}
html:not(#o) button.obr-chip--fetch{background:none;font:inherit;font-size:var(--fs-caption);cursor:pointer}
html:not(#o) button.obr-chip--fetch:hover:not(:disabled){background:color-mix(in srgb,var(--ac,#5a9be0) 14%,transparent)}
html:not(#o) button.obr-chip--fetch:disabled{cursor:progress;opacity:.7}
html:not(#o) .obr-node.is-unavailable>.obr-row :is(.obr-name,.obr-meta,.obr-glyph){opacity:.5}
html:not(#o) .obr-togs{flex:none;display:inline-flex;align-items:center;gap:2px}
html:not(#o) .obr .obr-tog{--o-h:20px;flex:none;padding:1px 3px;font-size:var(--fs-caption);min-width:30px}
html:not(#o) .obr .obr-tog:not([aria-pressed=true]){color:var(--td)}
/* role toggles (Pro / Sig / Asc / Tgt): narrower; a row the role does not apply to keeps an invisible slot (aligned columns) */
html:not(#o) .obr .obr-tog.is-na{visibility:hidden}
html:not(#o) .obr .obr-tog[data-na=role]:disabled{opacity:.35}
html:not(#o) .obr-empty{margin:8px 4px;color:var(--td);font-size:11.5px}

/* Settings ▸ Chart Points: Classic | Browser switch */
html:not(#o) .obj-ui-switch{display:flex;align-items:center;gap:8px;margin:0 0 8px}
html:not(#o) .obj-ui-switch .obj-ui-note{font-size:var(--fs-caption);color:var(--td)}
html:not(#o) #obj-browser-host[hidden],html:not(#o) #obj-checks[hidden]{display:none}

/* filters row (magnitude slider, rises here, near the ecliptic) */
html:not(#o) .obr-filters[hidden]{display:none}
html:not(#o) .obr-filters{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 8px;border:1px solid color-mix(in srgb,var(--bd) 70%,transparent);
  border-radius:8px;background:color-mix(in srgb,var(--tx) 3%,transparent)}
html:not(#o) .obr-fl{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--tx);cursor:pointer;white-space:nowrap}
html:not(#o) .obr-fl input[type=checkbox]{margin:0;width:14px;height:14px;accent-color:var(--ac)}
html:not(#o) .obr-fl--mag{flex:1 1 100%;gap:8px}
html:not(#o) .obr-fl-text{flex:none;min-width:104px;font-variant-numeric:tabular-nums}
html:not(#o) input.obr-mag{flex:1 1 auto;min-width:80px;margin:0;accent-color:var(--ac);background:none;border:0;box-shadow:none;height:18px;padding:0}
html:not(#o) input.obr-beta{width:44px;height:22px;box-sizing:border-box;padding:1px 4px;border:1px solid var(--bd);border-radius:6px;background:var(--bg);color:var(--tx);
  font:400 11.5px/1 var(--ui-font,system-ui,sans-serif);font-variant-numeric:tabular-nums;box-shadow:none;background-image:none}
html:not(#o) .obr-fl-reset{margin-left:auto}
html:not(#o) .obr-fl-note{flex:1 1 100%;margin:0;font-size:var(--fs-caption);color:var(--td)}
html:not(#o) .obr-fl-note:empty{display:none}

/* info card (hover / long-press): on <body>, fixed, theme anchors only */
html:not(#o) .obr-card[hidden]{display:none}
html:not(#o) .obr-card{position:fixed;z-index:10050;width:280px;max-width:calc(100vw - 16px);box-sizing:border-box;padding:8px 10px;border:1px solid var(--bd);border-radius:10px;
  background:var(--pn);color:var(--tx);box-shadow:0 10px 28px rgba(0,0,0,.32);font:400 11.5px/1.4 var(--ui-font,system-ui,sans-serif);pointer-events:none}
html:not(#o) .obr-card-head{display:flex;align-items:flex-start;gap:8px;margin-bottom:6px}
html:not(#o) .obr-card-glyph{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:18px;line-height:1}
html:not(#o) .obr-card-glyph svg{display:block;width:20px;height:20px}
html:not(#o) .obr-card-name{font-weight:600;font-size:13px;color:var(--tb,var(--tx))}
html:not(#o) .obr-card-sub{font-size:var(--fs-caption);color:var(--td)}
html:not(#o) .obr-card-rows{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:0}
html:not(#o) .obr-card-rows dt{color:var(--td);font-size:var(--fs-caption);white-space:nowrap}
html:not(#o) .obr-card-rows dd{margin:0;min-width:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}

@media (max-width:700px){
  html:not(#o) .obr-tree{--obr-row-h:36px}
  html:not(#o) .obr .obr-tog{--o-h:30px;padding:2px 4px;min-width:32px}
  html:not(#o) .obr-meta{display:none}
  html:not(#o) .obr-hint{display:none}
}

/* ── Object views note (lane D, object-views.js): selected objects this view cannot draw, greyed, with the reason ── */
.obj-view-note{position:absolute;left:10px;top:44px;z-index:3;max-width:min(320px,calc(100% - 16px));padding:4px 7px;border-radius:6px;
  background:color-mix(in srgb,var(--pn) 88%,transparent);border:1px solid var(--bd);color:var(--td-ui,var(--td));font-size:11px;line-height:1.35;pointer-events:auto}
.obj-view-note[hidden]{display:none}
.obj-view-note[data-mode="helio"]{top:96px}                                   /* under the Orrery's header lines */
.obj-view-note[data-mode="unwrapped"],.obj-view-note[data-mode="polar"]{top:auto;bottom:40px;left:48px}   /* maps: above the status line */
.obj-view-note .ov-row{display:flex;align-items:center;gap:5px;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.obj-view-note .ov-row svg{flex:none;opacity:.8}
.obj-view-note .ov-name{color:var(--tx);opacity:.75}
.obj-view-note .ov-why::before{content:'\2014 ';opacity:.6}
.obj-view-note .ov-warn{color:var(--a2);margin-bottom:2px}
.obj-view-note .ov-dots,.obj-view-note .ov-more{opacity:.75}
#tooltip .ov-gl svg{vertical-align:-2px}
#tooltip .ov-kind{opacity:.7;font-size:.92em}
