/* Observatory-only layout; colour and type tokens come from research/research.css. */
.obs-body { background:var(--bg); line-height:1.65; }
.obs-body::before { display:none; }
.obs-body a { text-decoration:underline; text-underline-offset:.22em; }
.obs-body a:hover { color:var(--accent); }
.obs-body :focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.obs-mast,.obs-main,.obs-footer { width:min(1120px,calc(100% - 3rem)); margin-inline:auto; }
.obs-mast { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:1rem; padding:1.25rem 0; border-bottom:1px solid var(--line-strong); font-size:.88rem; }
.obs-brand { font-weight:600; } .obs-brand span { display:block; color:var(--text-dim); font-size:.78rem; }
.obs-heading { max-width:820px; padding:3.5rem 0 2rem; }
.obs-eyebrow { color:var(--gold); text-transform:uppercase; letter-spacing:.16em; font-size:.78rem; }
.obs-heading h1 { font-family:var(--font-display); font-weight:500; font-size:clamp(2.25rem,5vw,4.1rem); line-height:1.08; letter-spacing:-.035em; margin:.7rem 0 1rem; text-wrap:balance; overflow-wrap:anywhere; }
.obs-lede { color:var(--text-dim); max-width:42rem; font-size:1.12rem; }
.obs-meta,.obs-muted { color:var(--text-dim); font-size:.875rem; }
.obs-nav { display:flex; flex-wrap:wrap; gap:.25rem 1.4rem; border-bottom:1px solid var(--line-strong); margin-bottom:1.8rem; }
.obs-nav a { display:block; padding:.75rem .1rem; text-decoration:none; }
.obs-nav [aria-current] { border-bottom:3px solid var(--accent); font-weight:600; }
.obs-filter { max-width:32rem; margin-bottom:2rem; }
.obs-filter label { display:block; margin-bottom:.4rem; font-size:.9rem; }
.obs-filter div { display:flex; gap:.5rem; }
.obs-filter input,.obs-filter select { min-width:0; max-width:100%; width:100%; background:var(--panel); border:1px solid var(--line-strong); border-radius:3px; padding:.7rem; color:var(--text); font:inherit; }
.obs-filter .obs-facets { flex-wrap:wrap; margin-top:.8rem; }
.obs-facets label { flex:1 1 12rem; min-width:0; }
.obs-filter button { background:var(--accent); color:var(--panel); border:0; padding:.7rem 1.1rem; border-radius:3px; font:inherit; cursor:pointer; }
.obs-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; align-items:start; }
.obs-card { padding:1.5rem; background:var(--panel-soft); border:1px solid var(--line-strong); border-top:3px solid var(--accent); border-radius:4px; min-width:0; overflow-wrap:anywhere; }
.obs-card h2,.obs-card h1,.obs-prose h2,.obs-empty h2 { font-family:var(--font-display); line-height:1.25; font-weight:500; font-size:1.6rem; margin:.75rem 0; }
.obs-card h2 a { text-decoration:none; }
.obs-card h2 a:hover { text-decoration:underline; }
.obs-status { font-size:.83rem; color:var(--text-dim); border-bottom:1px solid var(--line); padding-bottom:.9rem; }
.obs-card summary { cursor:pointer; font-size:.85rem; color:var(--accent); }
.obs-card dl { font-size:.8rem; } .obs-card dt { font-weight:600; } .obs-card dd { margin:0 0 .7rem; }
.obs-hash { overflow-wrap:anywhere; }
.obs-warning,.obs-fixture { background:var(--panel-tint); border-left:4px solid var(--gold); padding:1rem 1.2rem; margin:1rem 0; font-size:.9rem; overflow-wrap:anywhere; }
.obs-fixture { margin:0; border-left:0; border-bottom:1px solid var(--gold); text-align:center; }
.obs-warning p { margin:.5rem 0 0; }
.obs-empty { grid-column:1/-1; border:1px solid var(--line-strong); padding:2rem; background:var(--panel-soft); }
.obs-empty p { max-width:42rem; }
.obs-prose { max-width:46rem; } .obs-prose h2 { margin-top:2rem; }
.obs-footer { border-top:1px solid var(--line-strong); margin-top:3rem; padding:1.5rem 0 2.5rem; font-size:.85rem; color:var(--text-dim); }
.obs-footer nav { display:flex; flex-wrap:wrap; gap:.6rem 1.4rem; }
.obs-skip { position:absolute; left:1rem; top:-10rem; background:var(--panel); padding:.75rem; z-index:10; }
.obs-skip:focus { top:1rem; }
@media(max-width:640px) { .obs-mast,.obs-main,.obs-footer { width:calc(100% - 2rem); } .obs-mast { align-items:flex-start; font-size:.8rem; } .obs-heading { padding:2rem 0 1rem; } .obs-grid { grid-template-columns:1fr; } .obs-card { padding:1.15rem; } .obs-nav { gap:.2rem 1rem; } }
@media(prefers-reduced-motion:reduce) { .obs-body { scroll-behavior:auto; } .obs-body * { transition:none; animation:none; } }
