/* ===================== VisioScan — design system ===================== */
@font-face{
  font-family:'Optotype';
  src:url('../assets/fonts/optotype.woff2') format('woff2'),
      url('../assets/fonts/optotype.ttf') format('truetype');
  font-weight:400;font-style:normal;font-display:block;
}

:root{
  /* cores extraídas da logomarca VisioScan */
  --brand:#012a62;        /* azul-marinho do logotipo */
  --brand-2:#0188ca;      /* azul médio do "Scan" */
  --brand-3:#01a7d5;      /* azul claro do degradê */
  --accent:#01e8e5;       /* ciano da íris */
  --accent-2:#01c7dc;
  --accent-ink:#04879a;   /* ciano escurecido, legível sobre branco */
  --accent-soft:#e4fbfa;
  --accent-line:#b6f0ee;

  --ink:#07214a;
  --ink-2:#3a5578;
  --ink-3:#7489a8;
  --line:#dce5f1;
  --line-2:#edf2f9;
  --paper:#ffffff;
  --bg:#f4f7fc;
  --danger:#c94040;
  --ok:#1f8b5b;
  --warn:#b8761a;
  --r-s:10px; --r-m:16px; --r-l:24px;
  --sh-s:0 1px 2px rgba(1,42,98,.06), 0 2px 6px rgba(1,42,98,.06);
  --sh-m:0 12px 30px -12px rgba(1,42,98,.26);
  --sh-l:0 30px 70px -30px rgba(1,42,98,.4);
  --font:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --display:'Sora','Inter',sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);
  -webkit-font-smoothing:antialiased;line-height:1.6;
}
body.in-console{overflow:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--display);line-height:1.15;margin:0;letter-spacing:-.02em}
p{margin:0}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:rgba(255,255,255,.14);padding:.1em .4em;border-radius:6px}
.wrap{width:min(1180px,92vw);margin-inline:auto}

/* ---------------------------------------------------------- botões */
.btn{
  font:inherit;font-weight:600;border:1px solid transparent;border-radius:999px;
  padding:.65rem 1.15rem;cursor:pointer;background:transparent;color:var(--ink);
  transition:.18s ease;display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 8px 18px -8px rgba(1,42,98,.7)}
.btn-primary:hover{filter:brightness(1.08);box-shadow:0 12px 26px -10px rgba(1,42,98,.75)}
.btn-soft{background:var(--paper);border-color:var(--line);color:var(--ink);box-shadow:var(--sh-s)}
.btn-soft:hover{border-color:var(--brand-2);color:var(--brand)}
.btn-ghost{border-color:transparent;color:var(--ink-2)}
.btn-ghost:hover{background:rgba(1,42,98,.07);color:var(--brand)}
.btn-dark{background:var(--brand);color:#fff}
.btn-dark:hover{background:#013b83}
.btn-lg{padding:.9rem 1.6rem;font-size:1.02rem}
.btn.sm{padding:.4rem .8rem;font-size:.85rem}

.pill{
  display:inline-flex;align-items:center;gap:.5rem;font-size:.8rem;font-weight:600;
  color:var(--brand);background:var(--accent-soft);border:1px solid var(--accent-line);
  padding:.35rem .8rem;border-radius:999px;letter-spacing:.02em;
}
.tag{
  display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:600;
  background:var(--line-2);color:var(--ink-2);padding:.25rem .6rem;border-radius:999px;
}
.tag.ok{background:#e4f6ed;color:var(--ok)}
.tag.warn{background:#fdf1de;color:var(--warn)}
.eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink)}
.section-dark .eyebrow{color:var(--accent)}
.hint{font-size:.85rem;color:var(--ink-3);margin:0}
.fine{font-size:.8rem;color:var(--ink-3);line-height:1.6}
.spacer{flex:1}

/* ---------------------------------------------------------- marca */
.brand{display:flex;align-items:center;gap:.6rem;font-family:var(--display);font-weight:700;font-size:1.05rem}
.brand small{display:block;font-family:var(--font);font-weight:500;font-size:.7rem;color:var(--ink-3);letter-spacing:.06em}
/* recorte quadrado do ícone do olho a partir da logomarca (2172×724) */
.brand-mark{
  width:38px;height:38px;border-radius:10px;flex-shrink:0;
  background-image:url('../assets/logo-visioscan.png');
  background-repeat:no-repeat;
  background-size:387.9% 129.3%;
  background-position:3.6% 45.2%;
}
.brand-mark.sm{width:30px;height:30px;border-radius:8px}
.brand-full img{height:38px;width:auto;display:block}
.brand-light{color:#fff}
.brand-light .brand-mark{background-color:#fff;padding:0}

/* =========================== NAV / HERO =========================== */
.nav{position:sticky;top:0;z-index:40;background:rgba(244,247,252,.85);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);
  box-shadow:inset 0 3px 0 0 transparent}
.nav::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:linear-gradient(90deg,var(--brand),var(--brand-2) 45%,var(--accent));opacity:.85}
.nav-in{display:flex;align-items:center;gap:1.5rem;padding:.75rem 0}
.nav-links{display:flex;gap:1.4rem;margin-left:auto;font-size:.92rem;font-weight:500;color:var(--ink-2)}
.nav-links a:hover{color:var(--brand)}

.hero{padding:clamp(3rem,7vw,5.5rem) 0 clamp(2.5rem,6vw,4.5rem);
  background:radial-gradient(90% 70% at 88% 4%,rgba(1,232,229,.16) 0%,transparent 58%),
             radial-gradient(80% 80% at 8% 0%,rgba(1,136,202,.13) 0%,transparent 60%),var(--bg)}
.hero-in{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.hero h1{font-size:clamp(2.1rem,4.4vw,3.5rem);margin:1.1rem 0 1rem}
.hero-copy>p{color:var(--ink-2);font-size:1.06rem;max-width:34em}
.hero-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin:1.8rem 0 2rem}
.hero-facts{list-style:none;display:flex;gap:2rem;padding:0;margin:0;border-top:1px solid var(--line);padding-top:1.4rem;flex-wrap:wrap}
.hero-facts strong{display:block;font-family:var(--display);font-size:1.55rem;color:var(--brand)}
.hero-facts span{font-size:.85rem;color:var(--ink-3)}
.hero-art{margin:0;position:relative}
.hero-art img{border-radius:var(--r-l);box-shadow:var(--sh-l);aspect-ratio:1200/760;object-fit:cover}
.hero-art.no-img img{display:none}
.hero-art.no-img{min-height:360px;border-radius:var(--r-l);background:linear-gradient(140deg,#012a62,#01193f)}
.hero-badge{
  position:absolute;left:-12px;bottom:-18px;background:var(--paper);border:1px solid var(--line);
  border-radius:999px;padding:.55rem 1rem;font-size:.82rem;font-weight:600;color:var(--ink-2);
  box-shadow:var(--sh-m);display:flex;align-items:center;gap:.5rem;
}
.hero-badge .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}

/* ============================ SEÇÕES ============================== */
.section{padding:clamp(3rem,6vw,5rem) 0}
.section-alt{background:var(--paper);border-block:1px solid var(--line)}
.sec-head{max-width:62ch;margin-bottom:2.4rem}
.sec-head h2{font-size:clamp(1.7rem,3vw,2.4rem);margin:.5rem 0 .7rem}
.sec-head p{color:var(--ink-2)}
.grid{display:grid;gap:1.1rem}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}

.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:1.5rem;box-shadow:var(--sh-s);transition:.2s}
.card:hover{transform:translateY(-3px);box-shadow:var(--sh-m);border-color:var(--accent-line)}
.card .ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;margin-bottom:.9rem;
  background:linear-gradient(140deg,var(--accent-soft),#eaf3fd);border:1px solid var(--accent-line)}
.card h3{font-size:1.08rem;margin-bottom:.45rem}
.card p{color:var(--ink-2);font-size:.93rem}

.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem;counter-reset:s}
.steps li{position:relative;padding:1.4rem;border-radius:var(--r-m);background:var(--bg);border:1px solid var(--line)}
.step-n{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;color:#fff;font-weight:700;font-family:var(--display);margin-bottom:.8rem;
  background:linear-gradient(140deg,var(--brand),var(--brand-2))}
.steps h3{font-size:1rem;margin-bottom:.35rem}
.steps p{font-size:.9rem;color:var(--ink-2)}

.tests .tcard{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:1.15rem;box-shadow:var(--sh-s)}
.tests .tcard b{display:block;font-size:.98rem;margin-bottom:.3rem}
.tests .tcard span{font-size:.85rem;color:var(--ink-3)}
.tests .tcard.alt{background:linear-gradient(140deg,var(--brand),var(--brand-2) 85%,var(--brand-3));color:#fff;border-color:transparent}
.tests .tcard.alt span{color:#cdeefb}

.section-dark{color:#fff;position:relative;overflow:hidden;
  background:radial-gradient(70% 120% at 92% 12%,rgba(1,232,229,.28) 0%,transparent 55%),
             linear-gradient(150deg,#01193f 0%,#012a62 52%,#0166a8 100%)}
.section-dark h2{font-size:clamp(1.7rem,3vw,2.3rem);margin:.5rem 0 1rem}
.section-dark p{color:#cfe1ee;margin-bottom:1rem;max-width:56ch}
.section-dark .fine{color:#9fbdd3}
.validade{display:grid;grid-template-columns:1.2fr .8fr;gap:3rem;align-items:start}
.calc-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:var(--r-m);padding:.5rem 1.2rem;backdrop-filter:blur(8px)}
.calc-row{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid rgba(255,255,255,.12);font-size:.92rem}
.calc-row:last-child{border-bottom:0}
.calc-row span{color:#bcd6e8}

.cta{padding:clamp(3rem,6vw,4.5rem) 0;background:var(--paper);border-top:1px solid var(--line)}
.cta-in{text-align:center;display:grid;gap:.8rem;justify-items:center}
.cta h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.cta p{color:var(--ink-2)}

.foot{background:linear-gradient(180deg,#01193f,#011330);color:#c6d5e3;padding:3rem 0 1.4rem;
  border-top:3px solid transparent;border-image:linear-gradient(90deg,var(--brand-2),var(--accent)) 1}
.foot .brand{color:#fff;margin-bottom:.8rem}
.foot .brand small{color:#8ba7c0}
.foot-in{display:grid;grid-template-columns:1.3fr 1fr;gap:2.5rem}
.foot-in p{font-size:.9rem;max-width:40ch;color:#93a9be}
.foot-cols{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}
.foot-cols b{display:block;color:#fff;font-size:.9rem;margin-bottom:.6rem}
.foot-cols a{display:block;font-size:.88rem;padding:.18rem 0;color:#a8bccf}
.foot-cols a:hover{color:#fff}
.foot-bar{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:2.2rem;padding-top:1.2rem;border-top:1px solid rgba(255,255,255,.1);font-size:.8rem;color:#7f97ad}

/* ============================ CONSOLE ============================= */
.console{position:fixed;inset:0;z-index:60;background:var(--bg);display:flex;flex-direction:column}
.cbar{
  display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--paper);
  border-bottom:1px solid var(--line);flex-shrink:0;position:relative;
}
.cbar::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--brand),var(--brand-2) 55%,var(--accent))}
.cbar-l,.cbar-r{display:flex;align-items:center;gap:.6rem}
.cbar-l strong{font-family:var(--display);font-size:.98rem}
.cbar-steps{display:flex;gap:.25rem;margin-inline:auto;background:var(--line-2);padding:.25rem;border-radius:999px}
.cstep{
  font:inherit;font-size:.86rem;font-weight:600;border:0;background:transparent;color:var(--ink-3);
  padding:.45rem .95rem;border-radius:999px;cursor:pointer;display:flex;align-items:center;gap:.45rem;
}
.cstep i{font-style:normal;width:19px;height:19px;border-radius:50%;background:#c6d5e6;color:#fff;display:grid;place-items:center;font-size:.72rem}
.cstep.is-active{background:var(--paper);color:var(--brand);box-shadow:var(--sh-s)}
.cstep.is-active i{background:linear-gradient(140deg,var(--brand),var(--brand-2))}

.pane{display:none;flex:1;min-height:0}
.pane.is-active{display:flex;flex-direction:column}
.pane-scroll{flex:1;overflow:auto;padding:1.4rem}

.col2{display:grid;grid-template-columns:minmax(320px,.85fr) 1.15fr;gap:1.2rem;align-items:start;max-width:1400px;margin-inline:auto}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:1.4rem;box-shadow:var(--sh-s)}
.panel h3{font-size:1.05rem;margin-bottom:.5rem}
.panel hr{border:0;border-top:1px solid var(--line-2);margin:1.2rem 0}
.panel-foot{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:1.3rem;padding-top:1.1rem;border-top:1px solid var(--line-2)}

.row{display:flex;gap:.8rem;flex-wrap:wrap;align-items:flex-end;margin-top:.9rem}
.row.checks{gap:1.2rem}
.field{display:flex;flex-direction:column;gap:.32rem;font-size:.82rem;font-weight:600;color:var(--ink-2);flex:1 1 150px}
.field.grow{flex:2 1 200px}
.field input[type=text],.field input[type=number],.field select,.field textarea{
  font:inherit;font-size:.94rem;font-weight:500;color:var(--ink);padding:.55rem .7rem;
  border:1px solid var(--line);border-radius:var(--r-s);background:#fbfdff;width:100%;
}
.field input:focus,.field select:focus{outline:none;border-color:var(--brand-2);box-shadow:0 0 0 3px rgba(1,136,202,.13)}
.field input[type=range]{width:100%;accent-color:var(--brand)}
.chk{display:flex;align-items:center;gap:.45rem;font-size:.9rem;font-weight:500;cursor:pointer}
.chk input{width:17px;height:17px;accent-color:var(--brand)}

/* calibração */
.cardcal{background:repeating-linear-gradient(45deg,#f2f6fa,#f2f6fa 10px,#eaf0f6 10px,#eaf0f6 20px);
  border:1px dashed var(--line);border-radius:var(--r-s);padding:1rem;overflow:auto;margin:.9rem 0}
.card-shape{
  width:323px;height:204px;border-radius:11px;background:linear-gradient(135deg,#012a62,#0188ca);
  box-shadow:var(--sh-m);position:relative;display:grid;place-items:end start;padding:.7rem;
}
.card-shape::before{content:'';position:absolute;top:16%;left:8%;width:22%;height:20%;border-radius:5px;background:rgba(255,255,255,.35)}
.card-shape span{color:rgba(255,255,255,.8);font-size:.72rem;font-weight:600;letter-spacing:.05em}
.calread{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:.9rem}
.calread div{background:var(--bg);border:1px solid var(--line-2);border-radius:var(--r-s);padding:.6rem;text-align:center}
.calread b{display:block;font-family:var(--display);font-size:1.1rem;color:var(--brand)}
.calread span{font-size:.74rem;color:var(--ink-3)}
.alt-cal{margin-top:1rem;font-size:.88rem}
.alt-cal summary{cursor:pointer;color:var(--brand);font-weight:600}

/* ------------------------------ palco ---------------------------- */
.exam-grid{flex:1;display:grid;grid-template-columns:1fr minmax(340px,380px);min-height:0}
.stage-wrap{display:flex;flex-direction:column;min-width:0;background:#fff;border-right:1px solid var(--line)}
.stage-top{display:flex;align-items:center;gap:.6rem;padding:.6rem .9rem;border-bottom:1px solid var(--line);background:var(--paper);flex-shrink:0}
.eye-badge{font-family:var(--display);font-weight:700;color:#fff;padding:.25rem .7rem;border-radius:8px;font-size:.85rem;
  background:linear-gradient(135deg,var(--brand),var(--brand-2))}
.stage-note{padding:.55rem .9rem;font-size:.78rem;color:var(--ink-3);border-top:1px solid var(--line);background:var(--paper)}

.stage{
  flex:1;min-height:0;display:grid;place-items:center;background:#fff;color:#000;
  overflow:auto;padding:1.5rem;text-align:center;
}
.stage.is-invert{background:#000;color:#fff}
.stage.is-plate{background:#f6f4ee}
.stage-empty,.stage-msg{font-family:var(--font);font-size:1rem;color:#9fb0c1;font-weight:500}
.row-opt{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap}
.opt-char{font-family:'Optotype','Arial Black',sans-serif;display:inline-block;overflow:visible}
svg.opt{display:block;flex-shrink:0}
.scene{display:grid;justify-items:center;gap:.8rem;max-width:100%}
.scene.mirror{transform:scaleX(-1)}
.scene-cap{font-family:var(--font);font-size:.8rem;color:#94a5b6;margin-top:.4rem}

/* cenas específicas */
.near-card{display:grid;gap:.55rem;max-width:min(96%,900px);text-align:left;font-family:Georgia,'Times New Roman',serif}
.near-line{display:grid;grid-template-columns:auto 1fr auto;gap:.7rem;align-items:baseline;border-bottom:1px dashed #e3e9ef;padding-bottom:.35rem}
.near-tag{font-family:var(--font);font-size:.7rem;font-weight:700;color:#8a9db0;background:#f1f5f9;border-radius:6px;padding:.1rem .4rem}
.near-tag.alt{color:#b0bfcd;background:transparent}
.near-txt{line-height:1.25}
.amsler{color:#111}
.amsler-inv{background:#000;color:#fff;padding:12px;border-radius:4px}
.duo{display:flex}
.duo-half{display:flex;align-items:center;justify-content:center;gap:.6em;padding:1.6rem 1.2rem;color:#000}
.duo-red{background:#d21f26}
.duo-green{background:#00893d}
.dial{color:#000}
.plate{border-radius:50%;background:#f6f4ee;max-width:min(90vw,520px);height:auto}

/* --------------------------- painel lateral ---------------------- */
.ctrl{display:flex;flex-direction:column;min-height:0;background:var(--paper)}
.ctrl-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;padding:.9rem 1rem;border-bottom:1px solid var(--line)}
.ctrl-head .lbl,.lbl{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);font-weight:700}
.ctrl-head b{font-family:var(--display);font-size:1.15rem;display:block;margin:.15rem 0 .3rem}
.ctrl-size{font-size:.82rem;color:var(--ink-2);text-align:right}
.ctrl-body{flex:1;overflow:auto;padding:1rem}
.ctrl-foot{display:flex;gap:.6rem;padding:.8rem 1rem;border-top:1px solid var(--line);background:var(--bg)}
.ctrl-foot .btn{flex:1;justify-content:center}

.answers{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0 .8rem}
.ans-chip{
  font:inherit;cursor:pointer;border:1px solid var(--line);border-radius:var(--r-s);
  padding:.45rem .6rem;min-width:62px;background:var(--paper);display:grid;gap:.1rem;text-align:center;transition:.15s;
}
.ans-chip b{font-family:'Optotype','Arial Black',sans-serif;font-size:1.4rem;line-height:1.1}
.ans-chip span{font-size:.66rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.ans-chip.ok{background:#e9f7f0;border-color:#b6e2cd;color:var(--ok)}
.ans-chip.err{background:#fdecec;border-color:#f2c4c4;color:var(--danger)}
.ans-dir{border:1px solid var(--line);border-radius:var(--r-s);padding:.45rem;display:grid;gap:.25rem;justify-items:center;background:var(--paper)}
.ans-dir.ok{border-color:#b6e2cd;background:#f2fbf6}
.ans-dir.err{border-color:#f2c4c4;background:#fdf3f3}
.ans-n{font-size:.65rem;color:var(--ink-3);font-weight:700}
.ans-truth{font-size:.8rem;color:var(--ink-3)}
.dpad{display:grid;grid-template-columns:repeat(3,22px);grid-template-rows:repeat(3,22px);gap:2px}
.dbtn{font:inherit;font-size:.8rem;line-height:1;border:1px solid var(--line);background:#fbfdff;border-radius:5px;cursor:pointer;padding:0}
.dbtn:hover{border-color:var(--brand-2)}
.dbtn.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.d-up{grid-area:1/2}.d-left{grid-area:2/1}.d-right{grid-area:2/3}.d-down{grid-area:3/2}

.quick{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}
.nav-lines{display:flex;gap:.5rem;margin-bottom:1rem}
.nav-lines .btn{flex:1;justify-content:center}
.lowvision{border:1px solid var(--line);border-radius:var(--r-s);padding:.6rem .8rem;font-size:.87rem;margin-bottom:1rem}
.lowvision summary{cursor:pointer;font-weight:600;color:var(--ink-2)}
.lv-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin-top:.6rem}
.log{display:grid;gap:.3rem;margin-top:.5rem}
.log-row{display:grid;grid-template-columns:1fr auto 1fr;gap:.5rem;align-items:center;font-size:.82rem;
  background:var(--bg);border:1px solid var(--line-2);border-radius:8px;padding:.35rem .6rem}
.log-row b{color:var(--ok)}
.log-row.fail b{color:var(--danger)}
.log-row span:last-child{text-align:right;color:var(--ink-3)}

/* HUD em tela cheia */
.stage-wrap:fullscreen{background:#fff}
.stage-wrap.hud-mode .stage-top,.stage-wrap.hud-mode .stage-note{display:none}
.stage-wrap.hud-mode .ctrl{
  position:fixed;right:10px;bottom:10px;width:330px;max-height:52vh;border:1px solid var(--line);
  border-radius:var(--r-m);box-shadow:var(--sh-l);opacity:.9;transform:scale(.85);transform-origin:bottom right;overflow:hidden;
}
.stage-wrap.hud-mode .ctrl:hover{opacity:1}

/* --------------------------- complementares ---------------------- */
.extra-grid{display:grid;grid-template-columns:230px 1fr;gap:1.2rem;max-width:1500px;margin-inline:auto;height:100%}
.extra-nav{display:flex;flex-direction:column;gap:.3rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:.5rem;height:max-content}
.extra-nav button{font:inherit;font-size:.9rem;font-weight:500;text-align:left;border:0;background:transparent;padding:.6rem .8rem;border-radius:var(--r-s);cursor:pointer;color:var(--ink-2)}
.extra-nav button:hover{background:var(--line-2)}
.extra-nav button.is-active{background:linear-gradient(120deg,var(--brand),var(--brand-2));color:#fff;font-weight:600}
.extra-main{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;min-height:520px}
.stage-extra{min-height:340px}
.extra-ctrl{border-top:1px solid var(--line);padding:1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.8rem;align-items:end;background:var(--paper)}
.extra-ctrl .hint{grid-column:1/-1}
.extra-ctrl .row{grid-column:1/-1;margin:0;align-items:center}
.calcbox{grid-column:1/-1;background:var(--bg);border:1px solid var(--line-2);border-radius:var(--r-s);padding:.2rem .8rem}
.calcbox .calc-row{border-color:var(--line-2);font-size:.85rem;padding:.45rem 0}
.calcbox .calc-row span{color:var(--ink-3)}

/* ------------------------------ laudo ---------------------------- */
.report-tools{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;margin-bottom:1.2rem}
.report{display:grid;justify-items:center}
.sheet{background:var(--paper);width:min(880px,100%);border:1px solid var(--line);border-radius:var(--r-m);padding:2.2rem;box-shadow:var(--sh-m)}
.sheet h3{font-size:1rem;margin:1.8rem 0 .7rem;padding-bottom:.4rem;border-bottom:2px solid var(--line-2);color:var(--brand)}
.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:1.2rem;border-bottom:2px solid var(--brand)}
.sheet-brand{display:grid;gap:.25rem}
.sheet-brand img{height:34px;width:auto}
.sheet-brand span{font-size:.8rem;color:var(--ink-3)}
.sheet-when{font-size:.85rem;color:var(--ink-3)}
.sheet-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem 1.2rem;margin-top:1.2rem}
.sheet-meta div{border-left:3px solid var(--brand-2);padding-left:.7rem}
.sheet-meta span{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);font-weight:700}
.sheet-meta b{font-size:.92rem;font-weight:600}
.sheet-table{width:100%;border-collapse:collapse;font-size:.9rem}
.sheet-table th,.sheet-table td{padding:.6rem .5rem;border-bottom:1px solid var(--line-2);text-align:center}
.sheet-table thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);background:var(--bg)}
.sheet-table tbody th{text-align:left;font-weight:600}
.sheet-table td b{font-size:1.05rem;color:var(--brand)}
.det{margin-bottom:.8rem}
.det h4{font-size:.85rem;color:var(--ink-2);margin-bottom:.35rem}
.det-lines{display:flex;flex-wrap:wrap;gap:.35rem}
.det-line{font-size:.78rem;background:#eef7f2;color:var(--ok);border-radius:6px;padding:.2rem .5rem}
.det-line.fail{background:#fdeeee;color:var(--danger)}
.sheet-dl{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1rem;font-size:.9rem;margin:0}
.sheet-dl dt{font-weight:600;color:var(--ink-2)}
.sheet-dl dd{margin:0;color:var(--ink)}
.sheet-notes{min-height:90px;border:1px dashed var(--line);border-radius:var(--r-s);padding:.8rem;color:var(--ink-2);font-size:.92rem}
.sheet-notes:focus{outline:none;border-color:var(--brand-2);color:var(--ink)}
.sheet-foot{margin-top:2.2rem;display:grid;gap:1rem}
.sign{margin:2.5rem auto 0;text-align:center;border-top:1px solid var(--ink);padding-top:.4rem;width:min(320px,80%);font-size:.85rem;color:var(--ink-2)}

/* ------------------------------ toast ---------------------------- */
.toast{
  position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);z-index:200;
  background:var(--ink);color:#fff;padding:.7rem 1.2rem;border-radius:999px;font-size:.9rem;
  font-weight:500;box-shadow:var(--sh-l);opacity:0;transition:.25s;pointer-events:none;max-width:90vw;
}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ======================== TELA DO PACIENTE ======================== */
.patient-body{margin:0;height:100vh;overflow:hidden;background:#fff}
.patient-body .stage{height:100vh;padding:2vh 2vw}
.pcal{position:fixed;inset:0;background:rgba(245,248,251,.97);display:grid;place-items:center;padding:2rem;z-index:10;overflow:auto}
.pcal.done{display:none}
.pcal-box{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);padding:2rem;max-width:640px;box-shadow:var(--sh-l);display:grid;gap:.9rem;justify-items:start}
.pcal-box h2{font-family:var(--display);font-size:1.4rem}
.pcal-box p{color:var(--ink-2);font-size:.95rem}
.pcal-box input[type=range]{width:100%;accent-color:var(--brand)}
.pcal-read{font-family:var(--display);color:var(--brand)}
.pcal-edit{position:fixed;right:8px;bottom:8px;width:26px;height:26px;border-radius:50%;border:1px solid var(--line);
  background:#fff;color:#c3ced9;cursor:pointer;font-size:13px;line-height:1;opacity:.25;z-index:9}
.pcal-edit:hover{opacity:1;color:var(--brand)}

/* ============================ RESPONSIVO ========================== */
@media (max-width:1080px){
  .hero-in,.validade,.foot-in{grid-template-columns:1fr}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr)}
  .col2{grid-template-columns:1fr}
  .exam-grid{grid-template-columns:1fr}
  .ctrl{border-top:1px solid var(--line)}
  .extra-grid{grid-template-columns:1fr}
  .extra-nav{flex-direction:row;overflow:auto}
  .cbar-steps{order:3;width:100%;justify-content:center}
  .cbar{flex-wrap:wrap}
}
@media (max-width:640px){
  .nav-links{display:none}
  .grid-3,.grid-4,.steps,.sheet-meta,.calread{grid-template-columns:1fr}
  .hero-facts{gap:1.2rem}
  .sheet{padding:1.2rem}
  .sheet-table{font-size:.78rem}
}

/* ============================= IMPRESSÃO ========================== */
@media print{
  @page{margin:14mm}
  body{background:#fff}
  #site,.cbar,.no-print,.pane:not(.is-active),.toast,.report-tools{display:none!important}
  .console{position:static;height:auto}
  .pane-scroll{overflow:visible;padding:0}
  .sheet{border:0;box-shadow:none;padding:0;width:100%}
  .sheet-notes{border-color:#ccc}
}

/* ===================== CONTAS, PLANOS E ASSINATURA ===================== */
.nav-session{display:flex;align-items:center;gap:.5rem;margin-left:1rem}
.sec-head.center{margin-inline:auto;text-align:center}

/* --------------------------------- planos --------------------------- */
.plan-grid{display:grid;grid-template-columns:minmax(320px,1.05fr) .95fr;gap:1.4rem;align-items:start}
.plan-grid-landing{max-width:1000px;margin-inline:auto}
.plan-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);padding:2rem;box-shadow:var(--sh-m);position:relative;overflow:hidden}
.plan-card.is-featured::before{content:'';position:absolute;inset:0 0 auto 0;height:5px;
  background:linear-gradient(90deg,var(--brand),var(--brand-2) 55%,var(--accent))}
.plan-top{padding-bottom:1.2rem;border-bottom:1px solid var(--line-2)}
.plan-tag{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand);background:var(--accent-soft);border:1px solid var(--accent-line);padding:.2rem .6rem;border-radius:999px;margin-bottom:.8rem}
.plan-card h3{font-size:1.3rem;margin-bottom:.6rem}
.plan-price{font-family:var(--display);font-size:3.4rem;font-weight:800;line-height:1;color:var(--brand);letter-spacing:-.03em}
.plan-price small{font-size:1.3rem;font-weight:700;vertical-align:top;margin-right:.15rem;color:var(--brand-2)}
.plan-price span{font-size:1.05rem;font-weight:600;color:var(--ink-3);letter-spacing:0}
.plan-sub{margin-top:.5rem;font-size:.9rem;color:var(--ink-2)}
.plan-list{list-style:none;padding:0;margin:1.3rem 0;display:grid;gap:.6rem}
.plan-list li{position:relative;padding-left:1.8rem;font-size:.94rem;color:var(--ink-2)}
.plan-list li::before{content:'';position:absolute;left:0;top:.45em;width:1.1rem;height:1.1rem;border-radius:50%;
  background:var(--accent-soft);border:1px solid var(--accent-line)}
.plan-list li::after{content:'';position:absolute;left:.33rem;top:.72em;width:.42rem;height:.2rem;
  border-left:2px solid var(--brand-2);border-bottom:2px solid var(--brand-2);transform:rotate(-45deg)}
.plan-cta{width:100%;justify-content:center}
.plan-fine{text-align:center;margin-top:.7rem}
.plan-side{display:grid;gap:1rem}
.plan-side details{border-bottom:1px solid var(--line-2);padding:.6rem 0}
.plan-side details:last-child{border-bottom:0}
.plan-side summary{cursor:pointer;font-weight:600;font-size:.93rem;color:var(--ink-2)}
.plan-side summary::marker{color:var(--brand-2)}
.plan-side details p{margin-top:.4rem}
.plan-notes{display:grid;gap:.9rem}
.plan-note{background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--brand-2);border-radius:var(--r-m);padding:1.1rem 1.2rem}
.plan-note b{display:block;font-size:.95rem;margin-bottom:.3rem}
.plan-note p{font-size:.9rem;color:var(--ink-2)}
.plan-note.alt{background:linear-gradient(140deg,var(--brand),var(--brand-2));border-color:transparent;color:#fff}
.plan-note.alt p,.plan-note.alt a{color:#d6f4ff}
.plan-note.alt a{text-decoration:underline}

/* ------------------------------- páginas ---------------------------- */
.page{padding:clamp(2rem,5vw,3.5rem) 0 4rem;min-height:70vh}
.page-narrow{width:min(1060px,92vw)}
.page-state{color:var(--ink-2)}
.page-state a{color:var(--brand-2);font-weight:600;text-decoration:underline}
.pedido{display:grid;gap:.5rem}
.pedido-linha{display:flex;justify-content:space-between;gap:1rem;font-size:.92rem;
  border-bottom:1px solid var(--line-2);padding-bottom:.45rem}
.pedido-linha span{color:var(--ink-3)}
.pedido-linha b{font-family:var(--display);color:var(--brand)}

.conta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.2rem;align-items:start}
.conta-badge{display:inline-block;font-weight:700;font-size:.85rem;padding:.35rem .8rem;border-radius:999px;margin-bottom:.9rem}
.conta-badge.ok{background:#e4f6ed;color:var(--ok)}
.conta-badge.warn{background:#fdf1de;color:var(--warn)}
.conta-badge.erro{background:#fdecec;color:var(--danger)}
.conta-linha{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem;padding:.45rem 0;border-bottom:1px solid var(--line-2)}
.conta-linha span{color:var(--ink-3)}

/* ------------------------------ login/cadastro ---------------------- */
.auth-body{background:var(--bg)}
.auth{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}
.auth-aside{
  padding:clamp(2rem,5vw,4rem);color:#fff;display:flex;flex-direction:column;justify-content:center;gap:1.4rem;
  background:radial-gradient(70% 100% at 85% 10%,rgba(1,232,229,.26) 0%,transparent 55%),
             linear-gradient(150deg,#01193f 0%,#012a62 55%,#0166a8 100%);
}
.auth-aside h2{font-size:clamp(1.5rem,2.4vw,2.1rem);max-width:18ch}
.auth-list{list-style:none;padding:0;margin:0;display:grid;gap:.7rem;max-width:38ch}
.auth-list li{position:relative;padding-left:1.7rem;font-size:.95rem;color:#cfe6f7}
.auth-list li::before{content:'';position:absolute;left:0;top:.45em;width:.9rem;height:.9rem;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 4px rgba(1,232,229,.18)}
.auth-quote{font-size:.88rem;color:#9fc6e3;border-top:1px solid rgba(255,255,255,.16);padding-top:1.1rem;max-width:38ch}
.auth-form{display:grid;place-items:center;padding:clamp(1.5rem,4vw,3rem)}
.auth-card{width:min(460px,100%);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);
  padding:clamp(1.5rem,3vw,2.2rem);box-shadow:var(--sh-m);display:grid;gap:.3rem}
.auth-logo{display:none}
.auth-card h1{font-size:1.5rem;margin-bottom:.2rem}
.auth-card form{display:grid;gap:.85rem;margin-top:1.3rem}
.auth-card .field span small{font-weight:500;color:var(--ink-3);text-transform:none;letter-spacing:0}
.auth-card input[type=text],.auth-card input[type=email],.auth-card input[type=password]{
  font:inherit;font-size:.96rem;padding:.68rem .8rem;border:1px solid var(--line);border-radius:var(--r-s);background:#fbfdff;width:100%}
.auth-card input:focus{outline:none;border-color:var(--brand-2);box-shadow:0 0 0 3px rgba(1,136,202,.14)}
.auth-chk{align-items:flex-start;font-size:.84rem;color:var(--ink-2);line-height:1.45}
.auth-chk input{margin-top:.15rem}
.auth-submit{width:100%;justify-content:center;margin-top:.3rem}
.auth-msg{font-size:.88rem;padding:.6rem .8rem;border-radius:var(--r-s);font-weight:500}
.auth-msg.erro{background:#fdecec;color:var(--danger);border:1px solid #f2c4c4}
.auth-alt{font-size:.88rem;color:var(--ink-3);margin-top:1.1rem;text-align:center}
.auth-alt a{color:var(--brand-2);font-weight:600}
.auth-alt a:hover{text-decoration:underline}

@media (max-width:960px){
  .plan-grid{grid-template-columns:1fr}
  .auth{grid-template-columns:1fr}
  .auth-aside{display:none}
  .auth-logo{display:block;justify-self:center;margin-bottom:.8rem}
  .auth-logo img{height:38px;width:auto}
}
@media (max-width:640px){
  .nav-session{margin-left:auto}
  .nav-session .btn{padding:.5rem .85rem;font-size:.85rem}
}

/* ===================== ANÁLISE ASSISTIDA POR IA ===================== */
.ia{display:grid;gap:.7rem}
.ia-bar{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}
.ia-bar .hint{flex:1;min-width:200px}
.ia-aviso{background:#fff7e8;border:1px solid #f0d9ae;border-left:4px solid var(--warn);
  border-radius:var(--r-s);padding:.7rem .9rem;font-size:.85rem;color:#7a5416;line-height:1.5}
.ia-aviso b{color:#5f3f0c}
.ia .sheet-notes{min-height:120px;line-height:1.6}
.ia .sheet-notes p{margin:0 0 .6rem}
.ia .sheet-notes ul{margin:0 0 .8rem;padding-left:1.2rem}
.ia .sheet-notes li{margin-bottom:.25rem}
.ia .sheet-notes b{color:var(--brand)}
.ia-alerta{background:#fdf0f0;border:1px solid #f2c9c9;border-left:4px solid var(--danger);
  border-radius:var(--r-s);padding:.6rem .9rem;margin:.2rem 0 .8rem}
.ia-alerta b{color:var(--danger)!important}
.ia-alerta ul{margin:.3rem 0 0!important}
.ia-limit{font-size:.82rem;color:var(--ink-3);border-top:1px dashed var(--line);padding-top:.6rem;margin-top:.4rem!important}
.ia-check{display:flex;align-items:flex-start;gap:.5rem;font-size:.86rem;color:var(--ink-2);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-s);padding:.7rem .9rem;cursor:pointer;line-height:1.45}
.ia-check input{width:17px;height:17px;accent-color:var(--brand-2);margin-top:.1rem;flex-shrink:0}
.ia-check.pisca{animation:pisca 1.1s ease 2}
@keyframes pisca{0%,100%{border-color:var(--line);background:var(--bg)}
  50%{border-color:var(--warn);background:#fff7e8}}
.ia-credito{font-size:.78rem;color:var(--ink-3);font-style:italic;margin-top:.2rem}

@media print{
  .ia .sheet-notes{border:0;padding:0;min-height:0}
  .ia-alerta{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid}
  .ia-credito{display:block}
  .ia{gap:0}
}

/* ===================== ENTRADA DA PLATAFORMA ===================== */
.plataforma-body{background:var(--bg);margin:0}
.carregando{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:var(--bg)}
.carregando-box{display:grid;gap:1rem;justify-items:center;text-align:center}
.carregando-box img{height:42px;width:auto;animation:respira 1.6s ease-in-out infinite}
.carregando-box p{font-size:.9rem;color:var(--ink-3)}
@keyframes respira{0%,100%{opacity:.45}50%{opacity:1}}

/* ===================== PAINEL ADMINISTRATIVO ===================== */
.admin-body{background:var(--bg);margin:0;min-height:100vh}
.admin-main{padding:1.4rem;max-width:1400px;margin-inline:auto}
.admin-carregando{padding:4rem 1rem;text-align:center;color:var(--ink-3);font-size:.95rem}
.admin-aba{display:grid;gap:1.2rem}

/* KPIs */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem}
.kpi{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:1.1rem 1.2rem;box-shadow:var(--sh-s);display:grid;gap:.25rem}
.kpi-destaque{background:linear-gradient(140deg,var(--brand),var(--brand-2));border-color:transparent;color:#fff}
.kpi-destaque .kpi-rot,.kpi-destaque .kpi-extra{color:#bfe3f7}
.kpi-destaque .kpi-num{color:#fff}
.kpi-rot{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--ink-3)}
.kpi-num{font-family:var(--display);font-size:1.85rem;font-weight:800;letter-spacing:-.02em;color:var(--brand);line-height:1.1}
.kpi-extra{font-size:.8rem;color:var(--ink-3)}

/* gráficos */
.chart-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1.2rem}
.chart-card{margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);padding:1.2rem;box-shadow:var(--sh-s)}
.chart-card figcaption{margin-bottom:.6rem}
.chart-card h3{font-size:1rem;margin-bottom:.2rem}
.chart-host svg{width:100%;height:auto;display:block;overflow:visible}
.c-grid line{stroke:var(--line-2);stroke-width:1}
.c-base{stroke:var(--line);stroke-width:1}
.c-tick,.c-axis{font-family:var(--font);font-size:11px;fill:var(--ink-3)}
.c-val{font-family:var(--font);font-size:11.5px;font-weight:700;fill:var(--ink-2)}
.c-serie.cor-receita .c-bar{fill:#0188ca}
.c-serie.cor-contas .c-bar{fill:#012a62}
.c-bar{transition:opacity .15s}
.c-hit{fill:transparent}
.c-hit:hover{fill:rgba(1,42,98,.05)}

/* distribuição */
.dist{display:grid;gap:.6rem;margin-top:.4rem}
.dist-linha{display:grid;grid-template-columns:170px 1fr 40px;gap:.8rem;align-items:center;font-size:.88rem}
.dist-rot{color:var(--ink-2)}
.dist-barra{background:var(--line-2);border-radius:999px;height:10px;overflow:hidden}
.dist-barra i{display:block;height:100%;border-radius:999px;min-width:2px}
.dist-ok{background:var(--ok)}.dist-trial{background:var(--brand-2)}
.dist-pend{background:var(--warn)}.dist-exp{background:#9db0c4}.dist-canc{background:var(--danger)}
.dist-linha b{text-align:right;font-family:var(--display)}

/* tabelas */
.admin-filtros{display:flex;gap:.8rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1rem}
.tabela-rolagem{overflow:auto;border:1px solid var(--line-2);border-radius:var(--r-s)}
.admin-tab{width:100%;border-collapse:collapse;font-size:.86rem;min-width:760px}
.admin-tab th,.admin-tab td{padding:.6rem .7rem;text-align:left;border-bottom:1px solid var(--line-2);vertical-align:middle}
.admin-tab thead th{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);background:var(--bg);position:sticky;top:0}
.admin-tab tbody tr:hover{background:#f9fbfe}
.admin-tab small{display:block;color:var(--ink-3);font-size:.76rem;margin-top:.1rem}
.admin-tab .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}
.admin-tab .vazio{text-align:center;color:var(--ink-3);padding:1.6rem}
.acoes{display:flex;gap:.3rem;flex-wrap:wrap}
.acoes .btn{padding:.3rem .6rem;font-size:.78rem}
.btn.perigo{color:var(--danger)}
.btn.perigo:hover{background:#fdecec}

/* retorno do pagamento */
.retorno{display:grid;place-items:center;min-height:70vh}
.retorno-card{width:min(520px,100%);text-align:center;display:grid;gap:.7rem;justify-items:center;padding:2.2rem}
.retorno-logo{height:34px;width:auto;margin-bottom:.4rem}
.retorno-icone{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-size:1.8rem;font-weight:700}
.retorno-icone.ok{background:#e4f6ed;color:var(--ok)}
.retorno-icone.aguardando{background:#fdf1de;color:var(--warn)}
.retorno-icone.erro{background:#fdecec;color:var(--danger)}
.retorno-card h1{font-size:1.35rem}
.retorno-detalhes{width:100%;text-align:left;margin-top:.6rem}
.retorno-detalhes a{color:var(--brand-2);text-decoration:underline}
.retorno-card .panel-foot{border:0;justify-content:center;padding-top:.4rem}

@media (max-width:720px){
  .dist-linha{grid-template-columns:120px 1fr 34px}
  .admin-main{padding:.9rem}
}
