:root{
    --bg: #080f0d;
    --bg-elev: rgba(255,255,255,0.035);
    --bg-elev-solid: #0e1a17;
    --bg-elev-2: rgba(255,255,255,0.055);
    --text: #eef4f2;
    --text-dim: #9db3ad;
    --text-faint: #63807a;
    --lime: #c8f542;
    --lime-soft: rgba(200,245,66,0.12);
    --coral: #ff6b4a;
    --amber: #ffb454;
    --blue: #4fd1e8;
    --line: rgba(238,244,242,0.09);
    --line-strong: rgba(238,244,242,0.17);
    --radius: 18px;
    --radius-sm: 12px;
    --shadow: 0 24px 70px rgba(0,0,0,0.5);
    --safe-top: env(safe-area-inset-top, 0px);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    /* Escala de IMC de 5 faixas (velocímetro) */
    --imc-azul-out: #4fa8e8;
    --imc-azul-in: #3a7ca8;
    --imc-verde-out: #5cb82f;
    --imc-verde-in: #4b7a2d;
    --imc-amarelo-out: #ffb411;
    --imc-amarelo-in: #c3821f;
    --imc-vermelho-out: #ff4332;
    --imc-vermelho-in: #c24532;
    --imc-vescuro-out: #e51c1c;
    --imc-vescuro-in: #b71414;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html{scroll-behavior:smooth;}
  html,body{margin:0;padding:0;}
  body{
    background:
      radial-gradient(1100px 550px at 85% -8%, rgba(200,245,66,0.08), transparent 55%),
      radial-gradient(800px 500px at -8% 105%, rgba(255,107,74,0.06), transparent 55%),
      radial-gradient(600px 400px at 50% 50%, rgba(79,209,232,0.03), transparent 60%),
      var(--bg);
    background-attachment:fixed;
    color:var(--text);
    font-family:'Inter',sans-serif;
    min-height:100vh;
    min-height:100dvh;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
    overflow-x:hidden;
  }
  h1,h2,h3,.display{font-family:'Archivo',sans-serif;}
  .mono{font-family:'JetBrains Mono',monospace;}

  /* ---------- Shell ---------- */
  .shell{
    max-width:1120px;
    margin:0 auto;
    padding:calc(20px + var(--safe-top)) 20px calc(70px + var(--safe-bottom));
  }
  @media (min-width:700px){ .shell{padding-left:28px;padding-right:28px;padding-top:calc(30px + var(--safe-top));} }

  .topbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:26px;
  }
  @media (min-width:700px){ .topbar{margin-bottom:38px;} }
  .logo{
    display:flex;
    align-items:center;
    gap:10px;
    font-family:'Archivo',sans-serif;
    font-weight:800;
    font-size:21px;
    letter-spacing:0.03em;
    cursor:pointer;
    -webkit-tap-highlight-color:transparent;
    user-select:none;
    -webkit-user-select:none;
    border-radius:10px;
    transition:opacity .15s ease, transform .1s ease;
  }
  .logo .wordmark{white-space:nowrap;}
  .logo:hover{opacity:0.88;}
  .logo:active{transform:scale(0.97);}
  .logo:focus-visible{outline:2px solid var(--lime);outline-offset:6px;}
  .logo .mark{
    width:34px;height:34px;
    border-radius:10px;
    background:linear-gradient(135deg, var(--lime), #7fd12e);
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 4px 18px rgba(200,245,66,0.35);
    animation:logoHeartbeat 2.4s ease-in-out infinite;
  }
  .logo .mark svg{width:19px;height:19px;}
  .logo .mark svg path{
    stroke-dasharray:33;
    stroke-dashoffset:0;
    animation:logoPulseLine 2.4s ease-in-out infinite;
  }
  @keyframes logoHeartbeat{
    0%, 100% { transform:scale(1); box-shadow:0 4px 18px rgba(200,245,66,0.35); }
    15% { transform:scale(1.1); box-shadow:0 6px 26px rgba(200,245,66,0.55); }
    30% { transform:scale(1); box-shadow:0 4px 18px rgba(200,245,66,0.35); }
    45% { transform:scale(1.07); box-shadow:0 5px 22px rgba(200,245,66,0.5); }
    60%, 100% { transform:scale(1); box-shadow:0 4px 18px rgba(200,245,66,0.35); }
  }
  @keyframes logoPulseLine{
    0% { stroke-dashoffset:33; }
    45% { stroke-dashoffset:0; }
    58% { stroke-dashoffset:0; }
    100% { stroke-dashoffset:-33; }
  }
  .logo .fit{color:var(--lime);}
  .step-tag{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    color:var(--text-faint);
    letter-spacing:0.1em;
    padding:7px 13px;
    border:1px solid var(--line);
    border-radius:999px;
    background:var(--bg-elev);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
  }

  /* ---------- Mobile progress bar ---------- */
  .mprogress{
    display:none;
    height:4px;
    border-radius:3px;
    background:var(--line);
    margin-bottom:22px;
    overflow:hidden;
  }
  .mprogress i{
    display:block;height:100%;
    background:linear-gradient(90deg, var(--lime), #7fd12e);
    border-radius:3px;
    transition:width .5s cubic-bezier(.2,.8,.2,1);
    box-shadow:0 0 10px rgba(200,245,66,0.5);
  }
  @media (max-width:859px){ .mprogress.visible{display:block;} }

  /* ---------- Layout with progress rail ---------- */
  .layout{
    display:grid;
    grid-template-columns:210px 1fr;
    gap:38px;
    align-items:start;
  }
  @media (max-width:859px){
    .layout{grid-template-columns:1fr;gap:0;}
  }
  .rail{
    position:sticky;
    top:calc(28px + var(--safe-top));
    display:flex;
    flex-direction:column;
    gap:2px;
  }
  .rail-item{
    display:flex;
    align-items:center;
    gap:12px;
    padding:11px 4px 11px 16px;
    border-left:2px solid var(--line);
    opacity:0.38;
    transition:opacity .3s ease, border-color .3s ease;
  }
  .rail-item.active{opacity:1;border-left-color:var(--lime);}
  .rail-item.done{opacity:0.72;border-left-color:rgba(79,209,232,0.5);}
  .rail-num{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    color:var(--text-faint);
    width:18px;
  }
  .rail-item.active .rail-num{color:var(--lime);}
  .rail-item.done .rail-num{color:var(--blue);}
  .rail-label{font-size:13px;color:var(--text-dim);}
  .rail-item.active .rail-label{color:var(--text);font-weight:600;}
  /* Placed after the base .rail rule so it correctly wins the cascade on small screens */
  @media (max-width:859px){
    .rail{display:none;}
  }

  /* ---------- Card ---------- */
  .card{
    background:linear-gradient(180deg, rgba(255,255,255,0.045), rgba(255,255,255,0.018));
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:44px;
    box-shadow:var(--shadow);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
    animation:rise .45s cubic-bezier(.2,.8,.2,1);
    position:relative;
    overflow:hidden;
  }
  .card::before{
    content:'';
    position:absolute;
    top:0;left:0;right:0;
    height:1px;
    background:linear-gradient(90deg, transparent, rgba(200,245,66,0.35), transparent);
  }
  @keyframes rise{
    from{opacity:0;transform:translateY(16px);}
    to{opacity:1;transform:translateY(0);}
  }
  @media (prefers-reduced-motion:reduce){
    *{animation:none!important;transition:none!important;}
  }
  @media (max-width:700px){ .card{padding:26px 20px;border-radius:16px;} }

  .eyebrow{
    font-family:'JetBrains Mono',monospace;
    font-size:11.5px;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--lime);
    margin:0 0 12px;
    display:flex;
    align-items:center;
    gap:8px;
  }
  .eyebrow::before{
    content:'';
    width:22px;height:2px;
    background:var(--lime);
    border-radius:2px;
  }
  .card h2{
    font-size:clamp(24px,5.5vw,32px);
    font-weight:800;
    margin:0 0 8px;
    line-height:1.12;
    letter-spacing:-0.01em;
  }
  .card .sub{
    color:var(--text-dim);
    font-size:15px;
    line-height:1.6;
    margin:0 0 30px;
    max-width:60ch;
  }

  /* ---------- Hero ---------- */
  .hero{
    display:grid;
    grid-template-columns:1.1fr 0.9fr;
    gap:16px;
    align-items:center;
  }
  .hero > div{min-width:0;}
  @media (max-width:859px){
    .hero{grid-template-columns:1fr;}
    .hero-visual{order:-1;margin-bottom:8px;}
  }
  .hero-title{
    font-size:clamp(40px,9vw,62px);
    font-weight:900;
    line-height:0.98;
    margin:0 0 18px;
    letter-spacing:-0.02em;
    text-transform:uppercase;
  }
  .hero-title .accent{
    color:var(--lime);
    text-shadow:0 0 40px rgba(200,245,66,0.4);
  }
  .hero-lede{
    color:var(--text-dim);
    font-size:16px;
    line-height:1.65;
    max-width:46ch;
    margin:0 0 28px;
  }
  .hero-points{
    display:flex;
    flex-direction:column;
    gap:11px;
    margin-bottom:32px;
  }
  .hero-point{
    display:flex;
    gap:12px;
    align-items:baseline;
    font-size:14px;
    color:var(--text-dim);
  }
  .hero-point .n{
    font-family:'JetBrains Mono',monospace;
    color:var(--blue);
    font-size:11px;
  }
  .hero-visual{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:0;
  }
  .hero-badges{
    display:flex;
    gap:8px;
    margin-top:18px;
    flex-wrap:wrap;
    justify-content:center;
  }
  .hbadge{
    font-family:'JetBrains Mono',monospace;
    font-size:10.5px;
    letter-spacing:0.06em;
    color:var(--text-dim);
    border:1px solid var(--line);
    border-radius:999px;
    padding:6px 12px;
    background:var(--bg-elev);
  }

  /* ---------- Buttons ---------- */
  .btn{
    font-family:'Inter',sans-serif;
    font-weight:700;
    font-size:15px;
    border:none;
    border-radius:12px;
    padding:15px 28px;
    min-height:50px;
    cursor:pointer;
    transition:transform .15s ease, box-shadow .15s ease, opacity .15s ease;
    touch-action:manipulation;
  }
  .btn-primary{
    background:linear-gradient(135deg, var(--lime), #a8e032);
    color:#0a1512;
    box-shadow:0 6px 22px rgba(200,245,66,0.28);
  }
  .btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 30px rgba(200,245,66,0.38);}
  .btn-primary:active{transform:scale(0.98);}
  .btn-primary:disabled{opacity:0.35;cursor:not-allowed;transform:none;box-shadow:none;}
  .btn-ghost{
    background:transparent;
    color:var(--text-dim);
    border:1px solid var(--line-strong);
  }
  .btn-ghost:hover{color:var(--text);border-color:var(--text-dim);}
  .btn-ghost:active{transform:scale(0.98);}
  .btn-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    margin-top:34px;
    gap:12px;
  }
  .btn-row .spacer{flex:1;}
  @media (max-width:520px){
    .btn-row{flex-direction:column-reverse;align-items:stretch;}
    .btn-row .spacer{display:none;}
    .btn{width:100%;}
  }

  /* ---------- Forms ---------- */
  .grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:20px;
  }
  @media (max-width:640px){ .grid{grid-template-columns:1fr;gap:18px;} }
  .field{display:flex;flex-direction:column;gap:8px;}
  .field.full{grid-column:1 / -1;}
  .field label{
    font-size:13px;
    color:var(--text-dim);
    font-weight:600;
  }
  .field input, .field select{
    background:var(--bg-elev-2);
    border:1px solid var(--line-strong);
    border-radius:11px;
    padding:14px 15px;
    color:var(--text);
    font-family:'Inter',sans-serif;
    font-size:16px; /* >=16px avoids iOS Safari zoom-on-focus */
    outline:none;
    transition:border-color .15s ease, box-shadow .15s ease;
    appearance:none;
    -webkit-appearance:none;
    width:100%;
  }
  .field select{
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239db3ad' stroke-width='1.6' fill='none'/%3E%3C/svg%3E");
    background-repeat:no-repeat;
    background-position:right 15px center;
    padding-right:36px;
  }
  .field input:focus, .field select:focus{
    border-color:var(--lime);
    box-shadow:0 0 0 3px rgba(200,245,66,0.12);
  }
  .hint{font-size:12px;color:var(--text-faint);line-height:1.5;}
  .hint.err{color:var(--coral);font-weight:600;}

  /* Choice cards */
  .choice-group{display:flex;flex-direction:column;gap:10px;}
  .choice-group.full{grid-column:1/-1;}
  .choice-group .glabel{font-size:13px;color:var(--text-dim);font-weight:600;margin-bottom:2px;}
  .choices{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
  .choices.col1{grid-template-columns:1fr;}
  .choices.col3{grid-template-columns:repeat(3,1fr);}
  @media (max-width:640px){ .choices, .choices.col3{grid-template-columns:1fr;} }
  .choice{
    border:1px solid var(--line-strong);
    background:var(--bg-elev-2);
    border-radius:12px;
    padding:15px 16px;
    min-height:50px;
    cursor:pointer;
    font-size:14px;
    color:var(--text-dim);
    transition:border-color .15s ease, background .15s ease, transform .1s ease;
    user-select:none;
    -webkit-user-select:none;
    touch-action:manipulation;
  }
  .choice:active{transform:scale(0.985);}
  @media (hover:hover){ .choice:hover{border-color:var(--text-dim);} }
  .choice.selected{
    border-color:var(--lime);
    background:var(--lime-soft);
    box-shadow:0 0 0 1px var(--lime), 0 4px 16px rgba(200,245,66,0.12);
  }
  .choice .ctitle{font-weight:700;color:var(--text);display:block;margin-bottom:3px;font-size:14.5px;}
  .choice.selected .ctitle{color:var(--lime);}
  .choice .cdesc{font-size:12.5px;color:var(--text-faint);line-height:1.45;display:block;}

  /* ---------- Biotype cards ---------- */
  .bio-cards{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
    margin-bottom:8px;
  }
  @media (max-width:760px){ .bio-cards{grid-template-columns:1fr;} }
  .bio-card{
    border:1px solid var(--line-strong);
    background:var(--bg-elev-2);
    border-radius:14px;
    padding:20px 18px;
    cursor:pointer;
    transition:border-color .15s ease, background .15s ease, transform .1s ease;
    user-select:none;-webkit-user-select:none;
    touch-action:manipulation;
    text-align:center;
  }
  .bio-card:active{transform:scale(0.985);}
  @media (hover:hover){ .bio-card:hover{border-color:var(--text-dim);} }
  .bio-card.selected{
    border-color:var(--lime);
    background:var(--lime-soft);
    box-shadow:0 0 0 1px var(--lime), 0 6px 20px rgba(200,245,66,0.14);
  }
  .bio-card svg{width:64px;height:88px;margin-bottom:10px;}
  .bio-card .bname{
    font-family:'Archivo',sans-serif;
    font-weight:800;
    font-size:16px;
    margin-bottom:6px;
  }
  .bio-card.selected .bname{color:var(--lime);}
  .bio-card .bdesc{font-size:12.5px;color:var(--text-dim);line-height:1.5;}

  /* Wrist method box */
  .wrist-box{
    border:1px solid var(--line);
    border-radius:14px;
    background:linear-gradient(135deg, rgba(79,209,232,0.06), rgba(200,245,66,0.04));
    padding:22px;
    margin-bottom:26px;
    display:grid;
    grid-template-columns:110px 1fr;
    gap:20px;
    align-items:center;
  }
  @media (max-width:640px){
    .wrist-box{grid-template-columns:1fr;text-align:center;padding:20px 18px;}
    .wrist-box svg{margin:0 auto;}
  }
  .wrist-box svg{width:110px;height:110px;}
  .wrist-box h3{
    font-size:15px;
    margin:0 0 8px;
    color:var(--blue);
    display:flex;align-items:center;gap:8px;
  }
  @media (max-width:640px){ .wrist-box h3{justify-content:center;} }
  .wrist-box p{
    margin:0 0 10px;
    font-size:13.5px;
    color:var(--text-dim);
    line-height:1.6;
  }
  .wrist-steps{
    display:flex;
    flex-direction:column;
    gap:7px;
    font-size:13px;
    color:var(--text-dim);
    text-align:left;
  }
  .wrist-steps > span{display:flex;gap:9px;align-items:baseline;}
  .wrist-steps > span > span{min-width:0;}
  .wrist-steps b{color:var(--text);font-weight:600;}
  .wrist-steps .wdot{
    width:7px;height:7px;border-radius:50%;
    flex-shrink:0;
    position:relative;top:-1px;
  }

  /* ---------- IMC Gauge ---------- */
  .imc-wrap{
    display:flex;
    flex-direction:column;
    align-items:center;
    padding:8px 0 4px;
  }
  .gauge-frame{
    width:min(280px, 78vw);
    display:flex;
    flex-direction:column;
    position:relative;
  }
  .gauge{
    width:100%;
    aspect-ratio:280/150;
    position:relative;
    overflow:hidden;
  }
  .ring{
    position:absolute;
    top:0;left:0;
    width:100%;
    aspect-ratio:1;
    border-radius:50%;
  }
  .ring-outer{
    -webkit-mask-image: radial-gradient(circle, transparent 0%, transparent 69%, black 69%, black 100%);
    mask-image: radial-gradient(circle, transparent 0%, transparent 69%, black 69%, black 100%);
  }
  .ring-inner{
    -webkit-mask-image: radial-gradient(circle, transparent 0%, transparent 37%, black 37%, black 69%, transparent 69%, transparent 100%);
    mask-image: radial-gradient(circle, transparent 0%, transparent 37%, black 37%, black 69%, transparent 69%, transparent 100%);
  }
  .hub{
    position:absolute;
    left:50%; bottom:0;
    width:37%; height:18.5%;
    transform:translateX(-50%);
    border-radius:50% 50% 0 0;
    background:var(--bg-elev-solid);
    border:2px solid rgba(238,244,242,0.8);
    border-bottom:none;
    display:flex;align-items:flex-end;justify-content:center;
    padding-bottom:7%;
    box-sizing:border-box;
    font-family:'Archivo',sans-serif;
    font-weight:900;
    color:var(--text);
    font-size:clamp(11px,3vw,14px);
    letter-spacing:0.02em;
    z-index:2;
  }
  .gauge-rlabels{
    position:absolute;
    inset:0;
    z-index:1;
  }
  .rlabel{
    position:absolute;
    color:#fff;
    font-family:'JetBrains Mono',monospace;
    font-weight:800;
    text-align:center;
    white-space:nowrap;
    text-shadow:0 1px 3px rgba(0,0,0,0.45);
    transition:text-shadow .3s ease;
    pointer-events:none;
  }
  .rlabel-name{ font-size:9.5px; text-transform:uppercase; letter-spacing:0.02em; }
  .rlabel-range{ font-size:8px; font-weight:800; letter-spacing:-0.02em; }
  .rlabel.active{
    text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5);
  }
  /* Prévia da home: cada rótulo brilha conforme o ponteiro cruza sua faixa (5 janelas de 10%) */
  .gauge-rlabels.preview [data-marker="abaixo"]{ animation:rlabelPulseAbaixo 8s ease-in-out infinite; }
  .gauge-rlabels.preview [data-marker="normal"]{ animation:rlabelPulseNormal 8s ease-in-out infinite; }
  .gauge-rlabels.preview [data-marker="risco"]{ animation:rlabelPulseRisco 8s ease-in-out infinite; }
  .gauge-rlabels.preview [data-marker="sobrepeso"]{ animation:rlabelPulseSobrepeso 8s ease-in-out infinite; }
  .gauge-rlabels.preview [data-marker="obeso"]{ animation:rlabelPulseObeso 8s ease-in-out infinite; }
  @keyframes rlabelPulseAbaixo{
    0%,9%    { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    11%,89%  { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    91%,100% { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
  }
  @keyframes rlabelPulseNormal{
    0%,9%    { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    11%,19%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    21%,79%  { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    81%,89%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    91%,100% { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
  }
  @keyframes rlabelPulseRisco{
    0%,19%   { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    21%,29%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    31%,69%  { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    71%,79%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    81%,100% { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
  }
  @keyframes rlabelPulseSobrepeso{
    0%,29%   { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    31%,39%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    41%,59%  { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    61%,69%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    71%,100% { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
  }
  @keyframes rlabelPulseObeso{
    0%,39%   { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
    41%,59%  { text-shadow:0 0 10px rgba(255,255,255,0.95), 0 1px 3px rgba(0,0,0,0.5); }
    61%,100% { text-shadow:0 1px 3px rgba(0,0,0,0.45); }
  }
  .gauge-needle{
    position:absolute;
    bottom:0;
    left:calc(50% - 1.5px);
    width:3px;
    height:78%;
    background:var(--needle-color, var(--text));
    transform-origin:bottom center;
    transform:rotate(calc(var(--angle,0deg) - 90deg));
    animation:needleSweep 1.3s cubic-bezier(.22,1.12,.3,1) both;
    border-radius:2px;
  }
  @keyframes needleSweep{
    from{ transform:rotate(-190deg); }
    to{ transform:rotate(calc(var(--angle,0deg) - 90deg)); }
  }
  .gauge-needle::after{
    content:'';
    position:absolute;
    bottom:-7px;left:50%;
    transform:translateX(-50%);
    width:14px;height:14px;
    border-radius:50%;
    background:var(--needle-color, var(--text));
    box-shadow:0 0 14px rgba(255,255,255,0.35);
  }
  .zona-vescuro .gauge-needle::after{
    animation:needleDangerPulse 1.4s ease-in-out infinite;
    animation-delay:1.3s;
  }
  @keyframes needleDangerPulse{
    0%,100%{ box-shadow:0 0 14px rgba(255,107,74,0.5); }
    50%{ box-shadow:0 0 28px rgba(255,107,74,0.95); }
  }

  /* Prévia animada do velocímetro da home: o ponteiro varre todo o mostrador
     e muda de cor ao cruzar cada faixa, demonstrando como o resultado real aparece. */
  .gauge-needle.preview{
    --angle:90deg;
    --needle-color:var(--imc-amarelo-out);
    animation:previewSweep 8s ease-in-out infinite;
  }
  .gauge-needle.preview::after{
    animation:previewDotSweep 8s ease-in-out infinite;
  }
  @keyframes previewSweep{
    0%    { transform:rotate(calc(0deg - 90deg));   background:var(--imc-azul-out); }
    10%   { transform:rotate(calc(36deg - 90deg));  background:var(--imc-azul-out); }
    10.5% { background:var(--imc-verde-out); }
    20%   { transform:rotate(calc(72deg - 90deg));  background:var(--imc-verde-out); }
    20.5% { background:var(--imc-amarelo-out); }
    30%   { transform:rotate(calc(108deg - 90deg)); background:var(--imc-amarelo-out); }
    30.5% { background:var(--imc-vermelho-out); }
    40%   { transform:rotate(calc(144deg - 90deg)); background:var(--imc-vermelho-out); }
    40.5% { background:var(--imc-vescuro-out); }
    50%   { transform:rotate(calc(180deg - 90deg)); background:var(--imc-vescuro-out); }
    60%   { background:var(--imc-vescuro-out); }
    60.5% { background:var(--imc-vermelho-out); }
    70%   { transform:rotate(calc(144deg - 90deg)); background:var(--imc-vermelho-out); }
    70.5% { background:var(--imc-amarelo-out); }
    80%   { transform:rotate(calc(108deg - 90deg)); background:var(--imc-amarelo-out); }
    80.5% { background:var(--imc-verde-out); }
    90%   { transform:rotate(calc(72deg - 90deg));  background:var(--imc-verde-out); }
    90.5% { background:var(--imc-azul-out); }
    100%  { transform:rotate(calc(0deg - 90deg));   background:var(--imc-azul-out); }
  }
  @keyframes previewDotSweep{
    0%    { background:var(--imc-azul-out); box-shadow:0 0 14px rgba(79,168,232,0.55); }
    10%   { background:var(--imc-azul-out); box-shadow:0 0 14px rgba(79,168,232,0.55); }
    10.5% { background:var(--imc-verde-out); box-shadow:0 0 14px rgba(92,184,47,0.55); }
    20%   { background:var(--imc-verde-out); box-shadow:0 0 14px rgba(92,184,47,0.55); }
    20.5% { background:var(--imc-amarelo-out); box-shadow:0 0 14px rgba(255,180,17,0.55); }
    30%   { background:var(--imc-amarelo-out); box-shadow:0 0 14px rgba(255,180,17,0.55); }
    30.5% { background:var(--imc-vermelho-out); box-shadow:0 0 14px rgba(255,67,50,0.55); }
    40%   { background:var(--imc-vermelho-out); box-shadow:0 0 14px rgba(255,67,50,0.55); }
    40.5% { background:var(--imc-vescuro-out); box-shadow:0 0 14px rgba(229,28,28,0.6); }
    60%   { background:var(--imc-vescuro-out); box-shadow:0 0 14px rgba(229,28,28,0.6); }
    60.5% { background:var(--imc-vermelho-out); box-shadow:0 0 14px rgba(255,67,50,0.55); }
    70%   { background:var(--imc-vermelho-out); box-shadow:0 0 14px rgba(255,67,50,0.55); }
    70.5% { background:var(--imc-amarelo-out); box-shadow:0 0 14px rgba(255,180,17,0.55); }
    80%   { background:var(--imc-amarelo-out); box-shadow:0 0 14px rgba(255,180,17,0.55); }
    80.5% { background:var(--imc-verde-out); box-shadow:0 0 14px rgba(92,184,47,0.55); }
    90%   { background:var(--imc-verde-out); box-shadow:0 0 14px rgba(92,184,47,0.55); }
    90.5% { background:var(--imc-azul-out); box-shadow:0 0 14px rgba(79,168,232,0.55); }
    100%  { background:var(--imc-azul-out); box-shadow:0 0 14px rgba(79,168,232,0.55); }
  }
  .gauge-preview-label{
    margin-top:16px;
    font-size:11.5px;
    color:var(--text-faint);
    text-align:center;
    font-family:'JetBrains Mono',monospace;
    letter-spacing:0.02em;
  }
  .imc-value{
    margin-top:4px;
    font-family:'JetBrains Mono',monospace;
    font-size:clamp(42px, 12vw, 54px);
    font-weight:700;
    line-height:1;
  }
  .imc-classe{
    margin-top:10px;
    font-family:'Archivo',sans-serif;
    font-weight:700;
    font-size:16px;
    padding:7px 18px;
    border-radius:999px;
    border:1.5px solid var(--line-strong);
    animation:none;
  }
  .zona-vescuro .imc-classe{
    animation:badgeDangerGlow 1.4s ease-in-out infinite;
    animation-delay:1.3s;
  }
  @keyframes badgeDangerGlow{
    0%,100%{ box-shadow:0 0 0 rgba(255,107,74,0); }
    50%{ box-shadow:0 0 18px rgba(255,107,74,0.45); }
  }
  .imc-legend{
    display:flex;
    gap:14px;
    margin-top:22px;
    flex-wrap:wrap;
    justify-content:center;
  }
  .imc-legend span{
    font-size:11.5px;
    color:var(--text-faint);
    display:flex;
    align-items:center;
    gap:6px;
  }
  .imc-legend .sw{width:9px;height:9px;border-radius:3px;display:inline-block;}
  .imc-note{
    max-width:52ch;
    text-align:center;
    color:var(--text-dim);
    font-size:14px;
    line-height:1.65;
    margin:24px auto 0;
  }

  /* ---------- Result dashboard ---------- */
  .result-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    flex-wrap:wrap;
    gap:16px;
    margin-bottom:26px;
    border-bottom:1px solid var(--line);
    padding-bottom:22px;
  }
  .result-head h2{margin-bottom:6px;}
  .obj-badge{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-size:13px;
    font-weight:600;
    color:var(--lime);
    background:var(--lime-soft);
    border:1px solid rgba(200,245,66,0.3);
    border-radius:999px;
    padding:7px 15px;
  }
  .obj-badge::before{
    content:'';
    width:7px;height:7px;border-radius:50%;
    background:var(--lime);
    box-shadow:0 0 8px var(--lime);
  }

  .stat-row{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:12px;
    margin-bottom:34px;
  }
  @media (max-width:820px){ .stat-row{grid-template-columns:repeat(2,1fr);} }
  .stat{
    background:var(--bg-elev-2);
    border:1px solid var(--line);
    border-radius:14px;
    padding:18px 16px;
  }
  .stat .slabel{font-size:11px;color:var(--text-faint);margin-bottom:8px;text-transform:uppercase;letter-spacing:.07em;font-weight:600;}
  .stat .sval{font-family:'JetBrains Mono',monospace;font-size:clamp(20px,5vw,25px);font-weight:700;color:var(--lime);}
  .stat .ssub{font-size:12px;color:var(--text-dim);margin-top:5px;}

  .section-block{margin-bottom:36px;}
  .section-title{
    display:flex;
    align-items:center;
    gap:10px;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.1em;
    color:var(--text-faint);
    margin-bottom:16px;
    font-family:'JetBrains Mono',monospace;
    font-weight:600;
  }
  .section-title::after{
    content:'';
    flex:1;
    height:1px;
    background:var(--line);
  }

  .bio-result{
    display:flex;
    gap:16px;
    align-items:center;
    border:1px solid var(--line);
    border-radius:14px;
    background:var(--bg-elev-2);
    padding:18px 20px;
    margin-bottom:16px;
  }
  .bio-result svg{width:44px;height:60px;flex-shrink:0;}
  .bio-result .brname{font-weight:700;font-size:15px;margin-bottom:4px;}
  .bio-result .brname b{color:var(--lime);}
  .bio-result .brtxt{font-size:13px;color:var(--text-dim);line-height:1.55;}

  .macro-row{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
    margin-bottom:18px;
  }
  @media (max-width:640px){ .macro-row{grid-template-columns:1fr;} }
  .macro{
    border:1px solid var(--line);
    border-radius:12px;
    padding:16px;
    background:var(--bg-elev-2);
  }
  .macro .mname{font-size:12px;color:var(--text-faint);margin-bottom:6px;font-weight:600;}
  .macro .mgrams{font-family:'JetBrains Mono',monospace;font-size:21px;font-weight:700;}
  .macro.protein .mgrams{color:var(--blue);}
  .macro.carb .mgrams{color:var(--lime);}
  .macro.fat .mgrams{color:var(--coral);}
  .macro .mbar{height:6px;border-radius:3px;background:var(--line);margin-top:11px;overflow:hidden;}
  .macro .mbar i{display:block;height:100%;border-radius:3px;transition:width .8s ease;}
  .macro.protein .mbar i{background:var(--blue);}
  .macro.carb .mbar i{background:var(--lime);}
  .macro.fat .mbar i{background:var(--coral);}

  .meal-list{display:flex;flex-direction:column;gap:10px;}
  .meal{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    padding:14px 16px;
    border:1px solid var(--line);
    border-radius:12px;
    background:var(--bg-elev-2);
    flex-wrap:wrap;
  }
  .meal .mealname{font-weight:700;font-size:14px;min-width:120px;}
  .meal .mealsug{font-size:12.5px;color:var(--text-dim);flex:1;min-width:170px;line-height:1.5;}
  .meal .mealkcal{
    font-family:'JetBrains Mono',monospace;
    font-size:12.5px;
    font-weight:600;
    color:var(--lime);
    white-space:nowrap;
    background:var(--lime-soft);
    border-radius:999px;
    padding:5px 11px;
  }
  @media (max-width:640px){
    .meal{flex-direction:column;align-items:flex-start;gap:6px;}
    .meal .mealname{min-width:0;}
  }

  .week-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(155px,1fr));
    gap:12px;
  }
  @media (max-width:640px){ .week-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width:430px){ .week-grid{grid-template-columns:1fr;} }
  .day{
    border:1px solid var(--line);
    border-radius:12px;
    padding:15px;
    background:var(--bg-elev-2);
  }
  .day.rest{opacity:0.5;}
  .day .dname{
    font-family:'JetBrains Mono',monospace;
    font-size:10.5px;
    color:var(--text-faint);
    text-transform:uppercase;
    letter-spacing:.07em;
    margin-bottom:8px;
    font-weight:600;
  }
  .day .dfocus{font-weight:700;font-size:14px;margin-bottom:8px;color:var(--lime);}
  .day.rest .dfocus{color:var(--text-dim);}
  .day .dexercises{font-size:12.5px;color:var(--text-dim);line-height:1.5;}
  .day ul{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:6px;}
  .day li{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:8px;
    padding-bottom:6px;
    border-bottom:1px dashed var(--line);
  }
  .day li:last-child{border-bottom:none;padding-bottom:0;}
  .day .exname{flex:1;min-width:0;}
  .day .exseries{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    font-weight:600;
    color:var(--lime);
    white-space:nowrap;
    flex-shrink:0;
  }
  .day.rest .exseries{color:var(--text-faint);}

  .tips-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:12px;
  }
  @media (max-width:640px){ .tips-grid{grid-template-columns:1fr;} }
  .tip{
    border:1px solid var(--line);
    border-radius:12px;
    padding:16px;
    background:var(--bg-elev-2);
    font-size:13.5px;
    color:var(--text-dim);
    line-height:1.6;
  }
  .tip b{color:var(--text);}

  .disclaimer{
    margin-top:30px;
    font-size:12px;
    color:var(--text-faint);
    line-height:1.65;
    border-top:1px solid var(--line);
    padding-top:20px;
  }

  .footer{
    text-align:center;
    margin-top:40px;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    color:var(--text-faint);
    letter-spacing:0.06em;
  }

  /* ============ IMPRESSÃO ============ */
  @media print{
    /* Esconde tudo que é navegação/interação — só o conteúdo do plano deve sair no papel */
    .topbar, .mprogress, .rail, .footer,
    #restartBtn, #printBtn, .btn-row,
    .hero-badges, .gauge-preview-label{
      display:none !important;
    }
    html, body{
      background:#fff !important;
      color:#161f1c !important;
    }
    .shell{
      max-width:100% !important;
      padding:0 !important;
      margin:0 !important;
    }
    .layout{
      display:block !important;
    }
    .card{
      background:#fff !important;
      border:1px solid #d8ded9 !important;
      box-shadow:none !important;
      backdrop-filter:none !important;
      animation:none !important;
      padding:0 !important;
    }
    .card::before{ display:none !important; }
    .gauge-frame{ display:none !important; }

    h1,h2,h3,.section-title,.dfocus,.mealname,.brname,
    .imc-value,.imc-classe,.sval,.mgrams,.mealkcal,.exseries,.exname{
      color:#131a17 !important;
      text-shadow:none !important;
      -webkit-print-color-adjust:exact;
      print-color-adjust:exact;
    }
    .eyebrow{ color:#4a7a1f !important; }
    .obj-badge{
      background:#eef6de !important;
      border:1px solid #9fc26b !important;
      color:#3f6b1a !important;
    }
    .sub, .ssub, .cdesc, .imc-note, .tip, .mealsug, p{
      color:#4b5a55 !important;
    }
    .stat, .macro, .meal, .day, .tip, .bio-result{
      background:#f6f8f6 !important;
      border:1px solid #dde3de !important;
      box-shadow:none !important;
      break-inside:avoid;
    }
    .section-block, .stat-row, .macro-row, .tips-grid, .week-grid, .meal{
      break-inside:avoid;
    }
    .mbar{ background:#e1e6e2 !important; }
    .tip b, .day .dfocus, .day.rest .dfocus, .bio-result .brname b{ color:#131a17 !important; }
    .day.rest{ opacity:1 !important; }
    .day.rest .exname, .day.rest .exseries, .day.rest .dexercises{ color:#4b5a55 !important; }
    .disclaimer{
      color:#6b7873 !important;
      border-top:1px solid #dde3de !important;
    }
    a{ color:#3f6b1a !important; text-decoration:none !important; }
  }
