/* ============================================================
   Dignity Care Society — design system
   Faithful to the approved mock-up ("Healing Teal" palette,
   Spectral + Figtree). Zero build step, zero dependencies.
   ============================================================ */

:root {
  /* Primary & accent (Healing Teal) */
  --p:  #2E5D54;  /* primary */
  --pd: #234A43;  /* primary deep */
  --pm: #4A8073;  /* primary mid */
  --pt: #E6EFEB;  /* primary tint */
  --ptb:#BFD6CE;  /* primary tint border */
  --a:  #D8B863;  /* accent */
  --ad: #B58A3E;  /* accent deep */
  --at: #F6EDD6;  /* accent tint */
  --atb:#E8D9AE;  /* accent tint border */

  /* Surfaces & ink */
  --cream:#F6F2EA;
  --sand: #EFEAE0;
  --white:#FFFFFF;
  --offwhite:#FCFAF5;
  --ink:  #211E19;
  --ink2: #3A352D;
  --ink-soft:#524C42;
  --muted:#847B6E;
  --line: #E4DDD0;
  --line2:#F0EBE1;

  --serif:'Spectral', Georgia, 'Times New Roman', serif;
  --sans:'Figtree', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0; background:var(--cream); color:var(--ink);
  font-family:var(--sans); font-size:16px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
::selection{ background:#CDE0D9; }
img{ max-width:100%; display:block; }
a{ color:inherit; }

/* ---- Layout helpers ---- */
.wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }
.wrap-md{ max-width:1080px; margin:0 auto; padding:0 32px; }
.wrap-sm{ max-width:840px; margin:0 auto; padding:0 32px; }
.section{ padding:84px 0; }
.eyebrow{ font-size:13px; font-weight:600; text-transform:uppercase; letter-spacing:1.5px; color:var(--p); margin-bottom:10px; }
.center{ text-align:center; }
.serif{ font-family:var(--serif); }
.muted{ color:var(--muted); }

h1,h2,h3{ margin:0 0 .4em; }
h1.display{ font-family:var(--serif); font-weight:400; font-size:clamp(38px,6vw,62px); line-height:1.05; letter-spacing:-1px; }
h2.head{ font-family:var(--serif); font-weight:500; font-size:clamp(28px,4vw,38px); letter-spacing:-.3px; }
p{ margin:0 0 1em; }
.lead{ font-size:clamp(17px,2.2vw,20px); line-height:1.6; color:var(--ink-soft); }

/* ---- The mark (SVG via <use>) ---- */
.mark{ color:var(--p); display:block; width:100%; height:100%; overflow:visible; }
.mark-rev{ color:#F4F0E8; }

/* ============================================================ NAV ============================================================ */
.nav{
  position:sticky; top:0; z-index:50;
  background:rgba(246,242,234,.88); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.nav-inner{ height:72px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.brand{ display:flex; align-items:center; gap:11px; cursor:pointer; background:none; border:none; padding:0; }
.brand .markbox{ width:36px; height:36px; flex:none; }
.brand-name{ font-family:var(--serif); font-size:19px; font-weight:500; letter-spacing:.2px; white-space:nowrap; color:var(--ink); }
.nav-links{ display:flex; align-items:center; gap:4px; }
.nav-link{
  font-family:var(--sans); font-size:15px; font-weight:500; color:var(--ink-soft);
  background:none; border:none; border-radius:999px; padding:9px 16px; cursor:pointer; white-space:nowrap;
  transition:color .15s, background .15s;
}
.nav-link:hover{ color:var(--p); }
.nav-link.active{ color:var(--p); background:var(--pt); font-weight:600; }
.nav-toggle{ display:none; }

/* ---- Buttons ---- */
.btn{
  font-family:var(--sans); font-size:16px; font-weight:600; cursor:pointer;
  border-radius:999px; padding:14px 28px; border:1.5px solid transparent;
  transition:transform .12s ease, box-shadow .2s ease, background .15s ease, color .15s ease;
  display:inline-flex; align-items:center; gap:8px; text-decoration:none;
}
.btn:hover{ transform:translateY(-1px); }
.btn-primary{ color:#fff; background:var(--p); box-shadow:0 10px 24px -10px rgba(46,93,84,.7); }
.btn-primary:hover{ background:var(--pd); }
.btn-ghost{ color:var(--p); background:#fff; border-color:var(--ptb); }
.btn-tint{ color:var(--p); background:var(--pt); border:none; }
.btn-link{ color:var(--p); background:none; border:none; padding:13px 8px; }
.btn-sm{ font-size:15px; padding:11px 22px; }
.btn:disabled{ opacity:.55; cursor:not-allowed; transform:none; }

/* ---- Cards ---- */
.card{ background:#fff; border:1px solid var(--line); border-radius:18px; padding:30px; }
.card.hover{ transition:box-shadow .2s ease, transform .2s ease; }
.card.hover:hover{ box-shadow:0 16px 36px -18px rgba(33,30,25,.30); transform:translateY(-2px); }

.grid{ display:grid; gap:24px; }
.grid-2{ grid-template-columns:repeat(2,1fr); }
.grid-3{ grid-template-columns:repeat(3,1fr); }
.grid-4{ grid-template-columns:repeat(4,1fr); }

/* ============================================================ HERO ============================================================ */
.hero{ display:grid; grid-template-columns:1.15fr .85fr; gap:56px; align-items:center; padding:84px 0 72px; }
.pill{
  display:inline-flex; align-items:center; gap:8px; background:var(--pt); color:var(--pd);
  font-size:13px; font-weight:600; padding:7px 14px; border-radius:999px; margin-bottom:24px;
}
.pill .dot{ width:7px; height:7px; border-radius:50%; background:var(--p); }
.hero h1 .ital{ font-style:italic; color:var(--p); }
.hero-card{ background:#fff; border:1px solid var(--line); border-radius:20px; padding:34px; box-shadow:0 24px 60px -30px rgba(33,30,25,.30); }
.figure{ background:var(--pt); border-radius:16px; padding:30px; text-align:center; }
.figure .big{ font-family:var(--serif); font-size:64px; font-weight:500; color:var(--p); line-height:1; }
.label-cap{ font-size:13px; font-weight:600; text-transform:uppercase; letter-spacing:1.2px; color:var(--muted); }

/* ---- Bands ---- */
.band{ background:var(--p); color:#FCFAF5; }
.band-deep{ background:var(--pd); color:rgba(247,244,238,.80); }
.band p.quote{ font-family:var(--serif); font-weight:300; font-size:clamp(22px,3.2vw,30px); line-height:1.5; max-width:840px; margin:0 auto; }
.band-sand{ background:var(--sand); }

/* ---- Value / step / mini cards ---- */
.icon-chip{ width:46px; height:46px; border-radius:13px; background:var(--pt); display:flex; align-items:center; justify-content:center; margin-bottom:18px; }
.icon-chip .shape{ width:16px; height:16px; background:var(--p); }
.num-chip{ width:34px; height:34px; border-radius:50%; background:var(--p); color:#fff; font-family:var(--serif); font-weight:500; font-size:16px; display:flex; align-items:center; justify-content:center; flex:none; }
.num-chip.lg{ width:48px; height:48px; font-size:22px; background:var(--pt); color:var(--p); }
.row-card{ display:flex; gap:18px; align-items:flex-start; background:#fff; border:1px solid var(--line); border-radius:14px; padding:20px 22px; }

/* ============================================================ FORMS ============================================================ */
label.field-label{ display:block; font-size:14px; font-weight:600; margin-bottom:7px; color:var(--ink); }
.input, .select, textarea.input{
  width:100%; font-family:var(--sans); font-size:16px; padding:13px 15px;
  border:1.5px solid var(--line); border-radius:10px; background:var(--offwhite); color:var(--ink);
}
.input:focus, .select:focus, textarea.input:focus{ outline:none; border-color:var(--p); box-shadow:0 0 0 4px var(--pt); background:#fff; }
.input.invalid{ border-color:#C0533B; box-shadow:0 0 0 4px #F6E4DE; }
.field-error{ color:#A8412B; font-size:13px; margin-top:6px; display:none; }
.field-error.show{ display:block; }
.fieldgrid{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }

/* checkbox consent cards */
.check-card{ display:flex; gap:14px; align-items:flex-start; border:1.5px solid #D8CFBE; border-radius:12px; padding:18px; cursor:pointer; background:var(--offwhite); margin-bottom:14px; transition:border-color .15s, background .15s; }
.check-card.on{ border-color:var(--p); background:#F2F7F5; }
.check-box{ width:24px; height:24px; border-radius:7px; border:2px solid #D8CFBE; background:transparent; color:#fff; display:flex; align-items:center; justify-content:center; font-size:15px; flex:none; }
.check-card.on .check-box{ background:var(--p); border-color:var(--p); }
.check-text{ font-size:15px; color:var(--ink2); line-height:1.5; }

/* honeypot */
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* notice */
.notice{ display:flex; gap:14px; background:var(--pt); border-radius:12px; padding:16px 18px; }
.notice .bar{ width:6px; border-radius:3px; background:var(--p); flex:none; }
.notice p{ margin:0; font-size:15px; color:var(--pd); line-height:1.55; }
.notice.warn{ background:var(--at); }
.notice.warn .bar{ background:var(--ad); }
.notice.warn p{ color:#6B5320; }

/* step indicator */
.steps{ display:flex; align-items:center; justify-content:center; margin-bottom:40px; }
.step{ display:flex; flex-direction:column; align-items:center; gap:8px; width:96px; }
.step .ball{ width:36px; height:36px; border-radius:50%; background:var(--line2); color:var(--muted); border:2px solid var(--line); font-weight:600; font-size:15px; display:flex; align-items:center; justify-content:center; }
.step .stlabel{ font-size:12px; font-weight:600; color:var(--muted); text-align:center; line-height:1.2; }
.step.active .ball{ background:var(--pt); color:var(--p); border-color:var(--p); }
.step.active .stlabel{ color:var(--p); }
.step.done .ball{ background:var(--p); color:#fff; border-color:var(--p); }
.step.done .stlabel{ color:var(--p); }

/* fee table */
.fee-row{ display:flex; justify-content:space-between; align-items:center; padding:18px 0; border-bottom:1px solid var(--line2); }
.fee-row:last-child{ border-bottom:none; }
.fee-row .amt{ font-family:var(--serif); font-size:24px; font-weight:500; color:var(--p); }
.fee-total{ font-size:18px; font-weight:700; }

/* FAQ accordion */
.faq-item{ background:#fff; border:1px solid var(--line); border-radius:16px; overflow:hidden; margin-bottom:14px; }
.faq-q{ width:100%; text-align:left; padding:24px 26px; display:flex; justify-content:space-between; align-items:center; gap:20px; cursor:pointer; background:none; border:none; }
.faq-q span.q{ font-family:var(--serif); font-size:20px; font-weight:500; color:var(--ink); }
.faq-q .ic{ color:var(--p); font-size:26px; font-weight:300; flex:none; line-height:1; }
.faq-a{ padding:0 26px 26px; font-size:16px; color:var(--ink-soft); line-height:1.7; display:none; }
.faq-item.open .faq-a{ display:block; }

/* board */
.board-card{ text-align:center; }
.avatar{ width:64px; height:64px; border-radius:50%; background:var(--pt); color:var(--p); font-family:var(--serif); font-size:22px; font-weight:500; display:flex; align-items:center; justify-content:center; margin:0 auto 16px; }

/* child rows */
.child-row{ display:flex; gap:12px; align-items:center; background:var(--offwhite); border:1px solid var(--line2); border-radius:12px; padding:12px; margin-bottom:12px; }
.child-row .input{ background:#fff; }
.icon-btn{ background:var(--line2); border:none; border-radius:9px; width:40px; height:40px; font-size:20px; color:var(--muted); cursor:pointer; flex:none; line-height:1; }

/* ============================================================ FOOTER ============================================================ */
.footer{ background:var(--ink); color:#B7B0A6; }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:48px; padding:64px 0 44px; border-bottom:1px solid #3A352D; }
.footer h4{ font-size:13px; font-weight:600; text-transform:uppercase; letter-spacing:1.2px; color:#6E665C; margin:0 0 16px; }
.footer a, .footer .footlink{ color:#B7B0A6; background:none; border:none; padding:0; cursor:pointer; font-size:15px; text-decoration:none; display:block; margin-bottom:11px; text-align:left; }
.footer a:hover, .footer .footlink:hover{ color:#F4F0E8; }
.footer-bottom{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; padding:28px 0; font-size:13px; color:#6E665C; }

/* success */
.success{ background:#fff; border:1px solid var(--line); border-radius:22px; padding:56px 48px; text-align:center; box-shadow:0 18px 50px -28px rgba(33,30,25,.28); }
.success .checkbig{ width:72px; height:72px; border-radius:50%; background:var(--pt); display:flex; align-items:center; justify-content:center; margin:0 auto 26px; font-size:34px; color:var(--p); }

/* badges */
.badge{ font-size:13px; font-weight:600; padding:7px 14px; border-radius:999px; display:inline-block; }
.badge.green{ color:var(--p); background:var(--pt); }
.badge.gold{ color:var(--ad); background:var(--at); }
.badge.grey{ color:var(--muted); background:var(--line2); }

/* routing */
[data-route]{ display:none; }
[data-route].route-active{ display:block; }

.mt-0{ margin-top:0; } .mb-0{ margin-bottom:0; }
.stack > * + *{ margin-top:14px; }
.flex-between{ display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; }

/* prose for privacy page */
.prose h2{ font-family:var(--serif); font-weight:500; font-size:24px; margin:32px 0 10px; }
.prose h3{ font-size:17px; font-weight:700; margin:22px 0 6px; }
.prose p, .prose li{ font-size:16px; color:var(--ink-soft); line-height:1.7; }
.prose ul{ padding-left:22px; }
.prose .tag{ background:var(--at); color:#6B5320; padding:1px 7px; border-radius:5px; font-size:14px; font-weight:600; }

/* ============================================================ RESPONSIVE ============================================================ */
@media (max-width:880px){
  .wrap, .wrap-md, .wrap-sm{ padding:0 20px; }
  .section{ padding:56px 0; }
  .hero{ grid-template-columns:1fr; gap:36px; padding:48px 0; }
  .grid-2, .grid-3, .grid-4{ grid-template-columns:1fr; }
  .fieldgrid{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr; gap:32px; }
  .nav-links{
    position:absolute; top:72px; left:0; right:0; flex-direction:column; align-items:stretch;
    background:var(--cream); border-bottom:1px solid var(--line); padding:12px 20px 20px; gap:6px;
    display:none;
  }
  .nav-links.open{ display:flex; }
  .nav-link{ text-align:left; }
  .nav-toggle{ display:inline-flex; background:none; border:1.5px solid var(--ptb); border-radius:10px; padding:8px 12px; cursor:pointer; color:var(--p); font-weight:600; }
  .steps{ flex-wrap:wrap; gap:8px; }
  .step{ width:72px; }
}
@media (max-width:560px){
  .band p.quote{ font-size:21px; }
  .card{ padding:22px; }
  .success{ padding:36px 24px; }
}
