:root{
  --bg:#fcf7f2; --surface:#fff; --surface-2:#f4ede3;
  --ink:#26415e; --ink-deep:#1c3049; --text:#2e3d4e; --muted:#5d6a79;
  --accent:#b85f40; --accent-text:#9c4a2c; --accent-soft:#f3e2d9;
  --tech:#3a6d95; --tech-soft:#e2edf4; --good:#3f7a5e; --good-soft:#e3f0e8;
  --warn:#9a6a1f; --warn-soft:#f4e9d2;
  --border:#e7ded2; --rule:#ded2c2;
  --shadow:0 1px 2px rgba(28,48,73,.05),0 8px 24px rgba(28,48,73,.06);
  --radius:18px;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#16232f; --surface:#1d2c39; --surface-2:#223444;
  --ink:#e9f1f8; --ink-deep:#fff; --text:#d3dde5; --muted:#9bafbe;
  --accent:#e0906e; --accent-text:#eaa886; --accent-soft:#33261f;
  --tech:#7fb0d4; --tech-soft:#1a2c3a; --good:#74b492; --good-soft:#1e3329;
  --warn:#d7ab5e; --warn-soft:#33290f; --border:#2b4053; --rule:#2b4053;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.28);
}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:16px;line-height:1.6}
.wrap{max-width:56rem;margin:0 auto;padding:0 clamp(16px,4vw,32px)}
h1,h2,h3{color:var(--ink);line-height:1.25}
h1{font-size:clamp(1.5rem,3.4vw,2rem);letter-spacing:-.01em}
a{color:var(--accent-text)}
.muted{color:var(--muted)} .small{font-size:.85rem}

header.top{background:linear-gradient(160deg,#26415e,#1c3049);border-bottom:3px solid var(--accent)}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:.9rem 0}
.brand{color:#fff;font-weight:700;text-decoration:none;font-size:1.05rem}
.brand em{font-style:normal;font-weight:600;font-size:.62rem;text-transform:uppercase;letter-spacing:.14em;
  color:#8fbbd8;border:1px solid rgba(143,187,216,.5);border-radius:6px;padding:.1rem .4rem;margin-left:.4rem;vertical-align:middle}
.topright{display:flex;align-items:center;gap:1rem}
.ia-badge{font-size:.72rem;font-weight:600;color:#eaf1f8;background:rgba(58,109,149,.5);border:1px solid rgba(143,187,216,.4);
  border-radius:20px;padding:.25rem .7rem}
.who{display:flex;align-items:center;gap:.6rem;color:#eaf1f8;font-size:.85rem}
.wholink{color:#eaf1f8;text-decoration:none;border-bottom:1px dotted rgba(234,241,248,.5)}
.wholink:hover{color:#fff}
.linkbtn{background:none;border:none;color:#8fbbd8;cursor:pointer;font-size:.85rem;text-decoration:underline;padding:0}
.inline{display:inline}

main.wrap{padding-top:1.6rem;padding-bottom:2rem}
.hero{margin-bottom:1.4rem}
.hero p{max-width:44rem;color:var(--muted)}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.4rem 1.5rem;box-shadow:var(--shadow);margin-bottom:1.3rem}
.card h2{margin-top:0}
.auth{max-width:26rem;margin:2rem auto}
.stack{display:flex;flex-direction:column;gap:.9rem}
.stack label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:var(--ink);font-weight:600}
input,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.6rem .8rem;width:100%}
textarea{resize:vertical}
.hint{font-size:.8rem;color:var(--muted);margin-top:.8rem}

.btn{display:inline-block;font:inherit;font-weight:600;border-radius:999px;padding:.6rem 1.2rem;border:1px solid transparent;cursor:pointer;text-decoration:none}
.btn.primary{background:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent-text)}
.btn.ghost{background:transparent;color:var(--accent-text);border-color:var(--accent)}
.btn.small{padding:.4rem .9rem;font-size:.85rem}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.row{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}
.right{text-align:right}
.voltar{text-decoration:none;font-size:.9rem}

.tbl{width:100%;border-collapse:collapse;font-size:.92rem}
.tbl th{text-align:left;color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;padding:.5rem .5rem;border-bottom:2px solid var(--rule)}
.tbl td{padding:.7rem .5rem;border-bottom:1px solid var(--rule);vertical-align:middle}
.badge{font-size:.72rem;font-weight:700;border-radius:20px;padding:.2rem .6rem;white-space:nowrap}
.st-pend{background:var(--warn-soft);color:var(--warn)}
.st-trans{background:var(--tech-soft);color:var(--tech)}
.st-rasc{background:var(--accent-soft);color:var(--accent-text)}
.st-ok{background:var(--good-soft);color:var(--good)}
.dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;vertical-align:middle;margin-right:.2rem}
.dot.ok{background:var(--good)} .dot.no{background:var(--rule)}

.steps{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}
.step{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;opacity:.72}
.step.ativo,.step.feito{opacity:1}
.step.ativo{border-color:var(--accent)}
.step-h{display:flex;align-items:center;gap:.7rem;padding:.9rem 1.3rem;background:var(--surface-2);border-bottom:1px solid var(--border)}
.step-h h3{margin:0;font-size:1.05rem}
.step-n{flex:none;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem}
.step.feito .step-n{background:var(--good)}
.step.ativo .step-n{background:var(--accent)}
.step-body{padding:1.1rem 1.3rem}
.secao{margin-bottom:1rem}
.sec-tit{display:block;color:var(--ink);font-weight:600}
.sec-ajuda{display:block;font-weight:400;font-size:.8rem;color:var(--muted);margin-bottom:.35rem}

.transcricao{white-space:pre-wrap;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:1rem;font-size:.86rem;max-height:20rem;overflow:auto;line-height:1.55}
.ok-line{color:var(--good);font-weight:600}
.alert{border-radius:12px;padding:.9rem 1.1rem;margin:.6rem 0}
.alert.erro{background:#fdecec;color:#a12c2c;border:1px solid #f3c9c9}
.alert.aviso{background:var(--warn-soft);color:var(--warn);border:1px solid transparent}
.alert.aviso p{margin:.2rem 0 .6rem}

.doc .doc-h{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--rule);padding-bottom:.6rem;margin-bottom:1rem}
.doc-body h2{font-size:1.05rem;margin:1.1rem 0 .3rem}
.assinatura{margin-top:1.6rem;padding-top:1rem;border-top:1px dashed var(--rule);font-size:.9rem}
.hash{font-family:ui-monospace,Consolas,monospace;font-size:.72rem;word-break:break-all;color:var(--muted)}
.foot{color:var(--muted);font-size:.8rem;padding:1.5rem 0 2.5rem;text-align:center}

.mainnav{display:flex;gap:1rem;margin-right:auto;margin-left:1.2rem}
.mainnav a{color:#cfe0ee;text-decoration:none;font-size:.9rem;font-weight:600}
.mainnav a:hover{color:#fff;text-decoration:underline}

.entre{border-left:4px solid var(--accent)}
.entre h2{margin-top:0;font-size:1.1rem}
.timeline{width:100%;max-width:640px;height:auto;display:block;margin:.4rem 0 1rem}
.checkins{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.checkins li{display:flex;gap:.7rem;align-items:flex-start;border-top:1px solid var(--rule);padding-top:.6rem}
.checkins li:first-child{border-top:0;padding-top:0}
.humor-emoji{font-size:1.4rem;line-height:1;flex:none}
.lista-simples{list-style:none;margin:0;padding:0}
.lista-simples li{padding:.5rem 0;border-top:1px solid var(--rule);display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.lista-simples li:first-child{border-top:0}

.linkbox{display:flex;gap:.5rem;align-items:center}
.linkbox input{font-family:ui-monospace,Consolas,monospace;font-size:.82rem}

.prox strong{display:block;color:var(--ink);font-size:1.15rem}
.portal-top{background:linear-gradient(160deg,#3a6d95,#26415e)}
body.portal .hero p{max-width:40rem}

.humor-ops{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.4rem}
.humor-op{flex:1;min-width:5rem;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.7rem .4rem;border:1px solid var(--border);border-radius:14px;cursor:pointer;background:var(--surface);text-align:center}
.humor-op .e{font-size:1.6rem}
.humor-op .r{font-size:.72rem;color:var(--muted)}
.humor-op input{width:auto;margin:0}
.humor-op:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.humor-op input{position:absolute;opacity:0;width:1px;height:1px}

.aviso-link{color:var(--accent-text);margin:0 0 .4rem}
.destaque{border-left:4px solid var(--tech)}
.destaque h2{margin-top:0;font-size:1.1rem}
.orient-texto{background:var(--surface-2);border-radius:12px;padding:.9rem 1.1rem;margin:.4rem 0 0}
.check-inline{flex-direction:row !important;align-items:center;gap:.5rem !important;font-weight:600;color:var(--ink)}
.check-inline input{width:auto}
.linkbox textarea{font-family:inherit;font-size:.9rem;width:100%}

/* Diario das Sessoes */
.diario{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.9rem}
.diario li{border-top:1px solid var(--rule);padding-top:.8rem}
.diario li:first-child{border-top:0;padding-top:0}
.diario-h{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;margin-bottom:.3rem}

/* Exercicios do lobby */
.ex-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.9rem;margin-top:.4rem}
.ex-card{display:flex;flex-direction:column;gap:.3rem;padding:1.1rem 1.2rem;border:1px solid var(--border);border-radius:14px;
  background:var(--surface);text-decoration:none;color:var(--text);box-shadow:var(--shadow);transition:border-color .15s}
.ex-card:hover{border-color:var(--accent)}
.ex-card strong{color:var(--ink);font-size:1.05rem}
.ex-tema{font-family:var(--mono,monospace);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tech-text)}
.aterrar,.preparar{max-width:34rem;margin:1rem auto 0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:.7rem}
.aterrar li{display:flex;align-items:center;gap:.8rem}
.aterrar li span{flex:none;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--tech-soft);color:var(--tech-text);
  display:flex;align-items:center;justify-content:center;font-weight:700}
.preparar li{padding:.6rem .9rem;background:var(--surface-2);border-radius:10px}

/* Sala de espera: avisos no dashboard do profissional */
.lobby-card{border-left:4px solid var(--good)}
.lobby-item{padding:.4rem 0;font-size:.95rem}

/* Joguinho de teclas */
.jogo{text-align:center;max-width:22rem;margin:0 auto}
.jogo-topo{display:flex;justify-content:space-between;font-weight:600;color:var(--ink);margin-bottom:.6rem}
.jogo-alvo{font-size:3.4rem;line-height:1;min-height:4rem;display:flex;align-items:center;justify-content:center;
  background:var(--surface-2);border-radius:16px;margin:.4rem 0;color:var(--tech-text);transition:transform .1s,background .1s}
.jogo-alvo.ok{background:var(--good-soft);color:var(--good);transform:scale(1.12)}
.jogo-setas{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:.6rem 0}
.jogo-setas button{font-size:1.5rem;padding:.7rem 0;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer;color:var(--ink)}
.jogo-setas button:active{background:var(--accent-soft);border-color:var(--accent)}

/* Escalas de acompanhamento (B4) */
.escala-item{padding:.6rem 0}
.escala-bloco{border-top:1px solid var(--rule);padding-top:.9rem;margin-top:.9rem}
.escalas-curvas .escala-bloco:first-child,.escala-item:first-child .escala-bloco{border-top:0;margin-top:0}
.escala-h{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.3rem}
.curva{width:100%;max-width:680px;height:auto;display:block;margin:.4rem 0}
.b-min{background:var(--good-soft);color:var(--good)}
.b-leve{background:var(--tech-soft);color:var(--tech-text)}
.b-mod{background:var(--warn-soft);color:var(--warn)}
.b-mod2{background:var(--accent-soft);color:var(--accent-text)}
.b-grave{background:#fdecec;color:#a12c2c}
@media (prefers-color-scheme:dark){.b-grave{background:#3a2020;color:#f0a8a8}}
.q-escala{padding:.7rem 0;border-top:1px solid var(--rule)}
.q-escala:first-child{border-top:0}
.q-txt{margin:0 0 .5rem}
.q-ops{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem}
.op-escala{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem .3rem;border:1px solid var(--border);
  border-radius:10px;cursor:pointer;text-align:center;font-size:.78rem;color:var(--muted);background:var(--surface)}
.op-escala:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent-text)}
.op-escala input{position:absolute;opacity:0;width:1px;height:1px}
.op-r{line-height:1.2}
.sep{border:0;border-top:1px solid var(--rule);margin:1rem 0}

/* Busca turbinada */
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.chip{font:inherit;font-size:.82rem;color:var(--tech-text);background:var(--tech-soft);border:1px solid transparent;
  border-radius:20px;padding:.35rem .8rem;cursor:pointer}
.chip:hover{border-color:var(--tech)}
.fontes-h{font-size:.95rem;margin:1rem 0 .5rem}
.fontes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem}
.fontes li{border-top:1px solid var(--rule);padding-top:.6rem}
.fontes li:first-child{border-top:0}

/* Sala de espera: respiracao guiada */
.espera{text-align:center}
.respira{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1.4rem 0}
.circulo{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--tech-soft),var(--tech));
  animation:respirar 10s ease-in-out infinite;box-shadow:0 8px 30px rgba(58,109,149,.35)}
.respira-txt{color:var(--tech-text);font-weight:600;animation:respirar-txt 10s ease-in-out infinite}
@keyframes respirar{0%,100%{transform:scale(.7)}45%,55%{transform:scale(1.25)}}
@keyframes respirar-txt{0%,100%{opacity:.5}45%,55%{opacity:1}}
@media (prefers-reduced-motion:reduce){.circulo,.respira-txt{animation:none}}

.overlay{position:fixed;inset:0;background:rgba(28,48,73,.55);display:flex;align-items:center;justify-content:center;z-index:50}
.overlay .box2{background:var(--surface);border-radius:var(--radius);padding:1.6rem 2rem;box-shadow:var(--shadow);text-align:center;max-width:22rem}
.spinner{width:2.2rem;height:2.2rem;border:3px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;margin:0 auto .9rem;animation:spin 1s linear infinite}
.poller{display:flex;align-items:center;gap:.5rem;color:var(--tech-text);font-weight:600}
.spinner-sm{width:1.1rem;height:1.1rem;border:2px solid var(--tech-soft);border-top-color:var(--tech);border-radius:50%;display:inline-block;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
