/* ═══════════════════════════════════════════════════════════════════════════
   room-forecast.css — THE FORECAST.

   Founder ruling 2026-09-20, on the first pass: "it is too crowded, and what
   does that even tell the user? what is its utility?"

   The utility is one answer: where the call you cannot take back goes, and
   where you decide nothing. The engine computes twelve windows
   (lib/arete-forecast.js: 3 days x 4 bands, predCis + pBelow + sampled); the
   room shows the two that change what she does today, and keeps the other ten
   behind a quiet word.

   Reference (her pin, "Numeric Weather Forecast", Jakub Staron): kept its one
   virtue, that every number carries its unit, its range and its time. Its
   furniture (KPI tiles, legends, axis grids, a chart per measure) is what
   DESIGN-CONSTITUTION.md section 13 forbids by name, so none of it is here.

   Constitution: the trace is the object (section 7, "one line of a value
   against a level"); evidence sits in rows, not boxes (section 8); one primary
   action (section 9); one number painted once (section 13); nothing glows.
   ═══════════════════════════════════════════════════════════════════════════ */

.fc{max-width:760px}

/* ── THE OBJECT: three days of predicted integrity against her own level ── */
.fc-trace{width:100%;height:auto;display:block;overflow:visible;margin-top:2px}

/* THE GROUND. The curve stands on light that fades out before it reaches the
   foot of the frame, so the trace has a body without gaining a box. */
.fc-trace .fc-g0{stop-color:rgba(0,191,255,.34)}
.fc-trace .fc-g1{stop-color:rgba(0,191,255,0)}
.fc-trace .fc-area{stroke:none}

/* THE CURVE. One weight, and the light strongest where the eye lands, which is
   the middle of the run; it gives out at both ends rather than being cut. */
.fc-trace .fc-s0{stop-color:rgba(160,224,255,.78)}
.fc-trace .fc-s1{stop-color:rgba(223,244,255,1)}
.fc-trace .fc-line{fill:none;stroke-width:2.25;stroke-linejoin:round;stroke-linecap:round}
.fc-trace .fc-line.fc-behind{stroke:rgba(127,211,255,.16);stroke-dasharray:3 4}

/* her own level, and the day rules: the same hairline the whole app uses */
.fc-trace .fc-lvl{stroke:var(--hair2);stroke-width:1;stroke-dasharray:1 5;stroke-linecap:round}
.fc-trace .fc-rule{stroke:var(--hair);stroke-width:1}
/* THE SCALE, read off the left edge: what makes a point on the curve a number */
.fc-trace .fc-tick{font-family:var(--f-body);font-size:11px;fill:var(--svg-faint);
  font-variant-numeric:tabular-nums;letter-spacing:.02em}
.fc-trace .fc-tick.is-lvl{fill:rgb(var(--ink2))}
.fc-trace .fc-tick-k{font-family:var(--f-body);font-size:10px;fill:var(--svg-faint);letter-spacing:.06em}

/* THE PUCK. Where the answer is. A filled point, a ring off it, and one soft
   halo: the same light the cube carries, at the one place on the screen that
   is telling her to act. */
.fc-trace .fc-stem{stroke:rgba(0,191,255,.26);stroke-width:1}
.fc-trace .fc-halo{fill:rgba(0,191,255,.13);stroke:none}
.fc-trace .fc-puck{fill:#dff4ff;stroke:none}
.fc-trace .fc-ring{fill:none;stroke:rgba(223,244,255,.55);stroke-width:1.5}
.fc-trace .fc-hold{fill:none;stroke:var(--hair3);stroke-width:1.5}

/* THE READING, set over the point it belongs to (section 13: painted once) */
.fc-trace .fc-hero{font-family:var(--f-body);font-weight:200;font-size:54px;
  letter-spacing:-.04em;fill:rgb(var(--ink));font-variant-numeric:tabular-nums}
.fc-trace .fc-hero-k{font-family:var(--f-body);font-weight:400;font-size:12px;
  letter-spacing:.01em;fill:var(--svg-faint)}

.fc-trace text{font-family:var(--f-body);font-size:11.5px;fill:var(--svg-faint)}
.fc-trace text.fc-on{fill:var(--svg-label)}
.fc-trace .fc-day-t{font-size:11.5px;fill:var(--svg-faint);letter-spacing:.02em}
.fc-trace .fc-day-t.is-on{fill:rgb(var(--ink2));font-weight:500}
.fc-trace .fc-day-d{fill:var(--ice)}

/* ── THE ANSWER: one sentence, one turn inside it (section 2) ── */
.fc-answer{font:400 clamp(24px,3.2vw,34px)/1.22 var(--f-disp);letter-spacing:-.03em;
  margin:34px 0 0;text-wrap:balance;color:rgb(var(--ink))}
.fc-answer em{font-family:var(--f-em);font-style:italic;font-weight:400;font-size:1.1em;
  letter-spacing:0;color:#dff4ff}
.fc-because{font:400 15px/1.6 var(--f-body);color:rgb(var(--ink3));margin:18px 0 0;max-width:52ch}

/* ── the two windows that change today, as rows (section 6: 44px, hairline) ── */
.fc-rows{margin:38px 0 0}
.fc-row{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:24px;
  min-height:44px;padding:15px 0;border-top:1px solid var(--hair)}
.fc-row:last-child{border-bottom:1px solid var(--hair)}
.fc-k{display:block;font:400 12px/1.4 var(--f-body);color:var(--svg-faint)}
.fc-n{display:block;font:400 17px/1.4 var(--f-body);color:rgb(var(--ink));margin-top:3px}
.fc-n b{font-weight:500}
.fc-q{font:300 15px/1.4 var(--f-body);color:rgb(var(--ink3));text-align:right;white-space:nowrap}

/* ── the ten behind a quiet word ── */
.fc-more{display:block;margin:28px 0 0;padding:0;background:none;border:0;cursor:pointer;
  font:500 13px/1 var(--f-body);color:rgb(var(--ink3));
  transition:color var(--dur-1,180ms) cubic-bezier(.2,.8,.2,1)}
.fc-more:hover{color:rgb(var(--ink))}
.fc-more:focus-visible{outline:2px solid var(--ice2);outline-offset:3px}
.fc-all{margin:18px 0 0}
.fc-day{font:500 12px/1 var(--f-body);color:var(--svg-faint);padding:20px 0 8px}
.fc-w{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:20px;
  min-height:38px;padding:6px 0;border-top:1px solid var(--hair);
  font:400 13px/1.3 var(--f-body);color:rgb(var(--ink3))}
.fc-w .fc-v{font-variant-numeric:tabular-nums;color:rgb(var(--ink2));min-width:2.4ch;text-align:right}
.fc-w .fc-p{font-variant-numeric:tabular-nums;color:var(--svg-faint);min-width:8.5ch;text-align:right}

.fc-honest{font:400 12px/1.6 var(--f-body);color:var(--svg-faint);margin:30px 0 0;max-width:56ch}

/* ── locked and empty states: a sentence, never a spinner (section 9) ── */
.fc-locked{font:400 15px/1.6 var(--f-body);color:rgb(var(--ink3));max-width:52ch;margin:0}

/* ── LIGHT. The ice values above are tuned for the dark ground; on paper they
   vanish. The light theme takes the same ladder one rung deeper, the way
   .int-verdict em already does (arete-system.css:558). ── */
html[data-theme="light"] .fc-answer em{color:#0e4d78}
html[data-theme="light"] .fc-trace .fc-line.fc-behind{stroke:rgba(17,98,137,.22)}
html[data-theme="light"] .fc-trace .fc-s0{stop-color:rgba(17,98,137,.38)}
html[data-theme="light"] .fc-trace .fc-s1{stop-color:rgba(10,70,105,.95)}
html[data-theme="light"] .fc-trace .fc-g0{stop-color:rgba(10,122,205,.16)}
html[data-theme="light"] .fc-trace .fc-g1{stop-color:rgba(10,122,205,0)}
html[data-theme="light"] .fc-trace .fc-stem{stroke:rgba(10,122,205,.30)}
html[data-theme="light"] .fc-trace .fc-halo{fill:rgba(10,122,205,.12)}
html[data-theme="light"] .fc-trace .fc-puck{fill:#0e4d78}
html[data-theme="light"] .fc-trace .fc-ring{stroke:rgba(14,77,120,.45)}
html[data-theme="light"] .fc-trace .fc-hold{stroke:rgba(36,72,111,.55)}
html[data-theme="light"] .fc-trace .fc-day-d{fill:#0a7acd}

@media (max-width:700px){
  .fc-answer{font-size:clamp(22px,6vw,28px);margin-top:26px}
  .fc-rows{margin-top:30px}
  .fc-q{font-size:14px}
}
@media (prefers-reduced-motion:reduce){.fc-more{transition:none}}

@media (max-width:700px){
  .fc-trace .fc-hero{font-size:36px}
  .fc-trace .fc-hero-k{font-size:11px}
}
