/* ═════════════════════════════════════════════════════════════════════════
   onecheck.css — THE ONE CHECK, WHAT IS DUE (2026-09-29, phase 3)

   No new vocabulary. Every value below is one the Intercept, the Record and the
   moment sheets already use (DESIGN-CONSTITUTION §2–§11, css/moments.css):
     label     Manrope 400 13px ink3, sentence case               (.int-stamp, .am__label)
     the ask   Manrope 400 16px/1.5 ink, ≤46ch                    (.rc-act .rc-fx__q)
     the turn  Cormorant Garamond italic 500 1.08em #dff4ff, once (.int-verdict em)
     answers   quiet text exits, Manrope 500 14px ink2 → ink, 44px (.am__quiet, .int-quiet)
     options   tappable words inside one pill; a choice is ink, never a fill (#int-diff)
     separation  a hairline above, never a box (§4)
   Rhythm 2 · 6 · 18 · 30 · 36. Reveal: opacity and a 12px rise, once (§10).
   ═════════════════════════════════════════════════════════════════════════ */

/* ── the card: on the ground of the frame, a hairline above ─────────────── */
.oc{ width:min(100%, 494px); margin:30px auto 0; padding-top:18px; border-top:1px solid var(--hair, rgba(0,191,255,.10)); text-align:center; }
.oc[hidden]{ display:none; }
.oc.is-in{ animation:oc-in var(--dur-3,600ms) cubic-bezier(.2,.8,.2,1) both; }
@keyframes oc-in{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion:reduce){ .oc.is-in{ animation:none; } }
.oc__label{ margin:0; font:400 13px/1.4 var(--f-body); color:rgb(var(--ink3)); letter-spacing:0; text-transform:none; }
.oc__line{ margin:6px auto 0; max-width:46ch; font:400 16px/1.5 var(--f-body); color:rgb(var(--ink)); text-wrap:pretty; }
.oc__line em{ font:italic 500 1.08em var(--f-em); color:#dff4ff; letter-spacing:0; }
.oc__acts{ display:flex; justify-content:center; flex-wrap:wrap; gap:0 18px; margin-top:6px; }
.oc__q{ min-height:44px; padding:0 6px; border:0; background:none; cursor:pointer; border-radius:10px;
  font:500 14px var(--f-body); color:rgb(var(--ink2)); letter-spacing:0; text-transform:none; transition:color var(--dur-1,180ms) ease; }
.oc__q:hover{ color:rgb(var(--ink)); }
.oc__q:focus-visible{ outline:2px solid var(--ice2, #7FD3FF); outline-offset:3px; }
.oc__said{ margin:12px auto 0; max-width:46ch; font:400 14px/1.5 var(--f-body); color:rgb(var(--ink2)); }
/* Decide's bets: a line of her own words, no box, a wash on focus (§9, "no lines") */
.oc__bets{ display:flex; flex-direction:column; gap:6px; margin-top:12px; }
.oc__in{ width:100%; min-height:44px; padding:6px 14px; border:0; border-radius:12px; background:rgba(0,191,255,.035); outline:none;
  font:400 16px/1.4 var(--f-body); color:rgb(var(--ink)); text-align:center; transition:background var(--dur-1,180ms) ease; }
.oc__in::placeholder{ color:rgb(var(--ink3)); }
.oc__in:focus-visible{ background:rgba(0,191,255,.07); }

/* ── the kind of call, the third fact: unset reads as the question, quieter ── */
#int-kind-wrap .int-pill[data-kind=""].sel{ color:rgb(var(--ink3)); }
#int-kind-wrap .int-pill[data-kind=""].sel:hover{ color:rgb(var(--ink2)); }
/* three facts do not fit one line on a phone: the pill wraps, the words never cut (§11) */
@media (max-width:640px){
  #intercept-panel .int-stack > .int-facts:not(#int-diff){ flex-wrap:wrap; row-gap:0; padding:2px 14px; border-radius:18px; max-width:100%; }
  /* the separator before the kind becomes the line's end, so no dot is left stranded */
  #intercept-panel .int-dot--kind{ flex:0 0 100%; height:0; overflow:hidden; color:transparent; }
}

/* ── a bet the check asked for: her words go in a line of their own ───── */
.ic-b__in{ flex:1 1 auto; min-width:0; min-height:44px; padding:6px 10px; margin-left:-10px; border:0; border-radius:10px; background:rgba(0,191,255,.035); outline:none;
  font:400 14px/1.45 var(--f-body); color:rgb(var(--ink)); text-align:left; }
.ic-b__in::placeholder{ color:rgb(var(--ink3)); }
.ic-b__in:focus-visible{ background:rgba(0,191,255,.07); }
@media (max-width:520px){ .ic-b__in{ width:100%; margin-left:0; } }

/* ── when will you know: the close, the #int-diff pill with every word visible ── */
.oc-close{ display:flex; flex-direction:column; align-items:center; margin-top:30px; width:100%; }
.oc-close[hidden]{ display:none; }
.oc-close .oc-close__pill{ margin-top:6px; padding:0 16px; }
#int-close .int-pill{ display:inline-flex; align-items:center; padding:0 6px; min-height:44px; margin:-4px 0; color:rgb(var(--ink3)); transition:color .15s; }
#int-close .int-pill + .int-pill{ position:relative; margin-left:6px; }
#int-close .int-pill + .int-pill::before{ content:'·'; position:absolute; left:-7px; color:rgb(var(--ink3)); opacity:.6; pointer-events:none; }
#int-close .int-pill:hover{ color:rgb(var(--ink2)); }
#int-close .int-pill.sel{ color:rgb(var(--ink)); }
#int-close .int-pill:focus-visible{ outline:2px solid var(--ice2); outline-offset:3px; }

/* ── Why: the engine's candidates, labels in sentence case (§2; the uppercase keys
   below them are older and are not copied forward) ──────────────────────── */
.oc-why{ text-align:left; padding-bottom:6px; border-bottom:1px solid var(--hair, rgba(0,191,255,.10)); }
.oc-why__k{ margin:18px 0 2px; font:400 13px/1.4 var(--f-body); color:rgb(var(--ink3)); }
.oc-why__k:first-child{ margin-top:0; }
.oc-why__v{ margin:0; font:400 14px/1.6 var(--f-body); color:rgb(var(--ink2)); }
.oc-why__v b{ font-weight:500; color:rgb(var(--ink)); }

/* ── Decide: the card sits in the words column, left like the room's words ── */
#view-simulator .dc-words > #dc-check{ order:2 !important; }   /* right under the facts, before the check runs and after */
#view-simulator .oc--decide{ margin:18px 0 0; width:100%; max-width:46ch; text-align:left; }
#view-simulator .oc--decide .oc__line{ margin-left:0; }
#view-simulator .oc--decide .oc__acts{ justify-content:flex-start; margin-left:-6px; }
#view-simulator .oc--decide .oc__said{ margin-left:0; }
#view-simulator .oc--decide .oc__in{ text-align:left; }
/* Decide's verdict keeps the room's one Cormorant turn (DECIDE LOCKED 2026-09-17); here the
   source is the plain end of the line */
#view-simulator .oc--decide .oc__line em{ font:inherit; font-style:normal; color:rgb(var(--ink2)); }
/* four facts wrap on a phone: the separator before the last one becomes the line's end */
@media (max-width:640px){ #view-simulator .dc-dot--domain{ flex:0 0 100%; height:0; overflow:hidden; color:transparent; } }

/* ═════════════════════════════════════════════════════════════════════════
   WHAT IS DUE, ON TODAY (js/76). One item at a time, at the top of the column,
   in the moment language: the label, the ask at body size with the room's words
   under it, answers as quiet words or the ten 44px discs. The room's sentence
   (the verdict, with its one turn) stays below; the ask never takes the turn.
   ═════════════════════════════════════════════════════════════════════════ */
#view-brief .td-head:has(> .td-now){ flex-direction:column !important; align-items:center !important; justify-self:stretch !important; }
.td-now{ flex:0 0 auto; order:2; width:min(494px, calc(100vw - 32px)); margin:30px auto 0; padding-bottom:18px; border-bottom:1px solid var(--hair, rgba(0,191,255,.10)); text-align:center; }
.td-now[hidden]{ display:none; }
.td-now.is-in{ animation:oc-in var(--dur-3,600ms) cubic-bezier(.2,.8,.2,1) both; }
@media (prefers-reduced-motion:reduce){ .td-now.is-in{ animation:none; } }
.td-now__label{ margin:0; font:400 13px/1.4 var(--f-body); color:rgb(var(--ink3)); }
.td-now__ask{ margin:6px auto 0; max-width:34ch; font:500 20px/1.3 var(--f-disp); letter-spacing:-.016em; color:rgb(var(--ink)); text-wrap:balance; }
.td-now__words{ margin:6px auto 0; max-width:46ch; font:400 15px/1.5 var(--f-body); color:rgb(var(--ink2)); text-wrap:pretty; }
.td-now__acts{ display:flex; justify-content:center; flex-wrap:wrap; gap:0 18px; margin-top:12px; }
.td-now .am__scale{ margin-top:12px; }
.td-now__quiet{ margin:12px auto 0; max-width:46ch; font:400 15px/1.5 var(--f-body); color:rgb(var(--ink2)); }
.td-now__count{ margin:6px 0 0; font:400 13px/1.4 var(--f-body); color:rgb(var(--ink3)); }
/* nothing due: one quiet line, and nothing else */
.td-now--quiet{ padding-bottom:18px; }
.td-now--quiet .td-now__quiet{ margin-top:0; }
@media (max-width:640px){
  .td-now{ margin-top:18px; }
  .td-now__words, .td-now__quiet{ font-size:16px; }
  .td-now__ask{ font-size:19px; }
  .td-now .am__scale{ max-width:252px; }
}
/* what the number is built from, under it, in the stamp's voice */
#view-brief .td-state .td-built{ order:4; }
.td-built{ margin:6px auto 0; max-width:40ch; font:400 13px/1.45 var(--f-body); color:rgb(var(--ink3)); text-align:center; text-wrap:pretty; }
/* where each read on Today comes from, one line under it */
.td-src{ margin-top:6px; font:400 13px/1.45 var(--f-body); color:rgb(var(--ink3)); }

/* ── the Record: bets due on an open call, resolved in place ────────────── */
.rc-bets{ margin:0 0 6px; font:400 13px/1.4 var(--f-body); color:rgb(var(--ink3)); }
.rc-hold{ margin:12px auto 0; font:400 14px/1.5 var(--f-body); color:rgb(var(--ink2)); }

/* ── sensors: the plain label under the room's stamp ─────────────────── */
.sn-exp{ margin:2px 0 0; font:400 13px/1.45 var(--f-body); color:rgb(var(--ink3)); }

/* ── the welcome: the second door, a quiet exit beside the pill ──────── */
#wc-actions .wc-decide{ min-height:44px; padding:0 12px; background:none; border:0; cursor:pointer; font:500 14px var(--f-body); color:rgb(var(--ink2)); }
#wc-actions .wc-decide:hover{ color:rgb(var(--ink)); }
#wc-actions .wc-decide:focus-visible{ outline:2px solid var(--ice2, #7FD3FF); outline-offset:3px; border-radius:10px; }

/* §11: body text is 16px at the least on a phone */
@media (max-width:640px){
  .oc__said, .oc-why__v, .rc-hold{ font-size:16px; }
  .oc__line{ font-size:16px; }
}
