/* ==========================================================================
   p-practice.css — page styles for about.html + trust.html ONLY.
   Prefixes: .pp- shared, .ab- about, .tr- trust.
   Token-fed like every section builder: no colour that is not a shell token.
   Green budget on both pages is zero — nothing here reaches for --pass.
   The only non-ink accent is the trust page's corpus warning card, which
   takes --fail (amber on the tube): it is a caution, and amber is the
   terminal caution channel.
   ========================================================================== */

/* one prose measure for both documents (mirrors p35-method's .mp-body) */
.pp-body{
  margin:0;max-width:62ch;
  font-family:var(--prose);font-size:1.06rem;line-height:1.65;color:var(--ink-60);
  text-wrap:pretty;
}
.pp-body p{margin:0 0 1.05rem;}
.pp-body p:last-child{margin-bottom:0;}
.pp-body strong,.pp-body b{color:var(--ink);font-weight:600;}
.pp-links{margin:1.7rem 0 0;display:flex;flex-wrap:wrap;gap:.7rem 1.6rem;}
.pp-fine{margin:1.2rem 0 0;max-width:70ch;}
.pp-k-sep{color:var(--hair-strong);padding:0 .15em;}

/* the one signature allowed on the about page: page-level, practice-level.
   Same chassis as index's .cl-sig (evidence.css is not loaded here). */
.pp-sig{
  display:flex;align-items:center;gap:1rem;
  margin:clamp(2.4rem,4vw,3.2rem) 0 0;
  font-family:var(--mono);font-size:.75rem;line-height:1.5;color:var(--muted);
}
.pp-sig svg{width:118px;height:auto;flex:0 0 auto;display:block;}
.pp-sig path{fill:none;stroke:var(--ink);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
.pp-sig b{color:var(--ink);font-weight:500;}
@media (max-width:640px){
  .pp-sig{flex-wrap:wrap;gap:.8rem;}
}

/* ==========================================================================
   ABOUT
   ========================================================================== */

/* the founder's on-record line: every credential claim routes to a place a
   reader can check. Machine layer, so mono. */
.ab-record{
  margin:1.6rem 0 0;padding-top:1.1rem;border-top:1px solid var(--hair);
  max-width:70ch;font-family:var(--mono);font-size:.78rem;line-height:1.9;
  color:var(--label-text,var(--muted));
}
.ab-record b{color:var(--ink);font-weight:500;letter-spacing:.06em;text-transform:uppercase;}
.ab-record a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--hair-strong);white-space:nowrap;}
.ab-record a:hover{color:var(--signal);border-bottom-color:var(--signal);}
.ab-record .sep{color:var(--hair-strong);padding:0 .4em;}

/* public-instrument tiles: the repo name is the headline because the repo is
   the evidence. Structure only — an instrument is not a state. */
.ab-repo{margin:0 0 .6rem;font-family:var(--mono);font-size:.8rem;font-weight:500;letter-spacing:.02em;}
.ab-repo a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--hair-strong);}
.ab-repo a:hover{color:var(--signal);border-bottom-color:var(--signal);}
.ab-repo-lang{
  display:block;margin-top:.9rem;
  font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--label-text,var(--muted));
}

/* ==========================================================================
   TRUST
   ========================================================================== */

/* reviewer routing: same chassis as method's on-this-page rail (p35-method
   is not loaded here). Four cells, mono, the only affordance in the hero. */
.tr-route{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:0;margin:clamp(2rem,3.6vw,3rem) 0 0;
  border-top:1px solid var(--hair-strong);border-left:1px solid var(--hair);
}
.tr-route a{
  display:flex;align-items:baseline;gap:.7em;min-width:0;
  padding:.72rem .9rem;text-decoration:none;
  border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);
  font-family:var(--mono);font-size:.72rem;line-height:1.45;letter-spacing:.01em;
  color:var(--ink-60);transition:color .18s ease,background .18s ease;
}
.tr-route a i{
  flex:0 0 auto;font-style:normal;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--label-text,var(--muted));
}
.tr-route a span{min-width:0;}
.tr-route a:hover{color:var(--signal);background:var(--card);}
.tr-route a:hover i{color:var(--signal);}
@media (max-width:900px){
  .tr-route{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* sub-heads inside a trust section: the machine-label voice, hung on the
   prompt rail by the sitewide kicker sweep. Spacing only; .kicker owns type. */
.tr-k{margin:2.6rem 0 1rem;}

/* the corpus warning card. Amber is legitimate here: this is the one caution
   on the page, and amber is the tube's caution channel. 1px border, flat. */
.tr-warn{
  max-width:62ch;margin:1.4rem 0 0;
  border:1px solid var(--fail);background:var(--card);border-radius:10px;
  padding:1.2rem 1.4rem 1.25rem;
}
.tr-warn-k{
  display:flex;justify-content:space-between;gap:1rem;margin:0 0 .8rem;
  font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.08em;
  text-transform:uppercase;color:var(--label-text,var(--muted));
}
.tr-warn-k .t-warn{color:var(--fail);}
.tr-warn p{margin:0;font-family:var(--prose);font-size:.98rem;line-height:1.62;color:var(--ink-60);}
.tr-warn strong{color:var(--ink);font-weight:600;}
html[data-theme="terminal"] .tr-warn{border-radius:0;box-shadow:inset 0 0 32px rgba(255,176,0,.05);}

/* the commitments panel caption + the promise-not-a-state note */
.tr-commit{margin:1.8rem 0 0;max-width:720px;}
.tr-commit > .kicker{margin-bottom:.9rem;}
.tr-commit .rows{max-width:none;}

/* the model-line close of the continuity section (v8's device, restated) */
.tr-stay{
  margin:1.8rem 0 0;max-width:62ch;
  font-family:var(--prose);font-size:1.18rem;line-height:1.5;font-weight:500;color:var(--ink);
}
.tr-stay em{font-style:normal;font-weight:600;}

/* ---- section 04: the private-corpus badge ---------------------------------
   Section 04 prints figures counted on Proof's own corpus, which is not
   published. The badge names that boundary in the chrome instead of in a
   sentence. It is .pc-chip.is-neutral -- the chip family p35-changes.css
   owns and p35-product.css extends with .is-seeded -- because "neutral" is
   already the state that claims nothing about what it labels. about.html
   loads neither of those sheets, so the base rule and that one state are
   restated here, byte-for-byte, rather than a fifth badge being invented.
   No hue enters: green stays machine state (brand.html section 05). */
.pc-chip{
  display:inline-flex;align-items:center;gap:.45em;flex:0 0 auto;
  font-family:var(--mono);font-size:.63rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;
  padding:.24rem .5rem;border-radius:calc(var(--radius) - 3px);
  border:1px solid currentColor;
}
.pc-chip.is-neutral{color:var(--unknown,var(--muted));border-style:dashed;}
.ab-priv{margin:1rem 0 0;display:flex;flex-wrap:wrap;gap:.45rem;}
@media (max-width:520px){.pc-chip{letter-spacing:.07em;}}

/* ===== v10 · reviewer routing at phone widths ==============================
   .tr-route drops 4 columns -> 2 at 900px and then stops. At 390 each cell is
   about 170px, and the role label (PROCUREMENT, AI GOVERNANCE) is set in mono
   at .72rem with letter-spacing, so it alone eats most of the cell: the label
   and its value ran together with no gap, reading as "continuityAI GOVERNANCE".
   The label is flex:0 0 auto and cannot shrink, so the row cannot resolve this
   by itself — below 560px the pair stacks instead, label over value. */
@media (max-width:560px){
  .tr-route a{flex-direction:column;align-items:flex-start;gap:.28em;padding:.66rem .8rem;}
  .tr-route a i{font-size:.66rem;}
}
