/* exp35 . section stylesheet owned by the agents builder.
   Tokens only, no hard-coded colours. All 7 themes.

   Covers two sections:
     #agents  (partials/agents.html)  . PLAN-35-IA §7 Section 6
     #queue   (partials/queue.html)   . PLAN-35-IA §7 Section 7

   Everything already built in assets/agent-sections.css, assets/sections.css
   and assets/site.css is reused unchanged. This file only adds the classes the
   plan's new shapes need, all prefixed .s35- so no other builder's section can
   collide with them. It is linked LAST, after themes.css and
   theme-verified.css, so a rule here must never be more specific than a theme
   rule: themes still win.

   Semantic colour contract, as applied here:
     --pass     verified   . only the closing "defect record is created"
     --stale    suspect    . only "hope", the row that is not work
     --unknown  inactive   . the archaeology descent, the pending obligations
     --signal   affordance . used NOWHERE in either section, because neither
                             section contains an affordance
   ========================================================================== */


/* ==========================================================================
   SECTION 6 . agents
   ========================================================================== */

/* The signature line. .ag-big already carries the type; it is capped at 32ch
   for the stale section's short turn, and this one is two full clauses, so the
   measure opens up enough to let each clause hold its own line on desktop. */
.s35-sig{margin:2.4rem 0 0;max-width:50ch;}

/* ---------- the rail: developer . agent . proof, over mcp ----------
   Plan §9 rule 8 says never lead with MCP. This is where the word is allowed:
   a technical label on the wire, after the copy above has already said what
   the agent receives. */
/* .ag .ag-fig already sets 2.4rem of head room, and it out-ranks a bare class,
   so this one has to carry the same weight. The rail is chrome for the
   transcript below it, not a figure of its own, so it sits close. */
.ag .s35-rail-fig{margin:.4rem 0 1.5rem;}
/* site.css floors every .fig-scroll svg at 660px so wide diagrams scroll. This
   rail is a single row, so it scales instead of scrolling; the cap matches
   .ag-tx-win so the rail and the transcript share both edges. */
.s35-rail-fig .fig-scroll svg{min-width:0;max-width:880px;}
.s35-rail-fig .fig-scroll{padding-bottom:0;}

/* ---------- the prompt ---------- */
.s35-ask{margin:0 0 1.4rem;}
.s35-pl{
  display:flex;align-items:baseline;gap:.55em;margin:0;max-width:56ch;
  font-family:var(--prose);font-size:1.06rem;line-height:1.5;color:var(--ink);
}
.s35-pl + .s35-pl{margin-top:.28rem;}
.s35-caret{
  flex:0 0 auto;font-family:var(--mono);font-size:.95em;font-weight:600;
  color:var(--muted);
}
.s35-pl code{font-family:var(--mono);font-size:.9em;}

/* ---------- relevant intent: three identifiers, no invented titles ---------- */
.s35-ids{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .55rem;margin:0;
  font-family:var(--mono);font-size:.8rem;line-height:1.7;letter-spacing:.02em;
  color:var(--ink);
}

/* ---------- required before completion ----------
   Four empty boxes. They are obligations that have not been met, so the marker
   is --unknown: nothing is claimed about them yet, and a tick here would claim
   the work was already done. */
.s35-req{list-style:none;margin:0;padding:0;}
.s35-req li{
  display:flex;align-items:baseline;gap:.7rem;
  font-family:var(--mono);font-size:.8rem;line-height:1.9;color:var(--ink);
}
.s35-box{
  flex:0 0 auto;width:9px;height:9px;border-radius:2px;
  border:1.5px solid var(--unknown,var(--muted));
  transform:translateY(1px);
}


/* ==========================================================================
   SECTION 7 . agent fix loop
   ========================================================================== */

/* The second body paragraph, same tier as the lead. .section-head .lead zeroes
   the margin, so this needs the same weight to open the gap back up. */
.section-head .lead.s35-lead2{margin:1rem 0 0;}

/* The two columns do NOT stretch to a common height. The Proof column ends
   sooner because there is less to do, and a card padded out to match the
   archaeology column would hide exactly the thing this section is arguing. */
.s35-cmp{margin-top:.2rem;align-items:start;}
.s35-col{padding:1.25rem 1.35rem 1.45rem;}

/* Column identity, not state. The left column is dim because nothing in it is
   known; the right column is ink because it is present. Neither is --pass:
   an issue is not a verified thing, whichever queue it came from. */
.s35-col-h{color:var(--unknown,var(--muted));}
.s35-col-h.is-new{color:var(--ink);}

/* ---------- the ink arrow both columns descend through ---------- */
.s35-drop{display:block;width:22px;height:34px;margin:1.05rem 0 .1rem;overflow:visible;}
.s35-ink{
  fill:none;stroke:var(--hair-strong);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;
}

/* ---------- the two lists ---------- */
/* Flex, not grid, so the "?" that follows "hope" can sit against the word
   instead of drifting to the far edge of a 700px column. */
.s35-descent,.s35-loop{list-style:none;margin:.2rem 0 0;padding:0;}
.s35-descent li,.s35-loop li{
  display:flex;align-items:baseline;padding:.5rem 0;
  font-family:var(--prose);font-size:1rem;line-height:1.45;
}
/* the ordinal is the marker: nothing is claimed about any of these rows yet */
.s35-descent .n,.s35-loop .n{
  flex:0 0 1.9rem;margin-right:.7rem;
  font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.06em;
  color:var(--unknown,var(--muted));
}

/* The archaeology descent: eight things nobody has done yet. The rows are
   sentences a reader has to read, so they take --muted (dim prose) rather than
   --unknown (a state marker); the state lives in the ordinals and in the
   column header. */
.s35-descent li{border-top:1px dashed var(--hair);color:var(--muted);}
/* "hope" is the one row that is not work. It is unearned confidence, which is
   exactly what --stale means, and it keeps the question mark the other seven
   rows gave up. Weight, because --stale is a mid-tone by design and this is
   the word the whole section turns on. */
.s35-descent li.is-hope,
.s35-descent li.is-hope .n{color:var(--stale,var(--fail));font-weight:600;}
.s35-descent li.is-hope::after{
  content:"?";margin-left:.42rem;
  font-family:var(--mono);font-size:1.1rem;font-weight:600;line-height:1;
  color:var(--stale,var(--fail));
}

/* The fix loop: four steps that end in evidence. The state is carried by the
   tick, not by the sentence. Two themes key --pass to a saturated accent that
   is a mark colour, not a text colour (olo says so in its own comments), so a
   green sentence would be unreadable there while a green tick is exactly the
   sanctioned use. */
.s35-loop li{border-top:1px solid var(--hair);color:var(--ink);}
.s35-loop li.is-done{font-weight:500;}
.s35-loop li.is-done .n{align-self:center;}
.s35-tick{display:block;width:12px;height:12px;}
.s35-tick path{
  fill:none;stroke:var(--pass);stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;
}

/* ---------- what a Proof issue arrives with ----------
   Field names only. The plan supplies no values for them, and this page
   already carries exactly one impact readout (ADAPT §1.1), so inventing a
   second one here would contradict it. */
.s35-manifest{padding:.9rem 1rem 1.05rem;}
.s35-arrives{
  font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);margin:0 0 .65rem;
}
.s35-fields{
  list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem .9rem;
}
.s35-fields li{
  display:flex;align-items:baseline;gap:.55em;min-width:0;
  font-family:var(--mono);font-size:.8rem;line-height:1.55;color:var(--ink);
}
.s35-fields li::before{
  content:"";flex:0 0 auto;width:6px;height:6px;
  background:var(--hair-strong);transform:translateY(-1px);
}

/* one line, not one line and an orphaned "with." */
.ag-sec-queue .ag-cmp-cap{max-width:86ch;}


/* ==========================================================================
   ONE THEME EXCEPTION
   The verified theme re-keys --unknown to #3A403B, a value it tuned for
   diagram structure sitting on its near-black page ground. On a --card
   surface that lands at 1.8:1, so an empty checkbox, a column marker and an
   ordinal all disappear there and nowhere else. This restores them with
   another token, not with a colour; every other theme keeps --unknown.
   ========================================================================== */
html[data-theme="verified"] .s35-descent .n,
html[data-theme="verified"] .s35-loop .n,
html[data-theme="verified"] .s35-col-h:not(.is-new){color:var(--muted);}
html[data-theme="verified"] .s35-box{border-color:var(--muted);}

/* the supporting line closes the section */
.s35-support{margin:2.2rem 0 0;max-width:36ch;}


/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width:1020px){
  .s35-fields{gap:.28rem .8rem;}
}
@media (max-width:820px){
  .ag .s35-rail-fig{margin:.8rem 0 1.5rem;}
  .s35-rail-fig .fig-scroll svg{max-width:340px;}
}
@media (max-width:600px){
  .s35-col{padding:1.05rem 1rem 1.2rem;}
  .s35-fields{grid-template-columns:1fr;}
  .s35-descent li,.s35-loop li{font-size:.96rem;}
  .s35-descent .n,.s35-loop .n{flex-basis:1.65rem;margin-right:.6rem;}
  .s35-pl{font-size:1rem;}
  .s35-ids,.s35-req li{font-size:.76rem;}
  .s35-sig,.s35-support{max-width:none;}
}

/* Reduced motion is already handled globally in site.css: .dr holds its final
   frame and .fx holds full opacity, so both sections settle on one legible
   frame with no extra rule here. */

/* House provenance caption: invented specimens are marked in the RENDERED page. */
.s35-eg{margin:.9rem 0 0;font-size:.82rem;line-height:1.5;color:var(--label-text);max-width:62ch;}
.s35-eg-t{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;
  margin-right:.5rem;padding:.1rem .4rem;border:1px solid var(--hair,currentColor);border-radius:2px;}
