/* ============================================================
   QA Toolkit — Role pages ("Terminal editorial", role-themed)
   Shared stylesheet for the five per-role landing pages.
   Each page sets a body class (r-manual / r-auto / r-perf /
   r-leader / r-manager) which drives the role accent --rc.
   Tokens mirror docs/index.html so the pages match the site.
   ============================================================ */
:root{
  --bg:        #0d0f13;
  --bg-deep:   #0a0c10;
  --surface:   #12151c;
  --surface-2: #161a22;
  --hairline:  rgba(232,228,217,.10);
  --hairline-2:rgba(232,228,217,.06);

  --text:      #e9e4d8;
  --text-soft: #c8c4ba;
  --dim:       #9aa1ab;
  --faint:     #788089;

  --accent:       #5ee2a0;       /* brand phosphor green */
  --accent-dim:   #3da874;
  --accent-glow:  rgba(94,226,160,.14);

  --c-manual:    #f0b03c;
  --c-auto:      #45d483;
  --c-perf:      #f4654f;
  --c-leader:    #5da9f2;
  --c-manager:   #ab8df8;

  --serif: "Fraunces", Georgia, "Times New Roman", serif;
  --sans:  "Public Sans", -apple-system, "Segoe UI", sans-serif;
  --mono:  "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace;

  --wrap: 1120px;
  --prose: 760px;

  --rc: var(--accent);           /* role accent — overridden per page */
}

/* role accent applied at the page level */
body.r-manual { --rc: var(--c-manual); }
body.r-auto   { --rc: var(--c-auto); }
body.r-perf   { --rc: var(--c-perf); }
body.r-leader { --rc: var(--c-leader); }
body.r-manager{ --rc: var(--c-manager); }

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }

html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation:none !important; transition:none !important; }
}

body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  font-size:1.0625rem;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(1200px 600px at 50% -10%, color-mix(in srgb, var(--rc) 7%, transparent), transparent 60%),
    linear-gradient(rgba(232,228,217,.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(232,228,217,.022) 1px, transparent 1px);
  background-size:auto, 56px 56px, 56px 56px;
}

::selection{ background:color-mix(in srgb, var(--rc) 28%, transparent); color:#fff; }

a{ color:var(--rc); text-decoration:none; }
a:hover{ text-decoration:underline; text-underline-offset:3px; }
a:focus-visible, button:focus-visible{
  outline:2px solid var(--rc); outline-offset:3px; border-radius:2px;
}
code, kbd{ font-family:var(--mono); }

.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 28px; }

.kicker{
  font-family:var(--mono); font-size:.72rem; font-weight:500;
  letter-spacing:.28em; text-transform:uppercase; color:var(--rc);
}
.kicker::before{ content:"// "; color:var(--faint); letter-spacing:0; }

h2.sec-title{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(1.8rem, 3.6vw, 2.6rem);
  line-height:1.14; letter-spacing:-.01em; margin:.5em 0 .35em;
}
.sec-intro{ max-width:var(--prose); color:var(--text-soft); }
.sec-intro code{ font-size:.9em; color:var(--rc); }

section{ padding:74px 0 66px; border-top:1px solid var(--hairline-2); }

/* ---------- NAV ---------- */
.topnav{
  position:sticky; top:0; z-index:50;
  background:rgba(13,15,19,.94);
  border-bottom:1px solid var(--hairline);
}
@supports (backdrop-filter: blur(6px)){
  .topnav{ background:rgba(13,15,19,.82); backdrop-filter:blur(8px); }
}
.topnav .wrap{ display:flex; align-items:center; justify-content:space-between; gap:18px; height:56px; }
.wordmark{ font-family:var(--serif); font-weight:500; font-style:italic; font-size:1.08rem; color:var(--text); white-space:nowrap; }
.wordmark:hover{ text-decoration:none; color:var(--rc); }
.wordmark .v{ font-family:var(--mono); font-style:normal; font-size:.66rem; color:var(--faint); letter-spacing:.08em; margin-left:.5em; vertical-align:2px; }
.navlinks{ display:flex; gap:4px; list-style:none; }
.navlinks a{ font-family:var(--mono); font-size:.74rem; letter-spacing:.06em; color:var(--dim); padding:6px 10px; border-radius:4px; white-space:nowrap; }
.navlinks a:hover{ color:var(--text); text-decoration:none; background:rgba(232,228,217,.05); }
.navlinks a.active{ color:var(--rc); }
@media (max-width: 920px){
  .topnav .wrap{ height:auto; flex-wrap:wrap; padding-top:10px; padding-bottom:10px; }
  .navlinks{ flex-wrap:wrap; row-gap:0; }
}

/* ---------- ROLE HERO ---------- */
.rhero{ padding:80px 0 56px; position:relative; overflow:hidden; }
.rhero .kicker{ animation:rise .7s ease both; }
.rhead{ display:flex; align-items:center; gap:20px; margin:.4em 0 .2em; animation:rise .7s .06s ease both; }
.rglyph{
  font-size:2rem; line-height:1; width:72px; height:72px; flex:none;
  display:grid; place-items:center; border-radius:14px;
  border:1px solid color-mix(in srgb, var(--rc) 45%, transparent);
  background:color-mix(in srgb, var(--rc) 12%, transparent);
  box-shadow:0 0 40px color-mix(in srgb, var(--rc) 14%, transparent);
}
.rhero h1{
  font-family:var(--serif); font-weight:300;
  font-size:clamp(2.4rem, 6vw, 4.2rem); line-height:1.02; letter-spacing:-.022em;
}
.rhero h1 em{ font-style:italic; font-weight:400; color:var(--rc); text-shadow:0 0 34px color-mix(in srgb, var(--rc) 22%, transparent); }
.role-tag{ font-family:var(--mono); font-size:.7rem; letter-spacing:.22em; text-transform:uppercase; color:var(--rc); margin-top:4px; }
.standfirst{ max-width:var(--prose); font-size:clamp(1.05rem, 1.8vw, 1.22rem); line-height:1.6; color:var(--text-soft); animation:rise .7s .16s ease both; }
.standfirst strong{ color:var(--text); font-weight:600; }
.istqb{
  display:block; max-width:var(--prose); margin-top:16px;
  font-family:var(--mono); font-size:.72rem; letter-spacing:.04em; color:var(--faint); line-height:1.85;
  animation:rise .7s .2s ease both;
}
.istqb b{ color:var(--dim); font-weight:500; }
.meta-row{
  display:flex; flex-wrap:wrap; gap:.4em 0; align-items:center; margin:30px 0 0;
  font-family:var(--mono); font-size:.76rem; letter-spacing:.05em; color:var(--dim);
  animation:rise .7s .24s ease both;
}
.meta-row > span{ white-space:nowrap; }
.meta-row > span + span::before{ content:"·"; margin:0 .9em; color:var(--faint); }
.meta-row strong{ color:var(--text); font-weight:500; }
@keyframes rise{ from{ opacity:0; transform:translateY(16px);} to{ opacity:1; transform:none;} }

/* ---------- TERMINAL BLOCKS ---------- */
.term{
  background:var(--bg-deep); border:1px solid var(--hairline); border-radius:10px;
  box-shadow:0 14px 44px rgba(0,0,0,.42), 0 0 0 1px rgba(0,0,0,.3);
  overflow:hidden; margin-top:22px;
}
.term-bar{ display:flex; align-items:center; gap:7px; padding:11px 14px; border-bottom:1px solid var(--hairline-2); }
.term-bar i{ width:11px; height:11px; border-radius:50%; }
.term-bar i:nth-child(1){ background:#e5634f; }
.term-bar i:nth-child(2){ background:#e0a93e; }
.term-bar i:nth-child(3){ background:#46c06c; }
.term-bar span{ margin-left:auto; font-family:var(--mono); font-size:.68rem; letter-spacing:.08em; color:var(--faint); }
.term pre{ padding:18px 20px; font-family:var(--mono); font-size:.84rem; line-height:1.95; overflow-x:auto; color:var(--text-soft); }
.term .p{ color:var(--accent); }                  /* prompt + /qa: — brand green */
.term .a{ color:var(--text); }                     /* argument */
.term .c{ color:var(--faint); font-style:italic; } /* comment */
.term .o{ color:var(--dim); }                      /* output */
.term .n{ color:var(--rc); }                        /* step number / emphasis */
.term pre .ln{ display:flex; flex-wrap:wrap; column-gap:2.5ch; }
.term pre .lhs{ flex:none; white-space:pre; min-width:var(--lhs, 0); }
.term pre .ln .c{ flex:1 1 16ch; min-width:0; white-space:normal; }

/* ---------- FLOW + FLOWBOX ---------- */
.flow{ font-family:var(--mono); font-size:.8rem; line-height:2.05; color:var(--text-soft); }
.flow b{ font-weight:500; color:var(--text); white-space:nowrap; }
.flow .arr{ display:inline-block; color:var(--faint); padding:0 .25em; }
.flow .dim{ color:var(--faint); }
.flows{ display:grid; gap:16px; margin-top:24px; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); }
.flowbox{ border:1px solid var(--hairline-2); background:rgba(0,0,0,.32); border-radius:8px; padding:15px 18px 13px; }
.flowbox h4{ font-family:var(--mono); font-weight:500; font-size:.66rem; letter-spacing:.22em; text-transform:uppercase; color:var(--rc); margin-bottom:7px; }

/* ---------- TABLE ---------- */
.tbl{ width:100%; border-collapse:collapse; margin-top:22px; font-size:.92rem; }
.tbl caption{ text-align:left; }
.tbl th, .tbl td{ text-align:left; padding:11px 16px; border-bottom:1px solid var(--hairline-2); vertical-align:top; }
.tbl thead th{ font-family:var(--mono); font-weight:500; font-size:.66rem; letter-spacing:.18em; text-transform:uppercase; color:var(--rc); border-bottom:1px solid var(--hairline); }
.tbl tbody tr:hover{ background:rgba(232,228,217,.03); }
.tbl td:first-child{ color:var(--text-soft); }
.tbl code{ font-family:var(--mono); font-size:.86em; color:var(--text); background:rgba(232,228,217,.06); padding:.12em .42em; border-radius:4px; white-space:nowrap; }
.tbl td b{ color:var(--text); font-weight:600; }
@media (max-width: 680px){
  .tbl, .tbl thead, .tbl tbody, .tbl tr, .tbl th, .tbl td{ display:block; }
  .tbl thead{ display:none; }
  .tbl tr{ border-bottom:1px solid var(--hairline); padding:8px 0; }
  .tbl td{ border:none; padding:4px 0; }
  .tbl code{ white-space:normal; }
}

/* ---------- PULL QUOTE ---------- */
.pull{
  margin-top:34px; padding:6px 0 6px 22px; border-left:3px solid var(--rc);
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(1.2rem,2.4vw,1.55rem); line-height:1.5; color:var(--text); max-width:var(--prose);
}
.pull cite{ display:block; margin-top:10px; font-family:var(--mono); font-style:normal; font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); }
.pull code{ font-size:.78em; color:var(--rc); font-style:normal; }

/* ---------- HANDOFF BAND ---------- */
.handoff{
  margin-top:30px; border:1px solid var(--hairline); border-left:3px solid var(--rc);
  border-radius:10px; background:linear-gradient(180deg, var(--surface), var(--bg) 90%);
  padding:22px 26px; font-size:.95rem; color:var(--dim);
}
.handoff b{ color:var(--text); font-weight:600; }
.handoff code{ font-family:var(--mono); font-size:.86em; color:var(--text-soft); }
.handoff .ho-row{ display:flex; gap:14px; align-items:baseline; }
.handoff .ho-row + .ho-row{ margin-top:12px; padding-top:12px; border-top:1px solid var(--hairline-2); }
.handoff .ho-k{ font-family:var(--mono); font-size:.64rem; letter-spacing:.16em; text-transform:uppercase; color:var(--rc); flex:none; width:120px; }

/* ---------- CROSS-ROLE STRIP ---------- */
.crossroles{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:12px; margin-top:26px; }
.rolecard{
  display:block; border:1px solid var(--hairline); border-radius:10px; padding:16px 16px 18px;
  background:var(--surface); transition:border-color .2s ease, transform .2s ease;
}
.rolecard:hover{ text-decoration:none; transform:translateY(-2px); }
.rolecard .rc-glyph{ font-size:1.3rem; }
.rolecard .rc-name{ display:block; margin-top:8px; font-family:var(--serif); font-size:1.1rem; color:var(--text); }
.rolecard .rc-tag{ display:block; margin-top:3px; font-family:var(--mono); font-size:.64rem; letter-spacing:.12em; text-transform:uppercase; }
.rolecard.is-current{ pointer-events:none; opacity:.55; }
.rc-manual{ border-left:3px solid var(--c-manual); } .rc-manual:hover{ border-color:var(--c-manual); } .rc-manual .rc-tag{ color:var(--c-manual); }
.rc-auto{ border-left:3px solid var(--c-auto); }     .rc-auto:hover{ border-color:var(--c-auto); }     .rc-auto .rc-tag{ color:var(--c-auto); }
.rc-perf{ border-left:3px solid var(--c-perf); }     .rc-perf:hover{ border-color:var(--c-perf); }     .rc-perf .rc-tag{ color:var(--c-perf); }
.rc-leader{ border-left:3px solid var(--c-leader); } .rc-leader:hover{ border-color:var(--c-leader); } .rc-leader .rc-tag{ color:var(--c-leader); }
.rc-manager{ border-left:3px solid var(--c-manager); } .rc-manager:hover{ border-color:var(--c-manager); } .rc-manager .rc-tag{ color:var(--c-manager); }

/* ---------- MINI DOC LINKS ---------- */
.minidocs{ display:flex; flex-wrap:wrap; gap:10px 20px; margin-top:20px; font-family:var(--mono); font-size:.78rem; letter-spacing:.04em; }
.minidocs a{ color:var(--dim); } .minidocs a:hover{ color:var(--rc); }
.minidocs a::before{ content:"→ "; color:var(--faint); }

/* ---------- FOOTER ---------- */
footer{ border-top:1px solid var(--hairline); padding:48px 0 64px; margin-top:24px; }
footer .wrap{ display:grid; gap:16px; }
.foot-line{ font-family:var(--mono); font-size:.74rem; letter-spacing:.06em; color:var(--dim); display:flex; flex-wrap:wrap; gap:.3em 0; }
.foot-line span + span::before{ content:"·"; margin:0 .8em; color:var(--faint); }
.foot-line a{ color:var(--dim); }
.foot-legal{ font-size:.82rem; color:var(--faint); max-width:var(--prose); }
.foot-legal a{ color:var(--dim); }

/* scroll reveal */
html.js .reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
html.js .reveal.in{ opacity:1; transform:none; }
@media print{ html.js .reveal{ opacity:1 !important; transform:none !important; transition:none !important; } }
