/* Seattle DADU & real-estate assistant widget + full-page chat.
   Scoped under .dadu-assistant. Matches the site design language:
   Playfair headings, ink #17191c, bronze #b08d57, warm ground #f7f5f1. */

.dadu-assistant {
  --asg-ink: #17191c;
  --asg-bronze: #b08d57;
  --asg-bronze-dark: #8b6f47;
  --asg-warm: #f7f5f1;
  --asg-border: #e8e5df;
  --asg-muted: #67635b; /* matches the re-toned site muted token (AA on warm grounds) */
  --asg-soft: #f5f3ee;
  --asg-font-display: 'Playfair Display', Georgia, 'Times New Roman', serif;
  --asg-shadow: 0 18px 50px rgba(23, 25, 28, 0.18), 0 2px 8px rgba(23, 25, 28, 0.08);
  font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  color: var(--asg-ink);
}

/* ── Launcher ─────────────────────────────────────────────────────────────── */
.asg-launcher {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 35;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 8px 18px 8px 9px;
  border: 1px solid #22252a;
  border-radius: 999px;
  cursor: pointer;
  color: #fff;
  background: var(--asg-ink);
  box-shadow: var(--asg-shadow);
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  transition: transform 0.18s ease, background 0.18s ease;
}
.asg-launcher:hover { background: #22252a; transform: translateY(-1px); }
.asg-launcher:focus-visible { outline: 2px solid var(--asg-bronze); outline-offset: 2px; }
.asg-launcher-avatar {
  width: 28px; height: 28px; border-radius: 50%;
  object-fit: cover; flex: 0 0 auto;
  border: 1.5px solid var(--asg-bronze);
}
.asg-launcher[hidden] { display: none; }

/* ── Panel ────────────────────────────────────────────────────────────────── */
.asg-panel {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 50;
  width: 400px;
  height: 640px;
  max-height: calc(100vh - 40px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  overscroll-behavior: contain;
  border: 1px solid var(--asg-border);
  border-radius: 14px;
  background: #fff;
  box-shadow: var(--asg-shadow);
  opacity: 0;
  transform: translateY(12px) scale(0.98);
  pointer-events: none;
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.asg-panel.is-open { opacity: 1; transform: none; pointer-events: auto; }
.asg-panel[hidden] { display: none; }

/* Click-away backdrop: transparent on desktop (modal catch), dim under the
   mobile sheet. Sits between the launcher (35) and the panel (50). */
.asg-backdrop { position: fixed; inset: 0; z-index: 45; background: transparent; }
.asg-backdrop[hidden] { display: none; }

.asg-handle { display: none; }

/* The chat column is the panel's flex child; the floating widget must give it
   the same constrained column layout as the full-page chat, otherwise the log
   grows without bounds and scrolls into the page (the "stuck" bug). The panel
   wraps its content in a `.dadu-assistant` root, so both that root and the
   column must fill the fixed panel height. */
.asg-chat-column { display: flex; flex-direction: column; position: relative; min-height: 0; }
.asg-panel > .dadu-assistant { display: flex; flex-direction: column; flex: 1 1 0; min-height: 0; }
.asg-panel .asg-chat-column { flex: 1 1 0; }

.asg-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 13px 16px;
  border-bottom: 1px solid var(--asg-border);
  background: var(--asg-warm);
}
.asg-header-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.asg-avatar { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; background: var(--asg-ink); flex: 0 0 auto; }
.asg-header-title strong { display: block; font-size: 0.95rem; font-weight: 700; }
.asg-status { display: block; font-size: 0.72rem; color: var(--asg-muted); }
.asg-close {
  border: 0; background: transparent; cursor: pointer;
  width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center; color: var(--asg-muted);
  font-size: 1.1rem; line-height: 1;
}
.asg-close:hover { background: var(--asg-soft); color: var(--asg-ink); }

/* ── Messages ─────────────────────────────────────────────────────────────── */
.asg-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px; background: #fff; overscroll-behavior: contain; touch-action: pan-y; -webkit-overflow-scrolling: touch; }
.asg-msg { margin-bottom: 14px; animation: asg-fade 0.18s ease; }
@keyframes asg-fade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.asg-msg-user { display: flex; justify-content: flex-end; }
.asg-msg-user .asg-bubble { background: var(--asg-ink); color: #fff; border-radius: 14px 14px 4px 14px; max-width: 82%; }
.asg-msg-bot { display: flex; justify-content: flex-start; flex-wrap: wrap; align-items: flex-start; }
.asg-msg-bot .asg-bubble { background: var(--asg-soft); color: var(--asg-ink); border-radius: 14px 14px 14px 4px; max-width: 92%; }
.asg-bubble { padding: 11px 13px; font-size: 0.9rem; line-height: 1.5; overflow-wrap: break-word; }
/* The site's global `p, li, dd { color: var(--color-text-soft) }` rule outranks the
   bubble colour and dimmed replies to grey on the dark panel; bubble text always
   inherits the bubble's own colour. */
.asg-bubble p, .asg-bubble li, .asg-bubble dd, .asg-bubble span, .asg-bubble small { color: inherit; }
.asg-bubble p { margin: 0 0 8px; }
.asg-bubble p:last-child { margin-bottom: 0; }
.asg-bubble ul { margin: 0 0 8px; padding-left: 18px; }
.asg-bubble li { margin: 2px 0; }
.asg-bubble a { color: var(--asg-bronze-dark); text-decoration: underline; }
.asg-msg-user .asg-bubble a { color: #e6c899; }

/* Citations + product cards + feedback + suggestions */
.asg-citations { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.asg-cite { font-size: 0.72rem; padding: 4px 9px; border: 1px solid var(--asg-border); border-radius: 999px; color: var(--asg-bronze-dark); background: #fff; text-decoration: none; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.asg-cite:hover { border-color: var(--asg-bronze); }
.asg-products { display: grid; gap: 8px; margin-top: 10px; }
.asg-product { display: flex; flex-direction: column; gap: 4px; padding: 11px 12px; border: 1px solid var(--asg-border); border-radius: 10px; background: #fff; text-decoration: none; color: var(--asg-ink); transition: border-color 0.15s ease; }
.asg-product:hover { border-color: var(--asg-bronze); }
.asg-product strong { font-size: 0.88rem; font-weight: 700; }
.asg-product span { font-size: 0.78rem; color: var(--asg-muted); line-height: 1.4; }
.asg-product em { font-style: normal; font-size: 0.82rem; color: var(--asg-bronze-dark); font-weight: 700; }
.asg-feedback { display: flex; gap: 6px; flex-basis: 100%; margin-top: 6px; }
.asg-feedback button { border: 1px solid var(--asg-border); background: #fff; color: var(--asg-muted); border-radius: 999px; padding: 4px 10px; font-size: 0.74rem; cursor: pointer; height: 26px; line-height: 1.2; }
.asg-feedback button:hover { border-color: var(--asg-bronze); color: var(--asg-ink); }
.asg-feedback button.is-chosen { background: var(--asg-ink); color: #fff; border-color: var(--asg-ink); }
.asg-suggestions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.asg-suggest { border: 1px solid var(--asg-border); background: #fff; color: var(--asg-ink); border-radius: 999px; padding: 7px 12px; font-size: 0.78rem; cursor: pointer; transition: border-color 0.15s ease; }
.asg-suggest:hover { border-color: var(--asg-bronze); }

/* Typing indicator */
.asg-typing { display: flex; gap: 4px; padding: 4px 2px; }
.asg-typing i { width: 6px; height: 6px; border-radius: 50%; background: var(--asg-muted); animation: asg-blink 1s infinite ease-in-out; }
.asg-typing i:nth-child(2) { animation-delay: 0.15s; }
.asg-typing i:nth-child(3) { animation-delay: 0.3s; }
@keyframes asg-blink { 0%, 80%, 100% { opacity: 0.25; } 40% { opacity: 1; } }

/* ── Composer + footer ────────────────────────────────────────────────────── */
.asg-footer { border-top: 1px solid var(--asg-border); background: #fff; }
.asg-report-cta { display: block; text-align: center; padding: 9px 14px; margin: 10px 12px 0; border-radius: 4px; background: var(--asg-ink); color: #fff; font-size: 0.82rem; font-weight: 600; text-decoration: none; }
.asg-report-cta:hover { background: #22252a; }
.asg-photo-strip { padding: 8px 12px 0; }
.asg-photo-chip { display: inline-flex; align-items: center; gap: 8px; padding: 4px 8px 4px 4px; border: 1px solid var(--asg-border); border-radius: 10px; background: var(--asg-warm); }
.asg-photo-chip img { width: 40px; height: 40px; object-fit: cover; border-radius: 7px; }
.asg-photo-remove { border: 0; background: var(--asg-soft); color: var(--asg-muted); width: 22px; height: 22px; border-radius: 50%; cursor: pointer; line-height: 1; }
.asg-visual-row { display: flex; padding: 8px 12px 0; }
.asg-plan-chip { border: 1px solid var(--asg-bronze); background: #fff; color: var(--asg-bronze-dark); border-radius: 999px; padding: 6px 12px; font-size: 0.78rem; font-weight: 600; cursor: pointer; }
.asg-plan-chip:hover { background: var(--asg-warm); }
.asg-composer { display: flex; gap: 8px; align-items: flex-end; padding: 10px 12px 8px; }
.asg-photo { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--asg-border); cursor: pointer; color: var(--asg-muted); background: #fff; display: grid; place-items: center; }
.asg-photo:hover { border-color: var(--asg-bronze); color: var(--asg-ink); }
.asg-photo svg { width: 18px; height: 18px; }
.asg-photo-input { display: none; }
.asg-input { flex: 1 1 auto; resize: none; border: 1px solid var(--asg-border); border-radius: 10px; padding: 10px 12px; font-size: 0.9rem; font-family: inherit; line-height: 1.4; max-height: 120px; color: var(--asg-ink); background: #fff; }
.asg-input:focus { outline: none; border-color: var(--asg-bronze); }
.asg-send { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; border: 0; cursor: pointer; color: #fff; background: var(--asg-bronze); display: grid; place-items: center; transition: background 0.15s ease; }
.asg-send:hover { background: var(--asg-bronze-dark); }
.asg-send:disabled { opacity: 0.5; cursor: not-allowed; }
.asg-send svg { width: 18px; height: 18px; }
.asg-disclaimer { padding: 0 14px 10px; font-size: 0.68rem; color: var(--asg-muted); line-height: 1.4; }
.asg-notice { margin: 8px 12px 0; padding: 9px 12px; border-radius: 5px; background: var(--asg-warm); border: 1px solid var(--asg-border); font-size: 0.8rem; color: var(--asg-ink); line-height: 1.45; }

/* Error bubble + retry (model-unreachable, network, 429/503) */
.asg-bubble-error { background: #fbf6ee; border: 1px solid #e6dcc7; }
.asg-bubble-error .asg-retry { display: block; margin-top: 9px; }
.asg-retry { border: 1px solid var(--asg-bronze); background: #fff; color: var(--asg-bronze-dark); border-radius: 999px; padding: 6px 13px; font-size: 0.78rem; font-weight: 600; cursor: pointer; line-height: 1.2; }
.asg-retry:hover { background: var(--asg-warm); }

/* New-messages pill — floats above the composer while the user is scrolled up */
.asg-new-msg { position: absolute; right: 16px; z-index: 6; border: 1px solid #22252a; border-radius: 999px; background: var(--asg-ink); color: #fff; padding: 7px 13px; font-size: 0.78rem; font-weight: 600; cursor: pointer; box-shadow: 0 6px 18px rgba(23,25,28,0.22); }
.asg-new-msg:hover { background: #22252a; }
.asg-new-msg[hidden] { display: none; }

/* ── Gate + render cards ──────────────────────────────────────────────────── */
.asg-card { margin: 4px 0 14px; padding: 14px; border: 1px solid var(--asg-border); border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(23,25,28,0.04); }
.asg-card-title { display: block; font-family: var(--asg-font-display); font-size: 1.02rem; font-weight: 700; margin-bottom: 6px; }
.asg-card-copy { font-size: 0.82rem; color: var(--asg-muted); line-height: 1.5; margin: 0 0 10px; }
.asg-card-input { width: 100%; box-sizing: border-box; border: 1px solid var(--asg-border); border-radius: 9px; padding: 9px 12px; font-size: 0.88rem; font-family: inherit; margin-bottom: 10px; color: var(--asg-ink); }
.asg-card-input:focus { outline: none; border-color: var(--asg-bronze); }
.asg-card-btn { display: block; width: 100%; border: 0; border-radius: 9px; padding: 10px 14px; font-size: 0.86rem; font-weight: 600; cursor: pointer; margin-bottom: 8px; }
.asg-card-btn-primary { background: var(--asg-ink); color: #fff; }
.asg-card-btn-primary:hover { background: #22252a; }
.asg-card-btn:disabled { opacity: 0.6; cursor: not-allowed; }
.asg-card-note { font-size: 0.72rem; color: var(--asg-muted); margin: 0; line-height: 1.4; }
.asg-card-cost { font-size: 0.82rem; color: var(--asg-bronze-dark); font-weight: 600; margin: 0 0 10px; font-variant-numeric: tabular-nums; }
.asg-card-error { font-size: 0.78rem; color: #9b3b2e; margin: 0 0 8px; }
.asg-pack { display: flex; justify-content: space-between; align-items: center; width: 100%; border: 1px solid var(--asg-border); background: #fff; border-radius: 9px; padding: 10px 12px; margin-bottom: 8px; cursor: pointer; font-size: 0.84rem; color: var(--asg-ink); }
.asg-pack:hover { border-color: var(--asg-bronze); }
.asg-pack strong { color: var(--asg-bronze-dark); font-variant-numeric: tabular-nums; }

/* Plan picker */
.asg-plan-picker { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 8px; margin-bottom: 6px; }
.asg-plan { flex: 0 0 auto; width: 84px; border: 1px solid var(--asg-border); background: #fff; border-radius: 10px; padding: 6px; cursor: pointer; text-align: left; }
.asg-plan.is-selected { border-color: var(--asg-bronze); box-shadow: 0 0 0 1px var(--asg-bronze); }
.asg-plan img { width: 100%; height: 52px; object-fit: cover; border-radius: 6px; display: block; }
.asg-plan-name { display: block; font-size: 0.72rem; font-weight: 700; margin-top: 5px; line-height: 1.2; }
.asg-plan-meta { display: block; font-size: 0.66rem; color: var(--asg-muted); }

/* Image result */
.asg-bubble-image { padding: 8px; background: #fff; border: 1px solid var(--asg-border); }
.asg-image { display: block; width: 100%; border-radius: 9px; }
.asg-image-caption { display: block; font-size: 0.7rem; color: var(--asg-muted); padding: 7px 4px 2px; }
.asg-image-download { display: inline-block; font-size: 0.78rem; color: var(--asg-bronze-dark); margin: 6px 0 12px; text-decoration: underline; }

/* ── Full page (/assistant and /products/dadu-assistant) ──────────────────── */
.dadu-assistant--page { max-width: 720px; margin: 0 auto; }
.dadu-assistant--page .asg-chat-column { border: 1px solid var(--asg-border); border-radius: 14px; overflow: hidden; background: #fff; display: flex; flex-direction: column; height: 600px; }
.dadu-assistant--page .asg-close { display: none; }

/* Phones: the labelled pill is ~195 px wide, and fixed over a 390 px column it
   lands on the MIDDLE of whatever full-width button happens to be there. Live
   check 2026-09-23 at 390x844: a tap on the centre of the dossier page's
   "Get the Seattle Property Records Dossier" button hit .asg-launcher-avatar
   and opened the chat instead of the order form, and the button's own label
   read "...RECORDS DOSS" behind the pill. Below 560 px the launcher collapses
   to its avatar so it hugs the right edge; the accessible name is on the
   button's aria-label, so nothing is lost to a screen reader. */
@media (max-width: 559.98px) {
  .asg-launcher { gap: 0; padding: 5px; }
  .asg-launcher-label { display: none; }
  .asg-launcher-avatar { width: 34px; height: 34px; }
  /* 2026-09-23: the collapsed pill still measured 50x50 at right:16 on a 390px
     viewport — x 324-374 against a text column that ends at 370, so it sat on
     the last words of whatever line it landed on. 44x44 (the minimum tap
     target, not below it) tucked to right:8 pulls it to x 338-382: 32px of it
     is past the column edge, and the ring separates it from the page. */
  .asg-launcher { right: 8px; }
  .asg-launcher-avatar { width: 32px; height: 32px; }
}

/* ── Mobile bottom sheet ──────────────────────────────────────────────────── */
@media (max-width: 1100px) {
  .asg-launcher { bottom: calc(88px + env(safe-area-inset-bottom, 0px)); right: 16px; }
  .asg-backdrop { background: rgba(15, 17, 23, 0.4); }
  .asg-panel {
    right: 0; bottom: 0; left: 0;
    width: 100%;
    height: 92vh;
    max-height: 92vh;
    border-radius: 14px 14px 0 0;
    border-bottom: 0;
    transform: translateY(100%);
    transition: transform 0.22s ease;
  }
  .asg-panel.is-open { transform: none; }
  .asg-handle { display: block; width: 40px; height: 4px; border-radius: 2px; background: var(--asg-border); margin: 8px auto 0; }
  .asg-header { border-top-left-radius: 14px; border-top-right-radius: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .asg-panel, .asg-launcher, .asg-msg, .asg-typing i { transition: none !important; animation: none !important; }
  .asg-panel { opacity: 1; }
}

/* ── /assistant page (server-rendered content, outside the widget scope) ──── */
.asg-page-intro h1 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: clamp(2rem, 4vw, 2.8rem); color: var(--color-heading, #0f1117); margin: 4px 0 0; }
.asg-caps li { display: flex; flex-direction: column; gap: 4px; padding: 16px 18px; background: #fff; border: 1px solid var(--color-border, #e8e5df); border-radius: 4px; }
.asg-caps strong { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: 1.02rem; color: var(--color-heading, #0f1117); }
.asg-caps span { font-size: 0.86rem; color: var(--color-text-muted, #71717a); line-height: 1.5; }
#asg-chat .dadu-assistant--page { max-width: none; }

img.asg-avatar { object-fit: cover; background: var(--asg-ink); }

/* ── Assistant product page (/products/dadu-assistant) + index card ───────── */
.pp-assistant-section { max-width: 1120px; margin: 0 auto; padding: 8px 24px 0; }
.pp-assistant-card {
  display: flex; align-items: center; gap: 22px;
  padding: 26px 28px; border: 1px solid #e3d9c6;
  border-radius: 14px; text-decoration: none; color: var(--color-ink, #17191c);
  background: linear-gradient(120deg, #17191c, #24282e 60%, #17191c);
  box-shadow: 0 18px 40px rgba(23,25,28,0.14);
}
.pp-assistant-card:hover .pp-assistant-cta { gap: 10px; }
.pp-assistant-badge {
  flex: 0 0 auto; padding: 6px 12px; border-radius: 999px;
  background: var(--color-accent-bronze, #b08d57); color: #fff;
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
}
.pp-assistant-copy { color: #fff; }
.pp-assistant-copy h2 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); color: #fff; margin: 0 0 6px; font-size: 1.5rem; }
.pp-assistant-copy p { margin: 0 0 12px; color: rgba(255,255,255,0.72); font-size: 0.95rem; line-height: 1.55; }
.pp-assistant-cta { display: inline-flex; align-items: center; gap: 6px; color: #e6c899; font-weight: 600; font-size: 0.92rem; transition: gap 0.15s ease; }
.pp-assistant-cta svg { width: 16px; height: 16px; }

.aap-hero { max-width: 1120px; margin: 0 auto; padding: calc(var(--header-h, 78px) + 40px) 24px 24px; }
.aap-hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 460px); gap: 40px; align-items: start; }
.aap-hero-copy h1 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: clamp(2rem, 4.5vw, 3.2rem); color: var(--color-heading, #0f1117); margin: 4px 0 14px; }
.aap-lede { color: var(--color-text-muted, #5f6168); font-size: 1.06rem; line-height: 1.6; max-width: 560px; margin: 0 0 20px; }
.aap-badge { display: inline-block; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--color-accent-bronze, #b08d57); color: var(--color-accent-bronze-dark, #8b6f47); font-size: 0.8rem; font-weight: 600; }
.aap-hero-widget { min-width: 0; }
.aap-hero-widget .dadu-assistant--page .asg-chat-column { height: 560px; }

.aap-tiers, .aap-do, .aap-render, .aap-packs { max-width: 1120px; margin: 0 auto; padding: 48px 24px 8px; }
.pp-grid-head { max-width: 640px; margin: 0 0 24px; }
.pp-grid-head .eyebrow { margin: 0 0 6px; }
.pp-grid-head h2 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: 1.7rem; margin: 0 0 8px; color: var(--color-heading, #0f1117); }
.pp-grid-head p { color: var(--color-text-muted, #5f6168); margin: 0; }
.aap-tier-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.aap-tier { padding: 22px; }
.aap-tier-eyebrow { margin: 0 0 8px; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-accent-bronze, #b08d57); }
.aap-tier h3 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: 1.35rem; margin: 0 0 8px; color: var(--color-heading, #0f1117); font-variant-numeric: tabular-nums; }
.aap-tier p { margin: 0; color: var(--color-text-muted, #5f6168); font-size: 0.92rem; line-height: 1.55; }

.aap-do-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.aap-do-grid h2 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: 1.6rem; color: var(--color-heading, #0f1117); margin: 4px 0 16px; }
.aap-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.aap-list li { display: flex; flex-direction: column; gap: 4px; padding: 15px 17px; background: #fff; border: 1px solid var(--color-border, #e8e5df); border-radius: 10px; }
.aap-list strong { font-size: 0.95rem; color: var(--color-heading, #0f1117); }
.aap-list span { font-size: 0.86rem; color: var(--color-text-muted, #5f6168); line-height: 1.5; }
.aap-list-wont li { background: var(--color-bg-warm, #f7f5f1); }

.aap-render-figure { max-width: 720px; margin: 0; }
.aap-render-figure img { width: 100%; border-radius: 14px; box-shadow: 0 18px 44px rgba(23,25,28,0.16); }
.aap-render-figure figcaption { font-size: 0.82rem; color: var(--color-text-muted, #5f6168); margin-top: 10px; }

.aap-pack-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.aap-pack { display: flex; flex-direction: column; gap: 6px; padding: 20px; }
.aap-pack strong { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: 1.15rem; }
.aap-pack span { color: var(--color-text-muted, #5f6168); font-size: 0.9rem; }
.aap-pack-price { font-size: 1.4rem !important; color: var(--color-heading, #0f1117) !important; font-weight: 700; font-variant-numeric: tabular-nums; }
.aap-pack-note { color: var(--color-text-muted, #5f6168); font-size: 0.88rem; margin-top: 16px; max-width: 640px; }

@media (max-width: 900px) {
  .aap-hero-grid { grid-template-columns: 1fr; }
  .aap-hero-widget .dadu-assistant--page .asg-chat-column { height: 520px; }
  .aap-tier-grid, .aap-pack-grid { grid-template-columns: 1fr; }
  .aap-do-grid { grid-template-columns: 1fr; gap: 28px; }
  .pp-assistant-card { flex-direction: column; align-items: flex-start; }
}

/* End-of-article assistant card (blog posts) */
.blog-post-assistant { max-width: 720px; margin: 0 auto 28px; padding: 26px; }
.blog-post-assistant h2 { font-family: var(--font-display, 'Playfair Display', Georgia, serif); font-size: 1.5rem; color: var(--color-heading, #0f1117); margin: 4px 0 10px; }
.blog-post-assistant p { color: var(--color-text-muted, #5f6168); font-size: 0.95rem; line-height: 1.6; margin: 0 0 16px; }

/* ── Dark scheme (honours prefers-color-scheme) ─────────────────────────── */
@media (prefers-color-scheme: dark) {
  .dadu-assistant { color-scheme: dark; }
  .asg-panel { background: #121417; border-color: #2a2d33; }
  .asg-header { background: #17191c; border-bottom-color: #2a2d33; }
  .asg-scroll { background: #121417; }
  .asg-footer { background: #121417; border-top-color: #2a2d33; }
  .asg-msg-bot .asg-bubble { background: #23262c; color: #f4f2ee; }
  .asg-msg-user .asg-bubble { background: #b08d57; color: #17191c; }
  .asg-bubble a, .asg-msg-bot .asg-bubble a { color: #d7b98a; }
  .asg-msg-user .asg-bubble a { color: #17191c; }
  .asg-input { background: #1a1c20; border-color: #2a2d33; color: #e9e6e0; }
  .asg-suggest, .asg-cite, .asg-feedback button, .asg-plan, .asg-pack,
  .asg-product, .asg-card, .asg-photo, .asg-photo-chip { background: #1a1c20; border-color: #2a2d33; color: #e9e6e0; }
  .asg-card-title, .asg-product strong, .asg-plan-name { color: #e9e6e0; }
  .asg-card-copy, .asg-card-note, .asg-status, .asg-disclaimer,
  .asg-product span, .asg-plan-meta { color: #9aa0aa; }
  .asg-report-cta { background: #b08d57; color: #17191c; }
  .asg-report-cta:hover { background: #c29a68; }
  .asg-bubble-error { background: #241f16; border-color: #4a3c26; }
  .asg-new-msg { background: #b08d57; color: #17191c; border-color: transparent; }
  .asg-launcher { background: #b08d57; color: #17191c; border-color: #c29a68; }
  .asg-launcher:hover { background: #c29a68; }
}

/* ── Legibility pass 2026-09-23 · see the block at the end of styles.css ──── */
.pp-assistant-copy p,
.pp-grid-head p {
  font-size: 1rem;      /* was 15.2–15.5px */
  line-height: 1.6;
}

/* ── Section rhythm on /products · see the note in products.css ──────────── */
.pp-assistant-section {
  padding-top: 48px;
  padding-bottom: 8px;
}
