:root{
  --paper:#F3F5F2; --surface:#FFFFFF; --surface-2:#E9EDE8; --surface-3:#DFE5DE;
  --ink:#15211E; --ink-2:#4A5A55; --ink-3:#75857F;
  --line:#D3DAD3; --line-strong:#B8C3BB;
  --brand:#14453D; --brand-2:#2C6B5F; --brand-soft:#E1EBE6; --on-brand:#F3F5F2;
  --accent:#A2662F; --accent-soft:#F1E5D6;
  --ok:#2C6B4F; --ok-soft:#DCEBE2;
  --warn:#8A5A12; --warn-soft:#F4E9D5;
  --wa:#1E7B54; --wa-bubble:#DFF3E4; --wa-ground:#E4E2DA;
  --rail-bg:#14453D; --rail-fg:#F3F5F2; --rail-done-bg:#F3F5F2; --rail-done-fg:#14453D;
  --shadow:0 1px 2px rgba(21,33,30,.05), 0 8px 24px -12px rgba(21,33,30,.18);
  --radius:14px; --radius-sm:9px;
  --maxw:1080px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0D1513; --surface:#141F1C; --surface-2:#1A2825; --surface-3:#22332E;
    --ink:#E7EEE9; --ink-2:#A2B4AC; --ink-3:#7B8D86;
    --line:#283A35; --line-strong:#39504A;
    --brand:#84C3B1; --brand-2:#9FD3C3; --brand-soft:#16302B; --on-brand:#0D1513;
    --accent:#D79B5F; --accent-soft:#2C2117;
    --ok:#79C79C; --ok-soft:#163024;
    --warn:#D9A85A; --warn-soft:#2C2415;
    --wa:#6FD3A4; --wa-bubble:#16302B; --wa-ground:#101A18;
    --rail-bg:#16302B; --rail-fg:#E7EEE9; --rail-done-bg:#84C3B1; --rail-done-fg:#0D1513;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px -14px rgba(0,0,0,.7);
  }
}
:root[data-theme="dark"]{
  --paper:#0D1513; --surface:#141F1C; --surface-2:#1A2825; --surface-3:#22332E;
  --ink:#E7EEE9; --ink-2:#A2B4AC; --ink-3:#7B8D86;
  --line:#283A35; --line-strong:#39504A;
  --brand:#84C3B1; --brand-2:#9FD3C3; --brand-soft:#16302B; --on-brand:#0D1513;
  --accent:#D79B5F; --accent-soft:#2C2117;
  --ok:#79C79C; --ok-soft:#163024;
  --warn:#D9A85A; --warn-soft:#2C2415;
  --wa:#6FD3A4; --wa-bubble:#16302B; --wa-ground:#101A18;
  --rail-bg:#16302B; --rail-fg:#E7EEE9; --rail-done-bg:#84C3B1; --rail-done-fg:#0D1513;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px -14px rgba(0,0,0,.7);
}

*{box-sizing:border-box}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"Karla","Helvetica Neue",Arial,sans-serif;
  font-size:16.5px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:"Fraunces",Georgia,"Times New Roman",serif; font-weight:500; text-wrap:balance; margin:0; line-height:1.15}
h1{font-size:clamp(2.1rem,5.2vw,3.4rem); letter-spacing:-.015em}
h2{font-size:clamp(1.5rem,3.2vw,2rem); letter-spacing:-.01em}
h3{font-size:1.12rem; letter-spacing:-.005em}
p{margin:0}
a{color:inherit}
button{font:inherit; color:inherit}
:focus-visible{outline:2.5px solid var(--accent); outline-offset:2px; border-radius:4px}

.wrap{max-width:var(--maxw); margin:0 auto; padding:0 22px}
.eyebrow{
  font-family:"IBM Plex Mono",ui-monospace,monospace; font-size:.7rem; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; color:var(--accent);
}
.muted{color:var(--ink-2)}
.small{font-size:.88rem}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace; font-variant-numeric:tabular-nums}

/* ---------- topo ---------- */
.topbar{
  position:sticky; top:0; z-index:40;
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(10px); border-bottom:1px solid var(--line);
}
.topbar .wrap{display:flex; align-items:center; gap:16px; justify-content:space-between; height:62px}
.brandmark{display:flex; align-items:center; gap:11px; min-width:0}
.sigil{
  width:34px; height:34px; flex:none; border-radius:50%;
  background:var(--brand); color:var(--on-brand);
  display:grid; place-items:center;
  font-family:"Fraunces",serif; font-size:1rem; letter-spacing:.02em;
}
.brandmark b{font-weight:700; font-size:.95rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.brandmark span{display:block; font-size:.74rem; color:var(--ink-2); line-height:1.2}
.topnav{display:flex; gap:22px; align-items:center; font-size:.9rem}
.topnav a{text-decoration:none; color:var(--ink-2)}
.topnav a:hover{color:var(--ink)}
@media (max-width:820px){
  .topnav a{display:none}
  .topnav a.btn{display:inline-flex}
}

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  background:var(--brand); color:var(--on-brand); border:1px solid var(--brand);
  padding:11px 18px; border-radius:999px; font-weight:600; font-size:.92rem;
  cursor:pointer; text-decoration:none; transition:transform .12s ease, filter .12s ease;
}
.btn:hover{filter:brightness(1.08); transform:translateY(-1px)}
.btn:disabled{opacity:.45; cursor:not-allowed; transform:none}
.btn.ghost{background:transparent; color:var(--ink); border-color:var(--line-strong)}
.btn.ghost:hover{border-color:var(--ink-2); filter:none}
.btn.sm{padding:8px 14px; font-size:.84rem}

/* ---------- hero ---------- */
.hero{padding:74px 0 56px; border-bottom:1px solid var(--line)}
.hero-grid{display:grid; grid-template-columns:1.35fr .95fr; gap:52px; align-items:start}
@media (max-width:900px){ .hero{padding:48px 0 40px} .hero-grid{grid-template-columns:1fr; gap:34px} }
.hero h1{margin:14px 0 0}
.hero .lede{margin-top:18px; font-size:1.12rem; color:var(--ink-2); max-width:56ch}
.hero-actions{display:flex; gap:12px; margin-top:28px; flex-wrap:wrap}
.credential{
  margin-top:22px; display:flex; gap:8px 18px; flex-wrap:wrap;
  font-size:.82rem; color:var(--ink-3);
}
.portrait.com-foto{ padding:0; overflow:hidden; background:var(--surface-2); }
.portrait.com-foto img{ width:100%; height:100%; object-fit:cover; display:block; }
.portrait{
  aspect-ratio:4/5; border-radius:var(--radius); border:1px solid var(--line);
  background:
    radial-gradient(120% 90% at 30% 15%, var(--brand-soft), transparent 60%),
    var(--surface-2);
  display:grid; place-items:center; text-align:center; padding:26px; color:var(--ink-3);
  font-size:.85rem;
}
.factstrip{
  display:grid; grid-template-columns:repeat(3,1fr); gap:1px;
  background:var(--line); border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; margin-top:20px;
}
.factstrip div{background:var(--surface); padding:14px 16px}
.factstrip b{display:block; font-family:"Fraunces",serif; font-size:1.32rem; font-weight:500}
.factstrip span{font-size:.78rem; color:var(--ink-2)}
@media (max-width:560px){ .factstrip{grid-template-columns:1fr} }

/* ---------- seções ---------- */
section{padding:64px 0; border-bottom:1px solid var(--line)}
@media (max-width:900px){ section{padding:46px 0} }
.sec-head{max-width:62ch; margin-bottom:32px}
.sec-head h2{margin-top:10px}
.sec-head p{margin-top:12px; color:var(--ink-2)}

.two{display:grid; grid-template-columns:1.15fr .85fr; gap:46px; align-items:start}
@media (max-width:900px){ .two{grid-template-columns:1fr; gap:30px} }
.prose p + p{margin-top:14px}
.prose{max-width:64ch; color:var(--ink-2)}
.prose strong{color:var(--ink); font-weight:600}

.card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding:22px; box-shadow:var(--shadow);
}
dl.timeline{margin:0; display:grid; gap:0}
dl.timeline > div{
  display:grid; grid-template-columns:76px 1fr; gap:16px;
  padding:13px 0; border-bottom:1px dashed var(--line);
}
dl.timeline > div:last-child{border-bottom:0}
dl.timeline dt{font-family:"IBM Plex Mono",monospace; font-size:.8rem; color:var(--accent); padding-top:2px; font-variant-numeric:tabular-nums}
dl.timeline dd{margin:0; font-size:.94rem}
dl.timeline dd span{display:block; color:var(--ink-2); font-size:.85rem}

.chips{display:flex; flex-wrap:wrap; gap:9px}
.chip{
  border:1px solid var(--line-strong); border-radius:999px; padding:7px 14px;
  font-size:.87rem; background:var(--surface);
}
.chip.solid{background:var(--brand-soft); border-color:transparent; color:var(--ink)}

/* ---------- locais ---------- */
.locais{display:grid; grid-template-columns:1fr 1fr; gap:20px}
@media (max-width:820px){ .locais{grid-template-columns:1fr} }
.local{position:relative; overflow:hidden}
.local::before{content:""; position:absolute; inset:0 auto 0 0; width:4px; background:var(--brand)}
.local[data-loc="h2"]::before{background:var(--accent)}
.local h3{margin-bottom:4px}
.local .tag{
  font-family:"IBM Plex Mono",monospace; font-size:.68rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-3);
}
.local ul{list-style:none; padding:0; margin:16px 0 0; display:grid; gap:9px; font-size:.9rem}
.local li{display:grid; grid-template-columns:88px 1fr; gap:12px; align-items:baseline}
.local li b{font-weight:600; font-size:.76rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-3)}
.todefine{
  display:inline-block; background:var(--warn-soft); color:var(--warn);
  border-radius:5px; padding:1px 7px; font-size:.76rem; font-weight:600;
}

/* ---------- agendamento ---------- */
#agendar{background:var(--surface-2)}
.booker{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow); overflow:hidden;
  display:grid; grid-template-columns:236px 1fr;
}
@media (max-width:860px){ .booker{grid-template-columns:1fr} }
.rail{
  background:var(--rail-bg); color:var(--rail-fg); padding:26px 22px;
  display:flex; flex-direction:column; gap:2px;
}
.rail h3{font-size:1.05rem; margin-bottom:16px}
.rail, .rail ol, .rail li{min-width:0}
.rail ol{list-style:none; margin:0; padding:0; display:grid; gap:2px}
.rail li{
  display:grid; grid-template-columns:26px 1fr; gap:11px; align-items:center;
  padding:10px 0; opacity:.5; font-size:.9rem; transition:opacity .2s ease;
}
.rail li .num{
  width:26px; height:26px; border-radius:50%; border:1.5px solid currentColor;
  display:grid; place-items:center; font-family:"IBM Plex Mono",monospace; font-size:.75rem;
}
.rail li[data-state="active"]{opacity:1; font-weight:700}
.rail li[data-state="done"]{opacity:.85}
.rail li[data-state="done"] .num{background:var(--rail-done-bg); color:var(--rail-done-fg); border-color:var(--rail-done-bg)}
.rail .railfoot{margin-top:auto; padding-top:22px; font-size:.78rem; opacity:.72; line-height:1.5}
@media (max-width:860px){
  .rail ol{grid-auto-flow:column; grid-auto-columns:1fr; gap:6px}
  .rail li{grid-template-columns:1fr; justify-items:center; text-align:center; font-size:.72rem; gap:6px}
  .rail .railfoot{display:none}
}
.stage{
  padding:30px 30px 26px; min-height:430px; display:flex; flex-direction:column;
  min-width:0;   /* sem isto a faixa de dias empurra o card e o resto é cortado */
}
@media (max-width:560px){ .stage{padding:22px 18px} }
.step{display:none; flex-direction:column; flex:1}
.step[data-active="true"]{display:flex; animation:rise .28s ease both}
@keyframes rise{from{opacity:0; transform:translateY(6px)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion:reduce){ .step[data-active="true"]{animation:none} *{transition:none !important} }
.step h3{margin-bottom:6px}
.step > .hint{color:var(--ink-2); font-size:.9rem; margin-bottom:20px}
.stepnav{display:flex; gap:10px; justify-content:space-between; margin-top:auto; padding-top:24px; border-top:1px solid var(--line)}

.pick{display:grid; grid-template-columns:1fr 1fr; gap:14px}
@media (max-width:640px){ .pick{grid-template-columns:1fr} }
.pick button{
  text-align:left; background:var(--surface); border:1.5px solid var(--line);
  border-radius:var(--radius-sm); padding:18px; cursor:pointer; transition:border-color .15s, background .15s;
}
.pick button:hover{border-color:var(--line-strong)}
.pick button[aria-pressed="true"]{border-color:var(--brand); background:var(--brand-soft)}
.pick .name{font-weight:700; display:block; margin-bottom:3px}
.pick .meta{font-size:.85rem; color:var(--ink-2); display:block}
.pick .cal{
  margin-top:12px; font-family:"IBM Plex Mono",monospace; font-size:.7rem;
  color:var(--ink-3); display:flex; align-items:center; gap:6px;
}
.dot{width:8px; height:8px; border-radius:50%; background:var(--brand); flex:none}
.dot.b{background:var(--accent)}

.days{
  display:flex; gap:9px; overflow-x:auto; padding:2px 2px 12px;
  scrollbar-width:thin; max-width:100%; overscroll-behavior-x:contain;
}
.day{
  flex:none; min-width:76px; text-align:center; padding:11px 8px;
  border:1.5px solid var(--line); border-radius:var(--radius-sm);
  background:var(--surface); cursor:pointer; line-height:1.3;
}
.day:hover{border-color:var(--line-strong)}
.day[aria-pressed="true"]{border-color:var(--brand); background:var(--brand-soft)}
.day .dw{display:block; font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-3)}
.day .dd{font-family:"Fraunces",serif; font-size:1.35rem; display:block}
.day .dm{display:block; font-size:.72rem; color:var(--ink-2)}
.day .free{display:block; font-family:"IBM Plex Mono",monospace; font-size:.68rem; color:var(--ok); margin-top:3px}
.day .free.none{color:var(--ink-3)}

.slots{display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:9px; margin-top:16px}
.slot{
  font-family:"IBM Plex Mono",monospace; font-size:.92rem; padding:11px 4px;
  border:1.5px solid var(--line); border-radius:var(--radius-sm);
  background:var(--surface); cursor:pointer; text-align:center;
}
.slot:hover:not(:disabled){border-color:var(--line-strong)}
.slot[aria-pressed="true"]{border-color:var(--brand); background:var(--brand-soft); font-weight:600}
.slot:disabled{color:var(--ink-3); background:var(--surface-2); cursor:not-allowed; text-decoration:line-through; opacity:.7}
.legend{display:flex; gap:16px; flex-wrap:wrap; margin-top:16px; font-size:.78rem; color:var(--ink-3)}
.legend i{display:inline-block; width:11px; height:11px; border-radius:3px; border:1.5px solid var(--line); vertical-align:-1px; margin-right:5px}
.legend i.busy{background:var(--surface-2)}
.legend i.sel{background:var(--brand-soft); border-color:var(--brand)}

.fields{display:grid; grid-template-columns:1fr 1fr; gap:15px}
@media (max-width:640px){ .fields{grid-template-columns:1fr} }
.field{display:flex; flex-direction:column; gap:6px}
.field.full{grid-column:1/-1}
.field label{font-size:.79rem; font-weight:600; letter-spacing:.03em; text-transform:uppercase; color:var(--ink-2)}
.field label .req{color:var(--accent)}
.field input, .field select, .field textarea{
  font:inherit; font-size:.95rem; color:var(--ink); background:var(--surface);
  border:1.5px solid var(--line); border-radius:var(--radius-sm); padding:10px 12px; width:100%;
}
.field input:focus, .field select:focus, .field textarea:focus{border-color:var(--brand); outline:none}
.field textarea{resize:vertical; min-height:78px}
.field .help{font-size:.78rem; color:var(--ink-3)}
.field[data-error="true"] input, .field[data-error="true"] select{border-color:var(--accent)}
.consent{
  grid-column:1/-1; display:grid; grid-template-columns:22px 1fr; gap:11px;
  background:var(--surface-2); border-radius:var(--radius-sm); padding:14px; font-size:.86rem; color:var(--ink-2);
}
.consent input{width:18px; height:18px; margin-top:2px; accent-color:var(--brand)}
.formerr{
  margin-top:14px; background:var(--accent-soft); color:var(--ink);
  border-left:3px solid var(--accent); border-radius:6px; padding:10px 13px; font-size:.86rem; display:none;
}
.formerr[data-show="true"]{display:block}

.review{display:grid; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden}
.review > div{background:var(--surface); padding:12px 15px; display:grid; grid-template-columns:150px 1fr; gap:14px; font-size:.92rem}
.review dt{font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-3); font-weight:600}
.review dd{margin:0}
@media (max-width:560px){ .review > div{grid-template-columns:1fr; gap:2px} }
.notice{
  display:grid; grid-template-columns:auto 1fr; gap:11px; align-items:start;
  background:var(--warn-soft); border-radius:var(--radius-sm); padding:13px 15px;
  font-size:.86rem; margin-top:16px; color:var(--ink);
}
.notice .ic{font-size:1rem; line-height:1.4}

/* ---------- fluxo ---------- */
.flow{display:grid; grid-template-columns:repeat(4,1fr); gap:0; margin-top:8px}
@media (max-width:820px){ .flow{grid-template-columns:1fr} }
.flow .node{
  padding:20px 18px; border:1px solid var(--line); border-right:0; background:var(--surface); position:relative;
}
.flow .node:last-child{border-right:1px solid var(--line)}
.flow .node:first-child{border-radius:var(--radius) 0 0 var(--radius)}
.flow .node:last-child{border-radius:0 var(--radius) var(--radius) 0}
@media (max-width:820px){
  .flow .node{border-right:1px solid var(--line); border-bottom:0; border-radius:0}
  .flow .node:first-child{border-radius:var(--radius) var(--radius) 0 0}
  .flow .node:last-child{border-radius:0 0 var(--radius) var(--radius); border-bottom:1px solid var(--line)}
}
.flow .n{font-family:"IBM Plex Mono",monospace; font-size:.72rem; color:var(--accent); letter-spacing:.1em}
.flow h3{font-size:1rem; margin:9px 0 6px}
.flow p{font-size:.86rem; color:var(--ink-2)}

.checklist{list-style:none; margin:0; padding:0; display:grid; gap:11px}
.checklist li{display:grid; grid-template-columns:20px 1fr; gap:12px; font-size:.93rem; align-items:start}
.checklist li::before{
  content:""; width:15px; height:15px; margin-top:5px; border-radius:4px;
  border:1.5px solid var(--line-strong); background:var(--surface);
}
.checklist li span{display:block; color:var(--ink-2); font-size:.85rem}

.faq{display:grid; gap:0; max-width:74ch}
.faq details{border-bottom:1px solid var(--line); padding:15px 0}
.faq summary{cursor:pointer; font-weight:600; list-style:none; display:flex; justify-content:space-between; gap:16px; align-items:baseline}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+"; font-family:"IBM Plex Mono",monospace; color:var(--accent)}
.faq details[open] summary::after{content:"–"}
.faq p{margin-top:10px; color:var(--ink-2); font-size:.93rem; max-width:66ch}

footer{padding:44px 0 56px; font-size:.85rem; color:var(--ink-3)}
footer .wrap{display:grid; gap:14px}
footer strong{color:var(--ink-2)}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}
/* ---------- confirmação ---------- */
.done-head{display:grid; grid-template-columns:auto 1fr; gap:16px; align-items:start}
.tick{
  width:44px; height:44px; border-radius:50%; background:var(--ok-soft); color:var(--ok);
  display:grid; place-items:center; font-size:1.3rem; flex:none;
}
.protocol{
  font-family:"IBM Plex Mono",monospace; font-size:.85rem; background:var(--surface-2);
  border-radius:6px; padding:3px 9px; display:inline-block; margin-top:8px;
}
.preparo{margin-top:24px; background:var(--surface-2); border-radius:var(--radius-sm); padding:18px}
.preparo h4{margin:0 0 10px; font-family:"Fraunces",serif; font-weight:500; font-size:1.02rem}
.preparo ul{margin:0; padding-left:20px; display:grid; gap:7px; font-size:.9rem; color:var(--ink-2)}
.carregando{padding:26px 0; color:var(--ink-3); font-size:.9rem}
.vazio{grid-column:1/-1; color:var(--ink-3); font-size:.9rem}
.erro-slot{
  grid-column:1/-1; background:var(--accent-soft); border-left:3px solid var(--accent);
  border-radius:6px; padding:11px 14px; font-size:.88rem;
}
