/* ==========================================================================
   Adviser guides — the portal layout for /adviser-guides/
   --------------------------------------------------------------------------
   Loads after article.css and article-figs.css, which own the reading styles
   (.lf-body prose, tables, callouts, FAQ toggles, sources, figures). This file
   owns only the portal around them: a three-column docs layout, the guide
   navigation, the page header, the adviser gate, "Read next" cards and the hub.

   Every class is gd- prefixed so nothing here can mean something else on
   another page. Square corners, First Light as the one colour, as everywhere.

   Layout:
     >= 1180px  nav rail | article (44rem) | on-this-page rail
     >= 900px   nav rail | article
     <  900px   article, with the nav as a disclosure above it
   ========================================================================== */

.gd{display:grid;grid-template-columns:minmax(0,1fr);gap:0 56px;
  padding:36px var(--pad) 96px}
@media (min-width:900px){
  .gd{grid-template-columns:232px minmax(0,44rem);justify-content:start}
}
@media (min-width:1180px){
  .gd{grid-template-columns:232px minmax(0,44rem) 200px;justify-content:space-between}
}

/* ---------- guide navigation (left rail) ---------- */
.gd-nav{font-size:14px;line-height:20px}
.gd-nav .gd-nav-sum{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 14px;border:1px solid var(--border-2);background:var(--card);cursor:pointer;
  font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
  list-style:none}
.gd-nav .gd-nav-sum::-webkit-details-marker{display:none}
.gd-nav details[open] .gd-nav-sum{border-bottom-color:transparent}
.gd-nav .gd-nav-body{border:1px solid var(--border-2);border-top:0;padding:8px 14px 16px;background:var(--card);
  margin-bottom:28px}
@media (min-width:900px){
  .gd-nav{position:sticky;top:calc(var(--nav-h,64px) + 24px);align-self:start;
    max-height:calc(100vh - var(--nav-h,64px) - 48px);overflow-y:auto;padding-right:4px}
  .gd-nav .gd-nav-sum{display:none}
  .gd-nav .gd-nav-body{border:0;padding:0;background:none;margin:0}
}
.gd-nav .gd-home{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);margin:4px 0 18px;text-decoration:none}
.gd-nav .gd-sec{margin:0 0 18px}
.gd-nav .gd-sec-t{font-family:var(--font-mono);font-size:11px;line-height:16px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--faint);margin:0 0 6px}
.gd-nav ul{list-style:none;margin:0;padding:0}
.gd-nav li{margin:0;padding:0}
.gd-nav li::before{content:none}
.gd-nav a.gd-l{display:block;padding:6px 0 6px 12px;border-left:1px solid var(--border);
  color:var(--muted);text-decoration:none}
.gd-nav a.gd-l:hover{color:var(--text);border-left-color:var(--border-2)}
.gd-nav a.gd-l[aria-current="page"]{color:var(--text);border-left:2px solid var(--accent);padding-left:11px}
.gd-nav .gd-access{margin-top:22px;padding-top:16px;border-top:1px solid var(--border);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.gd-nav .gd-access b{color:var(--accent);font-weight:400}

/* ---------- page header ---------- */
.gd-main{min-width:0}
.gd-head{padding:8px 0 32px;border-bottom:1px solid var(--border);margin-bottom:36px}
.gd-kicker{font-family:var(--font-mono);font-size:11px;line-height:16px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.gd-head h1{font-family:var(--font-head);font-weight:700;text-transform:uppercase;letter-spacing:0;
  font-size:clamp(36px,4.4vw,56px);line-height:.98;margin:0 0 18px}
.gd-head .gd-dek{font-size:19px;line-height:28px;color:var(--muted);margin:0 0 22px;max-width:40rem}
.gd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;font-size:13px;line-height:18px;color:var(--muted-2)}
.gd-meta .gd-who{display:flex;align-items:center;gap:10px;color:var(--text)}
.gd-meta .gd-who img{width:32px;height:32px;object-fit:cover}
.gd-meta .gd-who a{color:var(--text);text-decoration:none}
.gd-meta .gd-who small{display:block;color:var(--muted-2);font-size:12px}
.gd-meta .gd-m{font-family:var(--font-mono);font-size:12px}
.gd-meta .gd-rev{font-family:var(--font-mono);font-size:12px}
.gd-meta .gd-rev.pending{color:var(--faint)}

/* The guide body is article.css's .lf-body; it starts flush under the header. */
.gd-main .lf-body,.gd-main .lf-body:has(> .callout.tldr:first-child){padding-top:0}

/* ---------- on this page (right rail) ---------- */
.gd-toc{display:none}
@media (min-width:1180px){
  .gd-toc{display:block;position:sticky;top:calc(var(--nav-h,64px) + 24px);align-self:start;font-size:13px;line-height:18px}
  .gd-toc .t{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0 0 10px}
  .gd-toc a{display:block;padding:5px 0 5px 12px;border-left:1px solid var(--border);color:var(--muted-2);text-decoration:none}
  .gd-toc a:hover{color:var(--text)}
  .gd-toc a.on{color:var(--text);border-left:2px solid var(--accent);padding-left:11px}
}

/* ---------- read next ---------- */
.gd-next{margin:56px 0 0;padding-top:28px;border-top:1px solid var(--border)}
.gd-next .t{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);margin:0 0 14px}
.gd-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.gd-card{display:flex;flex-direction:column;gap:8px;padding:18px 18px 20px;border:1px solid var(--border-2);
  background:var(--card);color:var(--text);text-decoration:none;transition:border-color .15s}
.gd-card:hover{border-color:var(--accent)}
.gd-card .k{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.gd-card b{font-size:16px;line-height:22px;font-weight:600}
.gd-card span.d{font-size:14px;line-height:20px;color:var(--muted)}

/* ---------- adviser CTA ---------- */
.gd-cta{margin:40px 0 0;padding:22px 24px;border:1px solid var(--border-2);border-left:2px solid var(--accent);background:var(--card)}
.gd-cta{display:flex;gap:20px;align-items:flex-start}
.gd-cta-photo{width:96px;height:96px;flex:none;object-fit:cover;display:block}
.gd-cta-body{min-width:0}
@media (max-width:520px){.gd-cta{flex-direction:column;gap:14px}.gd-cta-photo{width:72px;height:72px}}
.gd-cta h4{font-size:17px;line-height:24px;font-weight:600;margin:0 0 6px}
.gd-cta p{font-size:15px!important;line-height:23px!important;color:var(--muted);margin:0 0 14px!important}
.gd-cta .btns{display:flex;flex-wrap:wrap;gap:8px}

/* ---------- the adviser gate ----------
   A soft gate. Without JS, or for a crawler, everything is in the page. With
   JS and no access, the gated part is clipped behind a fade and the gate panel
   sits over the cut. Access is a first-party cookie set by the form or by an
   invitation link (?access=adviser). It is a door, not a lock: the content is
   general information, and the gate exists to make the hub feel like what it
   is — material written for advisers — and to start a relationship. */
.js .gd-locked .gated{max-height:260px;overflow:hidden;position:relative;pointer-events:none;user-select:none}
.js .gd-locked .gated::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(26,22,19,0) 0,var(--bg,#1A1613) 85%)}
.gd-gate{display:none}
.js .gd-locked .gd-gate{display:block;margin:-40px 0 0;position:relative;z-index:2;
  padding:28px 28px 26px;border:1px solid var(--border-2);border-top:2px solid var(--accent);background:var(--card)}
.gd-gate .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}
.gd-gate h3{font-family:var(--font-body);font-size:22px;line-height:28px;font-weight:600;text-transform:none;letter-spacing:-.01em;margin:0 0 8px}
.gd-gate p{font-size:15px!important;line-height:23px!important;color:var(--muted);margin:0 0 18px!important}
.gd-gate form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gd-gate label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.gd-gate input[type=text],.gd-gate input[type=email],.gd-gate select{
  font:inherit;font-size:15px;color:var(--text);background:var(--bg,#1A1613);border:1px solid var(--border-2);
  padding:10px 12px;min-height:42px;border-radius:0}
.gd-gate .full{grid-column:1 / -1}
.gd-gate .chk{flex-direction:row;align-items:flex-start;gap:10px;font-size:13px;line-height:19px}
.gd-gate .chk input{margin-top:3px;accent-color:var(--accent)}
.gd-gate .row{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:4px}
.gd-gate .note{font-size:12px;line-height:18px;color:var(--muted-2)}
.gd-gate .err{grid-column:1 / -1;font-size:13px;color:var(--text);display:none}
.gd-gate .err.on{display:block}
@media (max-width:620px){
  .gd-gate form{grid-template-columns:1fr}
  .js .gd-locked .gd-gate{padding:22px 18px}
}

/* ---------- hub ---------- */
.gd-hub-head{padding:12px 0 36px;border-bottom:1px solid var(--border);margin-bottom:36px}
.gd-hub-head h1{font-family:var(--font-head);font-weight:700;text-transform:uppercase;letter-spacing:0;
  font-size:clamp(40px,5.2vw,68px);line-height:.96;margin:0 0 18px;max-width:14ch}
.gd-hub-head .gd-dek{font-size:19px;line-height:28px;color:var(--muted);max-width:40rem;margin:0}
.gd-hub-sec{margin:0 0 44px}
.gd-hub-sec h2{font-family:var(--font-body);font-size:20px;line-height:26px;font-weight:600;text-transform:none;letter-spacing:-.01em;margin:0 0 6px}
.gd-hub-sec > p{font-size:15px;line-height:23px;color:var(--muted);margin:0 0 16px;max-width:40rem}
.gd-hub-paths{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:0 0 48px}

/* ---------- glossary ---------- */
.gd-gloss dl{margin:0}
.gd-gloss dt{font-weight:600;color:var(--text);font-size:17px;line-height:24px;margin:22px 0 4px;scroll-margin-top:calc(var(--nav-h,64px) + 24px)}
.gd-gloss dt:target{color:var(--accent)}
.gd-gloss dd{margin:0;color:var(--muted);font-size:16px;line-height:25px}
.gd-gloss .gd-az{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.gd-gloss .gd-az a{font-family:var(--font-mono);font-size:12px;padding:4px 8px;border:1px solid var(--border-2);color:var(--muted);text-decoration:none}
.gd-gloss .gd-az a:hover{color:var(--text);border-color:var(--accent)}

/* A glossary term linked from a guide: dotted, so it reads as a definition and not a destination. */
.lf-body a.gd-term{text-decoration:underline dotted;text-underline-offset:3px;color:inherit}

/* Section anchors land below the fixed header. */
.gd-main h2[id],.gd-main h3[id]{scroll-margin-top:calc(var(--nav-h,64px) + 24px)}

/* Buttons inside the article body: .lf-body a sets every link to the text
   colour and underlines it, which left white text on the white button. */
.lf-body a.btn{text-decoration:none}
.lf-body a.btn-white{color:var(--surface)}
.lf-body a.btn-ghost{color:var(--text)}

/* ==========================================================================
   v2: modules, search, progress, pop-ups, pager, feedback, print
   ========================================================================== */

/* ---------- nav: collapsible modules with read ticks ---------- */
.gd-nav details.gd-sec > summary{list-style:none;cursor:pointer}
.gd-nav details.gd-sec > summary::-webkit-details-marker{display:none}
.gd-nav .gd-sec-t{display:flex;align-items:center;gap:8px}
.gd-nav .gd-sec-t .n{color:var(--accent)}
.gd-nav details.gd-sec > summary .gd-sec-t::after{content:"+";margin-left:auto;color:var(--faint)}
.gd-nav details.gd-sec[open] > summary .gd-sec-t::after{content:"\2212"}
.gd-nav details.gd-sec ul{margin-top:6px}
.gd-nav a.gd-l{position:relative;padding-right:18px}
.gd-nav a.gd-l.is-read::after{content:"";position:absolute;right:2px;top:50%;width:8px;height:4px;margin-top:-4px;
  border-left:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);transform:rotate(-45deg)}
.gd-prog{margin:0 0 18px}
.gd-prog .bar,.gd-hub-prog .bar{display:block;height:3px;background:var(--border);margin-bottom:6px}
.gd-prog .bar i,.gd-hub-prog .bar i{display:block;height:100%;width:0;background:var(--accent);transition:width .3s}
.gd-prog .lbl{font-family:var(--font-mono);font-size:11px;color:var(--muted-2)}

/* ---------- search buttons ---------- */
.gd-search-btn{display:flex;align-items:center;gap:10px;width:100%;cursor:pointer;
  border:1px solid var(--border-2);background:var(--card);color:var(--muted);
  font:inherit;font-size:14px;line-height:20px;padding:9px 12px;text-align:left;transition:border-color .15s}
.gd-search-btn:hover{border-color:var(--accent);color:var(--text)}
.gd-search-btn .gd-ico{width:16px;height:16px;flex:none}
.gd-search-btn kbd{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--faint);border:1px solid var(--border-2);padding:1px 5px}
.gd-search-side{margin:0 0 16px}
.gd-search-hero{max-width:40rem;margin:26px 0 0;padding:14px 16px;font-size:16px}
.gd-search-hero .gd-ico{width:18px;height:18px;color:var(--accent)}

/* ---------- search modal ---------- */
.gd-sm{position:fixed;inset:0;z-index:200;background:rgba(10,8,7,.72);display:flex;justify-content:center;
  align-items:flex-start;padding:12vh 16px 16px}
.gd-sm-box{width:100%;max-width:640px;background:var(--card);border:1px solid var(--border-2);border-top:2px solid var(--accent)}
.gd-sm-box input{width:100%;font:inherit;font-size:18px;color:var(--text);background:none;border:0;
  border-bottom:1px solid var(--border);padding:18px 20px;outline:none}
.gd-sm-res{list-style:none;margin:0;padding:6px;max-height:55vh;overflow-y:auto}
.gd-sm-res li{margin:0}
.gd-sm-res li::before{content:none}
.gd-sm-res a{display:block;padding:10px 14px;color:var(--text);text-decoration:none}
.gd-sm-res li.on a,.gd-sm-res a:hover{background:var(--chip)}
.gd-sm-res .k{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:2px}
.gd-sm-res b{display:block;font-size:15px;line-height:21px;font-weight:600}
.gd-sm-res .d{display:block;font-size:13px;line-height:19px;color:var(--muted-2)}
.gd-sm-res li.none{padding:16px 14px;font-size:14px;color:var(--muted)}
.gd-sm-foot{font-family:var(--font-mono);font-size:11px;color:var(--faint);padding:10px 20px;border-top:1px solid var(--border)}
body.gd-sm-open{overflow:hidden}

/* ---------- article header tools ---------- */
.gd-kicker a{color:var(--accent);text-decoration:none}
.gd-kicker .gd-step{margin-left:14px;color:var(--muted-2)}
.gd-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.gd-tools button{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font:inherit;font-size:13px;line-height:18px;
  color:var(--muted);background:none;border:1px solid var(--border-2);padding:7px 12px;min-height:36px}
.gd-tools button:hover{color:var(--text);border-color:var(--accent)}
.gd-tools .gd-ico,.gd-read .gd-ico{width:15px;height:15px}
.gd-read{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;color:var(--accent);padding:0 6px}

/* ---------- glossary pop-up ---------- */
.gd-pop{position:absolute;z-index:150;max-width:320px;background:var(--card);border:1px solid var(--border-2);
  border-top:2px solid var(--accent);padding:12px 14px;box-shadow:0 12px 32px rgba(0,0,0,.45)}
/* invisible bridge over the 8px gap above the pop-up, so the pointer never leaves it */
.gd-pop::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px}
.gd-pop b{display:block;font-size:14px;line-height:20px;color:var(--text);margin-bottom:4px}
.gd-pop p{font-size:13px;line-height:19px;color:var(--muted);margin:0 0 8px}
.gd-pop a{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--accent);text-decoration:none}

/* ---------- feedback, pager ---------- */
.gd-fb{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:48px 0 0;padding:16px 0;
  border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.gd-fb .q{font-size:15px;color:var(--text);margin-right:6px}
.gd-fb button{cursor:pointer;font:inherit;font-size:13px;color:var(--muted);background:none;border:1px solid var(--border-2);padding:6px 16px;min-height:36px}
.gd-fb button:hover{color:var(--text);border-color:var(--accent)}
.gd-fb .thanks{font-size:14px;color:var(--muted)}
.gd-pager{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0 0}
.gd-pg{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border:1px solid var(--border-2);text-decoration:none;color:var(--text);min-height:76px}
.lf-body a.gd-pg{text-decoration:none}
.gd-pg:hover{border-color:var(--accent)}
.gd-pg.next{text-align:right}
.gd-pg .k{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.gd-pg b{font-size:16px;line-height:22px;font-weight:600}
.gd-pg.empty{border:0}
@media (max-width:620px){.gd-pager{grid-template-columns:1fr}.gd-pg.empty{display:none}.gd-pg.next{text-align:left}}

/* ---------- cards: minutes and read state ---------- */
.gd-card .k{display:flex;justify-content:space-between;gap:8px}
.gd-card .k .m{color:var(--faint);white-space:nowrap;flex:none}
.gd-card .k .l{min-width:0}
.gd-card .k{line-height:16px}
.gd-card.is-read{border-color:var(--border)}
.gd-card.is-read b::after{content:"  \2713";color:var(--accent)}
.lf-body a.gd-card{text-decoration:none}

/* ---------- hub ---------- */
.gd-hub .gd-hub-head h1{max-width:16ch}
.gd-stats{display:flex;flex-wrap:wrap;gap:8px 22px;margin:22px 0 0;font-family:var(--font-mono);font-size:12px;color:var(--muted-2)}
.gd-stats b{color:var(--text);font-weight:400}
.gd-hub-prog{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:22px;max-width:40rem}
.gd-hub-prog .bar{flex:1 1 200px;margin:0}
.gd-hub-prog .lbl{font-family:var(--font-mono);font-size:12px;color:var(--muted)}
.gd-hub-prog .cont{font-size:14px;color:var(--accent);text-decoration:none}
.gd-path{border-color:var(--border-2)}

.gd-mod{margin:0 0 40px;border:1px solid var(--border-2);background:var(--card)}
.gd-mod-head{padding:24px 26px 18px;border-bottom:1px solid var(--border)}
.gd-mod-n{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.gd-mod-head h2{font-family:var(--font-head);font-weight:700;text-transform:uppercase;letter-spacing:0;font-size:30px;line-height:1;margin:0 0 10px}
.gd-mod-head p{font-size:15px;line-height:23px;color:var(--muted);margin:0 0 12px;max-width:40rem}
.gd-mod-meta{display:flex;flex-wrap:wrap;gap:6px 18px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2)}
.gd-mod-meta .gd-mod-prog{color:var(--accent)}
.gd-mod.is-done .gd-mod-n::after{content:" \00b7 complete";color:var(--muted-2)}
.gd-steps{list-style:none;margin:0;padding:0}
.gd-steps li{margin:0;border-top:1px solid var(--hairline)}
.gd-steps li:first-child{border-top:0}
.gd-steps li::before{content:none}
.gd-step-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto 22px;gap:14px;align-items:center;
  padding:14px 26px;color:var(--text);text-decoration:none;transition:background .15s}
.gd-step-row:hover{background:rgba(250,250,249,.03)}
.gd-step-row .i{font-family:var(--font-mono);font-size:12px;color:var(--faint)}
.gd-step-row .t b{display:block;font-size:16px;line-height:22px;font-weight:600}
.gd-step-row .t span{display:block;font-size:13px;line-height:19px;color:var(--muted-2)}
.gd-step-row .m{font-family:var(--font-mono);font-size:12px;color:var(--muted-2);white-space:nowrap}
.gd-step-row .tick{width:16px;height:16px;border:1px solid var(--border-2);position:relative}
.gd-step-row.is-read .tick{background:var(--accent);border-color:var(--accent)}
.gd-step-row.is-read .tick::after{content:"";position:absolute;left:4px;top:3px;width:7px;height:4px;
  border-left:1.5px solid var(--accent-on);border-bottom:1.5px solid var(--accent-on);transform:rotate(-45deg)}
.gd-step-row.is-read .i{color:var(--accent)}
@media (max-width:620px){
  .gd-mod-head{padding:20px 18px 16px}
  .gd-step-row{grid-template-columns:28px minmax(0,1fr) 18px;padding:14px 18px}
  .gd-step-row .m{display:none}
}

.gd-tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.gd-tool{display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid var(--border-2);background:var(--card);
  color:var(--text);text-decoration:none;transition:border-color .15s}
.gd-tool:hover{border-color:var(--accent)}
.gd-tool .gd-ico{width:22px;height:22px;color:var(--accent)}
.gd-tool b{font-size:15px;line-height:21px;font-weight:600}
.gd-tool span{font-size:13px;line-height:19px;color:var(--muted)}
.gd-gloss-card .gd-ico{width:22px;height:22px;color:var(--accent)}

/* ---------- gate perks ---------- */
.gd-gate-perks{list-style:none;margin:6px 0 20px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}
.gd-gate-perks li{position:relative;padding-left:20px;margin:0;font-size:14px;line-height:20px;color:var(--muted)}
.gd-gate-perks li::before{content:"";position:absolute;left:2px;top:6px;width:8px;height:4px;background:none;
  border-left:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);transform:rotate(-45deg)}
.gd-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
@media (max-width:620px){.gd-gate-perks{grid-template-columns:1fr}}

/* ---------- module icons ---------- */
.gd-mod-head{position:relative}
.gd-mod-head h2,.gd-mod-head p{padding-right:72px}
.gd-mod-ico{position:absolute;top:24px;right:26px;width:48px;height:48px;padding:10px;stroke-width:1.5;
  border:1px solid var(--border-2);color:var(--accent);background:var(--card)}
@media (max-width:620px){.gd-mod-ico{top:20px;right:18px;width:40px;height:40px;padding:8px}.gd-mod-head h2{padding-right:56px}.gd-mod-head p{padding-right:0}}

/* ---------- theme toggle ---------- */
.gd-nav-row{display:flex;gap:8px;margin:0 0 16px}
.gd-nav-row .gd-search-side{margin:0;flex:1;min-width:0}
.gd-theme{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font:inherit;
  font-size:13px;line-height:18px;color:var(--muted);background:var(--card);border:1px solid var(--border-2);padding:7px 12px;min-height:36px}
.gd-theme:hover{color:var(--text);border-color:var(--accent)}
.gd-theme .gd-ico{width:16px;height:16px;flex:none}
.gd-theme-side{padding:0;width:40px;flex:none}
.gd-theme-side .gd-theme-lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.gd-tools .gd-theme{background:none}
.gd-ico-moon,[data-theme="light"] .gd-ico-sun{display:none}
[data-theme="light"] .gd-ico-moon{display:block}

/* ---------- light mode ----------
   The same tokens, flipped. First Light cannot be text or a rule on white, so
   --accent becomes ink and First Light comes back as a fill (highlights, the
   TL;DR mark, progress bars, the primary button). */
html[data-theme="light"]{
  color-scheme:light;
  --ground:#FBFBFA; --bg:#FBFBFA; --surface:var(--to-grey-150); --chip:var(--to-grey); --card:#fff;
  --white:var(--to-ink); --text:var(--to-ink); --muted:var(--to-grey-900); --muted-2:var(--to-grey-700); --faint:var(--to-grey-500);
  --border:rgba(25,24,25,.12); --border-2:rgba(25,24,25,.2); --hairline:rgba(25,24,25,.08);
  --accent:var(--to-ink); --accent-on:#fff;
  --accent-bg:rgba(255,246,149,.55); --accent-br:rgba(25,24,25,.18);
  --grain-opacity:0;
  --dots-band:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect x='4' y='4' width='1.5' height='1.5' fill='%23E5E7EB'/%3E%3C/svg%3E");
  --dots-card:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Crect x='6' y='6' width='2' height='2' fill='%23E5E7EB'/%3E%3C/svg%3E");
}
html[data-theme="light"] .header::before,html[data-theme="light"] .notice-bar::before{opacity:0}
html[data-theme="light"] .brand-to img,html[data-theme="light"] .footer img[src*="wordmark"]{filter:brightness(0)}
html[data-theme="light"] .btn-white{background:var(--to-ink);color:#fff;border-color:var(--to-ink)}
/* The ghost button keeps its dark hover ground (styles.css), so in light mode its
   ink text has to turn white on hover or it disappears into it. */
html[data-theme="light"] .btn-ghost:hover{color:#fff}
html[data-theme="light"] .lf-body a.btn-white{color:#fff}
html[data-theme="light"] .gd-prog .bar i,html[data-theme="light"] .gd-hub-prog .bar i{background:var(--to-ink)}
html[data-theme="light"] .gd-sm{background:rgba(25,24,25,.35)}
html[data-theme="light"] .gd-pop{box-shadow:0 12px 32px rgba(25,24,25,.15)}
html[data-theme="light"] [fill="#1c1917"]{fill:var(--to-grey-150)}
html[data-theme="light"] [fill="#FFF695"]{fill:var(--to-ink)}
html[data-theme="light"] [fill="#44464D"]{fill:var(--to-grey-500)}
html[data-theme="light"] .af-rets .m{color:var(--to-grey-700)}
html[data-theme="light"] .af-rets .r.on .m{color:var(--to-ink)}
html[data-theme="light"] .gd-step-row:hover{background:rgba(25,24,25,.03)}

/* Print and the client PDF live in guides-print.css (loaded media="print").
   The PDF cover is in every guide page, and only ever printed. */
.gd-cover{display:none}

/* The hub has no "on this page" rail, so its main column takes the room. */
@media (min-width:900px){ .gd.gd-hub{grid-template-columns:232px minmax(0,1fr);justify-content:start} }
.gd-hub .gd-main{max-width:980px}
.gd-hub .gd-hub-paths{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.gd-hub .gd-tools-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.gd-step-row .tick{background:none;border-color:var(--border-2)}
.gd-hub .gd-hub-paths{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
@media (max-width:899px){
  .gd-nav .gd-nav-sum{margin-bottom:20px}
  .gd-nav details[open] .gd-nav-sum{margin-bottom:0}
}
@media (hover:none),(max-width:620px){ .gd-search-btn kbd{display:none} }

/* ---------- the adviser pack offer (replaces the mid-article gate) ----------
   Shown once per guide, after the FAQ, and on the hub. Always visible; once the
   reader has joined it collapses to a one-line confirmation. */
.gd-gate,.js .gd-locked .gd-gate{display:block;margin:48px 0 0;position:relative;
  padding:28px 28px 26px;border:1px solid var(--border-2);border-top:2px solid var(--accent);background:var(--card)}
.gd-gate.is-member .gd-gate-perks,.gd-gate.is-member label,.gd-gate.is-member .row,.gd-gate.is-member .err{display:none}
.gd-gate.is-member h3::after{content:" \2713";color:var(--accent)}
.gd-gate.is-member .gd-gate-done{display:block!important}
.gd-gate-done{font-size:15px;color:var(--muted);margin:0}
a.gd-access{display:block;text-decoration:none}

/* ---------- hub: one right edge ----------
   Every box on the hub runs to the main column's edge, the same as the module
   boxes. auto-fit (not auto-fill) so three cards share the row instead of
   leaving an empty fourth track; the hub's .lf-body wrapper drops the article
   measure it inherits. Running text keeps its reading measure. */
.gd-hub .gd-search-hero{max-width:none}
.gd-hub .gd-hub-paths,.gd-hub .gd-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.gd-hub .gd-tools-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.gd-hub .gd-main > .lf-body{max-width:none;margin-left:0;margin-right:0}

/* Search and Ask side by side on the hub; stacked on a phone. */
.gd-hub-search{display:flex;gap:10px;margin:26px 0 0;align-items:stretch}
.gd-hub-search .gd-search-hero{flex:1;min-width:0;margin:0}
.gd-hub-head .gd-hub-search .gd-ask-btn{margin:0;flex:none;white-space:nowrap}
@media (max-width:620px){.gd-hub-search{flex-direction:column}.gd-hub-head .gd-hub-search .gd-ask-btn{justify-content:center}}

/* The "browse the hub" link inside an empty result was picking up the result-row styles. */
.gd-sm-res li.none a{display:inline;padding:0;background:none;text-decoration:underline;text-underline-offset:3px;color:var(--text)}

/* ---------- client PDF: name prompt ----------
   Shown under the header tools when a member who came by invitation link has
   no name on file. Both fields optional; js/guides.js removes it on submit. */
.gd-pdf-ask{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 0;padding:18px 18px 16px;
  border:1px solid var(--border-2);border-top:2px solid var(--accent);background:var(--card)}
.gd-pdf-ask p{grid-column:1 / -1;margin:0;font-size:14px;line-height:20px;color:var(--muted)}
.gd-pdf-ask label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.gd-pdf-ask input{font:inherit;font-size:15px;color:var(--text);background:var(--bg,#1A1613);border:1px solid var(--border-2);
  padding:9px 12px;min-height:40px;border-radius:0}
.gd-pdf-ask .row{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.gd-pdf-skip{cursor:pointer;font:inherit;font-size:13px;color:var(--muted);background:none;border:1px solid var(--border-2);
  padding:7px 14px;min-height:36px}
.gd-pdf-skip:hover{color:var(--text);border-color:var(--accent)}
.gd-tools button[aria-busy="true"]{opacity:.6;cursor:progress}
@media (max-width:620px){.gd-pdf-ask{grid-template-columns:1fr}}
