:root{
  --bg:#EDF3F2; --surface:#FFFFFF;
  --ink:#16302E; --ink-soft:#5C6F6C;
  --teal:#0E7E76; --teal-deep:#0A5C56; --teal-tint:#DCEFEC;
  --green:#1E9E5A; --green-tint:#DEF3E6;
  --red:#C0473A; --red-tint:#F8E3E0;
  --amber:#A9711B; --amber-tint:#FBEFD7;
  --line:#D7E3E1;
  --shadow:0 10px 30px rgba(16,48,46,.10);
  --r:18px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:var(--bg);
  font-family:Inter,system-ui,sans-serif;
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
#app{
  display:flex;flex-direction:column;min-height:100dvh;
  max-width:480px;margin:0 auto;width:100%;background:var(--bg);
}

.appbar{background:var(--surface);border-bottom:1px solid var(--line);padding:12px 16px;display:flex;align-items:center;gap:12px;min-height:62px;position:sticky;top:0;z-index:5}
.appbar .logo{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--teal),var(--teal-deep));color:#fff;font-family:Nunito;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:15px;letter-spacing:-.5px;flex:0 0 auto}
.appbar .titles{line-height:1.15}
.appbar .titles .t1{font-family:Nunito;font-weight:800;font-size:16px}
.appbar .titles .t2{font-size:12px;color:var(--ink-soft)}
.back{margin-left:auto;border:1px solid var(--line);background:#fff;color:var(--teal-deep);font-family:Inter;font-weight:600;font-size:14px;border-radius:11px;padding:9px 13px;cursor:pointer;display:none}
.back.show{display:inline-flex}

.screen{flex:1;overflow-y:auto;padding:18px 16px 14px;-webkit-overflow-scrolling:touch}

.eyebrow{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--teal);margin:2px 0 6px}
h1.q{font-family:Nunito;font-weight:800;font-size:25px;line-height:1.2;margin:0 0 4px}
p.sub{font-size:15.5px;color:var(--ink-soft);margin:0 0 18px;line-height:1.45}

.card{width:100%;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r);padding:18px 16px;text-align:left;font:inherit;color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:14px;margin-bottom:12px;transition:border-color .12s,transform .05s,box-shadow .12s}
.card:hover{border-color:var(--teal);box-shadow:var(--shadow)}
.card:active{transform:scale(.992)}
.card .ic{width:46px;height:46px;border-radius:13px;background:var(--teal-tint);color:var(--teal-deep);display:flex;align-items:center;justify-content:center;font-size:22px;flex:0 0 auto}
.card .body{flex:1;min-width:0}
.card .body .ttl{font-family:Nunito;font-weight:700;font-size:18px;line-height:1.2}
.card .body .meta{font-size:13.5px;color:var(--ink-soft);margin-top:3px}
.card .chev{color:var(--teal);font-size:22px;font-weight:700;flex:0 0 auto}
/* [REGRA DE IDADE 04/08/2026] Médico que não atende a idade deste paciente.
   Continua visível e clicável — o toque explica o porquê em vez de não fazer
   nada, que é o pior dos mundos: quem não sabe por que não abre, liga. */
.card.bloq{background:#fdf6f6;border-color:#f0d2d2;opacity:.9}
.card.bloq .ic{background:#fbe9e9;color:#a33}
.card.bloq .body .ttl{color:#7a5b5b}
.card .body .bloqmsg{color:#a12d2d;font-weight:600;margin-top:5px;line-height:1.35}
.card.accent{border-color:var(--green);background:var(--green-tint)}
.card.accent .ic{background:var(--green);color:#fff}
.card.accent .chev{color:var(--green)}

.appt{background:#fff;border:1.5px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:14px}
.appt .lbl{font-size:12.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--amber)}
.appt .when{font-family:Nunito;font-weight:800;font-size:20px;margin:6px 0 2px}
.appt .who{font-size:14.5px;color:var(--ink-soft)}
.appt .acts{display:flex;gap:9px;margin-top:13px}
.btn-ghost{flex:1;border:1.5px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-weight:600;font-size:15px;border-radius:12px;padding:11px;cursor:pointer}
.btn-ghost.danger{color:var(--red);border-color:var(--red-tint)}

.hello{display:flex;align-items:center;gap:13px;margin-bottom:6px}
.hello .av{width:50px;height:50px;border-radius:50%;background:var(--teal);color:#fff;font-family:Nunito;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center}
.hello .htxt .hi{font-size:14px;color:var(--ink-soft)}
.hello .htxt .nm{font-family:Nunito;font-weight:800;font-size:23px;line-height:1.1}

.calhead{display:flex;align-items:center;justify-content:space-between;margin:4px 0 12px}
.calhead .mname{font-family:Nunito;font-weight:800;font-size:19px;text-transform:capitalize}
.navbtn{width:42px;height:42px;border-radius:12px;border:1.5px solid var(--line);background:#fff;font-size:20px;color:var(--teal-deep);cursor:pointer;display:flex;align-items:center;justify-content:center}
.navbtn:disabled{opacity:.3;cursor:default}
.weekrow{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.weekrow span{text-align:center;font-size:12px;font-weight:700;color:var(--ink-soft)}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.day{aspect-ratio:1/1;border-radius:13px;border:1.5px solid transparent;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;font:inherit;cursor:default;color:#aebcba;position:relative}
.day .n{font-size:16px;font-weight:600}
.day.free{background:var(--green-tint);border-color:#bfe6cd;color:#0f5b34;cursor:pointer}
.day.free .n{font-weight:800}
.day.free .cnt{font-size:10px;font-weight:700;color:#1c8a4f;margin-top:1px}
.day.free:hover{border-color:var(--green)}
.day.free:active{transform:scale(.95)}
.day.today{box-shadow:0 0 0 2px var(--teal) inset}
.day.empty{visibility:hidden}
.legend{display:flex;gap:16px;margin-top:14px;font-size:13px;color:var(--ink-soft)}
.legend .dot{width:13px;height:13px;border-radius:4px;display:inline-block;margin-right:6px;vertical-align:-1px}

.slot{width:100%;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:15px 16px;font:inherit;color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:13px;margin-bottom:10px}
.slot:hover{border-color:var(--green);box-shadow:var(--shadow)}
.slot:active{transform:scale(.992)}
.slot .time{font-family:Nunito;font-weight:800;font-size:22px;color:var(--teal-deep);min-width:62px}
.slot .doc{flex:1;text-align:left;font-size:14.5px;line-height:1.25}
.slot .doc .sp{color:var(--ink-soft);font-size:12.5px}

.summary{background:#fff;border:1.5px solid var(--line);border-radius:var(--r);overflow:hidden;margin-bottom:16px}
.summary .row{display:flex;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);font-size:15px}
.summary .row:last-child{border-bottom:none}
.summary .row .k{color:var(--ink-soft)}
.summary .row .v{font-weight:700;text-align:right}
.summary .big{background:var(--teal-tint)}
.summary .big .v{font-family:Nunito;font-weight:800;font-size:18px;color:var(--teal-deep)}
label.fld{display:block;font-size:14px;font-weight:600;margin:2px 0 7px}
textarea{width:100%;font:inherit;font-size:16px;border:1.5px solid var(--line);border-radius:13px;padding:13px;resize:none;color:var(--ink);background:#fff}
textarea:focus{outline:none;border-color:var(--teal)}

.foot{background:var(--surface);border-top:1px solid var(--line);padding:12px 16px calc(12px + env(safe-area-inset-bottom));position:sticky;bottom:0}
.cta{width:100%;background:var(--teal);color:#fff;border:none;font-family:Nunito;font-weight:800;font-size:18px;border-radius:15px;padding:16px;cursor:pointer;box-shadow:0 8px 20px rgba(14,126,118,.32)}
.cta:disabled{opacity:.6;cursor:default}
.cta:active{transform:translateY(1px)}
.cta.green{background:var(--green);box-shadow:0 8px 20px rgba(30,158,90,.3)}
.cta.danger{background:var(--red);box-shadow:0 8px 20px rgba(192,71,58,.3)}
.attend{display:block;width:100%;text-align:center;margin-top:9px;background:none;border:none;color:var(--teal-deep);font:inherit;font-size:14px;font-weight:600;cursor:pointer;text-decoration:underline}

.warn{background:var(--amber-tint);border:1.5px solid #ecd6a6;color:#7a5410;border-radius:14px;padding:13px 14px;font-size:14px;line-height:1.45;margin-bottom:16px;display:flex;gap:10px}
.warn .wic{font-size:18px}

.ok{text-align:center;padding:14px 4px}
.ok .check{width:88px;height:88px;border-radius:50%;background:var(--green-tint);color:var(--green);display:flex;align-items:center;justify-content:center;font-size:46px;margin:8px auto 18px;animation:pop .4s ease}
@keyframes pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
.ok h1{font-family:Nunito;font-weight:800;font-size:25px;margin:0 0 6px}
.ok p{font-size:15.5px;color:var(--ink-soft);margin:0 0 18px;line-height:1.5}

.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0;color:var(--ink-soft);gap:14px}
.spin{width:38px;height:38px;border:4px solid var(--teal-tint);border-top-color:var(--teal);border-radius:50%;animation:rot .8s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}
.empty-msg{text-align:center;color:var(--ink-soft);padding:40px 10px;font-size:15px;line-height:1.5}

.erro-token{max-width:420px;margin:60px auto;padding:30px 22px;text-align:center}
.erro-token .erro-ic{font-size:44px;margin-bottom:10px}
.erro-token h1{font-family:Nunito,sans-serif;font-weight:800;color:var(--ink);font-size:24px;margin:0 0 8px}
.erro-token p{color:var(--ink-soft);font-size:15.5px;line-height:1.5}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.bar-actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.bar-actions .back{margin-left:0}
.appbar .logo{cursor:pointer}
.homebtn{border:1px solid var(--line);background:#fff;color:var(--teal-deep);font-family:Inter;font-weight:600;font-size:14px;border-radius:11px;padding:9px 13px;cursor:pointer}
.homebtn:hover{border-color:var(--teal)}

:focus-visible{outline:3px solid var(--teal);outline-offset:2px}
