/* ============================================================================
   Pledged-Equity Enforcement Planner — styles
   SP Legal Advisors PLLC brand palette: Prestige Navy primary, Brushed Gold
   accent, Warm Taupe surfaces, Slate Charcoal muted text. Serif display +
   clean sans body.
   Brand: Navy #0D1E33 · Gold #B5945B · Taupe #D1C2A5 · Charcoal #5C6670
   ========================================================================== */

:root, [data-theme="light"] {
  /* Surfaces — warm ivory / taupe paper */
  --color-bg: #f3f0e9;
  --color-surface: #faf8f3;
  --color-surface-2: #ffffff;
  --color-surface-offset: #ece7da;
  --color-divider: #ddd6c6;
  --color-border: #cdc4b0;

  /* Text — prestige navy ink + slate charcoal */
  --color-text: #0d1e33;
  --color-text-muted: #5c6670;
  --color-text-faint: #969085;
  --color-text-inverse: #faf8f3;

  /* Accent — Prestige Navy (authoritative, primary brand color) */
  --color-primary: #0d1e33;
  --color-primary-hover: #16304f;
  --color-primary-active: #081523;
  --color-primary-soft: #e4e6ec;

  /* Brushed Gold — secondary accent for cites / chrome */
  --color-brass: #9c7c45;
  --color-brass-soft: #efe6d3;

  /* Semantic */
  --color-flag-bg: #ece7da;
  --color-flag-text: #44403a;
  --color-warn: #8a5a18;
  --color-warn-soft: #f4e8d4;

  --radius-sm: 0.375rem;
  --radius-md: 0.5rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-full: 9999px;

  --shadow-sm: 0 1px 2px rgba(13,30,51,0.07);
  --shadow-md: 0 4px 14px rgba(13,30,51,0.10);
  --shadow-lg: 0 16px 40px rgba(13,30,51,0.16);

  --transition: 180ms cubic-bezier(0.16, 1, 0.3, 1);

  --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem;
  --space-5:1.25rem; --space-6:1.5rem; --space-8:2rem; --space-10:2.5rem;
  --space-12:3rem; --space-16:4rem;

  --text-xs: clamp(0.75rem, 0.72rem + 0.15vw, 0.82rem);
  --text-sm: clamp(0.875rem, 0.84rem + 0.2vw, 0.95rem);
  --text-base: clamp(1rem, 0.97rem + 0.2vw, 1.075rem);
  --text-lg: clamp(1.125rem, 1.05rem + 0.4vw, 1.35rem);
  --text-xl: clamp(1.5rem, 1.25rem + 1vw, 2.1rem);

  --font-display: 'Fraunces', 'Source Serif 4', Georgia, serif;
  --font-body: 'Newsreader', 'Source Serif 4', Georgia, serif;
  --font-sans: 'General Sans', 'Inter', system-ui, sans-serif;
}

[data-theme="dark"] {
  /* Surfaces — deepened Prestige Navy */
  --color-bg: #0a1526;
  --color-surface: #0d1e33;
  --color-surface-2: #142844;
  --color-surface-offset: #102139;
  --color-divider: #233351;
  --color-border: #2c4163;

  --color-text: #ece8df;
  --color-text-muted: #a7b0bb;
  --color-text-faint: #6c7682;
  --color-text-inverse: #0d1e33;

  /* Primary on dark — brushed gold reads as the accent */
  --color-primary: #cdab6e;
  --color-primary-hover: #dcbd84;
  --color-primary-active: #b8975c;
  --color-primary-soft: #152943;

  --color-brass: #cdab6e;
  --color-brass-soft: #1a3052;

  --color-flag-bg: #142844;
  --color-flag-text: #ccd3db;
  --color-warn: #d6a35a;
  --color-warn-soft: #2a2415;

  --shadow-sm: 0 1px 2px rgba(0,0,0,0.35);
  --shadow-md: 0 4px 14px rgba(0,0,0,0.45);
  --shadow-lg: 0 16px 40px rgba(0,0,0,0.55);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --color-bg:#0a1526; --color-surface:#0d1e33; --color-surface-2:#142844;
    --color-surface-offset:#102139; --color-divider:#233351; --color-border:#2c4163;
    --color-text:#ece8df; --color-text-muted:#a7b0bb; --color-text-faint:#6c7682;
    --color-text-inverse:#0d1e33;
    --color-primary:#cdab6e; --color-primary-hover:#dcbd84; --color-primary-active:#b8975c;
    --color-primary-soft:#152943; --color-brass:#cdab6e; --color-brass-soft:#1a3052;
    --color-flag-bg:#142844; --color-flag-text:#ccd3db; --color-warn:#d6a35a; --color-warn-soft:#2a2415;
  }
}

*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; scroll-behavior:smooth; }
body {
  min-height:100dvh; line-height:1.6;
  font-family:var(--font-body);
  font-size:var(--text-base);
  color:var(--color-text);
  background:
    radial-gradient(900px 500px at 100% -10%, color-mix(in oklab, var(--color-primary) 6%, transparent), transparent 60%),
    var(--color-bg);
  background-attachment: fixed;
}
button,input,select,textarea { font:inherit; color:inherit; }
button { cursor:pointer; background:none; border:none; }
a { color:var(--color-primary); }
h1,h2,h3,h4 { line-height:1.15; text-wrap:balance; font-family:var(--font-display); font-weight:560; }
p { text-wrap:pretty; }
:focus-visible { outline:2px solid var(--color-primary); outline-offset:3px; border-radius:var(--radius-sm); }
.sans { font-family:var(--font-sans); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.sr-only:focus { position:fixed; top:8px; left:8px; width:auto; height:auto; clip:auto; padding:var(--space-2) var(--space-4); background:var(--color-primary); color:var(--color-text-inverse); border-radius:var(--radius-md); z-index:50; font-family:var(--font-sans); }

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
}

/* ---------- Layout shell ---------- */
.app { min-height:100dvh; display:flex; flex-direction:column; }

.topbar {
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; gap:var(--space-4);
  padding:var(--space-3) clamp(var(--space-4), 4vw, var(--space-12));
  background:color-mix(in oklab, var(--color-surface) 86%, transparent);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--color-divider);
}
.brand { display:flex; align-items:center; gap:var(--space-3); }
.brand .mark { color:var(--color-primary); flex:none; }
.brand .logo-wrap { position:relative; flex:none; width:42px; height:42px; display:block; }
.brand .logo-img { width:42px; height:42px; display:block; object-fit:contain; position:absolute; inset:0; }
/* Show the correct mark for the active theme (default = light) */
.brand .logo-dark { display:none; }
[data-theme="dark"] .brand .logo-light { display:none; }
[data-theme="dark"] .brand .logo-dark { display:block; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .brand .logo-light { display:none; }
  :root:not([data-theme]) .brand .logo-dark { display:block; }
}
.brand .titles { display:flex; flex-direction:column; line-height:1.12; }
.brand .titles .t0 { font-family:var(--font-sans); font-size:var(--text-xs); font-weight:650; color:var(--color-primary); letter-spacing:.07em; text-transform:uppercase; }
.brand .titles .t1 { font-family:var(--font-display); font-size:var(--text-lg); font-weight:600; letter-spacing:-.01em; }
.brand .titles .t2 { font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-muted); letter-spacing:.04em; text-transform:uppercase; }
.topbar .spacer { flex:1; }
.iconbtn {
  display:inline-flex; align-items:center; justify-content:center;
  width:40px; height:40px; border-radius:var(--radius-md);
  border:1px solid var(--color-border); color:var(--color-text-muted);
  transition:var(--transition);
}
.iconbtn:hover { color:var(--color-text); border-color:var(--color-primary); background:var(--color-surface-2); }

/* Matter-setup toggle in top bar */
.setupbtn {
  display:inline-flex; align-items:center; gap:var(--space-2);
  height:40px; padding:0 var(--space-3); border-radius:var(--radius-md);
  border:1px solid var(--color-border); color:var(--color-text-muted);
  font-family:var(--font-sans); font-size:var(--text-sm); font-weight:600;
  transition:var(--transition);
}
.setupbtn:hover { color:var(--color-text); border-color:var(--color-primary); background:var(--color-surface-2); }
.setupbtn.on { color:var(--color-primary); border-color:var(--color-primary); background:var(--color-primary-soft); }
.setupbtn .setupbtn-lbl { white-space:nowrap; }
.setupbtn .jur-badge {
  font-size:var(--text-xs); font-weight:650; letter-spacing:.02em;
  color:var(--color-brass); background:var(--color-brass-soft);
  border:1px solid color-mix(in oklab, var(--color-brass) 35%, transparent);
  padding:1px var(--space-2); border-radius:var(--radius-full); white-space:nowrap;
}
@media (max-width: 620px){ .setupbtn .setupbtn-lbl { display:none; } }

/* Setup panel */
.setup {
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); box-shadow:var(--shadow-sm);
  padding:var(--space-5) var(--space-6); margin-bottom:var(--space-8);
  display:flex; flex-direction:column; gap:var(--space-4);
}
.setup-head { display:flex; align-items:center; justify-content:space-between; }
.setup-head h2 { font-family:var(--font-sans); font-size:var(--text-sm); font-weight:650; text-transform:uppercase; letter-spacing:.06em; color:var(--color-text); }
.setup-close { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:var(--radius-md); border:1px solid var(--color-border); color:var(--color-text-muted); transition:var(--transition); }
.setup-close:hover { color:var(--color-primary); border-color:var(--color-primary); }
.setup-note { font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-faint); line-height:1.55; margin-top:calc(-1 * var(--space-2)); }
.setup-grid { display:grid; grid-template-columns: 1fr 180px; gap:var(--space-4); }
@media (max-width: 620px){ .setup-grid { grid-template-columns:1fr; } }
.fld { display:flex; flex-direction:column; gap:var(--space-2); }
.fld-l { font-family:var(--font-sans); font-size:var(--text-xs); font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--color-text-muted); }
.setup input[type="text"], .setup input[type="date"], .setup textarea {
  font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text);
  background:var(--color-surface-2); border:1px solid var(--color-border);
  border-radius:var(--radius-md); padding:var(--space-3); width:100%;
  transition:var(--transition);
}
.setup input:focus-visible, .setup textarea:focus-visible { border-color:var(--color-primary); outline:none; box-shadow:0 0 0 3px var(--color-primary-soft); }
.setup textarea { resize:vertical; min-height:88px; line-height:1.55; }

/* Jurisdiction segmented control */
.jur-seg { display:inline-flex; gap:4px; background:var(--color-surface-offset); border:1px solid var(--color-border); border-radius:var(--radius-md); padding:4px; }
.jur-opt {
  flex:1; padding:var(--space-2) var(--space-4); border-radius:calc(var(--radius-md) - 3px);
  font-family:var(--font-sans); font-size:var(--text-sm); font-weight:600;
  color:var(--color-text-muted); transition:var(--transition); white-space:nowrap;
}
.jur-opt:hover { color:var(--color-text); }
.jur-opt.on { background:var(--color-primary); color:var(--color-text-inverse); box-shadow:var(--shadow-sm); }
.jur-blurb { font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-faint); line-height:1.55; }

/* Delaware overlay callouts */
.de-callout {
  border-left:3px solid var(--color-brass); background:var(--color-brass-soft);
  border-radius:0 var(--radius-md) var(--radius-md) 0;
  padding:var(--space-3) var(--space-4); margin-bottom:var(--space-8);
  display:flex; flex-direction:column; gap:var(--space-2);
}
.de-callout .de-tag {
  display:inline-flex; align-items:center; gap:var(--space-2); align-self:flex-start;
  font-family:var(--font-sans); font-size:var(--text-xs); font-weight:700;
  text-transform:uppercase; letter-spacing:.06em; color:var(--color-brass);
}
.de-callout p { font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text); line-height:1.6; }
.ocard.de-card { border-color:color-mix(in oklab, var(--color-brass) 45%, var(--color-border)); }
.ocard.de-card .ohead { background:var(--color-brass-soft); }
.ocard.de-card .ohead .ic, .ocard.de-card .ohead h3 { color:var(--color-brass); }

.layout {
  flex:1; width:100%; max-width:1180px; margin-inline:auto;
  padding:clamp(var(--space-6), 4vw, var(--space-12)) clamp(var(--space-4), 4vw, var(--space-12)) var(--space-16);
  display:grid; grid-template-columns: 248px 1fr; gap:clamp(var(--space-6), 3vw, var(--space-10));
  align-items:start;
}
@media (max-width: 880px){ .layout { grid-template-columns:1fr; } }

/* ---------- Progress rail ---------- */
.rail { position:sticky; top:84px; }
@media (max-width: 880px){ .rail { position:static; } }
.rail h2 { font-family:var(--font-sans); font-size:var(--text-xs); text-transform:uppercase; letter-spacing:.08em; color:var(--color-text-faint); margin-bottom:var(--space-4); }
.steps { list-style:none; display:flex; flex-direction:column; gap:2px; }
.step { display:flex; gap:var(--space-3); align-items:flex-start; padding:var(--space-2) var(--space-3); border-radius:var(--radius-md); position:relative; }
.step .dot {
  flex:none; width:22px; height:22px; border-radius:var(--radius-full);
  border:1.5px solid var(--color-border); display:grid; place-items:center;
  font-family:var(--font-sans); font-size:11px; color:var(--color-text-faint);
  background:var(--color-surface); margin-top:1px; transition:var(--transition);
}
.step .lbl { display:flex; flex-direction:column; }
.step .lbl .nm { font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text-muted); }
.step .lbl .ans { font-size:var(--text-xs); color:var(--color-text-faint); font-family:var(--font-sans); margin-top:1px; }
.step.done .dot { border-color:var(--color-primary); background:var(--color-primary); color:var(--color-text-inverse); }
.step.done .lbl .nm { color:var(--color-text); }
.step.active .dot { border-color:var(--color-primary); color:var(--color-primary); box-shadow:0 0 0 4px var(--color-primary-soft); }
.step.active .lbl .nm { color:var(--color-text); font-weight:600; }
.step::after { content:""; position:absolute; left:calc(var(--space-3) + 10px); top:30px; bottom:-2px; width:1.5px; background:var(--color-divider); }
.step:last-child::after { display:none; }
.step.done::after { background:var(--color-primary); }

/* ---------- Main panel ---------- */
.panel { min-width:0; }
.pillar-tag {
  display:inline-flex; align-items:center; gap:var(--space-2);
  font-family:var(--font-sans); font-size:var(--text-xs); font-weight:550;
  text-transform:uppercase; letter-spacing:.06em;
  color:var(--color-primary); background:var(--color-primary-soft);
  padding:var(--space-1) var(--space-3); border-radius:var(--radius-full);
  margin-bottom:var(--space-4);
}
.qcount { font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-faint); letter-spacing:.04em; margin-bottom:var(--space-2); }
.question { font-size:var(--text-xl); font-weight:560; letter-spacing:-.015em; margin-bottom:var(--space-3); }
.help {
  font-size:var(--text-sm); color:var(--color-text-muted); max-width:62ch;
  border-left:2px solid var(--color-brass); padding-left:var(--space-4);
  margin-bottom:var(--space-8); line-height:1.65;
}

.options { display:flex; flex-direction:column; gap:var(--space-3); }
.option {
  text-align:left; width:100%;
  display:flex; align-items:flex-start; gap:var(--space-4);
  padding:var(--space-5); border-radius:var(--radius-lg);
  border:1px solid var(--color-border); background:var(--color-surface);
  box-shadow:var(--shadow-sm); transition:var(--transition);
}
.option:hover { border-color:var(--color-primary); background:var(--color-surface-2); box-shadow:var(--shadow-md); transform:translateY(-1px); }
.option .marker {
  flex:none; width:26px; height:26px; border-radius:var(--radius-full);
  border:1.5px solid var(--color-border); display:grid; place-items:center;
  color:var(--color-primary); margin-top:2px; transition:var(--transition);
}
.option:hover .marker { border-color:var(--color-primary); background:var(--color-primary-soft); }
.option .otext { display:flex; flex-direction:column; gap:2px; min-width:0; }
.option .olabel { font-family:var(--font-sans); font-weight:600; font-size:var(--text-base); color:var(--color-text); }
.option .osub { font-size:var(--text-sm); color:var(--color-text-muted); font-family:var(--font-sans); }

/* ---------- Outcome ---------- */
.outcome { }
.outcome-head { display:flex; align-items:flex-start; gap:var(--space-4); margin-bottom:var(--space-6); }
.outcome-head .seal { flex:none; color:var(--color-primary); margin-top:2px; }
.outcome-title { font-size:var(--text-xl); font-weight:560; letter-spacing:-.015em; }
.outcome-sub { font-family:var(--font-sans); font-size:var(--text-xs); text-transform:uppercase; letter-spacing:.07em; color:var(--color-text-faint); margin-bottom:var(--space-2); }

.flags { display:flex; flex-wrap:wrap; gap:var(--space-2); margin-bottom:var(--space-6); }
.flag {
  font-family:var(--font-sans); font-size:var(--text-xs); font-weight:550;
  color:var(--color-flag-text); background:var(--color-flag-bg);
  padding:var(--space-1) var(--space-3); border-radius:var(--radius-full);
  border:1px solid var(--color-border);
}

.ocard { background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); overflow:hidden; margin-bottom:var(--space-5); }
.ocard .ohead { display:flex; align-items:center; gap:var(--space-3); padding:var(--space-4) var(--space-5); border-bottom:1px solid var(--color-divider); }
.ocard .ohead .ic { color:var(--color-primary); flex:none; }
.ocard .ohead h3 { font-family:var(--font-sans); font-size:var(--text-sm); font-weight:650; text-transform:uppercase; letter-spacing:.05em; color:var(--color-text); }
.ocard .obody { padding:var(--space-5); }
.ocard .obody p { line-height:1.7; }

.cites { list-style:none; display:flex; flex-direction:column; gap:var(--space-3); }
.cites li { display:flex; gap:var(--space-3); align-items:flex-start; font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text); }
.cites li .pin { flex:none; color:var(--color-brass); margin-top:3px; }
.cites li .sec { font-weight:600; color:var(--color-primary); white-space:nowrap; }

.watch { list-style:none; display:flex; flex-direction:column; gap:var(--space-3); }
.watch li { display:flex; gap:var(--space-3); align-items:flex-start; font-size:var(--text-sm); color:var(--color-text-muted); line-height:1.6; }
.watch li .wm { flex:none; color:var(--color-warn); margin-top:4px; }

/* ---------- Action bar ---------- */
.actions { display:flex; flex-wrap:wrap; gap:var(--space-3); margin-top:var(--space-8); padding-top:var(--space-6); border-top:1px solid var(--color-divider); }
.btn {
  display:inline-flex; align-items:center; gap:var(--space-2);
  font-family:var(--font-sans); font-size:var(--text-sm); font-weight:600;
  padding:var(--space-3) var(--space-5); border-radius:var(--radius-md);
  border:1px solid var(--color-border); color:var(--color-text); background:var(--color-surface);
  transition:var(--transition);
}
.btn:hover { border-color:var(--color-primary); color:var(--color-primary); background:var(--color-surface-2); }
.btn.primary { background:var(--color-primary); border-color:var(--color-primary); color:var(--color-text-inverse); }
.btn.primary:hover { background:var(--color-primary-hover); color:var(--color-text-inverse); }
.btn:disabled { opacity:.45; cursor:not-allowed; }

.fade { animation:fade .28s cubic-bezier(0.16,1,0.3,1); }
@keyframes fade { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }

/* ---------- Disclaimer footer ---------- */
.disclaimer {
  font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-faint);
  text-align:left; max-width:1180px; margin:0 auto; line-height:1.65;
  padding:var(--space-8) clamp(var(--space-4), 4vw, var(--space-12)) var(--space-12);
  border-top:1px solid var(--color-divider);
  display:flex; flex-direction:column; gap:var(--space-3);
}
.disclaimer strong { color:var(--color-text-muted); }
.disclaimer em { font-style:italic; color:var(--color-text-muted); }
.disc-adlabel {
  align-self:flex-start;
  font-weight:700; font-size:var(--text-xs); letter-spacing:.12em; text-transform:uppercase;
  color:var(--color-brass);
  border:1px solid color-mix(in oklab, var(--color-brass) 40%, transparent);
  background:var(--color-brass-soft);
  padding:2px var(--space-3); border-radius:var(--radius-full);
}
.disc-noacr { color:var(--color-text-faint); }
.disc-firm {
  display:flex; flex-wrap:wrap; gap:var(--space-2); align-items:center;
  color:var(--color-text-muted); margin-top:var(--space-1);
}
.disc-firm .disc-firm-name { font-weight:650; color:var(--color-text); }
.disc-firm .disc-sep { color:var(--color-text-faint); }
.disc-firm a { color:var(--color-primary); text-decoration:none; }
.disc-firm a:hover { text-decoration:underline; }
.disc-links { display:flex; flex-wrap:wrap; gap:var(--space-4); margin-top:var(--space-1); }
.attribution { color:var(--color-text-faint); margin-top:var(--space-2); }

/* Link-styled buttons (policy openers) */
.linklike {
  font-family:var(--font-sans); font-size:var(--text-xs); font-weight:600;
  color:var(--color-primary); text-decoration:underline; text-underline-offset:2px;
  padding:0; background:none; border:none;
}
.linklike:hover { color:var(--color-primary-hover); }

/* ============================================================================
   COMPLIANCE — acknowledgment gate (splash) + legal policy modal
   ========================================================================== */
.gate {
  position:fixed; inset:0; z-index:100;
  display:flex; align-items:flex-start; justify-content:center;
  padding:clamp(var(--space-4), 4vw, var(--space-12));
  overflow-y:auto;
  background:
    radial-gradient(800px 400px at 80% -10%, color-mix(in oklab, var(--color-primary) 22%, transparent), transparent 60%),
    color-mix(in oklab, var(--color-bg) 70%, #000 30%);
  backdrop-filter:blur(6px);
}
.gate-card {
  width:100%; max-width:680px; margin:auto;
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-xl); box-shadow:var(--shadow-lg);
  padding:clamp(var(--space-6), 4vw, var(--space-10));
  animation:fade .3s cubic-bezier(0.16,1,0.3,1);
}
.gate-adlabel {
  display:inline-block; font-family:var(--font-sans);
  font-weight:700; font-size:var(--text-xs); letter-spacing:.14em; text-transform:uppercase;
  color:var(--color-brass);
  border:1px solid color-mix(in oklab, var(--color-brass) 45%, transparent);
  background:var(--color-brass-soft);
  padding:3px var(--space-4); border-radius:var(--radius-full);
  margin-bottom:var(--space-5);
}
.gate-brand { display:flex; align-items:center; gap:var(--space-3); margin-bottom:var(--space-6); }
.gate-logo { position:relative; flex:none; width:46px; height:46px; display:block; }
.gate-logo .logo-img { width:46px; height:46px; display:block; object-fit:contain; position:absolute; inset:0; }
.gate-logo .logo-dark { display:none; }
[data-theme="dark"] .gate-logo .logo-light { display:none; }
[data-theme="dark"] .gate-logo .logo-dark { display:block; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .gate-logo .logo-light { display:none; }
  :root:not([data-theme]) .gate-logo .logo-dark { display:block; }
}
.gate-firm { font-family:var(--font-sans); font-size:var(--text-sm); font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--color-primary); }
.gate-tag { font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-muted); letter-spacing:.03em; }
.gate-title { font-size:var(--text-xl); font-weight:560; letter-spacing:-.015em; margin-bottom:var(--space-3); }
.gate-lead { font-size:var(--text-sm); color:var(--color-text-muted); line-height:1.65; margin-bottom:var(--space-5); }
.gate-points { list-style:none; display:flex; flex-direction:column; gap:var(--space-3); margin-bottom:var(--space-6); }
.gate-points li {
  font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text); line-height:1.6;
  padding-left:var(--space-5); position:relative;
}
.gate-points li::before {
  content:""; position:absolute; left:0; top:.55em;
  width:7px; height:7px; border-radius:2px; background:var(--color-brass);
}
.gate-points li strong { color:var(--color-primary); }
.gate-firmbox {
  border:1px solid var(--color-border); border-left:3px solid var(--color-brass);
  background:var(--color-surface-offset); border-radius:0 var(--radius-md) var(--radius-md) 0;
  padding:var(--space-4); margin-bottom:var(--space-6);
}
.gate-firmbox-l { font-family:var(--font-sans); font-size:var(--text-xs); font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--color-text-muted); margin-bottom:var(--space-2); }
.gate-firmbox-b { font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text); line-height:1.7; }
.gate-firmbox-b a { color:var(--color-primary); text-decoration:none; }
.gate-firmbox-b a:hover { text-decoration:underline; }
.gate-check {
  display:flex; gap:var(--space-3); align-items:flex-start;
  font-family:var(--font-sans); font-size:var(--text-sm); color:var(--color-text); line-height:1.55;
  margin-bottom:var(--space-5); cursor:pointer;
}
.gate-check input { flex:none; width:20px; height:20px; margin-top:1px; accent-color:var(--color-primary); cursor:pointer; }
.gate-btn {
  width:100%; display:inline-flex; align-items:center; justify-content:center; gap:var(--space-2);
  font-family:var(--font-sans); font-size:var(--text-base); font-weight:650;
  padding:var(--space-4) var(--space-5); border-radius:var(--radius-md);
  background:var(--color-primary); color:var(--color-text-inverse); border:1px solid var(--color-primary);
  transition:var(--transition);
}
.gate-btn:hover:not(:disabled) { background:var(--color-primary-hover); }
.gate-btn:disabled { opacity:.4; cursor:not-allowed; }
.gate-links { display:flex; flex-wrap:wrap; gap:var(--space-4); justify-content:center; margin-top:var(--space-5); }

/* Legal policy modal */
.legal-overlay {
  position:fixed; inset:0; z-index:110;
  display:flex; align-items:center; justify-content:center;
  padding:clamp(var(--space-3), 3vw, var(--space-8));
  background:color-mix(in oklab, var(--color-bg) 55%, #000 45%);
  backdrop-filter:blur(4px);
}
.legal-card {
  width:100%; max-width:720px; max-height:90dvh; display:flex; flex-direction:column;
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-xl); box-shadow:var(--shadow-lg);
  animation:fade .25s cubic-bezier(0.16,1,0.3,1); overflow:hidden;
}
.legal-head {
  display:flex; align-items:flex-start; justify-content:space-between; gap:var(--space-4);
  padding:var(--space-5) var(--space-6); border-bottom:1px solid var(--color-divider);
}
.legal-kicker { font-family:var(--font-sans); font-size:var(--text-xs); font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--color-brass); margin-bottom:var(--space-1); }
.legal-title { font-size:var(--text-lg); font-weight:600; }
.legal-close { flex:none; display:inline-flex; align-items:center; justify-content:center; width:36px; height:36px; border-radius:var(--radius-md); border:1px solid var(--color-border); color:var(--color-text-muted); transition:var(--transition); }
.legal-close:hover { color:var(--color-primary); border-color:var(--color-primary); background:var(--color-surface-2); }
.legal-body { padding:var(--space-5) var(--space-6); overflow-y:auto; font-family:var(--font-sans); }
.legal-eff { font-size:var(--text-xs); color:var(--color-text-faint); text-transform:uppercase; letter-spacing:.05em; margin-bottom:var(--space-4); }
.legal-h { font-family:var(--font-sans); font-size:var(--text-sm); font-weight:700; color:var(--color-primary); margin:var(--space-5) 0 var(--space-2); }
.legal-p { font-size:var(--text-sm); color:var(--color-text); line-height:1.7; margin-bottom:var(--space-3); }
.legal-list { margin:0 0 var(--space-3) var(--space-5); display:flex; flex-direction:column; gap:var(--space-2); }
.legal-list li { font-size:var(--text-sm); color:var(--color-text); line-height:1.6; }
.legal-foot {
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-4); flex-wrap:wrap;
  padding:var(--space-4) var(--space-6); border-top:1px solid var(--color-divider);
  font-family:var(--font-sans); font-size:var(--text-xs); color:var(--color-text-faint);
  background:var(--color-surface-offset);
}
.legal-okbtn { width:auto; padding:var(--space-2) var(--space-6); font-size:var(--text-sm); }
@media (max-width: 520px){ .legal-foot { flex-direction:column; align-items:stretch; } .legal-okbtn { width:100%; } }

/* ============================================================================
   PRINT — clean one/two-page memo-style summary
   ========================================================================== */
.print-only { display:none; }
@media print {
  @page { margin:1.6cm; }
  body { background:#fff !important; color:#111; font-size:11pt; }
  .topbar, .rail, .actions, .help-toggle, .disclaimer .attribution { display:none !important; }
  .layout { display:block; max-width:none; padding:0; }
  .screen-only { display:none !important; }
  .print-only { display:block !important; }

  .print-doc { color:#111; font-family:'Newsreader', Georgia, serif; }
  .print-doc .plet { display:flex; align-items:center; gap:10pt; margin-bottom:10pt; }
  .print-doc .plet-mark { width:34pt; height:auto; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .print-doc .plet-firm { font-family:'Fraunces', Georgia, serif; font-size:13pt; font-weight:600; color:#0d1e33; letter-spacing:.01em; }
  .print-doc .plet-sub { font-family:Arial, sans-serif; font-size:7.5pt; text-transform:uppercase; letter-spacing:.12em; color:#9c7c45; margin-top:1pt; }
  .print-doc .ph { border-bottom:2px solid #0d1e33; padding-bottom:8pt; margin-bottom:14pt; }
  .print-doc .ph .pt { font-family:'Fraunces', Georgia, serif; font-size:20pt; font-weight:600; color:#111; }
  .print-doc .ph .psub { font-family:Arial, sans-serif; font-size:10pt; color:#555; margin-top:2pt; }
  .print-doc .ph .pmeta { font-family:Arial, sans-serif; font-size:8.5pt; color:#555; text-transform:uppercase; letter-spacing:.06em; margin-top:4pt; }
  .print-doc .pnotes { white-space:pre-wrap; font-size:10.5pt; line-height:1.5; }

  .print-doc h2 { font-family:Arial, sans-serif; font-size:9pt; text-transform:uppercase; letter-spacing:.08em; color:#0d1e33; margin:14pt 0 6pt; border-bottom:.5pt solid #ccc; padding-bottom:3pt; }
  .print-doc p { font-size:10.5pt; line-height:1.5; margin-bottom:6pt; }

  .print-doc .pathlist { list-style:none; padding:0; margin:0 0 6pt; }
  .print-doc .pathlist li { font-family:Arial, sans-serif; font-size:9.5pt; padding:3pt 0; border-bottom:.5pt dotted #ddd; display:flex; gap:8pt; }
  .print-doc .pathlist li .pq { color:#555; flex:1; }
  .print-doc .pathlist li .pa { color:#111; font-weight:700; flex:1; text-align:right; }

  .print-doc .pflags { font-family:Arial, sans-serif; font-size:9pt; margin-bottom:4pt; }
  .print-doc .pflags span { display:inline-block; border:.5pt solid #999; border-radius:3pt; padding:1pt 6pt; margin:0 4pt 4pt 0; }

  .print-doc .pcites { list-style:none; padding:0; margin:0; }
  .print-doc .pcites li { font-family:Arial, sans-serif; font-size:9.5pt; padding:2pt 0; }
  .print-doc .pwatch { padding-left:14pt; margin:0; }
  .print-doc .pwatch li { font-size:10pt; margin-bottom:3pt; }

  .print-doc .pfoot { margin-top:16pt; padding-top:8pt; border-top:.5pt solid #ccc; font-family:Arial, sans-serif; font-size:8pt; color:#666; line-height:1.4; }
  .print-doc .pfoot .pfoot-disc { margin:0 0 4pt; font-size:8pt; color:#666; }
  .print-doc .pfoot .pfoot-firm { margin:0; font-size:7.5pt; font-weight:bold; text-transform:uppercase; letter-spacing:.3pt; color:#444; }
}
