/* pp-guide.css — the generated guide pages and their category hubs.
   Loaded after pp-theme.css and pp-wow.css, and it only adds: every colour
   here comes from an existing token so the guides follow the site's themes
   rather than declaring their own. */

/* ── hero ─────────────────────────────────────────────────────────
   A real <img>, not a background: it is the page's largest paintable element
   and the one thing worth handing the browser early, so the generator sets
   fetchpriority="high" and explicit dimensions to keep the layout still. */
.gd-hero { position: relative; min-height: 420px; display: flex; align-items: flex-end; overflow: hidden; }
.gd-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gd-hero::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(6,12,20,.15) 0%, rgba(6,12,20,.55) 55%, rgba(6,12,20,.82) 100%);
}
.gd-hero-in { position: relative; z-index: 2; width: 100%; padding-bottom: 34px; }
.gd-hero-in h1 { color: #F2F6FB; max-width: 22ch; margin-top: 12px; }
.gd-dek { color: #E8EFF7; margin-top: 12px; max-width: 54ch; }
.gd-meta { color: #E8EFF7; margin-top: 12px; opacity: .92; }
.gd-meta a { color: #E8EFF7; text-decoration: underline; text-underline-offset: 3px; }
.gd-crumb, .gd-crumb a { color: #E8EFF7; }
.gd-credit { text-align: right; padding: 6px 22px 0; color: var(--pb-muted); }
.gd-credit a { color: inherit; }

/* ── the three-column body ───────────────────────────────────── */
.gd-body { display: grid; grid-template-columns: 210px minmax(0, 1fr) 300px; gap: 44px; align-items: start; }
.gd-toc { position: sticky; top: calc(var(--pp-nav-h) + 20px); display: flex; flex-direction: column; }
.gd-toc a {
  display: block; padding: 6px 12px; border-left: 2px solid var(--pb-border);
  color: var(--pb-muted); font-size: 12.5px; line-height: 1.4;
}
.gd-toc a:hover { color: var(--pb-text); }
.gd-toc a.is-on { border-left-color: var(--pb-accent); color: var(--pb-text); background: var(--pb-accent-tint); }
/* the rail scrolls with the page — same call article.html made, and for the
   same reason: a tall sticky column strands the author card below the fold */
.gd-rail { display: flex; flex-direction: column; gap: 16px; }
.gd-author-name { font-weight: 700; margin-top: 8px; }

/* ── prose ────────────────────────────────────────────────────── */
.gd-prose > h2 { margin-top: 40px; scroll-margin-top: calc(var(--pp-nav-h) + 18px); }
.gd-prose > h3 { margin-top: 26px; font-size: 17px; font-weight: 650; color: var(--pb-text); }
.gd-prose p { margin-top: 14px; font-size: 15.5px; line-height: 1.72; color: var(--pb-text-2); max-width: 66ch; }
.gd-prose a { color: var(--pb-accent); text-underline-offset: 3px; }
.gd-prose code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .92em;
  background: var(--pb-inset); padding: 1px 5px; border-radius: 5px;
}
.gd-list { margin-top: 14px; padding-left: 22px; max-width: 66ch; }
.gd-list li { margin-top: 8px; font-size: 15.5px; line-height: 1.7; color: var(--pb-text-2); }
.gd-list li::marker { color: var(--pb-accent); }
.gd-pull {
  border-left: 3px solid var(--pb-accent); padding: 6px 0 6px 20px; margin: 30px 0;
  font-size: 19px; font-weight: 600; line-height: 1.45; color: var(--pb-text); max-width: 46ch;
}
.gd-tip {
  margin: 26px 0; padding: 16px 18px; border: 1px solid var(--pb-border);
  border-left: 3px solid var(--pb-accent); border-radius: var(--pb-r-card);
  background: var(--pb-inset);
}
.gd-tip p { margin-top: 0; }
.gd-tip p + p { margin-top: 10px; }

/* wide content scrolls inside its own box — the page never scrolls sideways */
.gd-tablewrap { overflow-x: auto; margin: 22px 0; border: 1px solid var(--pb-border); border-radius: var(--pb-r-card); }
.gd-table { border-collapse: collapse; width: 100%; min-width: 480px; font-size: 14px; }
.gd-table th {
  text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--pb-border);
  color: var(--pb-muted); font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
}
.gd-table td { padding: 10px 14px; border-bottom: 1px solid var(--pb-border); color: var(--pb-text-2); vertical-align: top; }
.gd-table tr:last-child td { border-bottom: none; }
.gd-table td:nth-child(n+2) { font-variant-numeric: tabular-nums; }

/* ── in-body partner shelf ────────────────────────────────────── */
.gd-shelf {
  margin: 28px 0; padding: 18px; border: 1px solid var(--pb-border);
  border-radius: var(--pb-r-card-lg); background: var(--pb-inset);
}

/* ── FAQ ──────────────────────────────────────────────────────────
   <details>, so the answers are in the served HTML and open without JS. The
   FAQPage JSON-LD in the head describes exactly what is on the page. */
.gd-faq { margin-top: 16px; max-width: 720px; }
.gd-faq-item { border-bottom: 1px solid var(--pb-border); }
.gd-faq-item summary {
  display: flex; justify-content: space-between; gap: 14px; align-items: baseline;
  padding: 16px 0; font-weight: 600; cursor: pointer; list-style: none; color: var(--pb-text);
}
.gd-faq-item summary::-webkit-details-marker { display: none; }
.gd-faq-item summary::after { content: '+'; color: var(--pb-accent); font-weight: 700; }
.gd-faq-item[open] summary::after { content: '×'; }
.gd-faq-item p { padding: 0 0 16px; font-size: 15.5px; line-height: 1.7; color: var(--pb-text-2); max-width: 64ch; }

/* ── category hub card photos ─────────────────────────────────── */
.pp-dcard-photo { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }

@media (max-width: 1180px) {
  .gd-body { grid-template-columns: 1fr; gap: 26px; }
  .gd-toc { position: static; }
}
@media (max-width: 640px) {
  .gd-hero { min-height: 320px; }
  .gd-credit { text-align: left; padding-left: 20px; }
}
