/* Generated by book/scripts/build_artist_development.py. Do not edit by hand. */
/* Scoped to .adev-book so it cannot restyle site chrome — same containment the
   LPP book and whitepaper.php use. NO Tailwind utilities appear in the emitted
   HTML: public_html/build/ is a committed artifact and an unscanned class renders
   nothing, silently. Every var() carries a literal fallback because an undefined
   custom property drops the whole declaration and three token vocabularies exist
   on this network. */
.adev-book{
  --ground:rgb(var(--color-bg-dark, 11 11 11));
  --panel:rgb(var(--color-bg-card, 17 17 24));
  --sunk:rgb(var(--color-bg-elevated, 26 26 36));
  --ink:var(--hh-text, #FFFFFF);
  --muted:rgb(var(--color-border, 255 255 255) / .58);
  --hair:rgb(var(--color-border, 255 255 255) / .12);
  --gold:rgb(var(--color-gold, 255 215 0));
  --accent:#F5B301; --accent-ink:#F5B301;
  --rail:clamp(15rem,20vw,18.5rem);
  --serif:Georgia,'Iowan Old Style','Times New Roman',serif;
  --sans:var(--hh-font-heading, 'Helvetica Neue', Helvetica, Arial, sans-serif);
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace;
}
[data-theme="white_blue_red"] .adev-book{
  /* Classic Sticker. Structural colour follows the bridge above; the accent needs
     a contrast-safe variant — #F5B301 on white is ~1.8:1 and fails WCAG AA. */
  --accent:#8A6100; --accent-ink:#6E4D00;
}
.adev-book *{box-sizing:border-box;}
.adev-book{margin:0;background:var(--ground);color:var(--ink);
  font-family:var(--serif);font-size:17px;line-height:1.65;-webkit-text-size-adjust:100%;}

/* MOBILE-FIRST, and it is a network rule, not a preference: the narrow state is
   the DEFAULT and the rail is added at a min-width. Never a max-width query —
   tests/test-mobile-landing-templates.php fails one on sight, because an
   inverted breakpoint ships a desktop layout to every phone. */
.adev-book .wrap{display:grid;grid-template-columns:minmax(0,1fr);
  align-items:start;max-width:1500px;margin:0 auto;}

.adev-book .topbar{display:flex;align-items:center;gap:.7rem;padding:.7rem 1rem;
  border-bottom:1px solid var(--hair);background:var(--ground);font-family:var(--sans);
  position:sticky;top:var(--hh-header-h, 5.8rem);z-index:2;}
.adev-book .topbar strong{font-size:.88rem;font-weight:700;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;}
.adev-book .topbar button{font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;
  background:var(--sunk);color:var(--ink);border:1px solid var(--hair);border-radius:8px;
  padding:.5rem .8rem;min-height:44px;flex:none;}
.adev-book .topbar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}

/* Collapsed by default. Opened by the Contents button, which is progressive
   enhancement — with JS off the rail stays closed and every chapter is still
   reachable through the in-page chapter nav at the foot of the article.
   🔴 The open state is `.open`, NOT a data attribute, because the toggle that
   drives it is the SHARED one in templates/book-chapter-content.php and it
   toggles a class. Its selector also has to be widened to see this book — it
   was written as `.lpp-book .rail` and returns null here, which fails silently:
   the button renders, does nothing, and the rail can never be opened on a
   phone. Kept in sync deliberately; changing one without the other breaks
   mobile navigation with no error. */
.adev-book .rail{display:none;padding:1.4rem 1.4rem 2rem;background:var(--ground);
  font-family:var(--sans);border-bottom:1px solid var(--hair);}
.adev-book .rail.open{display:block;}
.adev-book .rail h2{font-family:var(--mono);font-size:.66rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:1.7rem 0 .5rem;}
.adev-book .rail h2:first-of-type{margin-top:1.2rem;}
.adev-book .brand{font-family:var(--sans);font-weight:800;font-size:1.02rem;
  line-height:1.2;letter-spacing:-.015em;margin:0;text-wrap:balance;}
.adev-book .brand span{color:var(--accent);}
.adev-book .brand-sub{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);margin:.45rem 0 0;}
.adev-book .rail ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.1rem;}
.adev-book .rail a{display:flex;gap:.6rem;text-decoration:none;color:var(--ink);opacity:.72;
  font-size:.83rem;line-height:1.35;padding:.4rem .5rem .4rem .55rem;border-radius:4px;
  border-left:2px solid transparent;font-family:var(--sans);}
.adev-book .rail a:hover{opacity:1;background:var(--sunk);}
.adev-book .rail a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;opacity:1;}
.adev-book .rail a.on{opacity:1;border-left-color:var(--accent);background:var(--sunk);font-weight:600;}
.adev-book .rail a .n{font-family:var(--mono);font-size:.72rem;color:var(--muted);
  font-variant-numeric:tabular-nums;flex:none;padding-top:.08em;min-width:1.1em;}

.adev-book .body{padding:2.6rem clamp(1.1rem,4vw,3.4rem) 5rem;min-width:0;}
.adev-book .chapter{max-width:38rem;margin:0 auto;}
.adev-book .chapter + .chapter{margin-top:5rem;padding-top:3rem;border-top:1px solid var(--hair);}
.adev-book .eyebrow{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent-ink);margin:0 0 .7rem;}
.adev-book h1{font-family:var(--sans);font-size:clamp(1.7rem,4.4vw,2.5rem);line-height:1.12;
  font-weight:800;letter-spacing:-.02em;margin:0 0 .9rem;text-wrap:balance;}
.adev-book .teaching{font-family:var(--sans);font-size:1.02rem;line-height:1.5;color:var(--muted);
  margin:0 0 2.2rem;padding-bottom:1.4rem;border-bottom:1px solid var(--hair);}
.adev-book h2{font-family:var(--sans);font-size:1.32rem;font-weight:700;line-height:1.25;
  letter-spacing:-.01em;margin:2.6rem 0 .8rem;text-wrap:balance;}
.adev-book h3{font-family:var(--sans);font-size:1.06rem;font-weight:700;margin:2rem 0 .6rem;}
.adev-book h4{font-family:var(--sans);font-size:.95rem;font-weight:700;margin:1.6rem 0 .5rem;
  color:var(--muted);}
.adev-book p{margin:0 0 1.15rem;}
.adev-book ul,.adev-book ol{margin:0 0 1.3rem;padding-left:1.35rem;}
.adev-book li{margin:0 0 .5rem;}
.adev-book a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:.18em;}
.adev-book a:hover{text-decoration-thickness:2px;}
.adev-book a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.adev-book strong{font-weight:700;}
.adev-book code{font-family:var(--mono);font-size:.86em;background:var(--sunk);
  padding:.12em .38em;border-radius:4px;overflow-wrap:anywhere;}
.adev-book blockquote{margin:1.6rem 0;padding:.2rem 0 .2rem 1.15rem;
  border-left:3px solid var(--accent);color:var(--muted);font-style:italic;}
.adev-book hr{border:0;border-top:1px solid var(--hair);margin:2.4rem 0;}

.adev-book .md-tablewrap{overflow-x:auto;margin:0 0 1.5rem;
  border:1px solid var(--hair);border-radius:8px;}
.adev-book table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:.9rem;}
.adev-book th,.adev-book td{text-align:left;padding:.62rem .8rem;
  border-bottom:1px solid var(--hair);vertical-align:top;}
.adev-book thead th{background:var(--sunk);font-size:.76rem;letter-spacing:.05em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap;}
.adev-book tbody tr:last-child td{border-bottom:0;}

.adev-book .sources{margin:3rem 0 0;padding:1.1rem 1.2rem;background:var(--sunk);
  border-radius:10px;font-family:var(--sans);font-size:.86rem;color:var(--muted);}
.adev-book .sources h3{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;
  text-transform:uppercase;margin:0 0 .5rem;color:var(--muted);}
.adev-book .sources p{margin:0;overflow-wrap:anywhere;}

.adev-book .chapnav{display:flex;justify-content:space-between;gap:1rem;margin:3.5rem 0 0;
  padding-top:1.6rem;border-top:1px solid var(--hair);font-family:var(--sans);}
.adev-book .chapnav a{display:flex;flex-direction:column;gap:.15rem;text-decoration:none;
  padding:.75rem .9rem;border:1px solid var(--hair);border-radius:10px;
  min-height:44px;justify-content:center;max-width:47%;color:var(--ink);}
.adev-book .chapnav a:hover{background:var(--sunk);border-color:var(--accent);}
.adev-book .chapnav .next{text-align:right;align-items:flex-end;}
.adev-book .chapnav .lbl{font-family:var(--mono);font-size:.62rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);}
.adev-book .chapnav .t{font-size:.9rem;font-weight:600;line-height:1.3;}

/* ── the CONTENTS page ───────────────────────────────────────────────────────
   🔴 These eleven classes are emitted by templates/book-chapter-content.php, NOT
   by this builder — the contents page is rendered by PHP while the chapter pages
   are pre-built fragments. Miss them and /book/<slug> renders as unstyled markup:
   a class that matches no rule is not an error, so it fails completely silently.
   That is exactly what happened on the first render of this book, and it is why
   tests/test-book-artist-development.php now asserts every template-emitted class
   has at least one rule here. */
.adev-book .bookmain{max-width:1500px;margin:0 auto;
  padding:2.6rem clamp(1.1rem,4vw,3.4rem) 5rem;}
.adev-book .doc{max-width:42rem;margin:0 auto;}
.adev-book .subtitle{font-family:var(--sans);color:var(--muted);font-size:.95rem;
  line-height:1.5;margin:0 0 1rem;}
.adev-book .subtitle a{color:var(--accent-ink);}

.adev-book .contents-hero{display:flex;flex-direction:column;gap:1.4rem;
  margin:0 0 2.6rem;padding-bottom:2rem;border-bottom:1px solid var(--hair);}
.adev-book .contents-cover{width:min(220px,55vw);height:auto;align-self:flex-start;
  border-radius:10px;border:1px solid var(--hair);}
.adev-book .contents-lede h1{margin:0 0 .7rem;}
.adev-book .contents-lede p{margin:0 0 .9rem;}

.adev-book .contents-group{margin:0 0 2.4rem;}
.adev-book .contents-group h2{font-family:var(--mono);font-size:.7rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink);
  margin:0 0 .7rem;padding-bottom:.5rem;border-bottom:1px solid var(--hair);}
.adev-book .contents-list{list-style:none;margin:0;padding:0;}
.adev-book .contents-list li{margin:0;}
.adev-book .contents-list a{display:flex;gap:.9rem;align-items:baseline;
  text-decoration:none;color:var(--ink);font-family:var(--sans);
  padding:.7rem .6rem;border-radius:8px;min-height:44px;}
.adev-book .contents-list a:hover{background:var(--sunk);}
.adev-book .contents-list a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.adev-book .contents-list .n{font-family:var(--mono);font-size:.78rem;color:var(--muted);
  font-variant-numeric:tabular-nums;flex:none;min-width:1.6em;}
.adev-book .contents-list .t{font-size:.98rem;font-weight:600;line-height:1.35;min-width:0;}
.adev-book .contents-list .job{display:block;font-weight:400;font-size:.86rem;
  line-height:1.45;color:var(--muted);margin-top:.2rem;}

.adev-book .contents-foot{margin:3rem 0 0;padding-top:1.5rem;
  border-top:1px solid var(--hair);font-family:var(--sans);font-size:.86rem;
  color:var(--muted);}
.adev-book .contents-foot a{color:var(--accent-ink);}

/* The rail becomes a real sidebar only when there is room for one. Everything
   above this point is the phone layout. */
@media (min-width: 61rem){
  .adev-book .wrap{grid-template-columns:var(--rail) minmax(0,1fr);}
  .adev-book .topbar{display:none;}
  .adev-book .rail,
  .adev-book .rail[data-open="1"]{display:block;position:sticky;
    top:calc(var(--hh-header-h, 5.8rem) + .5rem);
    max-height:calc(100dvh - var(--hh-header-h, 5.8rem) - 1rem);overflow-y:auto;
    padding:2.2rem 1.4rem 3rem 2rem;
    border-right:1px solid var(--hair);border-bottom:0;}
}
