/* ============================================================
   AuditAIKit — Playbooks. Dark "Enterprise Audit Intelligence"
   theme, aligned 1:1 with site-3d/styles.css + redesign.css.
   Self-contained: own tokens, nav, buttons, and every playbook
   + hub component. Reading-optimised for long statutory text.
   Space Grotesk (display) · IBM Plex Sans (body) ·
   JetBrains Mono (labels) · Fraunces italic (rust accent words).
   ============================================================ */
:root{
  /* palette — lifted from site-3d/styles.css */
  --navy:#07111F;
  --navy-2:#0A1626;
  --surface:#0E1A2D;
  --surface-2:#122236;
  --blue:#3B82F6;
  --blue-bright:#5B9BFF;
  --cyan:#22D3EE;
  --purple:#8B5CF6;
  --rust:#C9774E;          /* warm accent + italic emphasis on dark */
  --rust-deep:#A0421C;
  --forest:#34D399;        /* severity: effective / low (dark-tuned) */
  --amber:#E0A93B;         /* severity: needs-improvement / med */
  --danger:#F0776A;        /* severity: ineffective / high */
  --critical:#D7484A;      /* severity: fraud */
  --white:#F8FAFC;
  --text:#E4ECF5;
  --text-soft:rgba(228,236,245,0.66);
  --text-mute:rgba(228,236,245,0.42);
  --border:rgba(255,255,255,0.08);
  --border-strong:rgba(255,255,255,0.14);
  --glow-blue:rgba(59,130,246,0.45);

  --display:'Space Grotesk',system-ui,sans-serif;
  --body:'IBM Plex Sans',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --serif:'Fraunces',Georgia,serif;

  --r-sm:8px;
  --r:12px;
  --r-lg:18px;
  --maxw:1280px;
  --pad:clamp(20px,5vw,48px);
}

/* ── Light mode palette (theme toggle) ──────────────────────────
   Same token names as site-3d/styles.css. --white is used only as
   a foreground colour, so it flips dark. Severity colours are
   darkened for AA contrast on the light paper. */
html[data-theme="light"]{
  --navy:#F5F1E8;
  --navy-2:#FBF8F1;
  --surface:#FFFFFF;
  --surface-2:#F1ECE0;
  --blue:#2563EB;
  --blue-bright:#1D4ED8;
  --cyan:#0E7490;
  --purple:#6D28D9;
  --rust:#A0421C;
  --rust-deep:#A0421C;
  --forest:#1F7A4D;
  --amber:#8A5E0A;
  --danger:#B23B2E;
  --critical:#A3282A;
  --white:#0F1F3D;
  --text:#0F1F3D;
  --text-soft:rgba(15,31,61,0.66);
  --text-mute:rgba(15,31,61,0.46);
  --border:rgba(15,31,61,0.12);
  --border-strong:rgba(15,31,61,0.20);
  --glow-blue:rgba(37,99,235,0.16);
}
html[data-theme="light"] body{background:var(--navy);color:var(--text)}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{
  background:var(--navy);
  color:var(--text);
  font-family:var(--body);
  font-weight:400;
  font-size:16px;
  line-height:1.68;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
body::before{ /* faint top-down depth wash, matches homepage */
  content:'';position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(120% 80% at 82% -10%, rgba(59,130,246,0.10), transparent 55%),
             radial-gradient(90% 60% at 8% 4%, rgba(139,92,246,0.06), transparent 60%);
}
a{color:var(--cyan);text-decoration:none;transition:color .2s}
a:hover{color:var(--blue-bright)}
em{font-style:italic}

h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.06;letter-spacing:-0.02em;color:var(--white)}
.accent,h1 em,h2 em{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--rust);letter-spacing:0}

/* ───────────── NAV ───────────── */
.nav{
  position:sticky;top:0;left:0;right:0;z-index:80;
  background:rgba(7,17,31,0.82);
  backdrop-filter:blur(14px) saturate(1.2);
  -webkit-backdrop-filter:blur(14px) saturate(1.2);
  border-bottom:1px solid var(--border);
}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;height:68px;
  max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.brand{font-family:var(--display);font-size:21px;font-weight:600;letter-spacing:-0.01em;color:var(--white);display:flex;align-items:center;gap:9px}
.brand .mark{width:24px;height:24px;border-radius:6px;background:linear-gradient(140deg,var(--cyan),var(--blue) 55%,var(--purple));box-shadow:0 0 16px -2px var(--glow-blue);position:relative;flex:none}
.brand .mark::after{content:'';position:absolute;inset:6px;border:1.5px solid rgba(255,255,255,0.85);border-radius:2px}
.brand em{font-family:var(--serif);font-style:italic;color:var(--rust);font-weight:500}
.nav-links{display:flex;align-items:center;gap:28px}
.nav-links a:not(.btn){font-size:14.5px;color:var(--text-soft);font-weight:400;transition:color .2s}
.nav-links a:not(.btn):hover,.nav-links a.current{color:var(--white)}
.nav-links a.current{font-weight:500}
.nav .btn{padding:10px 18px;font-size:14px}

/* mobile nav — hamburger */
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;align-items:center;background:rgba(255,255,255,0.03);border:1px solid var(--border-strong);border-radius:8px;cursor:pointer;padding:0}
.nav-toggle span{display:block;width:18px;height:1.5px;background:var(--white);border-radius:2px;transition:transform .25s ease,opacity .2s ease}
.nav-toggle.open span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.nav-toggle.open span:nth-child(2){opacity:0}
.nav-toggle.open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
@media(max-width:880px){
  .nav-inner{position:relative}
  .nav-toggle{display:flex}
  .nav-links{
    position:absolute;top:calc(100% + 14px);right:0;left:0;
    flex-direction:column;align-items:stretch;gap:4px;
    background:var(--navy-2);border:1px solid var(--border);border-radius:12px;padding:10px;
    opacity:0;visibility:hidden;transform:translateY(-8px);
    transition:opacity .25s ease,transform .25s ease,visibility .25s;
    box-shadow:0 30px 60px -22px rgba(0,0,0,0.75);
  }
  .nav-links.open{opacity:1;visibility:visible;transform:translateY(0)}
  .nav-links a:not(.btn){display:block;padding:13px 15px;border-radius:8px;font-size:15px;color:var(--text)}
  .nav-links a:not(.btn):hover,.nav-links a.current{background:rgba(255,255,255,0.05);color:var(--white)}
  .nav-links .btn{margin:6px 6px 2px;justify-content:center;width:auto}
}

/* buttons */
.btn{
  font-family:var(--body);font-size:15px;font-weight:500;letter-spacing:0.01em;
  display:inline-flex;align-items:center;gap:9px;cursor:pointer;
  padding:13px 24px;border-radius:var(--r-sm);border:1px solid transparent;
  transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,background .25s,border-color .25s;
  white-space:nowrap;
}
.btn-primary{background:linear-gradient(180deg,var(--blue-bright),var(--blue));color:#fff;box-shadow:0 10px 30px -10px var(--glow-blue), inset 0 1px 0 rgba(255,255,255,0.25)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 40px -12px var(--glow-blue), inset 0 1px 0 rgba(255,255,255,0.3)}
.btn-ghost{background:rgba(255,255,255,0.03);color:var(--white);border-color:var(--border-strong)}
.btn-ghost:hover{border-color:rgba(255,255,255,0.34);background:rgba(255,255,255,0.06);transform:translateY(-2px)}
.btn .ar{transition:transform .25s}
.btn:hover .ar{transform:translateX(3px)}

/* shared eyebrow */
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;color:var(--rust)}
.eyebrow::before{content:'';width:22px;height:1px;background:var(--rust);opacity:0.8}
.eyebrow.center::before{display:none}

/* ───────────── BREADCRUMB ───────────── */
.breadcrumb{max-width:var(--maxw);margin:0 auto;padding:26px var(--pad) 0;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:0.12em;color:var(--text-mute);position:relative;z-index:1}
.breadcrumb a{color:var(--text-mute)}
.breadcrumb a:hover{color:var(--cyan)}
.breadcrumb-sep{margin:0 9px;opacity:0.5}
.breadcrumb .here{color:var(--text-soft)}

/* ───────────── HERO ───────────── */
.hero{max-width:var(--maxw);margin:0 auto;padding:34px var(--pad) 44px;border-bottom:1px solid var(--border);position:relative;z-index:1}
.hero .eyebrow{margin-bottom:22px}
.hero h1{font-family:var(--display);font-weight:600;font-size:clamp(40px,6vw,68px);line-height:1.04;letter-spacing:-0.03em;color:var(--white);margin-bottom:22px}
.hero-objective{font-size:clamp(17px,1.8vw,20px);line-height:1.6;color:var(--text-soft);max-width:780px;margin-bottom:30px}
.hero-objective strong{color:var(--white);font-weight:600}
.hero-meta{display:flex;gap:14px 28px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--text-mute)}
.hero-meta strong{color:var(--text);font-weight:500}

/* ───────────── QUICK CHIPS ───────────── */
.chips{max-width:var(--maxw);margin:0 auto;padding:26px var(--pad);display:flex;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--border);position:relative;z-index:1}
.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:var(--r-sm);font-family:var(--mono);font-size:12px;color:var(--text);transition:border-color .2s,background .2s}
.chip:hover{border-color:rgba(34,211,238,0.4);background:rgba(34,211,238,0.05);color:var(--text)}
.chip-label{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-mute)}

/* ───────────── MAIN GRID + TOC ───────────── */
.layout{max-width:var(--maxw);margin:0 auto;padding:52px var(--pad) 88px;display:grid;grid-template-columns:236px 1fr;gap:64px;position:relative;z-index:1}
.toc{position:sticky;top:92px;align-self:start;font-family:var(--mono);font-size:12px;max-height:calc(100vh - 116px);overflow-y:auto}
.toc-title{font-size:10px;text-transform:uppercase;letter-spacing:0.18em;color:var(--text-mute);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}
.toc ul{list-style:none}
.toc li{margin-bottom:9px}
.toc a{color:var(--text-soft);display:block;padding-left:13px;border-left:2px solid transparent;line-height:1.4;transition:color .2s,border-color .2s}
.toc a:hover{color:var(--white);border-left-color:var(--border-strong)}
.toc a.active{color:var(--cyan);border-left-color:var(--cyan);font-weight:500}

/* ───────────── CONTENT ───────────── */
.content{min-width:0}
.content section{margin-bottom:76px;scroll-margin-top:104px}
.content section:last-child{margin-bottom:0}
.content h2{font-family:var(--display);font-weight:600;font-size:clamp(27px,3.4vw,38px);line-height:1.12;letter-spacing:-0.02em;color:var(--white);margin-bottom:26px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.content h3{font-family:var(--display);font-weight:600;font-size:21px;line-height:1.3;color:var(--white);margin:34px 0 14px}
.content h3:first-child{margin-top:0}
.content h4{font-family:var(--body);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:0.07em;color:var(--white);margin:20px 0 10px}
.content p{margin-bottom:14px;color:var(--text-soft);max-width:74ch}
.content p strong,.content li strong{color:var(--text);font-weight:600}
.content > section > p{color:var(--text)}
.content ul,.content ol{margin-bottom:14px;padding-left:24px;color:var(--text-soft)}
.content li{margin-bottom:8px}
.content ul.tight li,.content ol.tight li{margin-bottom:4px}
.content ::marker{color:var(--text-mute)}
code,.ref{font-family:var(--mono);font-size:0.86em;background:rgba(34,211,238,0.08);border:1px solid rgba(34,211,238,0.18);padding:1px 6px;border-radius:4px;color:var(--cyan);white-space:nowrap}

/* ───────────── FRAMEWORK BLOCKS ───────────── */
.fw-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:24px 28px;margin-bottom:14px}
.fw-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.14em;color:var(--rust);margin-bottom:13px;display:block}
.fw-block ul{margin-bottom:0;padding-left:20px}
.fw-block li{margin-bottom:7px;font-size:15px}

/* ───────────── ASSERTION CARDS ───────────── */
.assertions{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}
.assertion{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--rust);border-radius:var(--r);padding:20px 22px}
.assertion.existence{border-left-color:var(--rust)}
.assertion.completeness{border-left-color:var(--forest)}
.assertion.valuation{border-left-color:var(--amber)}
.assertion.rights{border-left-color:var(--danger)}
.assertion.cutoff{border-left-color:var(--cyan)}
.assertion.presentation{border-left-color:var(--purple)}
.assertion h4{font-family:var(--mono);text-transform:uppercase;letter-spacing:0.1em;font-size:11px;font-weight:500;color:var(--white);margin:0 0 12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.assertion .dominant{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:0.1em;color:var(--cyan);background:rgba(34,211,238,0.1);border:1px solid rgba(34,211,238,0.32);padding:2px 8px;border-radius:4px}
.assertion ul{padding-left:18px;margin:0}
.assertion li{font-size:14px;line-height:1.5;margin-bottom:6px;color:var(--text-soft)}

/* ───────────── PROCEDURE LIST ───────────── */
.proc-group{margin-bottom:30px}
.proc-group-title{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:0.13em;color:var(--rust);margin-bottom:16px;padding-bottom:9px;border-bottom:1px dashed var(--border-strong)}
.proc-list{list-style:none;padding-left:0;counter-reset:proc}
.proc-list li{position:relative;padding-left:46px;margin-bottom:14px;color:var(--text-soft)}
.proc-list li{counter-increment:proc}
.proc-list li::before{content:counter(proc,decimal-leading-zero);position:absolute;left:0;top:1px;font-family:var(--mono);font-size:12px;color:var(--cyan);font-weight:500}
.proc-list li strong{color:var(--text);font-weight:600}

/* ───────────── DOCUMENTS CHECKLIST ───────────── */
.docs-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:28px 32px;columns:2;column-gap:44px}
.docs-list ol{padding-left:28px;margin:0}
.docs-list li{font-size:14px;line-height:1.55;margin-bottom:9px;break-inside:avoid;color:var(--text-soft)}
@media(max-width:880px){.docs-list{columns:1}}

/* ───────────── FINDINGS ───────────── */
.findings{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;counter-reset:find}
.finding{display:grid;grid-template-columns:46px 1fr;align-items:start;padding:16px 28px;border-bottom:1px solid var(--border);counter-increment:find}
.finding:last-child{border-bottom:none}
.finding::before{content:counter(find,decimal-leading-zero);font-family:var(--mono);font-size:12px;color:var(--cyan);font-weight:500;padding-top:2px}
.finding strong{display:block;color:var(--white);margin-bottom:4px;font-size:15px;font-weight:600}
.finding span{font-size:14px;color:var(--text-soft);line-height:1.5}

/* ───────────── CALLOUT (MSME / fraud) ───────────── */
.callout{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--amber);border-radius:var(--r);padding:26px 30px;margin-bottom:22px}
.callout-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.14em;color:var(--amber);margin-bottom:13px;display:block}
.callout h3{margin-top:0;font-size:20px}
.callout-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:18px}
.callout-item{background:var(--navy-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:15px 16px}
.callout-item-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--cyan);margin-bottom:7px;display:block}
.callout-item p{font-size:13px;margin:0;line-height:1.5;color:var(--text-soft)}
.callout > p{color:var(--text-soft)}

/* ───────────── SAMPLE LANGUAGE ───────────── */
.sample{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--rust);border-radius:var(--r);padding:24px 28px;margin-bottom:14px}
.sample-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.14em;color:var(--rust);margin-bottom:12px;display:block}
.sample-text{font-family:var(--serif);font-style:italic;font-size:16px;line-height:1.62;color:var(--text)}
.sample.qualified{border-left-color:var(--amber)}
.sample.qualified .sample-label{color:var(--amber)}
.sample.modified{border-left-color:var(--danger)}
.sample.modified .sample-label{color:var(--danger)}
.sample.unmodified{border-left-color:var(--forest)}
.sample.unmodified .sample-label{color:var(--forest)}
.sample.deficiency{border-left-color:var(--cyan)}
.sample.deficiency .sample-label{color:var(--cyan)}

/* ───────────── STEPS (IND AS 115 five-step) ───────────── */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;counter-reset:step}
.step{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:22px 22px;counter-increment:step;position:relative;transition:transform .3s cubic-bezier(.2,.7,.2,1),border-color .3s}
.step:hover{transform:translateY(-3px);border-color:var(--border-strong)}
.step::before{content:"Step " counter(step);font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.14em;color:var(--cyan);display:block;margin-bottom:12px}
.step h4{font-family:var(--display);font-size:16px;font-weight:600;text-transform:none;letter-spacing:normal;color:var(--white);margin:0 0 8px}
.step p{font-size:13px;line-height:1.55;margin:0;color:var(--text-soft)}

/* ───────────── LINKED TOOLS ───────────── */
.tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(264px,1fr));gap:16px}
.tool-card{position:relative;background:linear-gradient(180deg,var(--surface),#0c1626);border:1px solid var(--border);border-radius:var(--r);padding:24px 26px;display:block;color:var(--text-soft);overflow:hidden;transition:transform .3s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .3s}
.tool-card::before{content:'';position:absolute;inset:0;opacity:0;transition:opacity .35s;background:radial-gradient(60% 60% at 28% 0%,rgba(34,211,238,0.12),transparent 70%)}
.tool-card:hover{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:0 24px 50px -28px rgba(0,0,0,.8)}
.tool-card:hover::before{opacity:1}
.tool-card > *{position:relative;z-index:1}
.tool-card-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:0.12em;color:var(--cyan);margin-bottom:11px;display:block}
.tool-card h4{font-family:var(--display);font-size:18px;font-weight:600;color:var(--white);text-transform:none;letter-spacing:-0.01em;margin:0 0 8px}
.tool-card p{font-size:13px;line-height:1.55;margin:0;color:var(--text-soft)}
.tool-card.planned{opacity:0.62;border-style:dashed}
.tool-card.planned:hover{transform:none;box-shadow:none}

/* ───────────── SOURCES TABLE ───────────── */
.sources-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:13px;border:1px solid var(--border);border-radius:var(--r);overflow:hidden}
.sources-table thead{background:var(--navy-2)}
.sources-table th{text-align:left;padding:14px 18px;font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:0.12em;color:var(--text)}
.sources-table td{padding:12px 18px;border-top:1px solid var(--border);vertical-align:top;color:var(--text-soft)}
.sources-table tbody tr:nth-child(even) td{background:rgba(255,255,255,0.015)}
.sources-table a{color:var(--cyan)}

/* ───────────── DISCLAIMER ───────────── */
.disclaimer{background:rgba(255,255,255,0.012);border:1px solid var(--border);border-radius:var(--r);padding:24px 28px;margin-top:64px;font-size:13px;color:var(--text-mute);line-height:1.65;font-family:var(--mono)}
.disclaimer strong{color:var(--text)}

/* ───────────── FOOTER ───────────── */
.footer{border-top:1px solid var(--border);background:var(--navy-2);padding:40px var(--pad);position:relative;z-index:1}
.footer-inner{max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:18px}
.footer .brand{color:var(--white)}
.footer-meta{font-family:var(--mono);font-size:11px;color:var(--text-mute);letter-spacing:0.08em}

/* ───────────── BACK TO TOP ───────────── */
.totop{position:fixed;bottom:30px;right:30px;width:48px;height:48px;background:var(--surface);color:var(--cyan);border:1px solid var(--border-strong);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(16px);transition:opacity .25s,transform .25s,border-color .25s,background .25s;font-family:var(--mono);font-size:18px;z-index:50}
.totop.visible{opacity:1;transform:translateY(0)}
.totop:hover{border-color:rgba(34,211,238,0.5);background:rgba(34,211,238,0.08)}

/* ════════════════════════════════════════════════════════════
   PLAYBOOK HUB
   ════════════════════════════════════════════════════════════ */
.hub{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad) 96px;position:relative;z-index:1}

/* controls: search + filter */
.pb-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:28px 0 8px;border-bottom:1px solid var(--border);margin-bottom:36px}
.pb-search{position:relative;flex:1;min-width:240px}
.pb-search svg{position:absolute;left:15px;top:50%;transform:translateY(-50%);width:17px;height:17px;stroke:var(--text-mute);fill:none;stroke-width:1.7;pointer-events:none}
.pb-search input{width:100%;font-family:var(--body);font-size:15px;color:var(--text);background:rgba(255,255,255,0.03);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:13px 16px 13px 42px;outline:none;transition:border-color .25s,background .25s}
.pb-search input::placeholder{color:var(--text-mute)}
.pb-search input:focus{border-color:rgba(34,211,238,0.5);background:rgba(34,211,238,0.04)}
.pb-filter{display:flex;gap:8px;flex-wrap:wrap}
.pb-fbtn{font-family:var(--mono);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-soft);background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 15px;cursor:pointer;transition:color .2s,border-color .2s,background .2s}
.pb-fbtn:hover{color:var(--white);border-color:var(--border-strong)}
.pb-fbtn.on{color:var(--navy);background:var(--cyan);border-color:var(--cyan);font-weight:500}

/* hub grid */
.pb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:980px){.pb-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.pb-grid{grid-template-columns:1fr}}
.pb-tile{display:flex;flex-direction:column;position:relative;background:linear-gradient(180deg,var(--surface),#0c1626);border:1px solid var(--border);border-radius:var(--r);padding:26px 26px 24px;overflow:hidden;color:inherit;transition:transform .3s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .3s}
.pb-tile::before{content:'';position:absolute;inset:0;opacity:0;transition:opacity .35s;background:radial-gradient(60% 55% at 28% 0%,rgba(34,211,238,0.12),transparent 70%)}
.pb-tile.live:hover{transform:translateY(-5px);border-color:var(--border-strong);box-shadow:0 24px 50px -28px rgba(0,0,0,.8)}
.pb-tile.live:hover::before{opacity:1}
.pb-tile > *{position:relative;z-index:1}
.pb-tile.planned{border-style:dashed;opacity:0.72}
.pb-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.pb-num{font-family:var(--mono);font-size:11px;letter-spacing:0.1em;color:var(--text-mute)}
.pb-status{font-family:var(--mono);font-size:9.5px;letter-spacing:0.1em;text-transform:uppercase;border-radius:5px;padding:4px 9px;white-space:nowrap}
.pb-status.s-live{color:var(--cyan);background:rgba(34,211,238,0.1);border:1px solid rgba(34,211,238,0.3)}
.pb-status.s-soon{color:var(--text-mute);background:rgba(255,255,255,0.02);border:1px solid var(--border)}
.pb-tile h3{font-size:22px;line-height:1.18;margin-bottom:10px;letter-spacing:-0.015em}
.pb-tile .pb-desc{font-size:14px;color:var(--text-soft);line-height:1.58;margin-bottom:18px}
.pb-refs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}
.pb-ref{font-family:var(--mono);font-size:10px;letter-spacing:0.04em;color:var(--text-soft);border:1px solid var(--border);border-radius:5px;padding:4px 8px;background:rgba(255,255,255,0.02)}
.pb-go{margin-top:auto;display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--cyan);transition:transform .25s}
.pb-tile.live:hover .pb-go{transform:translateX(3px)}
.pb-go.muted{color:var(--text-mute)}
.pb-empty{display:none;text-align:center;padding:64px 0;color:var(--text-mute);font-family:var(--mono);font-size:13px;letter-spacing:0.04em}

/* hub: pairing strip */
.pb-pair{margin-top:72px;border:1px solid var(--border);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--surface),#0b1626);padding:clamp(30px,4vw,48px);position:relative;overflow:hidden}
.pb-pair::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 70% at 80% 0%,rgba(59,130,246,0.10),transparent 70%)}
.pb-pair-inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.pb-pair h2{font-family:var(--display);font-size:clamp(24px,3vw,34px);line-height:1.12;letter-spacing:-0.02em;margin-bottom:12px;max-width:560px}
.pb-pair p{font-size:15px;color:var(--text-soft);line-height:1.6;max-width:520px}
.pb-pair .btn{flex:none}

/* ───────────── MOBILE ───────────── */
@media(max-width:980px){
  .layout{grid-template-columns:1fr;gap:28px;padding:36px var(--pad) 72px}
  .toc{position:static;max-height:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:20px 24px}
}
@media(max-width:600px){
  .hero h1{font-size:38px}
  .content h2{font-size:26px}
  .totop{bottom:20px;right:20px;width:44px;height:44px}
}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important}
  html{scroll-behavior:auto}
}

/* ───────────── PRINT ───────────── */
@media print{
  .nav,.toc,.totop,.footer,.pb-controls{display:none}
  body{background:#fff;color:#111}
  body::before{display:none}
  .layout{grid-template-columns:1fr;padding:0;max-width:100%}
  .content h2,.content h3,.content h4,h1{color:#000}
  .content p,.content li{color:#222}
  .fw-block,.assertion,.sample,.callout,.findings,.docs-list,.tool-card,.step{border-color:#ccc;background:#fff}
  a{color:#000;text-decoration:underline}
  section{break-inside:avoid;page-break-inside:avoid}
}

/* keyboard accessibility */
.skip-link{position:absolute;top:-48px;left:16px;z-index:9999;padding:10px 20px;background:#3B82F6;color:#fff;font-size:14px;font-weight:500;border-radius:8px;text-decoration:none;transition:top .15s}
.skip-link:focus{top:8px;outline:none}
:focus-visible{outline:2px solid #22D3EE;outline-offset:3px;border-radius:3px}
