:root {
  --ink:#1f1f1f;
  --muted:#5c5c5c;
  --purple:#4b2366;
  --purple-dark:#35164b;
  --paper:#fff;
  --soft:#f5f2f7;
  --line:#d8d2dc;
  --focus:#ffbf47;
  --error:#b10e1e;
  --max:780px;
  --bs-primary:#4b2366;
  --bs-primary-rgb:75,35,102;
  --bs-body-color:#1f1f1f;
  --bs-body-font-family:Arial,"Helvetica Neue",sans-serif;
  --bs-body-line-height:1.6;
}

*{box-sizing:border-box}
html{font-size:100%;scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:var(--paper);line-height:1.6}
.container-narrow{width:min(calc(100% - 2rem),var(--max));margin-inline:auto}
.skip-link{position:absolute;left:.75rem;top:-6rem;background:#fff;color:#000;padding:.75rem 1rem;z-index:2000;border:3px solid #000}
.skip-link:focus{top:.75rem}
.site-header{border-bottom:1px solid var(--line);padding:1rem 0}
.brand-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.brand-logo{max-width:220px;height:auto}
.version{font-size:.9rem;color:var(--muted)}

.planning-banner{background:var(--purple-dark);color:#fff;border-bottom:4px solid var(--focus)}
.planning-banner-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem;align-items:center;padding:1.35rem 0}
..banner-kicker {
  display: block;
  font-weight: 700;
}
.banner-tags{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0;justify-content:flex-end}
.banner-tags li{background:#fff;color:var(--purple-dark);font-weight:700;border-radius:10px;padding:.35rem .7rem;white-space:nowrap}
.intro-help{margin:1.25rem 0 0;background:var(--soft)}
.intro-help summary{padding:.8rem 1rem}
.intro-help p{margin:0;padding:0 1rem 1rem}
.when-group{border:1px solid var(--line);border-radius:.35rem;padding:1rem;margin:1.5rem 0;background:#fcfbfd}
.when-group>legend{padding:0 .35rem;margin-left:-.35rem;color:var(--purple-dark)}
.compact-field{margin:.75rem 0}
.intro{padding:2.5rem 0 1.5rem}
.eyebrow{
  letter-spacing:.06em;
  font-weight:700;
  color:var(--purple);
  font-size:.88rem;
  margin-bottom:.3rem;
}

.step-count{
  text-transform:uppercase;
  letter-spacing:.06em;
  font-weight:700;
  color:var(--purple);
  font-size:.88rem;
  margin-bottom:.3rem;
}
h1{font-size:clamp(2rem,5vw,3rem);line-height:1.08;margin:.2rem 0 1rem;color:var(--purple-dark)}
h2{font-size:1.8rem;line-height:1.2;margin:.25rem 0 1rem}
h3{font-size:1.25rem;line-height:1.3}
.lede{font-size:1.2rem;max-width:42rem}
.progress-wrap{border-block:1px solid var(--line);padding:1rem 0;margin-bottom:2rem;overflow-x:auto}
.progress{display:flex;list-style:none;margin:0;padding:0;gap:.5rem;min-width:520px;background:transparent;height:auto}
.progress li{display:flex;align-items:center;gap:.45rem;color:var(--muted);font-weight:700;flex:1}
.progress li span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;border:2px solid var(--line);flex:0 0 auto}
.progress li.done,.progress li[aria-current="step"]{color:var(--purple-dark)}
.progress li.done span,.progress li[aria-current="step"] span{background:var(--purple);color:#fff;border-color:var(--purple)}
.step{padding-bottom:3rem}
.field,fieldset{margin:1.5rem 0}
fieldset{border:0;padding:0}
legend,label{font-weight:700;font-size:1.05rem}
.optional,.hint{font-weight:400;color:var(--muted);font-size:.95rem}
.hint{margin:.35rem 0 0}
.form-control{font:inherit;padding:.75rem;border:2px solid #777;border-radius:.25rem;background:#fff;margin-top:.35rem;min-height:48px}
.form-control:focus{border-color:#000;box-shadow:none}
textarea.form-control{resize:vertical;min-height:auto}
.choices{display:grid;gap:.65rem;margin-top:.75rem}
.choices.horizontal{grid-template-columns:repeat(3,1fr)}
.choices.four{grid-template-columns:repeat(4,1fr)}
.choices.yesno{grid-template-columns:repeat(2,1fr);max-width:420px}
.choices label{display:flex;align-items:center;gap:.55rem;border:2px solid var(--line);border-radius:.35rem;padding:.8rem;background:#fff;cursor:pointer;min-height:52px}
.choices label:has(input:checked){border-color:var(--purple);background:var(--soft)}
.form-check-input{width:1.25rem;height:1.25rem;flex:0 0 auto;margin:0;border:2px solid #666}
.form-check-input:checked{background-color:var(--purple);border-color:var(--purple)}
input:focus-visible,textarea:focus-visible,button:focus-visible,summary:focus-visible,.generated:focus-visible,.form-check-input:focus-visible,.form-control:focus-visible{outline:4px solid var(--focus)!important;outline-offset:2px!important;box-shadow:none!important}
.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
details{border:1px solid var(--line);border-radius:.35rem;margin:1.75rem 0;background:#fafafa}
summary{padding:1rem;font-weight:700;color:var(--purple-dark);cursor:pointer}
.details-body{padding:0 1rem 1rem}
.actions{margin-top:2rem;display:flex;justify-content:flex-end;gap:.75rem}
.actions.split{justify-content:space-between}
.btn{font:inherit;font-weight:700;border-radius:.3rem;padding:.8rem 1.1rem;min-height:48px}
.btn-primary{--bs-btn-bg:var(--purple);--bs-btn-border-color:var(--purple);--bs-btn-hover-bg:var(--purple-dark);--bs-btn-hover-border-color:var(--purple-dark);--bs-btn-active-bg:var(--purple-dark);--bs-btn-active-border-color:var(--purple-dark)}
.btn-outline-primary{--bs-btn-color:var(--purple-dark);--bs-btn-border-color:var(--purple);--bs-btn-hover-bg:var(--purple);--bs-btn-hover-border-color:var(--purple);--bs-btn-active-bg:var(--purple-dark);--bs-btn-active-border-color:var(--purple-dark)}
.result-actions{border:2px solid var(--purple);background:var(--soft);padding:1.25rem;margin:1.5rem 0;border-radius:.35rem}
.result-actions h3{margin-top:0}
.result-action-buttons{display:flex;flex-wrap:wrap;gap:.75rem;margin:1rem 0 1.5rem}
.email-panel{border-top:1px solid var(--line);padding-top:1rem}
.email-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:end}
.email-row .form-control{margin-top:.35rem}
.field-error{color:var(--error);font-weight:700;margin:.5rem 0 0}
.result-card{border:1px solid var(--line);border-left:5px solid var(--purple);padding:1rem 1.25rem;margin:1.25rem 0;border-radius:.25rem}
.result-card h3{margin-top:0}
.generated{white-space:pre-line;margin-bottom:1rem}
.status{min-height:1.5rem;font-weight:700}
.privacy-note{background:#f8f8f8;border-left:5px solid #666;padding:1rem 1.25rem;margin:1.5rem 0}
.privacy-note h3{margin-top:0}
.error-summary{border:4px solid var(--error);padding:1rem;margin:1rem 0 2rem}
.error-summary h2{font-size:1.25rem;color:var(--error)}
.error-summary a{color:var(--error);font-weight:700}
.invalid{border-color:var(--error)!important}
footer{background:var(--soft);border-top:1px solid var(--line);padding:1.5rem 0;margin-top:2rem}
footer p{margin:0}
.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}
[hidden]{display:none!important}

@media(max-width:650px){
  .choices.horizontal,.choices.four,.grid.two,.email-row,.planning-banner-inner{grid-template-columns:1fr}
  .brand-row{align-items:flex-start;flex-direction:column}
  .banner-tags{justify-content:flex-start}
  .actions.split{align-items:stretch}
  .actions{flex-direction:column-reverse}
  .actions .btn,.result-action-buttons .btn,.email-row .btn{width:100%}
  .result-action-buttons{flex-direction:column}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

@media print{
  body{font-size:12pt}
  .site-header,.planning-banner,.progress-wrap,.actions,.copy,.intro,.step-count,footer,details,.result-actions,.privacy-note,.status{display:none!important}
  .step{display:none!important}
  .step.results{display:block!important}
  .result-card{break-inside:avoid;border:1px solid #999;border-left:4px solid #333}
  .generated{white-space:pre-line}
}
