/* ══════════════════════════════════════════════════════════════════
   ENROLLMENT AGREEMENT - shared document styles
   Used by every academy's agreement.html. Document-only composition;
   every value reads a design-system token (--accent, --bg-deep,
   --font-display, --radius) so each client's theme.css skins it.
   Dark on screen because BAM has no light surfaces; the print block at
   the bottom flips it to black-on-white so a printed copy is legible.

   Extracted from bam-san-jose/agreement.html (2026-07-25) when the
   agreement became data-driven. See ./README.md.
   ══════════════════════════════════════════════════════════════════ */
* { box-sizing:border-box; margin:0; padding:0; }
body { background:var(--bg); color:var(--fg); font-family:var(--font-body); -webkit-font-smoothing:antialiased; }

.page { max-width:820px; margin:0 auto; padding:40px 26px 90px; }

/* ---- draft banner: stays on screen AND on paper until staff removes it ---- */
.draft {
  border:2px solid var(--accent); background:color-mix(in srgb, var(--accent) 8%, transparent);
  padding:18px 22px; margin-bottom:34px;
}
.draft .k { font-family:var(--font-display); font-size:15px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); }
.draft p { font-size:13px; line-height:1.6; color:var(--fg-muted); margin-top:8px; }

/* ---- document shell ---- */
.doc { background:var(--bg-deep); border:1px solid var(--border); padding:52px 56px; }
.dh { text-align:center; border-bottom:2px solid var(--accent); padding-bottom:22px; margin-bottom:14px; }
.dh .a { font-family:var(--font-display); font-size:30px; text-transform:uppercase; letter-spacing:.01em; line-height:1.05; }
.dh .a em { color:var(--accent); font-style:normal; }
.dh .t { font-family:var(--font-body); font-size:11px; font-weight:600; letter-spacing:.28em; text-transform:uppercase; color:var(--fg-subtle); margin-top:10px; }
.dh .e { font-family:var(--font-body); font-size:12px; color:var(--fg-subtle); margin-top:8px; }

.intro { font-size:13.5px; line-height:1.7; color:var(--fg-muted); padding:18px 0 6px; border-bottom:1px solid var(--border-neutral); }

section { margin-top:28px; }
h2 {
  font-family:var(--font-body); font-size:12px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:var(--accent); margin-bottom:9px;
}
h2 .n { color:var(--fg-subtle); font-weight:600; margin-right:8px; }
p { font-family:var(--font-body); font-size:13.5px; line-height:1.72; color:var(--fg-muted); }
p + p { margin-top:9px; }
ul { margin:9px 0 0 18px; }
li { font-size:13.5px; line-height:1.72; color:var(--fg-muted); margin-bottom:5px; }
strong { color:var(--fg); font-weight:600; }

/* ---- pricing table ---- */
table { width:100%; border-collapse:collapse; margin-top:14px; font-size:13px; }
caption { caption-side:bottom; text-align:left; font-size:11.5px; color:var(--fg-subtle); padding-top:9px; line-height:1.6; }
th, td { border:1px solid var(--border-neutral); padding:10px 12px; text-align:left; color:var(--fg-muted); }
thead th {
  font-size:10.5px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color:var(--accent); background:var(--surface);
}
tbody th { font-weight:600; color:var(--fg); font-size:13px; }

/* ---- placeholder blocks the team must resolve before use ---- */
.hold { border:1px dashed var(--accent); padding:14px 16px; margin-top:10px; background:color-mix(in srgb, var(--accent) 5%, transparent); }
.hold .tag {
  display:inline-block; font-family:var(--font-body); font-size:10px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--accent);
  border:1px solid var(--accent); padding:3px 8px; margin-bottom:9px;
}
.hold p { font-size:12.5px; color:var(--fg-subtle); }
.note-fp { font-size:11.5px; font-style:italic; color:var(--fg-subtle); margin-top:8px; line-height:1.6; }

/* ---- fill-in fields ---- */
.fields { display:grid; grid-template-columns:1fr 1fr; gap:16px 26px; margin-top:16px; }
.f { grid-column:span 1; }
.f.wide { grid-column:span 2; }
.f .l { display:block; font-size:10.5px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--fg-subtle); margin-bottom:6px; }
.f .line { border-bottom:1px solid var(--border-neutral); min-height:26px; }

/* A field the enrollment filled in. The value sits on the same rule the blank
   line uses, so a filled and an unfilled document line up on paper. */
.f .line.is-filled { color:var(--fg); font-size:13.5px; line-height:1.5; padding-bottom:3px; border-bottom-color:var(--accent); }
.f .line .v { font-weight:600; }

.ack { margin-top:16px; }
.ack .row { display:flex; align-items:flex-start; gap:11px; margin-top:10px; }
.ack .box { width:15px; height:15px; flex:none; border:1.5px solid var(--accent); margin-top:3px; }
.ack .row p { font-size:12.5px; }

/* ---- consent: a real opt-in, stored as data ---- */
.consent { margin-top:16px; border:1px solid var(--border-neutral); padding:14px 16px; }
.consent.is-required.is-unset { border-color:var(--accent); }
.consent__opt { display:flex; align-items:flex-start; gap:11px; margin-top:10px; cursor:pointer; }
.consent__opt:first-child { margin-top:0; }
.consent__opt input { position:absolute; opacity:0; width:0; height:0; }
.consent__box {
  width:16px; height:16px; flex:none; border:1.5px solid var(--accent); margin-top:2px;
  display:flex; align-items:center; justify-content:center; border-radius:3px;
}
.consent__box::after { content:""; width:8px; height:8px; background:var(--accent); border-radius:2px; transform:scale(0); transition:transform .12s ease; }
.consent__opt input:checked + .consent__box::after { transform:scale(1); }
.consent__opt input:focus-visible + .consent__box { outline:2px solid var(--accent); outline-offset:2px; }
.consent__opt p { font-size:12.5px; }
.consent__opt input:checked ~ p { color:var(--fg); }
.consent__hint { font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--accent); margin-top:11px; }
.consent.is-set .consent__hint { display:none; }
/* Read-only render (the filed copy / a signed document reopened). */
.consent.is-locked .consent__opt { cursor:default; }

.sig { display:flex; gap:34px; margin-top:34px; flex-wrap:wrap; }
.sig div { flex:1 1 220px; border-top:1px solid var(--border-neutral); padding-top:9px; font-size:10.5px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--fg-subtle); }

.foot { margin-top:34px; padding-top:18px; border-top:1px solid var(--border); font-size:11.5px; line-height:1.7; color:var(--fg-subtle); }

/* Version stamp - which exact wording this copy is. Matches what gets filed. */
.stamp { margin-top:14px; font-size:10.5px; letter-spacing:.06em; color:var(--fg-subtle); font-family:var(--font-mono, monospace); }

@media (max-width:640px) {
  .doc { padding:32px 22px; }
  .fields { grid-template-columns:1fr; }
  .f.wide { grid-column:span 1; }
  table { font-size:12px; }
  th, td { padding:8px 9px; }
}

/* ══════════════════════════════════════════════════════════════════
   PRINT / PDF - a printed copy has to be ink on white.
   ══════════════════════════════════════════════════════════════════ */
@media print {
  @page { margin:16mm 15mm; }
  html, body { background:#fff !important; color:#000 !important; }
  .page { max-width:none; padding:0; }
  .doc { background:#fff !important; border:none; padding:0; }
  .dh { border-bottom:2px solid #000; }
  .dh .a, .dh .a em { color:#000 !important; }
  .dh .t, .dh .e, .intro, p, li, td, caption, .hold p, .sig div, .foot, .f .l, .stamp { color:#1a1a1a !important; }
  h2 { color:#000 !important; border-bottom:1px solid #999; padding-bottom:4px; }
  h2 .n { color:#000 !important; }
  strong { color:#000 !important; }
  th, td { border:1px solid #666 !important; }
  thead th { color:#000 !important; background:#eee !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  tbody th { color:#000 !important; }
  .draft { border:2px solid #000; background:#fff !important; }
  .draft .k { color:#000 !important; }
  .hold { border:1px dashed #000; background:#fff !important; }
  .hold .tag { color:#000 !important; border-color:#000; }
  .f .line, .sig div, .intro { border-color:#000 !important; }
  .f .line.is-filled { color:#000 !important; }
  .ack .box, .consent__box { border-color:#000 !important; }
  .consent { border-color:#666 !important; }
  .consent__box::after { background:#000 !important; }
  .consent__hint { display:none; }
  section, .sig, table, .hold, .consent { break-inside:avoid; page-break-inside:avoid; }
  h2 { break-after:avoid; page-break-after:avoid; }
}
