/* Ishtar bureau design system — 1980s engineering-datasheet register,
   black + white base, red primary (state/signal) + pink secondary (soft accent).
   One source of truth for the marketing surfaces (one-pager, /talk, /dashboard). */
/* Aligned to the one-pager design system (marketing/index.html): WHITE light / dimmed dark,
   strictly black + white + red (no pink, no beige), Archivo body + Geist Mono labels. */
:root{ /* light is the default — white base */
  --bg:#fff; --fg:#0a0a0a; --mut:#6a6a6a; --line:#0a0a0a; --soft:rgba(10,10,10,.16); --card:#fff;
  --red:#e10600; --pink:#e10600; --on-red:#fff; --bg-dim:#fff;
  /* Sheet geometry — Ishtar's row in the estate table. One number, one place.
     The property used to ship two sheet widths for one brand: 880 here and
     1180 on the one-pager, so the masthead of / and the masthead of /window
     were different documents. 928 is Ishtar's assigned width; every surface
     reads it from here. */
  --sheet:928px; --margin:24px; --gutter:24px;
}
:root[data-theme="dark"]{
  --bg:#161616; --fg:#ececec; --mut:#9a9a9a; --line:#ececec; --soft:rgba(236,236,236,.15); --card:#1c1c1c;
  --red:#ff3636; --pink:#ff3636; --on-red:#fff; --bg-dim:#161616;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#161616; --fg:#ececec; --mut:#9a9a9a; --line:#ececec; --soft:rgba(236,236,236,.15); --card:#1c1c1c;
  --red:#ff3636; --pink:#ff3636; --on-red:#fff; --bg-dim:#161616;
}}
*{ box-sizing:border-box; }
html,body{ margin:0; background:var(--bg-dim); color:var(--fg);
  font-family:"Archivo",system-ui,-apple-system,sans-serif; font-size:14px; line-height:1.5; -webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums; }
/* Geist Mono datasheet voice for labels, marks, codes, numbers, controls */
.docstrip,.reg,.partno,.mark,.toggle,.live-tag,.pill,.demoflag,.who,.k,.btn,.act,.modes button,.livebar .lbl,.stat .v,.bar{ font-family:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace; }
a{ color:var(--fg); text-decoration:none; }
a:hover{ color:var(--red); }
b{ font-weight:600; }
/* Central body column floats lighter on a dimmed page (margins darker than the column). */
.wrap{ max-width:var(--sheet); margin:0 auto; padding:0 var(--margin); background:var(--bg); border-left:1.5px solid var(--line); border-right:1.5px solid var(--line); min-height:100vh; }
/* Scroll indicator — hints there is more below the fold. */
.scrollhint{ display:flex; align-items:center; justify-content:center; gap:.6rem; margin:1.6rem 0 .2rem; color:var(--mut); font-size:11px; letter-spacing:.2em; text-transform:uppercase; }
.scrollhint .ar{ color:var(--red); animation:bob 1.5s ease-in-out infinite; }
@keyframes bob{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(5px)} }
hr{ border:0; border-top:1px solid var(--line); margin:2.2rem 0; }

/* document strip — the bureau header */
.docstrip{ display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap;
  border-bottom:1px solid var(--line); padding:.6rem 0; font-size:11px; letter-spacing:.14em; color:var(--mut); text-transform:uppercase; }
.docstrip .tick{ color:var(--red); }
.live-tag{ display:inline-flex; align-items:center; gap:7px; color:var(--pink); }
/* .dot is a BULLET — a 7px square that marks a cell. It asserts nothing, and
   it does not move. Eight of the eleven cells that carry it make no liveness
   claim at all (/play states "not a live feed" in the very same cell), so they
   keep the mark and lose a pulse they were never entitled to.
   .dot--live is the only form that claims a feed is alive, and therefore the
   only one that animates. Exactly three cells in the property carry it:
   /dashboard, /heartbench, /window. */
.dot{ width:7px; height:7px; background:var(--red); display:inline-block; flex:0 0 auto; }
.dot--live{ animation:pulse 2s infinite; }
/* A live mark must be able to be wrong: stale and dead render as ink, unmoving,
   so a dead feed can never paint the same pixels as a healthy one. */
.dot--live[data-state="stale"],.dot--live[data-state="dead"],.dot--live[data-state="unknown"]{ background:var(--fg); animation:none; }
@keyframes pulse{ 0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--red) 50%,transparent)} 70%{box-shadow:0 0 0 7px transparent} 100%{box-shadow:0 0 0 0 transparent} }

.topbar{ display:flex; justify-content:space-between; align-items:center; padding:1rem 0 0; }
.toggle{ border:1px solid var(--line); background:transparent; color:var(--mut); font:inherit; font-size:12px; padding:.3rem .65rem; cursor:pointer; letter-spacing:.08em; }
.toggle:hover{ color:var(--fg); border-color:var(--red); }

.reg{ color:var(--mut); font-size:11px; letter-spacing:.18em; text-transform:uppercase; }
.partno{ color:var(--mut); font-size:11px; letter-spacing:.2em; text-transform:uppercase; }
.mark{ font-size:clamp(2.6rem,9vw,4.2rem); font-weight:700; letter-spacing:.03em; margin:.4rem 0 0; line-height:1; }
.mark .hx{ color:var(--red); }
.tag{ font-size:clamp(1rem,2.4vw,1.2rem); margin:.9rem 0 0; max-width:40ch; }
.sub{ margin:1rem 0 0; color:var(--mut); max-width:62ch; }
.sub b{ color:var(--fg); font-weight:600; }

.pills{ margin-top:1.3rem; display:flex; gap:.5rem; flex-wrap:wrap; }
.pill{ border:1px solid var(--line); padding:.25rem .6rem; font-size:10.5px; color:var(--mut); text-transform:uppercase; letter-spacing:.12em; }
.pill.hot{ border-color:var(--red); color:var(--pink); }

/* specifications datasheet block */
.spec{ border:1px solid var(--line); margin-top:1.4rem; }
.spec .head{ font-size:10.5px; letter-spacing:.16em; color:var(--mut); border-bottom:1px solid var(--line); padding:.5rem .85rem; text-transform:uppercase; }
.spec table{ width:100%; border-collapse:collapse; font-size:12.5px; }
.spec td{ padding:.5rem .85rem; border-bottom:1px solid var(--soft); }
.spec tr:last-child td{ border-bottom:0; }
.spec td:first-child{ color:var(--mut); text-transform:uppercase; letter-spacing:.08em; font-size:11px; }
.spec td:last-child{ text-align:right; }
.spec .state{ color:var(--red); }

/* live metrics bar */
.livebar{ display:inline-flex; align-items:center; gap:.65rem; margin-top:1.4rem; border:1px solid var(--line); background:var(--card); padding:.5rem .9rem; font-size:13px; }
.livebar:hover{ border-color:var(--red); }
.livebar .lbl{ letter-spacing:.16em; font-size:11px; color:var(--mut); }
.livebar #lv{ color:var(--mut); } .livebar #lv b{ color:var(--fg); }

/* entry cards */
.fork{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-top:.5rem; }
@media(max-width:560px){ .fork{ grid-template-columns:1fr; } }
.card{ border:1px solid var(--line); background:var(--card); padding:1.3rem; display:block; }
.card.h{ border-top:2px solid var(--red); }
.card.a{ border-top:2px solid var(--pink); }
.card:hover{ border-color:var(--fg); }
.card .doc{ font-size:10px; letter-spacing:.18em; color:var(--mut); text-transform:uppercase; }
.card h3{ margin:.45rem 0 .35rem; font-size:1.05rem; }
.card p{ margin:0; color:var(--mut); font-size:13px; }
.card .go{ margin-top:.8rem; color:var(--pink); }

/* actions */
.actions{ display:flex; gap:1rem; flex-wrap:wrap; align-items:center; margin-top:1.5rem; }
.btn{ border:1px solid var(--fg); padding:.55rem 1rem; display:inline-block; }
.btn:hover{ background:var(--fg); color:var(--bg); }
.btn.primary{ background:var(--red); border-color:var(--red); color:var(--on-red); font-weight:600; }
.btn.primary:hover{ background:var(--pink); border-color:var(--pink); color:var(--on-red); }
.link-pink{ color:var(--pink); }

/* caution stripe + imprint footer */
.stripe{ height:6px; margin-top:2.2rem; background-image:repeating-linear-gradient(135deg,var(--red) 0 9px,transparent 9px 18px); }
.imprint{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:.6rem; padding:1rem 0 3.5rem; font-size:10.5px; letter-spacing:.1em; color:var(--mut); text-transform:uppercase; }
/* site-wide footer subscribe form + dual RSS (appears on every page, above the imprint) */
.foot-sub{ padding:1.2rem 0 .2rem; color:var(--mut); }
.foot-sub a{ color:var(--mut); text-decoration:underline; }
.foot-sub a:hover{ color:var(--red); }
.foot-sub-copy{ margin:0 0 .3rem; font-size:.95em; line-height:1.45; max-width:62ch; }
.foot-sub-copy b{ color:var(--fg); font-weight:600; }
.foot-sub-form{ margin:0; }
.foot-sub-row{ display:flex; flex-direction:column; align-items:stretch; gap:8px; width:100%; }
.foot-sub-input{ display:block; width:100%; min-width:12rem; flex:none; padding:10px 12px; border:1px solid currentColor; background:transparent; color:inherit; font:inherit; box-sizing:border-box; }
.foot-sub-input:focus-visible{ outline:2px solid var(--fg); outline-offset:2px; }
.foot-sub-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:stretch; width:100%; }
.cf-turnstile,.cf-turnstile iframe{ display:block; width:100%; max-width:100%; }
.foot-sub-btn{ padding:10px 18px; border:1px solid currentColor; background:transparent; color:inherit; font:inherit; cursor:pointer; white-space:nowrap; }
.foot-sub-btn:hover,.foot-sub-btn:focus-visible{ border-color:var(--fg); color:var(--fg); }
.foot-sub-btn--xmtp{ font-family:"Geist Mono",ui-monospace,monospace; font-size:.92em; }
.foot-sub-btn--xmtp:hover,.foot-sub-btn--xmtp:focus-visible{ color:var(--red); border-color:var(--red); }
.foot-sub-btn--xmtp:disabled{ opacity:.55; cursor:default; }
.foot-sub-status{ font-family:"Geist Mono",ui-monospace,monospace; font-size:12px; margin:.35rem 0 0; min-height:1.2em; }
.foot-sub-status.is-ok{ color:var(--fg); }
.foot-sub-status.is-err{ color:var(--red); }
.foot-sub-rss{ margin:.4rem 0 0; font-size:.9em; opacity:.85; line-height:1.4; }
@media(max-width:640px){
  .foot-sub-row{ flex-direction:column; }
  .foot-sub-actions{ display:grid; grid-template-columns:1fr 1fr; width:100%; }
  .foot-sub-actions .foot-sub-btn{ width:100%; white-space:normal; }
}
@media(max-width:400px){
  .foot-sub-actions{ grid-template-columns:1fr; }
}

/* generic section heading + steps + priv grid (one-pager) */
.steps{ counter-reset:s; margin:0; padding:0; list-style:none; }
.steps li{ counter-increment:s; padding:.55rem 0 .55rem 2.4rem; position:relative; border-top:1px solid var(--line); }
.steps li:before{ content:counter(s,decimal-leading-zero); position:absolute; left:0; top:.55rem; color:var(--red); }
.priv{ display:grid; grid-template-columns:1fr 1fr; gap:.3rem 1.6rem; margin-top:1rem; }
@media(max-width:560px){ .priv{ grid-template-columns:1fr; } }
.priv div{ padding:.5rem 0; border-top:1px solid var(--line); font-size:13px; color:var(--mut); }
.priv b{ color:var(--fg); font-weight:600; }
.frow{ display:flex; gap:2.2rem; flex-wrap:wrap; }
.frow h4{ margin:0 0 .55rem; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--fg); font-weight:600; }
.frow a{ display:block; color:var(--mut); font-size:12.5px; padding:.14rem 0; }
.frow a:hover{ color:var(--pink); }

/* ── filed-document furniture — masthead, section rules, spec grid, tables,
      footnotes, perforation + colophon. Same tokens, same register. ─────── */

/* masthead — the document header box: meta row / title block / bottom meta row */
.mast{ border:1.5px solid var(--line); background:var(--card); margin-top:1.1rem; }
.mast .mrow{ display:flex; flex-wrap:wrap; justify-content:space-between; border-bottom:1px solid var(--line); }
.mast .mrow.mfoot{ border-bottom:0; border-top:1px solid var(--line); }
.mast .mcell{ font-family:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace; font-size:10.5px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--mut); padding:.5rem .85rem; border-right:1px solid var(--line); flex:1 1 auto; min-width:0; }
.mast .mrow .mcell:last-child{ border-right:0; }
.mast .mcell b{ color:var(--fg); font-weight:600; }
.mast .mcell .tick{ color:var(--red); }
.mast .mtitle{ display:flex; justify-content:space-between; align-items:center; gap:1.2rem; flex-wrap:wrap; padding:1.05rem .9rem 1.2rem; }
.mast .mtitle .mark{ margin:.15rem 0 0; }
/* the one rotated element on the page — the filing stamp */
.stamp{ flex:none; display:inline-block; border:1.5px solid var(--red); color:var(--red);
  font-family:"Geist Mono",ui-monospace,monospace; font-size:11px; letter-spacing:.22em; text-transform:uppercase;
  padding:.3rem .7rem; transform:rotate(-1.6deg); white-space:nowrap; }

/* section heading — tiny uppercase, bottom rule, flush-right section number */
.sechead{ display:flex; justify-content:flex-start; align-items:baseline; gap:1rem; flex-wrap:wrap;
  border-bottom:1.5px solid var(--line); padding-bottom:.4rem; margin:2.4rem 0 .9rem;
  font-family:"Geist Mono",ui-monospace,monospace; font-size:11.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--fg); font-weight:600; }
.sechead h2, .sechead h3{ font:inherit; letter-spacing:inherit; margin:0; }
.secno{ font-family:"Geist Mono",ui-monospace,monospace; color:var(--mut); font-weight:400; font-size:11px; letter-spacing:.14em; margin-left:auto; }

/* spec grid — key stats in a ruled frame */
.specgrid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); border:1.5px solid var(--line); background:var(--card); margin-top:1rem; }
.specgrid .cell{ border:1px solid var(--soft); min-height:5.2rem; padding:.6rem .75rem; }
.specgrid .cell .k{ font-family:"Geist Mono",ui-monospace,monospace; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--mut); }
.specgrid .cell .v{ font-size:17px; font-weight:700; margin-top:.25rem; font-variant-numeric:tabular-nums; }
.specgrid .cell .a{ font-size:11px; color:var(--mut); margin-top:.2rem; line-height:1.45; }

/* fully-ruled document table — th on the soft tone, numeric columns right-set */
.tablewrap{ overflow-x:auto; margin-top:1rem; }
.dtable{ width:100%; border-collapse:collapse; font-size:13px; }
.dtable th,.dtable td{ border:1px solid var(--line); padding:.5rem .65rem; text-align:left; vertical-align:top; }
.dtable th{ font-family:"Geist Mono",ui-monospace,monospace; font-size:10.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--mut); font-weight:500; background:var(--soft); }
.dtable .num{ text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }

/* footnotes — † and ‡, dim, small */
.fnote{ font-size:11.5px; color:var(--mut); line-height:1.6; margin-top:.9rem; }
.fnote .dag, .dag{ color:var(--red); }

/* perforation bar + colophon — every page ends filed */
.perf{ height:10px; margin-top:1.6rem; background-image:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 12px); }
.colophon{ display:flex; justify-content:space-between; gap:.6rem 1.4rem; flex-wrap:wrap;
  border-top:1.5px solid var(--line); margin-top:.6rem; padding:.6rem 0 2.8rem;
  font-family:"Geist Mono",ui-monospace,monospace; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--mut); }
.colophon a{ color:var(--mut); }

/* Site-wide link popups (popups.js). Hover a link -> annotation card. */
.lp{ position:absolute; z-index:9999; max-width:340px; width:max-content; border:1.5px solid var(--line); background:var(--card); color:var(--fg); box-shadow:5px 5px 0 var(--red); padding:.7rem .85rem; font-family:"Archivo",system-ui,-apple-system,sans-serif; opacity:0; transform:translateY(4px); transition:opacity .12s,transform .12s; pointer-events:none; }
.lp.show{ opacity:1; transform:translateY(0); pointer-events:auto; }
.lp .lp-k{ font-family:"Geist Mono",ui-monospace,monospace; font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--red); }
.lp .lp-t{ font-weight:700; font-size:14px; line-height:1.25; margin:.15rem 0 .3rem; color:var(--fg); }
.lp .lp-d{ font-size:12.5px; line-height:1.5; color:var(--mut); }
.lp a.lp-o{ display:inline-block; margin-top:.5rem; font-family:"Geist Mono",ui-monospace,monospace; font-size:11px; letter-spacing:.04em; color:var(--red); border:0; }
.lp a.lp-o:hover{ text-decoration:underline; }
/* ── motion gate ──────────────────────────────────────────────────────────
   Every animation on this property is decorative: the liveness pulse, the
   scroll-hint bob, the popup fade. None of them carries information a reader
   loses by holding still. One gate, applied to everything, so a new keyframe
   cannot ship ungated by accident. */
@media (prefers-reduced-motion:reduce){
  .lp{ transition:none; }
  *,*::before,*::after{
    animation-duration:.01ms!important; animation-iteration-count:1!important;
    transition-duration:.01ms!important; scroll-behavior:auto!important; }
}
