/* ============================================================
   HEALTHNESS+ HRA DESIGN SYSTEM
   Single shared stylesheet for every step kind in the conversational
   HRA wizard. Extracted from hra_question_reference.html and
   hra_section_intro_reference.html — those two reference files defined
   an identical token system and shell, with two stage variants
   (question stage vs intro/hero stage). Kept here as one file per
   their own instruction, not copy-pasted per page.
   ============================================================ */
:root{
  --crimson:#DC143C;
  --crimson-deep:#B30F30;
  --ink:#1A2230;
  --slate:#5B6472;
  --blush:#FBE2E9;
  --blush-deep:#F6CBD8;
  --mist:#EEF3F6;
  --paper:#FFFFFF;
  --line:#E3E8ED;
  --focus:#9B1530;
}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;}
body{
  font-family:'Inter',sans-serif;
  background:var(--mist);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
}

/* ---------------- TOP PROGRESS RAIL ---------------- */
.hra-rail{
  position:fixed; top:0; left:0; right:0; height:3px;
  background:var(--line); z-index:50;
}
.hra-rail__fill{
  height:100%; width:0%;
  background:linear-gradient(90deg, var(--crimson), var(--crimson-deep));
  transition:width .6s cubic-bezier(.4,0,.2,1);
}

/* ---------------- SHELL ---------------- */
.hra-shell{ min-height:100vh; display:flex; flex-direction:column; }
.hra-topbar{ display:flex; align-items:center; justify-content:space-between; padding:22px 40px; }
.hra-logo{ font-family:'Fraunces',serif; font-weight:700; font-size:18px; letter-spacing:.3px; color:var(--ink); display:flex; align-items:center; gap:8px; }
.hra-logo span{ color:var(--crimson); }
.hra-logo-img{ height:30px; width:auto; display:block; }
.hra-counter{ font-size:12px; font-weight:600; color:var(--slate); letter-spacing:.6px; text-transform:uppercase; display:flex; align-items:center; gap:10px; }
.hra-counter b{ color:var(--crimson); font-size:13px; }

/* ---------------- SELECTION FLASH (camera-shutter effect) ---------------- */
.hra-flash{ position:fixed; inset:0; background:#fff; opacity:0; pointer-events:none; z-index:200; }
.hra-flash.is-flashing{ animation:hra-double-flash .42s ease-out; }
@keyframes hra-double-flash{
  0%{ opacity:0; } 12%{ opacity:.55; } 24%{ opacity:0; }
  40%{ opacity:.4; } 55%{ opacity:0; } 100%{ opacity:0; }
}
.hra-opt.is-confirmed{ border-color:var(--crimson); box-shadow:0 0 0 4px rgba(220,20,60,.12); }
.hra-step.is-leaving{ animation:hra-stage-out .28s ease-in forwards; }
@keyframes hra-stage-out{
  0%{ opacity:1; transform:scale(1); }
  100%{ opacity:0; transform:scale(.985); }
}

/* ---------------- QUESTION STAGE ---------------- */
.hra-stage{
  flex:1; display:grid; grid-template-columns:1fr 1fr; align-items:center;
  gap:0; max-width:1180px; margin:0 auto; width:100%; padding:20px 40px 60px;
}
.hra-stage.is-reversed{ direction:rtl; }
.hra-stage.is-reversed > *{ direction:ltr; }

.hra-visual{ position:relative; display:flex; align-items:center; justify-content:center; height:550px; }
.hra-visual__field{
  position:absolute; width:475px; height:475px; background:var(--blush);
  border-radius:42% 58% 61% 39% / 47% 41% 59% 53%;
  transition:border-radius 1.2s ease-in-out;
}
.hra-visual__field::after{
  content:''; position:absolute; inset:0;
  background:radial-gradient(circle at 30% 25%, rgba(255,255,255,.35), transparent 55%);
  border-radius:inherit;
}
.hra-visual img{
  position:relative; z-index:2; max-width:375px; width:100%;
  filter:drop-shadow(0 18px 30px rgba(179,15,48,.14));
  animation:hra-float 5s ease-in-out infinite;
}
@keyframes hra-float{ 0%,100%{ transform:translateY(0px); } 50%{ transform:translateY(-9px); } }

.hra-content{ padding:0 20px; max-width:480px; }
.hra-eyebrow{
  font-size:12px; font-weight:700; letter-spacing:1.4px; text-transform:uppercase;
  color:var(--crimson); margin-bottom:14px; display:flex; align-items:center; gap:8px;
}
.hra-eyebrow::before{ content:''; width:16px; height:2px; background:var(--crimson); display:inline-block; }
.hra-question{
  font-family:'Fraunces',serif; font-weight:600; font-size:32px; line-height:1.22;
  color:var(--ink); margin-bottom:34px; letter-spacing:-.2px;
}
.hra-question em{ font-style:italic; color:var(--crimson-deep); }

/* ---------------- OPTIONS ---------------- */
.hra-options{ display:flex; flex-direction:column; gap:10px; margin-bottom:30px; }
.hra-opt{
  display:flex; align-items:center; gap:14px; background:var(--paper);
  border:1.5px solid var(--line); border-radius:12px; padding:14px 16px;
  cursor:pointer; transition:border-color .18s ease, background .18s ease, transform .12s ease;
  position:relative;
}
.hra-opt:hover{ border-color:var(--blush-deep); transform:translateX(2px); }
.hra-opt:focus-visible{ outline:2.5px solid var(--focus); outline-offset:2px; }
.hra-opt__key{
  flex-shrink:0; width:30px; height:30px; border-radius:8px; background:var(--mist);
  color:var(--slate); font-weight:700; font-size:13px;
  display:flex; align-items:center; justify-content:center;
  transition:background .18s ease, color .18s ease;
}
.hra-opt__label{ font-size:15px; font-weight:500; color:var(--ink); line-height:1.45; }
.hra-opt__check{
  margin-left:auto; width:18px; height:18px; border-radius:50%; border:1.5px solid var(--line);
  flex-shrink:0; position:relative; transition:border-color .18s ease, background .18s ease;
}
.hra-opt__check::after{
  content:''; position:absolute; inset:0; background:var(--crimson); border-radius:50%;
  transform:scale(0); transition:transform .18s cubic-bezier(.34,1.56,.64,1);
}
.hra-opt.is-selected{ border-color:var(--crimson); background:linear-gradient(0deg, rgba(220,20,60,.035), rgba(220,20,60,.035)); }
.hra-opt.is-selected .hra-opt__key{ background:var(--crimson); color:#fff; }
.hra-opt.is-selected .hra-opt__check{ border-color:var(--crimson); }
.hra-opt.is-selected .hra-opt__check::after{ transform:scale(.55); }

/* ---------------- TEXT/NUMBER INPUTS (input-style steps) ---------------- */
.hra-input{
  width:100%; padding:14px 16px; border:1.5px solid var(--line); border-radius:12px;
  font-size:15px; font-family:'Inter',sans-serif; margin-bottom:14px; color:var(--ink);
  transition:border-color .18s ease;
}
.hra-input:focus{ outline:none; border-color:var(--crimson); }
.hra-input-row{ display:flex; gap:12px; }

/* ---------------- AUTO-COMPUTED NUMBER DISPLAYS ---------------- */
.hra-auto-number{
  font-family:'Fraunces',serif; font-weight:700; font-size:64px; color:var(--crimson);
  line-height:1; margin-bottom:10px;
}
.hra-auto-label{ font-size:13px; color:var(--slate); font-weight:600; letter-spacing:.3px; text-transform:uppercase; margin-bottom:6px; }

/* ---------------- FOOTER CONTROLS ---------------- */
.hra-controls{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.hra-btn{
  background:var(--crimson); color:#fff; border:none; border-radius:10px; padding:13px 28px;
  font-size:14px; font-weight:700; letter-spacing:.2px; cursor:pointer;
  transition:background .16s ease, transform .08s ease; font-family:'Inter',sans-serif;
  display:inline-flex; align-items:center; gap:8px;
}
.hra-btn:hover{ background:var(--crimson-deep); }
.hra-btn:active{ transform:scale(.97); }
.hra-btn:disabled{ background:var(--line); color:var(--slate); cursor:not-allowed; }
.hra-btn svg{ width:14px; height:14px; transition:transform .16s ease; }
.hra-btn:hover svg{ transform:translateX(3px); }
.hra-btn-back{
  background:var(--paper); color:var(--ink); border:1.5px solid var(--line);
}
.hra-btn-back:hover{ background:var(--mist); border-color:var(--blush-deep); }
.hra-btn-back:disabled{ background:var(--paper); color:var(--line); border-color:var(--line); cursor:not-allowed; }
.hra-btn-back svg{ transform:rotate(180deg); }
.hra-btn-back:hover svg{ transform:rotate(180deg) translateX(3px); }
.hra-hint{ font-size:12px; color:var(--slate); font-weight:500; display:flex; align-items:center; gap:6px; }
.hra-hint kbd{
  font-family:'Inter',sans-serif; font-size:11px; font-weight:700; background:var(--paper);
  border:1px solid var(--line); border-radius:5px; padding:2px 6px; color:var(--slate);
}
.hra-skip{
  margin-left:auto; font-size:13px; color:var(--slate); font-weight:600; background:none;
  border:none; cursor:pointer; text-decoration:underline; text-decoration-color:var(--line);
}
.hra-skip:hover{ color:var(--ink); }
.hra-error{ color:var(--crimson); font-size:12px; font-weight:600; margin-top:8px; display:none; }

/* ---------------- INTRO / HERO STAGE (welcome, section intros, auto-summary steps, captcha) ---------------- */
.hra-intro-stage{
  flex:1; display:grid; grid-template-columns:1.15fr 1fr; align-items:center;
  gap:60px; max-width:1180px; margin:0 auto; width:100%; padding:20px 40px 60px;
}
.hra-intro-content{ max-width:520px; }

.hra-section-tag{
  display:inline-flex; align-items:center; gap:8px; background:var(--paper);
  border:1.5px solid var(--blush-deep); border-radius:50px; padding:7px 16px 7px 10px;
  font-size:12px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  color:var(--crimson-deep); margin-bottom:24px;
}
.hra-section-tag__icon{
  width:22px; height:22px; border-radius:50%; background:var(--crimson); color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800;
}

.hra-intro-title{
  font-family:'Fraunces',serif; font-weight:700; font-size:38px; line-height:1.16;
  letter-spacing:-.4px; color:var(--ink); margin-bottom:22px;
}
.hra-intro-body{ font-size:15.5px; line-height:1.75; color:var(--slate); margin-bottom:18px; }
.hra-intro-body strong{ color:var(--ink); font-weight:700; }
.hra-intro-body:last-of-type{ margin-bottom:28px; }

.hra-callout{
  position:relative; background:var(--paper); border-radius:12px; padding:18px 20px 18px 22px;
  margin-bottom:32px; box-shadow:0 1px 2px rgba(26,34,48,.04), 0 8px 24px rgba(26,34,48,.05);
}
.hra-callout::before{
  content:''; position:absolute; left:0; top:10px; bottom:10px; width:3px;
  background:var(--crimson); border-radius:0 3px 3px 0;
}
.hra-callout__label{
  display:flex; align-items:center; gap:8px; font-size:12px; font-weight:800; letter-spacing:.5px;
  text-transform:uppercase; color:var(--crimson-deep); margin-bottom:6px;
}
.hra-callout__label svg{ width:14px; height:14px; flex-shrink:0; }
.hra-callout p{ font-size:14px; line-height:1.65; color:var(--ink); }

.hra-intro-visual{ position:relative; display:flex; align-items:center; justify-content:center; height:600px; }
.hra-intro-visual__field{
  position:absolute; width:525px; height:525px; background:var(--blush);
  border-radius:58% 42% 39% 61% / 53% 47% 59% 41%;
}
.hra-intro-visual__field::after{
  content:''; position:absolute; inset:0;
  background:radial-gradient(circle at 28% 22%, rgba(255,255,255,.4), transparent 55%);
  border-radius:inherit;
}
.hra-intro-visual img{
  position:relative; z-index:2; max-width:425px; width:100%;
  filter:drop-shadow(0 20px 34px rgba(179,15,48,.16));
  animation:hra-float 5.5s ease-in-out infinite;
}

/* welcome banner is a wide rectangular photo, not an illustration —
   no blush blob behind it, sits flush left as its own hero element */
.hra-welcome-img{ width:100%; max-width:575px; border-radius:16px; position:relative; z-index:2; box-shadow:0 20px 40px rgba(26,34,48,.14); }

.hra-orbit{ position:absolute; border-radius:50%; background:var(--crimson); opacity:.85; }
.hra-orbit--1{ width:10px; height:10px; top:8%; right:12%; animation:hra-orbit1 7s ease-in-out infinite; }
.hra-orbit--2{ width:7px; height:7px; bottom:14%; left:6%; background:var(--ink); opacity:.18; animation:hra-orbit2 8s ease-in-out infinite; }
@keyframes hra-orbit1{ 0%,100%{ transform:translate(0,0); } 50%{ transform:translate(-8px,10px); } }
@keyframes hra-orbit2{ 0%,100%{ transform:translate(0,0); } 50%{ transform:translate(10px,-8px); } }

@media (prefers-reduced-motion: reduce){
  .hra-visual img, .hra-intro-visual img, .hra-orbit{ animation:none; }
  .hra-visual__field{ transition:none; }
}

/* ---------------- CAPTCHA STAGE ---------------- */
.hra-captcha-box{ margin-bottom:20px; }
.hra-consent-block{ margin-bottom:24px; }
.hra-consent-label{ display:flex; gap:12px; align-items:flex-start; cursor:pointer; font-size:0.85rem; line-height:1.55; color:var(--hra-muted,#6b7280); }
.hra-consent-label input[type="checkbox"]{ flex-shrink:0; margin-top:2px; width:16px; height:16px; cursor:pointer; accent-color:var(--hra-accent,#4f46e5); }
.hra-consent-label a{ color:var(--hra-accent,#4f46e5); text-decoration:underline; }

/* ---------------- STEP VISIBILITY ---------------- */
.hra-step{ display:none; }
.hra-step.active{ display:block; }

/* ---------------- RESPONSIVE ---------------- */
@media (max-width: 880px){
  .hra-topbar{ padding:18px 22px; }
  .hra-stage{ grid-template-columns:1fr; padding:10px 22px 50px; gap:6px; }
  .hra-stage.is-reversed{ direction:ltr; }
  .hra-visual{ height:325px; order:0; }
  .hra-visual__field{ width:288px; height:288px; }
  .hra-visual img{ max-width:225px; }
  .hra-content{ max-width:100%; padding:0; order:1; }
  .hra-question{ font-size:24px; margin-bottom:24px; }

  .hra-intro-stage{ grid-template-columns:1fr; gap:10px; padding:10px 22px 50px; }
  .hra-intro-visual{ height:300px; order:0; }
  .hra-intro-visual__field{ width:250px; height:250px; }
  .hra-intro-visual img{ max-width:200px; }
  .hra-welcome-img{ max-width:100%; }
  .hra-intro-content{ max-width:100%; order:1; }
  .hra-intro-title{ font-size:26px; }
}
