/* =============================================================
   Paula Joias e Acessórios — sistema visual
   Fundo: oxblood-espresso profundo, a mesma cor do fundo dos
   retratos, para que a fotografia sangre na página sem emenda.
   Ouro: tratado como metal iluminado (superfície, filete, luz),
   nunca como cor de preenchimento de texto.
   ============================================================= */

:root{
  /* --- Terra --- */
  --ground:#120806;
  --ground-deep:#0A0504;
  --surface:#1D110C;
  --surface-2:#291812;

  /* --- Ouro (rampa de metal) --- */
  --gold-hi:#F0DCA8;
  --gold:#D4AF37;
  --gold-deep:#8F6E22;
  --line:rgba(212,175,55,.24);
  --line-soft:rgba(212,175,55,.13);

  /* --- Tinta (contraste real, sem opacidade decorativa) --- */
  --ink:#F7EFE3;        /* 16.4:1 sobre --ground */
  --ink-2:#CBB9A6;      /* 10.6:1 */
  --ink-3:#9C8B7C;      /*  6.4:1 — piso para texto pequeno */

  /* --- Estado --- */
  --ok:#8FD9AC;
  --warn:#E9BC5E;
  --danger:#EE9A9A;

  /* --- Forma: quase reta, como um estojo de joia --- */
  --r-sm:3px;
  --r-md:5px;
  --r-lg:8px;
  --radius-lg:8px;   /* compat */
  --radius-md:5px;   /* compat */
  --radius-sm:3px;   /* compat */

  /* --- Movimento: matéria pesada, entra e assenta --- */
  --ease-out-quart:cubic-bezier(.25,1,.5,1);
  --ease-out-expo:cubic-bezier(.16,1,.3,1);

  /* --- Profundidade semântica --- */
  --z-sticky:50;
  --z-nav:60;
  --z-modal:100;
}

*{box-sizing:border-box;}
html,body{margin:0;background:var(--ground);}
body{
  font-family:'Archivo','Segoe UI',sans-serif;
  color:var(--ink);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--gold-hi);text-decoration:none;transition:color .3s var(--ease-out-quart);}
a:hover{color:var(--gold);}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}
input,textarea,select,button{font-family:inherit;font-size:16px;}
::placeholder{color:var(--ink-3);opacity:1;}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--gold) !important;box-shadow:0 0 0 3px rgba(212,175,55,.22);}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:var(--ground-deep);}
::-webkit-scrollbar-thumb{background:var(--gold-deep);border-radius:10px;}
::selection{background:var(--gold);color:var(--ground-deep);}

.page-bg{min-height:100vh;overflow-x:hidden;background:var(--ground);}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ---------- Tipografia ---------- */
.display{
  font-family:'Bodoni Moda',Georgia,serif;
  font-weight:500;
  line-height:1.02;
  letter-spacing:-.02em;
  text-wrap:balance;
  margin:0;
}
h1.display{font-size:clamp(43px,6.4vw,88px);}
h2.display{font-size:clamp(33px,4.4vw,58px);line-height:1.06;}
h3.display{font-size:clamp(21px,2vw,27px);line-height:1.2;letter-spacing:-.01em;}
p{text-wrap:pretty;}

/* =============================================================
   Cabeçalho
   ============================================================= */
.site-header{
  position:sticky;top:0;z-index:var(--z-sticky);
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:18px clamp(20px,5vw,64px);
  background:rgba(18,8,6,.82);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-soft);
  transition:box-shadow .4s var(--ease-out-quart);
}
.site-header.is-scrolled{box-shadow:0 14px 34px rgba(0,0,0,.5);}
.brand{display:flex;flex-direction:column;line-height:1;}
.brand-name{
  font-family:'Bodoni Moda',Georgia,serif;
  font-weight:600;font-size:21px;letter-spacing:.3em;
  color:var(--gold-hi);
}
.brand-sub{
  font-size:10px;letter-spacing:.34em;color:var(--ink-3);
  margin-top:6px;text-transform:uppercase;
}
.site-nav{display:flex;align-items:center;gap:clamp(12px,2.4vw,32px);}
.nav-link{
  font-size:14px;letter-spacing:.1em;color:var(--ink-2);
  text-transform:uppercase;padding:8px 0;position:relative;
}
.nav-link::after{
  content:'';position:absolute;left:0;right:100%;bottom:2px;height:1px;
  background:var(--gold);transition:right .45s var(--ease-out-quart);
}
.nav-link:hover{color:var(--ink);}
.nav-link:hover::after{right:0;}
.nav-admin-link{
  font-size:11px;letter-spacing:.16em;color:var(--ink-3);
  border:1px solid var(--line);padding:9px 14px;border-radius:var(--r-sm);
  text-transform:uppercase;transition:all .3s var(--ease-out-quart);
}
.nav-admin-link:hover{color:var(--gold);border-color:var(--gold);}
.nav-toggle{
  display:none;background:transparent;border:1px solid var(--line);
  border-radius:var(--r-sm);color:var(--gold-hi);width:46px;height:46px;cursor:pointer;
}

/* =============================================================
   Botões — o ouro é superfície, o texto é escuro sobre ele
   ============================================================= */
.btn{
  font-weight:600;font-size:16px;letter-spacing:.03em;
  cursor:pointer;border:none;padding:17px 34px;border-radius:var(--r-sm);
  transition:transform .35s var(--ease-out-quart),background-position .5s var(--ease-out-quart),color .3s,border-color .3s;
  display:inline-flex;align-items:center;gap:11px;justify-content:center;
  min-height:52px;text-align:center;
}
.btn-gold{
  color:#1A0E09;
  background:linear-gradient(100deg,var(--gold-deep) 0%,var(--gold) 28%,var(--gold-hi) 50%,var(--gold) 72%,var(--gold-deep) 100%);
  background-size:230% 100%;
  background-position:88% center;
}
.btn-gold:hover,.btn-gold:focus-visible{background-position:12% center;transform:translateY(-2px);color:#1A0E09;}
.btn-lg{font-size:17px;padding:20px 40px;min-height:60px;}
.btn-outline{
  color:var(--ink);background:transparent;border:1px solid var(--line);
}
.btn-outline:hover{border-color:var(--gold);color:var(--gold-hi);}
.btn-ghost{
  background:transparent;border:1px solid var(--line);color:var(--ink-2);
  padding:14px 28px;font-size:15px;font-weight:500;border-radius:var(--r-sm);cursor:pointer;min-height:50px;
}
.btn-ghost:hover{border-color:var(--gold);color:var(--ink);}
.btn:disabled,.btn.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none;}
.btn-sm{padding:12px 22px;font-size:14px;min-height:44px;}
.btn-block{width:100%;}

/* =============================================================
   Contêineres
   ============================================================= */
.container{max-width:1400px;margin:0 auto;}
.container-narrow{max-width:720px;margin:0 auto;}
.container-form{max-width:780px;margin:0 auto;}
.container-confirm{max-width:640px;margin:0 auto;}
.container-admin{max-width:1240px;margin:0 auto;}
.pad-x{padding-left:clamp(20px,5vw,64px);padding-right:clamp(20px,5vw,64px);}

/* =============================================================
   HERO — o retrato sangra na página; a cor de fundo da foto
   é a mesma cor do documento, então não existe borda.
   ============================================================= */
.hero{
  position:relative;
  display:grid;
  grid-template-columns:1.02fr .98fr;
  align-items:center;
  gap:clamp(24px,4vw,60px);
  padding:clamp(48px,7vw,110px) clamp(20px,5vw,64px) clamp(56px,7vw,120px);
  max-width:1500px;margin:0 auto;
}
.hero::before{ /* fonte de luz quente atrás do retrato */
  content:'';position:absolute;top:-10%;right:-5%;
  width:min(760px,72vw);height:min(760px,72vw);
  background:radial-gradient(circle,rgba(212,175,55,.13),transparent 66%);
  pointer-events:none;z-index:0;
}
.hero-copy{position:relative;z-index:1;max-width:640px;}
.hero-lede{
  font-size:clamp(17px,1.5vw,20px);line-height:1.62;color:var(--ink-2);
  max-width:47ch;margin:28px 0 40px;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center;}
.hero-meta{
  margin:30px 0 0;font-size:15px;color:var(--ink-3);
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
}
.hero-meta a{color:var(--ink-2);border-bottom:1px solid var(--line);padding-bottom:1px;}
.hero-meta a:hover{color:var(--gold-hi);border-color:var(--gold);}
.hero-sep{color:var(--gold-deep);}

.hero-portrait{position:relative;margin:0;z-index:1;}
.hero-portrait img{
  width:100%;height:auto;border-radius:var(--r-md);
}
.hero-portrait::after{ /* dissolve a base da foto no fundo da página */
  content:'';position:absolute;inset:auto 0 -1px 0;height:26%;
  background:linear-gradient(to bottom,transparent,var(--ground));
  pointer-events:none;border-radius:0 0 var(--r-md) var(--r-md);
}
.hero-rule{ /* filete de ouro que corre pela borda do retrato */
  position:absolute;left:0;top:0;bottom:0;width:1px;
  background:linear-gradient(to bottom,transparent,var(--gold),transparent);
  transform-origin:top;
}
.hero-tag{
  position:absolute;left:0;bottom:11%;
  transform:translateX(-38%);
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r-sm);
  padding:15px 20px;
  max-width:250px;
  box-shadow:0 10px 24px rgba(0,0,0,.5);
}
.hero-tag-title{font-family:'Bodoni Moda',Georgia,serif;font-size:20px;color:var(--gold-hi);line-height:1.2;}
.hero-tag-sub{font-size:13px;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase;margin-top:6px;}

/* =============================================================
   RITUAL — sequência real de 3 passos (por isso numerada)
   ============================================================= */
.ritual{
  display:grid;grid-template-columns:.92fr 1.08fr;
  gap:clamp(30px,5vw,80px);align-items:center;
  padding:clamp(56px,8vw,120px) clamp(20px,5vw,64px);
  max-width:1400px;margin:0 auto;
}
.ritual-media{margin:0;position:relative;}
.ritual-media img{width:100%;height:auto;border-radius:var(--r-md);}
.ritual-media figcaption{
  margin-top:14px;font-size:14px;color:var(--ink-3);
}
.ritual-copy h2{margin-bottom:14px;}
.ritual-intro{color:var(--ink-2);font-size:18px;max-width:46ch;margin:0 0 40px;}
.steps{list-style:none;margin:0;padding:0;counter-reset:step;}
.step{
  display:grid;grid-template-columns:auto 1fr;gap:22px;
  padding:26px 0;border-top:1px solid var(--line-soft);
}
.step:last-child{border-bottom:1px solid var(--line-soft);}
.step-num{
  font-family:'Bodoni Moda',Georgia,serif;
  font-size:28px;color:var(--gold);line-height:1;
  font-variant-numeric:lining-nums;min-width:1.6em;
}
.step h3{margin:0 0 7px;color:var(--ink);}
.step p{margin:0;color:var(--ink-2);font-size:16.5px;line-height:1.6;max-width:52ch;}

/* =============================================================
   SERVIÇOS — lista tipográfica, não grade de cards idênticos
   ============================================================= */
.servicos{padding:clamp(40px,6vw,90px) clamp(20px,5vw,64px) clamp(56px,8vw,110px);max-width:1180px;margin:0 auto;}
.servicos-head{
  display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:20px;margin-bottom:44px;
}
.servicos-head p{margin:0;color:var(--ink-2);max-width:38ch;font-size:17px;}
.svc-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft);}
.svc-row{position:relative;border-bottom:1px solid var(--line-soft);}
.svc-row::after{ /* filete de ouro que se desenha no hover */
  content:'';position:absolute;left:0;right:100%;bottom:-1px;height:1px;
  background:var(--gold);transition:right .6s var(--ease-out-quart);pointer-events:none;
}
.svc-row:hover::after,.svc-row:focus-within::after{right:0;}
.svc-link{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(16px,2.5vw,32px);
  padding:26px 4px;color:inherit;
  transition:transform .5s var(--ease-out-quart);
}
.svc-link:hover,.svc-link:focus-visible{color:inherit;transform:translateX(14px);}
.svc-icon{
  width:46px;height:46px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:var(--r-sm);flex-shrink:0;
  transition:border-color .4s var(--ease-out-quart),background .4s var(--ease-out-quart);
}
.svc-link:hover .svc-icon{border-color:var(--gold);background:rgba(212,175,55,.09);}
.svc-title{font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(21px,2.2vw,28px);color:var(--ink);line-height:1.22;margin:0;}
.svc-desc{margin:5px 0 0;font-size:16px;color:var(--ink-3);max-width:52ch;line-height:1.55;}
.svc-meta{display:flex;align-items:center;gap:16px;flex-shrink:0;color:var(--ink-3);font-size:15px;white-space:nowrap;}
.svc-arrow{color:var(--gold);transition:transform .5s var(--ease-out-quart);}
.svc-link:hover .svc-arrow{transform:translateX(7px);}

/* =============================================================
   FECHAMENTO — banda de ouro fundido, uma única ação
   ============================================================= */
.closing{position:relative;overflow:hidden;isolation:isolate;margin-top:clamp(20px,4vw,50px);}
.closing-bg{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  z-index:-2;
}
.closing::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to bottom,var(--ground) 0%,rgba(18,8,6,.87) 42%,rgba(18,8,6,.93) 100%);
}
.closing-inner{
  text-align:center;max-width:660px;margin:0 auto;
  padding:clamp(70px,11vw,150px) clamp(20px,5vw,64px);
}
.closing p{color:var(--ink-2);font-size:18px;margin:20px auto 38px;max-width:44ch;}

/* =============================================================
   Cabeçalho de etapa (agendamento)
   ============================================================= */
.step-wrap{padding:clamp(38px,6vw,72px) clamp(20px,5vw,64px) 96px;}
.step-head{text-align:center;margin-bottom:38px;}
.step-eyebrow{font-size:13px;letter-spacing:.24em;color:var(--gold);margin-bottom:16px;text-transform:uppercase;}
.step-head h2{font-family:'Bodoni Moda',Georgia,serif;font-weight:500;font-size:clamp(31px,4.2vw,52px);margin:0 0 10px;color:var(--ink);line-height:1.08;letter-spacing:-.02em;}
.step-head p{color:var(--ink-2);font-size:17px;margin:0;}
.step-sub{color:var(--ink-2);font-size:16px;}
.step-sub .accent{color:var(--gold);}
.step-nav{display:flex;justify-content:space-between;margin-top:30px;gap:14px;flex-wrap:wrap;}
.step-nav.end{justify-content:flex-start;}

/* ---------- Grade de serviços (agendamento) ---------- */
.services-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;}
.service-card{
  display:flex;flex-direction:column;padding:28px 26px;border-radius:var(--r-md);
  background:var(--surface);border:1px solid var(--line-soft);
  transition:border-color .35s var(--ease-out-quart),transform .35s var(--ease-out-quart);text-align:left;
}
.service-card:hover{border-color:var(--line);transform:translateY(-3px);}
.service-card.selected{border-color:var(--gold);background:var(--surface-2);}
.service-icon{
  width:52px;height:52px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;
  background:rgba(212,175,55,.09);border:1px solid var(--line);margin-bottom:18px;
}
.service-card h3{font-family:'Bodoni Moda',Georgia,serif;font-size:25px;margin:0 0 8px;color:var(--ink);line-height:1.2;}
.service-card p{font-size:16px;line-height:1.55;color:var(--ink-2);margin:0 0 22px;min-height:44px;}
.service-select-btn{
  margin-top:auto;font-weight:600;font-size:15px;cursor:pointer;padding:14px;border-radius:var(--r-sm);
  transition:all .3s var(--ease-out-quart);color:var(--ink);background:transparent;border:1px solid var(--line);min-height:48px;
}
.service-select-btn:hover{border-color:var(--gold);color:var(--gold-hi);}
.service-select-btn.selected{
  color:#1A0E09;border:1px solid transparent;
  background:linear-gradient(100deg,var(--gold-deep),var(--gold) 40%,var(--gold-hi) 55%,var(--gold) 70%,var(--gold-deep));
}

/* ---------- Modalidade: showroom x externo ---------- */
.mode-tag{
  display:inline-flex;align-items:center;gap:6px;
  font-size:13px;letter-spacing:.02em;white-space:nowrap;
}
.mode-tag::before{
  content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;
}
.mode-showroom{color:var(--gold);}
.mode-externo{color:var(--ok);}
.service-mode{
  display:inline-flex;align-items:center;gap:7px;
  font-size:13.5px;margin:0 0 18px;color:var(--ink-3);
}
.service-mode::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;}
.service-mode.mode-showroom{color:var(--gold);}
.service-mode.mode-externo{color:var(--ok);}
.field-hint{display:block;margin-top:8px;font-size:14px;color:var(--ink-3);line-height:1.45;}
.cell-sub{font-size:13px;color:var(--ink-3);margin-top:4px;}
.cell-wrap{max-width:240px;white-space:normal;}

/* ---------- Agenda fechada ---------- */
.mode-fechado{color:var(--warn);}
.closed-wrap{
  padding:clamp(60px,9vw,120px) clamp(20px,5vw,64px) clamp(70px,9vw,120px);
  text-align:center;
}
.closed-mark{
  width:76px;height:76px;margin:0 auto 30px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);color:var(--gold);
}
.closed-wrap h1{font-size:clamp(32px,4.4vw,54px);margin:0 0 18px;}
.closed-message{
  color:var(--ink-2);font-size:18px;line-height:1.65;
  max-width:46ch;margin:0 auto 40px;
}
.closed-actions{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;}
/* Lista informativa: sem seta, sem deslocar, sem filete de hover. */
.svc-list.is-static .svc-link{cursor:default;}
.svc-list.is-static .svc-link:hover{transform:none;}
.svc-list.is-static .svc-row:hover::after{right:100%;}
.svc-list.is-static .svc-link:hover .svc-icon{border-color:var(--line);background:none;}

/* Chave geral da agenda, no painel */
.agenda-switch{border-color:var(--line);}
.switch-label{color:var(--ink);font-size:17px;}
.switch-help{color:var(--ink-3);font-size:14px;line-height:1.5;margin-top:5px;max-width:46ch;}

/* ---------- Painel ---------- */
.panel,.panel-form{
  padding:clamp(24px,4vw,38px);border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--line-soft);
}

/* ---------- Calendário ---------- */
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;}
.cal-month{font-family:'Bodoni Moda',Georgia,serif;font-size:27px;color:var(--ink);}
.cal-arrows{display:flex;gap:8px;}
.cal-arrow{
  width:44px;height:44px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);color:var(--ink-2);background:transparent;cursor:pointer;font-size:17px;
  transition:all .3s var(--ease-out-quart);
}
.cal-arrow:hover:not(:disabled){border-color:var(--gold);color:var(--gold);}
.cal-arrow:disabled{opacity:.3;cursor:not-allowed;}
.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:8px;}
.cal-weekday{text-align:center;font-size:13px;letter-spacing:.08em;color:var(--ink-3);padding:6px 0;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;}
.cal-cell{
  aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);
  font-size:16px;transition:all .28s var(--ease-out-quart);background:none;border:none;color:var(--ink-3);
}
.cal-cell.empty{visibility:hidden;}
.cal-cell.available{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:rgba(212,175,55,.04);}
.cal-cell.available:hover{border-color:var(--gold);background:rgba(212,175,55,.12);}
.cal-cell.unavailable{background:rgba(247,239,227,.04);text-decoration:line-through;cursor:not-allowed;color:var(--ink-3);}
.cal-cell.selected{
  background:linear-gradient(100deg,var(--gold-deep),var(--gold) 45%,var(--gold-hi) 60%,var(--gold-deep));
  color:#1A0E09;font-weight:700;cursor:pointer;
}
.cal-legend{
  display:flex;flex-wrap:wrap;gap:20px;margin-top:26px;padding-top:22px;
  border-top:1px solid var(--line-soft);font-size:14px;color:var(--ink-2);
}
.cal-legend-item{display:flex;align-items:center;gap:8px;}
.legend-swatch{width:15px;height:15px;border-radius:var(--r-sm);display:inline-block;}
.legend-available{border:1px solid var(--gold);}
.legend-selected{background:var(--gold);}
.legend-unavailable{background:rgba(247,239,227,.1);}
.step-caption{text-align:center;color:var(--ink-2);font-family:'Bodoni Moda',Georgia,serif;font-style:italic;font-size:21px;margin:30px 0 0;}

/* ---------- Horários ---------- */
.time-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:14px;}
.time-slot{
  padding:16px 10px;border-radius:var(--r-sm);font-size:16px;font-weight:500;
  transition:all .28s var(--ease-out-quart);border:1px solid var(--line);
  background:rgba(212,175,55,.05);color:var(--ink);cursor:pointer;min-height:48px;
}
.time-slot:hover{border-color:var(--gold);background:rgba(212,175,55,.13);}
.time-slot.selected{
  border-color:transparent;color:#1A0E09;font-weight:700;
  background:linear-gradient(100deg,var(--gold-deep),var(--gold) 45%,var(--gold-hi) 60%,var(--gold-deep));
}
.time-slot.busy{border:1px solid rgba(247,239,227,.1);background:rgba(247,239,227,.04);color:var(--ink-3);cursor:not-allowed;text-decoration:line-through;}
.time-empty{color:var(--ink-2);font-size:16px;text-align:center;padding:24px 0;}

/* ---------- Formulários ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.field{display:block;}
.field.full{grid-column:1/-1;}
.field-label{display:block;font-size:14px;letter-spacing:.04em;color:var(--ink-2);margin-bottom:9px;}
.field-input,.input{
  width:100%;padding:15px 16px;border-radius:var(--r-sm);background:var(--ground-deep);
  border:1px solid var(--line);color:var(--ink);font-size:16px;min-height:52px;
}
textarea.field-input{resize:vertical;min-height:110px;}
.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:26px;padding-top:26px;border-top:1px solid var(--line-soft);}
.summary-label{font-size:13px;letter-spacing:.08em;color:var(--ink-3);margin-bottom:7px;text-transform:uppercase;}
.summary-value{color:var(--ink);font-size:16px;}
.form-note{text-align:center;font-size:14px;color:var(--ink-3);margin:16px 0 0;}
.form-error{background:rgba(238,154,154,.1);border:1px solid rgba(238,154,154,.4);color:#F5C4C4;padding:15px 18px;border-radius:var(--r-sm);font-size:15px;margin-bottom:22px;}

/* ---------- Confirmação ---------- */
.confirm-wrap{padding:clamp(52px,8vw,96px) clamp(20px,5vw,64px) 96px;text-align:center;}
.confirm-check{
  width:92px;height:92px;margin:0 auto 32px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--gold-deep),var(--gold) 45%,var(--gold-hi) 62%,var(--gold-deep));
}
.confirm-wrap h2{font-family:'Bodoni Moda',Georgia,serif;font-weight:500;font-size:clamp(32px,4.6vw,54px);margin:0 0 16px;color:var(--ink);line-height:1.06;letter-spacing:-.02em;}
.confirm-wrap>p{color:var(--ink-2);font-size:17px;line-height:1.65;margin:0 auto 42px;max-width:48ch;}
.confirm-summary{
  text-align:left;padding:30px clamp(20px,4vw,34px);border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--line-soft);
}
.confirm-summary-title{font-family:'Bodoni Moda',Georgia,serif;font-size:24px;color:var(--ink);margin-bottom:20px;}
.confirm-row{display:flex;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--line-soft);}
.confirm-row:last-child{border-bottom:none;}
.confirm-row span:first-child{color:var(--ink-3);font-size:15px;}
.confirm-row span:last-child{color:var(--ink);font-size:15px;text-align:right;}
.confirm-actions{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:34px;}
.wa-btn{
  display:inline-flex;align-items:center;gap:11px;font-weight:600;font-size:15px;color:#1A0E09;
  padding:16px 30px;border-radius:var(--r-sm);min-height:52px;
  background:linear-gradient(100deg,var(--gold-deep),var(--gold) 40%,var(--gold-hi) 55%,var(--gold) 70%,var(--gold-deep));
  background-size:230% 100%;background-position:88% center;
  transition:background-position .5s var(--ease-out-quart),transform .35s var(--ease-out-quart);
}
.wa-btn:hover{background-position:12% center;transform:translateY(-2px);color:#1A0E09;}

/* ---------- Rodapé ---------- */
.site-footer{
  border-top:1px solid var(--line-soft);padding:38px clamp(20px,5vw,64px);
  display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;
  color:var(--ink-3);font-size:14px;
}
.site-footer .brand-name-sm{font-family:'Bodoni Moda',Georgia,serif;letter-spacing:.22em;color:var(--ink-2);font-size:15px;}

/* =============================================================
   ADMIN
   ============================================================= */
.admin-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh;}
.admin-sidebar{
  border-right:1px solid var(--line-soft);padding:26px 18px;display:flex;flex-direction:column;gap:6px;
  background:var(--surface);position:sticky;top:0;height:100vh;
}
.admin-brand{display:flex;flex-direction:column;line-height:1;padding:6px 10px 24px;}
.admin-brand-name{font-family:'Bodoni Moda',Georgia,serif;font-weight:600;font-size:18px;letter-spacing:.26em;color:var(--gold-hi);}
.admin-brand-sub{font-size:10px;letter-spacing:.32em;color:var(--ink-3);margin-top:6px;text-transform:uppercase;}
.admin-menu-btn{
  text-align:left;background:transparent;border:none;cursor:pointer;font-size:15px;
  padding:13px 15px;border-radius:var(--r-sm);transition:all .25s var(--ease-out-quart);
  color:var(--ink-2);text-decoration:none;display:block;
}
.admin-menu-btn:hover{color:var(--ink);background:rgba(212,175,55,.07);}
.admin-menu-btn.active{background:rgba(212,175,55,.14);color:var(--gold-hi);font-weight:600;}
.admin-spacer{flex:1;}
.admin-logout{
  text-align:left;background:transparent;border:1px solid var(--line-soft);color:var(--ink-2);
  padding:13px 15px;border-radius:var(--r-sm);cursor:pointer;font-size:15px;text-decoration:none;display:block;
}
.admin-logout:hover{border-color:var(--gold);color:var(--ink);}
.admin-main{padding:clamp(24px,3vw,44px);overflow:auto;}
.admin-header{margin-bottom:32px;}
.admin-header h1{font-family:'Bodoni Moda',Georgia,serif;font-weight:500;font-size:clamp(30px,3.4vw,42px);margin:0 0 6px;color:var(--ink);letter-spacing:-.02em;}
.admin-header p{color:var(--ink-2);margin:0;font-size:16px;}
.admin-nav-toggle{display:none;}

.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:32px;}
.stat-card{padding:24px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);}
.stat-label{font-size:14px;color:var(--ink-3);margin-bottom:14px;}
.stat-value{font-family:'Bodoni Moda',Georgia,serif;font-size:40px;line-height:1;color:var(--gold-hi);}

.table-panel{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);overflow:hidden;}
.table-panel-head{padding:22px 24px;font-family:'Bodoni Moda',Georgia,serif;font-size:25px;color:var(--ink);border-bottom:1px solid var(--line-soft);}
.table-scroll{overflow-x:auto;}
table.data-table{width:100%;border-collapse:collapse;min-width:640px;}
table.data-table thead th{text-align:left;padding:15px 20px;font-size:12.5px;letter-spacing:.09em;font-weight:600;color:var(--ink-3);text-transform:uppercase;white-space:nowrap;}
table.data-table tbody tr{border-top:1px solid var(--line-soft);}
table.data-table tbody td{padding:15px 20px;font-size:15px;color:var(--ink);white-space:nowrap;}

.badge{display:inline-block;font-size:13px;padding:6px 13px;border-radius:var(--r-sm);white-space:nowrap;border:1px solid;}
.badge-pending{color:var(--warn);background:rgba(233,188,94,.12);border-color:rgba(233,188,94,.42);}
.badge-confirmed{color:var(--gold-hi);background:rgba(212,175,55,.14);border-color:rgba(212,175,55,.48);}
.badge-completed{color:var(--ok);background:rgba(143,217,172,.12);border-color:rgba(143,217,172,.42);}
.badge-cancelled{color:var(--danger);background:rgba(238,154,154,.12);border-color:rgba(238,154,154,.42);}
.badge-active{color:var(--ok);border:1px solid rgba(143,217,172,.42);padding:6px 12px;border-radius:var(--r-sm);font-size:12.5px;}
.badge-inactive{color:var(--ink-3);border:1px solid var(--line-soft);padding:6px 12px;border-radius:var(--r-sm);font-size:12.5px;}

.action-btn{font-size:13px;cursor:pointer;padding:8px 12px;border-radius:var(--r-sm);transition:all .25s var(--ease-out-quart);background:transparent;border:1px solid;text-decoration:none;display:inline-block;min-height:36px;}
.action-confirm{border-color:rgba(212,175,55,.45);color:var(--gold-hi);}
.action-complete{border-color:rgba(143,217,172,.45);color:var(--ok);}
.action-cancel{border-color:rgba(233,188,94,.45);color:var(--warn);}
.action-edit{border-color:var(--line-soft);color:var(--ink-2);}
.action-delete{border-color:rgba(238,154,154,.45);color:var(--danger);}
.action-btn:hover{filter:brightness(1.25);}
.actions-cell{display:flex;gap:7px;flex-wrap:wrap;}
.actions-cell form{margin:0;}

.filters-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px;}
.filters-row .input,.filters-row select{padding:12px 16px;border-radius:var(--r-sm);background:var(--ground-deep);border:1px solid var(--line);color:var(--ink);font-size:15px;min-width:170px;min-height:46px;}

.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;}
.services-admin-card{padding:24px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);}
.services-admin-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.services-admin-icon{width:44px;height:44px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;background:rgba(212,175,55,.09);border:1px solid var(--line);}
.services-admin-card h3{font-family:'Bodoni Moda',Georgia,serif;font-size:23px;margin:0 0 7px;color:var(--ink);}
.services-admin-card p{font-size:15px;line-height:1.55;color:var(--ink-2);margin:0 0 4px;}
.services-admin-card .meta{font-size:13.5px;color:var(--ink-3);margin-top:10px;}
.services-admin-card .card-actions{display:flex;gap:8px;margin-top:16px;}

.day-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:20px 22px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);transition:border-color .3s var(--ease-out-quart);margin-bottom:12px;}
.day-row.active{border-color:var(--line);}
.day-left{display:flex;align-items:center;gap:16px;min-width:210px;}
.day-name{font-family:'Bodoni Moda',Georgia,serif;font-size:21px;color:var(--ink);}
.day-status{font-size:13px;color:var(--ink-3);}
.day-status.on{color:var(--gold);}
.day-ranges{display:flex;flex-direction:column;gap:10px;opacity:.4;pointer-events:none;}
.day-ranges.on{opacity:1;pointer-events:auto;}
.day-range-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.day-range-row .input{width:112px;padding:10px;border-radius:var(--r-sm);font-size:15px;text-align:center;min-height:44px;}
.day-range-row select{padding:10px 12px;border-radius:var(--r-sm);background:var(--ground-deep);border:1px solid var(--line);color:var(--ink);font-size:15px;min-height:44px;}
.range-remove{background:transparent;border:1px solid rgba(238,154,154,.42);color:var(--danger);border-radius:var(--r-sm);width:38px;height:38px;cursor:pointer;}
.range-add{background:transparent;border:1px dashed var(--line);color:var(--gold);border-radius:var(--r-sm);padding:10px 16px;font-size:14px;cursor:pointer;min-height:42px;}

.switch{width:50px;height:28px;border-radius:999px;border:none;cursor:pointer;padding:3px;display:flex;transition:all .3s var(--ease-out-quart);background:rgba(247,239,227,.16);justify-content:flex-start;}
.switch.on{background:var(--gold);justify-content:flex-end;}
.switch-knob{width:22px;height:22px;border-radius:50%;background:var(--ground-deep);display:block;}

.blocks-layout{display:grid;grid-template-columns:340px 1fr;gap:24px;align-items:start;}
.block-form{padding:24px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);}
.block-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 22px;border-top:1px solid var(--line-soft);}
.block-item-left{display:flex;align-items:center;gap:14px;}
.block-icon{width:40px;height:40px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;background:rgba(212,175,55,.09);border:1px solid var(--line);color:var(--gold);}
.block-date{color:var(--ink);font-size:16px;}
.block-reason{font-size:13.5px;color:var(--ink-3);}
.btn-danger-outline{background:transparent;border:1px solid rgba(238,154,154,.4);color:var(--danger);padding:10px 16px;border-radius:var(--r-sm);cursor:pointer;font-size:13.5px;min-height:42px;}
.btn-danger-outline:hover{background:rgba(238,154,154,.12);}

.settings-card{padding:26px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);margin-bottom:20px;}
.settings-card-title{font-family:'Bodoni Moda',Georgia,serif;font-size:23px;color:var(--ink);margin-bottom:20px;}
.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line-soft);}
.settings-toggle-row:last-child{border-bottom:none;}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.settings-grid .field-label{color:var(--ink-2);font-size:14px;margin-bottom:8px;}
.settings-grid .field-input{padding:13px 15px;border-radius:var(--r-sm);font-size:15px;}

.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.login-card{width:100%;max-width:420px;padding:clamp(30px,5vw,44px);border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-soft);}
.login-brand{text-align:center;margin-bottom:32px;}
.login-brand .brand-name{font-size:25px;}
.login-brand .brand-sub{margin-top:9px;}
.flash-error{background:rgba(238,154,154,.1);border:1px solid rgba(238,154,154,.4);color:#F5C4C4;padding:13px 16px;border-radius:var(--r-sm);font-size:15px;margin-bottom:20px;text-align:center;}
.flash-ok{background:rgba(143,217,172,.1);border:1px solid rgba(143,217,172,.4);color:#C3EFD4;padding:13px 16px;border-radius:var(--r-sm);font-size:15px;margin-bottom:20px;text-align:center;}

/* =============================================================
   MOVIMENTO
   O conteúdo é visível por padrão. As classes .motion-* só
   entram quando o JS confirma que pode animar — sem JS, sem
   tab escondida e sem leitor headless, nada fica em branco.
   ============================================================= */
/* Momento focal: a luz raspa o metal e as letras acendem.
   É como se lê ouro polido — movendo a luz sobre ele — e é a mesma luz
   lateral que esculpe o retrato ao lado. Não é um fade-and-rise genérico:
   cada letra passa por um pico de brilho ao assentar. */
@keyframes strike{
  0%  {opacity:0;transform:translateY(.3em);color:#3E2C18;}
  55% {opacity:1;color:var(--gold-hi);}
  100%{opacity:1;transform:none;color:var(--ink);}
}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(7px);}}
@keyframes bobSuave{0%,100%{transform:translateY(0);}50%{transform:translateY(6px);}}
@keyframes riseIn{from{opacity:0;transform:translateY(26px);}to{opacity:1;transform:none;}}
@keyframes fadeOnly{from{opacity:0;}to{opacity:1;}}
@keyframes goldSweep{
  0%{transform:translateY(-60%) scaleY(.6);opacity:0;}
  22%{opacity:.85;}
  100%{transform:translateY(160%) scaleY(1.4);opacity:0;}
}
@keyframes ruleGrow{from{transform:scaleY(0);}to{transform:scaleY(1);}}

/* Gravação do título, letra a letra */
.engrave-line{display:block;}
.engrave .word{display:inline-block;white-space:nowrap;}
.engrave .ch{display:inline-block;}

/* Em longhand de propósito: o atalho `animation` com var() dentro vira
   valor pendente de substituição e zera animation-delay, que aqui é
   justamente o que faz o escalonamento letra a letra. */
html.motion .engrave .ch{
  animation-name:strike;
  animation-duration:.78s;
  animation-timing-function:cubic-bezier(.16,1,.3,1);
  animation-fill-mode:both;
  animation-delay:calc(var(--i) * 21ms + 60ms);
}

html.motion .hero-lede{animation:riseIn .9s var(--ease-out-quart) .74s both;}
html.motion .hero-actions{animation:riseIn .9s var(--ease-out-quart) .86s both;}
html.motion .hero-meta{animation:riseIn .9s var(--ease-out-quart) .96s both;}
html.motion .scroll-cue{animation:riseIn .9s var(--ease-out-quart) 1.15s both;}
html.motion .hero-portrait{animation:fadeOnly 1.4s var(--ease-out-quart) both;}
html.motion .hero-rule{animation:ruleGrow 1.3s var(--ease-out-expo) .3s both;}
html.motion .hero-tag{animation:riseIn 1s var(--ease-out-quart) .9s both;}

/* Varredura de luz sobre o retrato — acontece uma vez, não em loop */
html.motion .hero-portrait::before{
  content:'';position:absolute;inset:0;z-index:2;pointer-events:none;
  border-radius:var(--r-md);
  background:linear-gradient(to bottom,transparent,rgba(240,220,168,.16) 45%,rgba(240,220,168,.03) 60%,transparent);
  animation:goldSweep 2.6s var(--ease-out-quart) .5s 1 both;
}

/* Revelações no scroll. O estado escondido só existe sob html.motion,
   que por sua vez só é aplicado quando a página está visível — ver o
   script no <head>. Sem isso, nada é escondido e nada pode sumir. */
html.motion .reveal{opacity:0;}
html.motion .reveal.in{
  animation-name:riseIn;
  animation-duration:.95s;
  animation-timing-function:cubic-bezier(.25,1,.5,1);
  animation-fill-mode:both;
}
html.motion .reveal.in:nth-child(2){animation-delay:.09s;}
html.motion .reveal.in:nth-child(3){animation-delay:.18s;}
html.motion .reveal.in:nth-child(4){animation-delay:.27s;}
html.motion .reveal.in:nth-child(5){animation-delay:.36s;}
html.motion .reveal.in:nth-child(6){animation-delay:.45s;}

/* Paralaxe do retrato (a variável é escrita pelo JS) */
.hero-portrait img{will-change:transform;transform:translate3d(0,var(--par,0px),0);}

/* ---------- Seta de "tem mais abaixo" ----------
   Vai-e-vem discreto, e some assim que a pessoa rola: cumprida a função,
   o laço para. Nenhuma animação infinita fica pedindo atenção. */
.scroll-cue{
  grid-column:1 / -1;justify-self:center;
  display:inline-flex;flex-direction:column;align-items:center;gap:10px;
  margin-top:clamp(28px,4vw,54px);padding:10px 18px;
  color:var(--ink-3);font-size:13px;letter-spacing:.18em;text-transform:uppercase;
  transition:opacity .5s var(--ease-out-quart),color .3s,transform .5s var(--ease-out-quart);
  position:relative;z-index:1;
}
.scroll-cue:hover{color:var(--gold-hi);}
.scroll-cue-arrow{color:var(--gold);}
.scroll-cue.is-gone{opacity:0;pointer-events:none;transform:translateY(10px);}
html.motion .scroll-cue-arrow{animation:bob 2.5s ease-in-out infinite;}
html.motion .scroll-cue.is-gone .scroll-cue-arrow{animation-play-state:paused;}

/* Movimento reduzido: some o deslocamento espacial, fica a mudança de
   estado. O hover de botão e o filete dos serviços continuam respondendo
   — feedback não é enfeite. */
@media (prefers-reduced-motion:reduce){
  /* Movimento reduzido é menos movimento, não página morta. Some todo
     deslocamento espacial — nada sobe, desliza, oscila ou escalona — e
     fica só um clarear curto. O laço da seta para de vez: oscilação
     contínua é exatamente o que incomoda quem liga esta preferência. */
  html.motion .hero-lede,
  html.motion .hero-actions,
  html.motion .hero-meta,
  html.motion .hero-tag,
  html.motion .reveal.in{
    animation-name:fadeOnly;
    animation-duration:.35s;
    animation-timing-function:linear;
    animation-delay:0s;
    animation-fill-mode:both;
    transform:none;
  }
  html.motion .engrave .ch{
    animation-name:fadeOnly;
    animation-duration:.4s;
    animation-delay:0s;
    animation-fill-mode:both;
    transform:none;
    color:var(--ink);
  }
  html.motion .hero-rule,
  html.motion .scroll-cue,
  html.motion .scroll-cue,
  html.motion .scroll-cue-arrow{opacity:1;}
  html.motion .scroll-cue{animation:none;transform:none;}
  html.motion .scroll-cue-arrow{animation:bobSuave 3.2s ease-in-out infinite;}
  html.motion .hero-portrait::before{display:none;}
  .hero-portrait img{transform:none !important;}
  .svc-link:hover,.svc-link:focus-visible{transform:none;}
  html{scroll-behavior:auto;}
  /* O feedback continua: hover de botão, foco e o filete dos serviços
     seguem respondendo, só que rápido. Confirmar uma ação não é enfeite. */
  *,*::before,*::after{transition-duration:.12s !important;}
}
html{scroll-behavior:smooth;}

/* =============================================================
   RESPONSIVO
   ============================================================= */
@media (max-width:1080px){
  .hero{grid-template-columns:1fr;gap:44px;}
  .hero-copy{max-width:none;}
  .hero-portrait{max-width:520px;}
  .hero-tag{transform:none;left:auto;right:16px;bottom:8%;}
  .ritual{grid-template-columns:1fr;gap:40px;}
  .ritual-media{max-width:560px;}
}
@media (max-width:900px){
  .form-grid{grid-template-columns:1fr;}
  .summary-grid{grid-template-columns:1fr;}
  .settings-grid{grid-template-columns:1fr;}
  .blocks-layout{grid-template-columns:1fr;}
  .admin-shell{grid-template-columns:1fr;}
  .admin-sidebar{position:relative;height:auto;flex-direction:row;flex-wrap:wrap;top:auto;}
  .admin-brand{display:none;}
  .admin-spacer{display:none;}
  .svc-link{grid-template-columns:auto 1fr;row-gap:12px;}
  .svc-meta{grid-column:2;justify-content:flex-start;}
}
@media (max-width:720px){
  body{font-size:16.5px;}
  .site-nav{
    position:fixed;top:70px;left:0;right:0;z-index:var(--z-nav);
    background:var(--ground);flex-direction:column;align-items:flex-start;
    padding:24px clamp(20px,5vw,64px);gap:20px;
    border-bottom:1px solid var(--line);
    transform:translateY(-130%);opacity:0;visibility:hidden;
    transition:transform .45s var(--ease-out-expo),opacity .35s,visibility .35s;
  }
  .site-nav.open{transform:translateY(0);opacity:1;visibility:visible;}
  .nav-toggle{display:flex;align-items:center;justify-content:center;}
  /* alvos de toque de 44px no menu aberto */
  .nav-link{padding:12px 0;font-size:16px;}
  .nav-admin-link{padding:13px 16px;}
  .hero-tag{position:relative;right:auto;bottom:auto;margin-top:18px;max-width:none;}
  .hero-portrait::after{display:none;}
  .btn,.btn-lg{width:100%;}
  .hero-actions{width:100%;}
  .confirm-row{flex-direction:column;gap:4px;}
  .confirm-row span:last-child{text-align:left;}
}

/* ---------- Painel: editor de banners e conteúdo ---------- */
.bn-flags{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:10px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line-soft);
}
.bn-flag{
  display:flex;align-items:center;gap:11px;cursor:pointer;
  padding:11px 13px;border:1px solid var(--line-soft);border-radius:var(--r-sm);
  color:var(--ink-2);font-size:15px;min-height:46px;
  transition:border-color .25s var(--ease-out-quart),color .25s;
}
.bn-flag:hover{border-color:var(--line);color:var(--ink);}
.bn-flag input{width:18px;height:18px;accent-color:var(--gold);flex-shrink:0;}
.bn-flag:has(input:checked){border-color:var(--line);color:var(--ink);}

.bn-upload{
  display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;
  padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line-soft);
}
.bn-upload .field{flex:1;min-width:260px;}

.bn-slide-edit{
  display:grid;grid-template-columns:200px 1fr;gap:22px;align-items:start;
  padding:22px 0;border-bottom:1px solid var(--line-soft);
}
.bn-slide-edit:last-child{border-bottom:none;}
.bn-thumb{
  width:100%;aspect-ratio:16/10;object-fit:cover;
  border-radius:var(--r-sm);border:1px solid var(--line-soft);
}
.bn-slide-form{min-width:0;}

.ctn-field{padding:16px 0;border-bottom:1px solid var(--line-soft);}
.ctn-field:last-of-type{border-bottom:none;}
.ctn-edited{
  display:inline-block;margin-left:9px;padding:2px 8px;border-radius:999px;
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--gold);border:1px solid var(--line);
}

@media (max-width:820px){
  .bn-slide-edit{grid-template-columns:1fr;}
  .bn-thumb{max-width:280px;}
}

/* ---------- Página de erro ---------- */
.erro-wrap{
  padding:clamp(60px,10vw,130px) clamp(20px,5vw,64px) clamp(70px,10vw,130px);
  text-align:center;
}
.erro-code{
  font-family:'Bodoni Moda',Georgia,serif;
  font-size:clamp(84px,15vw,190px);
  line-height:.85;
  color:var(--gold-deep);
  letter-spacing:-.03em;
  margin-bottom:18px;
  /* Decorativo: é o título que carrega o significado, não o número. */
  user-select:none;
}
.erro-wrap h1{font-size:clamp(30px,4.2vw,50px);margin:0 0 18px;}
.erro-text{
  color:var(--ink-2);font-size:18px;line-height:1.65;
  max-width:46ch;margin:0 auto 40px;
}
.erro-actions{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;}
.erro-help{
  margin:44px auto 0;max-width:44ch;
  font-size:15px;color:var(--ink-3);line-height:1.6;
}

/* =============================================================
   CARDS EM ESTEIRA
   A faixa desliza em laço linear. Com a fila duplicada no HTML,
   deslocar -50% devolve a faixa exatamente ao ponto de partida —
   por isso o laço não tem emenda visível.
   ============================================================= */
.cd{
  margin:clamp(40px,6vw,80px) 0;
  --cd-visiveis:3; --cd-seg:30s; --cd-gap:20px;
}
.cd-head{max-width:1180px;margin:0 auto clamp(24px,3vw,40px);}
.cd-head h2{margin:0 0 12px;}
.cd-head p{margin:0;color:var(--ink-2);max-width:52ch;font-size:17px;}

.cd-viewport{overflow:hidden;padding:6px 0 10px;}
.cd-track{
  display:flex;
  gap:var(--cd-gap);
  padding-inline:clamp(20px,5vw,64px);
  width:max-content;
}

.cd-card{
  flex:0 0 auto;
  /* Largura calculada a partir de quantos devem caber na tela, já
     descontando os vãos entre eles. */
  width:calc((min(100vw,1400px) - (clamp(20px,5vw,64px) * 2) - (var(--cd-gap) * (var(--cd-visiveis) - 1))) / var(--cd-visiveis));
  color:inherit;text-decoration:none;
  transition:transform .45s var(--ease-out-quart), filter .45s var(--ease-out-quart);
}
.cd-media{
  overflow:hidden;border-radius:var(--r-md);
  border:1px solid var(--line-soft);background:var(--surface);
}
.cd-media img{width:100%;height:100%;object-fit:cover;display:block;}
.cd-shape-quadrado .cd-media{aspect-ratio:1;}
.cd-shape-retrato  .cd-media{aspect-ratio:4/5;}
.cd-shape-paisagem .cd-media{aspect-ratio:16/9;}

.cd-caption{display:flex;flex-direction:column;gap:5px;padding:14px 2px 0;}
.cd-title{font-family:'Bodoni Moda',Georgia,serif;font-size:20px;line-height:1.2;color:var(--ink);}
.cd-desc{font-size:15.5px;line-height:1.55;color:var(--ink-3);}
.cd-sem-legenda .cd-caption{display:none;}

/* ---- Esteira ---- */
@keyframes cdMarquee{
  from{transform:translate3d(0,0,0);}
  to{transform:translate3d(-50%,0,0);}
}
.cd-anima .cd-track{
  animation-name:cdMarquee;
  animation-duration:var(--cd-seg);
  animation-timing-function:linear;
  animation-iteration-count:infinite;
  will-change:transform;
}
/* Da esquerda para a direita: mesma animação ao contrário. */
.cd-anima.cd-inverso .cd-track{animation-direction:reverse;}

.cd-anima.cd-pausa .cd-viewport:hover .cd-track,
.cd-anima.cd-pausa .cd-viewport:focus-within .cd-track{animation-play-state:paused;}

/* Card em destaque no hover — só quando o cursor existe de verdade.
   No celular :hover cola no último item tocado e ficaria preso. */
@media (hover:hover) and (pointer:fine){
  .cd-destaca .cd-card:hover,
  .cd-destaca .cd-card:focus-visible{transform:scale(1.045);z-index:2;position:relative;}
  .cd-destaca .cd-viewport:hover .cd-card:not(:hover){filter:brightness(.62);}
}

@media (max-width:900px){
  .cd-card{width:calc((100vw - (clamp(20px,5vw,64px) * 2) - (var(--cd-gap) * (min(var(--cd-visiveis),2) - 1))) / min(var(--cd-visiveis),2));}
}
@media (max-width:600px){
  .cd{--cd-gap:14px;}
  .cd-card{width:calc(100vw - (clamp(20px,5vw,64px) * 2) - 44px);}
  .cd-title{font-size:18px;}
}

@media (prefers-reduced-motion:reduce){
  /* A esteira para. Os cards viram uma faixa que a pessoa rola no
     próprio ritmo — o conteúdo continua todo alcançável. */
  .cd-anima .cd-track{animation:none;}
  .cd-viewport{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .cd-destaca .cd-card:hover{transform:none;}
  .cd-destaca .cd-viewport:hover .cd-card:not(:hover){filter:none;}
}

/* ---------- Prévia dentro do painel ---------- */
.previa-moldura{
  border:1px solid var(--line-soft);
  border-radius:var(--r-md);
  background:var(--ground);
  overflow:hidden;
}
.previa-frame{
  display:block;width:100%;border:0;
  height:520px;                 /* altura inicial; o JS ajusta ao conteúdo */
  transition:height .3s var(--ease-out-quart);
}

/* =============================================================
   BANNER — modelo LigSim (layouts/banner/ligsim-banner.html)
   Portado fielmente: palco em fade, fundo com zoom lento, véu
   diagonal, texto em entrada escalonada, anel de progresso e
   miniaturas de navegação.
   Os tokens --lb-* trocam a marca sem tocar em mais nada — aqui
   estão apontados para a paleta da Paula (ouro sobre oxblood) no
   lugar do violeta da LigSim.
   ============================================================= */
.lb{
  --lb-ouro:#D4AF37;          /* equivale ao --lb-roxo do original */
  --lb-ouro-esc:#8F6E22;      /* --lb-roxo-esc */
  --lb-prof:#120806;          /* --lb-roxo-prof: fundo profundo */
  --lb-claro:#F0DCA8;         /* --lb-lilas: apoio */
  --lb-branco:#F7EFE3;
  --lb-tinta:#1A0E09;         /* texto escuro na variante clara */
  --lb-veu-rgb:18,8,6;        /* o véu usa a cor do fundo do site */

  --lb-font:'Archivo','Segoe UI',sans-serif;
  --lb-display:'Bodoni Moda',Georgia,serif;
  --lb-alt:620px;
  --lb-alt-fita:360px;
  --lb-raio:14px;
  --lb-dur:7s;
}

/* ---------- Estrutura ---------- */
.lb{
  position:relative; width:100%; overflow:hidden;
  font-family:var(--lb-font);
  background:var(--lb-prof);
  isolation:isolate;
  -webkit-tap-highlight-color:transparent;
}
.lb--fita .lb-palco{height:var(--lb-alt-fita);}
.lb--redondo{border-radius:var(--lb-raio);}
.lb--boxed,.lb--narrow{max-width:1280px;margin-inline:auto;border-radius:var(--lb-raio);}
.lb--narrow{max-width:900px;}

.lb-palco{position:relative; height:var(--lb-alt); min-height:320px;}

.lb-slide{
  position:absolute; inset:0;
  opacity:0; visibility:hidden;
  transition:opacity .8s ease, visibility .8s;
}
.lb-slide.is-ativo{opacity:1; visibility:visible; z-index:2;}

/* fundo com leve zoom contínuo */
.lb-fundo{
  position:absolute; inset:0;
  background-image:var(--lb-img);
  background-size:cover;
  background-position:var(--lb-pos,center);
  transform:scale(1.06);
}
.lb-slide.is-ativo .lb-fundo{animation:lb-zoom 14s ease-out both;}
@keyframes lb-zoom{from{transform:scale(1.12);}to{transform:scale(1);}}

/* véu que garante leitura do texto na esquerda */
.lb-veu{
  position:absolute; inset:0;
  background:linear-gradient(100deg,
    rgba(var(--lb-veu-rgb),.92) 0%,
    rgba(var(--lb-veu-rgb),.78) 32%,
    rgba(var(--lb-veu-rgb),.18) 58%,
    rgba(var(--lb-veu-rgb),0) 78%);
}
.lb-slide--claro .lb-veu{
  background:linear-gradient(100deg,
    rgba(247,239,227,.95) 0%,
    rgba(247,239,227,.82) 34%,
    rgba(247,239,227,.10) 62%,
    rgba(247,239,227,0) 80%);
}

.lb-area{
  position:relative; z-index:3; height:100%;
  max-width:1280px; margin:0 auto;
  padding:0 clamp(20px,5vw,64px);
  display:flex; align-items:center;
}

/* ---------- Bloco de texto ---------- */
.lb-texto{max-width:520px; color:var(--lb-branco);}
.lb-slide--claro .lb-texto{color:var(--lb-tinta);}

.lb-anel{width:30px;height:30px;display:block;margin-bottom:18px;}
.lb-anel circle{fill:none;stroke-width:2.5;stroke-linecap:round;}
.lb-anel .trilho{stroke:currentColor;opacity:.28;}
.lb-anel .marca{
  stroke:currentColor; stroke-dasharray:82; stroke-dashoffset:82;
  transform:rotate(-90deg); transform-origin:50% 50%;
}
.lb-slide.is-ativo .lb-anel .marca{animation:lb-anel var(--lb-dur) linear forwards;}
@keyframes lb-anel{to{stroke-dashoffset:0;}}

.lb-chapeu{
  margin:0 0 12px; font-size:12.5px; font-weight:700;
  letter-spacing:.16em; text-transform:uppercase; opacity:.9;
}
.lb-titulo{
  font-family:var(--lb-display);
  margin:0 0 14px;
  font-size:clamp(30px,4.2vw,50px); line-height:1.08;
  font-weight:600; letter-spacing:-.025em;
  text-wrap:balance;
}
.lb-sub{margin:0 0 22px; font-size:clamp(15px,1.5vw,18px); line-height:1.5; opacity:.88; max-width:440px;}

/* selo de preço */
.lb-selo{
  display:inline-block; margin:0 0 26px; padding:12px 22px 14px;
  border-radius:12px; text-align:center; color:var(--lb-tinta);
  background:linear-gradient(150deg,var(--lb-claro) 0%,var(--lb-ouro) 55%,var(--lb-ouro-esc) 100%);
  box-shadow:0 12px 32px -12px rgba(212,175,55,.75);
}
.lb-selo-topo{display:block; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; opacity:.78; margin-bottom:2px;}
.lb-selo-forte{display:block; font-family:var(--lb-display); font-size:clamp(26px,3.2vw,36px); font-weight:600; line-height:1.05; letter-spacing:-.02em;}
.lb-selo-de{display:block; font-size:13px; text-decoration:line-through; opacity:.62; margin:2px 0;}
.lb-selo-pe{display:block; font-size:12.5px; opacity:.82; margin-top:4px;}
.lb-selo small{font-size:.5em; font-weight:600; letter-spacing:0;}

.lb-cta{
  display:inline-flex; align-items:center; gap:9px;
  padding:15px 32px; border-radius:999px;
  font-size:15.5px; font-weight:700; text-decoration:none;
  background:var(--lb-ouro); color:var(--lb-tinta); border:2px solid transparent;
  transition:transform .25s cubic-bezier(.16,1,.3,1), background .25s, box-shadow .25s;
  box-shadow:0 10px 30px -10px rgba(212,175,55,.8);
}
.lb-cta:hover{background:var(--lb-claro); color:var(--lb-tinta); transform:translateY(-2px); box-shadow:0 16px 36px -12px rgba(212,175,55,.9);}
.lb-cta svg{transition:transform .25s;}
.lb-cta:hover svg{transform:translateX(4px);}
.lb-cta--vazado{background:transparent; border-color:currentColor; color:inherit; box-shadow:none;}
.lb-cta--vazado:hover{background:var(--lb-ouro); border-color:var(--lb-ouro); color:var(--lb-tinta);}

/* ---------- Animação de entrada (escalonada) ---------- */
.lb-slide .lb-texto > *{opacity:0;}
.lb-slide.is-ativo .lb-texto > *{animation:lb-sobe .75s cubic-bezier(.16,1,.3,1) both;}
.lb-slide.is-ativo .lb-texto > *:nth-child(1){animation-delay:.10s;}
.lb-slide.is-ativo .lb-texto > *:nth-child(2){animation-delay:.18s;}
.lb-slide.is-ativo .lb-texto > *:nth-child(3){animation-delay:.26s;}
.lb-slide.is-ativo .lb-texto > *:nth-child(4){animation-delay:.34s;}
.lb-slide.is-ativo .lb-texto > *:nth-child(5){animation-delay:.42s;}
.lb-slide.is-ativo .lb-texto > *:nth-child(6){animation-delay:.50s;}
@keyframes lb-sobe{from{opacity:0;transform:translateY(26px);}to{opacity:1;transform:none;}}

/* ---------- Miniaturas de navegação ---------- */
.lb-minis{
  position:absolute; z-index:6; right:clamp(20px,5vw,64px); bottom:26px;
  display:flex; gap:8px; padding:0; margin:0; list-style:none;
}
.lb-mini{
  position:relative; width:112px; height:70px; padding:0;
  border:0; border-radius:9px; overflow:hidden; cursor:pointer;
  background-color:var(--lb-ouro-esc);
  background-image:var(--lb-img); background-size:cover; background-position:center;
  opacity:.72; transition:opacity .3s, transform .3s cubic-bezier(.16,1,.3,1);
}
.lb-mini::after{content:''; position:absolute; inset:0; background:linear-gradient(to top,rgba(var(--lb-veu-rgb),.88),rgba(var(--lb-veu-rgb),.05));}
.lb-mini span{
  position:absolute; z-index:2; left:9px; right:9px; bottom:8px;
  color:var(--lb-branco); font-size:11.5px; font-weight:600; text-align:left; line-height:1.25;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.lb-mini:hover,.lb-mini:focus-visible{opacity:1; transform:translateY(-3px);}
.lb-mini[aria-current="true"]{opacity:1; outline:2px solid var(--lb-branco); outline-offset:2px;}

/* ---------- Acessibilidade ---------- */
.lb :focus-visible{outline:2px solid var(--lb-claro); outline-offset:3px;}
.lb-oculto{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

/* ---------- Responsivo ---------- */
@media (max-width:900px){
  .lb{--lb-alt:560px; --lb-alt-fita:440px;}
  .lb-veu{background:linear-gradient(170deg,rgba(var(--lb-veu-rgb),.9) 0%,rgba(var(--lb-veu-rgb),.7) 55%,rgba(var(--lb-veu-rgb),.5) 100%);}
  .lb-slide--claro .lb-veu{background:linear-gradient(170deg,rgba(247,239,227,.94) 0%,rgba(247,239,227,.75) 55%,rgba(247,239,227,.55) 100%);}
  .lb-area{align-items:flex-start; padding-top:48px;}
  .lb-texto{max-width:100%;}
  .lb-minis{right:auto; left:clamp(20px,5vw,64px); bottom:20px; gap:6px;}
  .lb-mini{width:74px; height:50px;}
  .lb-mini span{font-size:10px; left:6px; right:6px; bottom:5px;}
}
@media (max-width:520px){
  .lb{--lb-alt:520px;}
  .lb-mini{width:58px;height:42px;}
  .lb-mini span{display:none;}
  .lb-cta{width:100%; justify-content:center;}
}

@media (prefers-reduced-motion:reduce){
  .lb-slide.is-ativo .lb-fundo{animation:none; transform:scale(1);}
  .lb-slide.is-ativo .lb-texto > *{animation-duration:.01s;}
  .lb-cta:hover{transform:none;}
}

/* =============================================================
   Editor em tela dividida (banners e cards)
   Formulário à esquerda, resultado à direita, divisória arrastável.
   ============================================================= */
.editor-split{
  --split:56%;                 /* largura da coluna do formulário */
  display:grid;
  grid-template-columns:var(--split) 14px minmax(0,1fr);
  align-items:start;
  gap:0;
  margin-bottom:20px;
}
.editor-split.sem-previa{grid-template-columns:1fr;}
.split-col{min-width:0;}
.split-form{padding-right:6px;}
.split-previa{padding-left:6px;}

.split-alca{
  position:relative;align-self:stretch;
  cursor:col-resize;background:transparent;border:0;padding:0;
  display:flex;align-items:center;justify-content:center;
  touch-action:none;
}
.split-alca::before{
  content:'';position:absolute;top:0;bottom:0;width:1px;
  background:var(--line-soft);transition:background .25s var(--ease-out-quart);
}
.split-alca-marca{
  position:relative;z-index:1;width:6px;height:52px;border-radius:999px;
  background:var(--line);transition:background .25s var(--ease-out-quart),height .25s var(--ease-out-quart);
}
.split-alca:hover .split-alca-marca,
.split-alca:focus-visible .split-alca-marca,
.editor-split.is-arrastando .split-alca-marca{background:var(--gold);height:80px;}
.split-alca:hover::before,.editor-split.is-arrastando .split-alca::before{background:var(--line);}
/* Durante o arrasto o iframe não pode roubar o ponteiro. */
.editor-split.is-arrastando{user-select:none;}
.editor-split.is-arrastando iframe{pointer-events:none;}

.previa-sticky{position:sticky;top:18px;}
.previa-barra{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:0 2px 12px;
}
.previa-rotulo{
  font-family:'Bodoni Moda',Georgia,serif;font-size:20px;color:var(--ink);
  margin-right:auto;
}
.previa-larguras{display:flex;gap:6px;}
.previa-larg{
  background:transparent;border:1px solid var(--line-soft);color:var(--ink-3);
  padding:8px 12px;border-radius:var(--r-sm);cursor:pointer;font-size:13px;
  min-height:38px;transition:all .25s var(--ease-out-quart);
}
.previa-larg:hover{color:var(--ink);border-color:var(--line);}
.previa-larg.is-ativo{color:var(--gold-hi);border-color:var(--gold);background:rgba(212,175,55,.09);}
.previa-recarregar{
  background:transparent;border:1px solid var(--line-soft);color:var(--ink-2);
  width:38px;height:38px;border-radius:var(--r-sm);cursor:pointer;font-size:17px;line-height:1;
  transition:all .25s var(--ease-out-quart);
}
.previa-recarregar:hover{color:var(--gold);border-color:var(--gold);}

.previa-palco{
  background:var(--ground-deep);
  border:1px solid var(--line-soft);
  border-radius:var(--r-md);
  padding:10px;
  overflow:auto;
}
.previa-moldura{
  margin:0 auto;
  max-width:100%;
  border:0;border-radius:var(--r-sm);
  background:var(--ground);
  overflow:hidden;
  transition:width .35s var(--ease-out-quart);
}
.previa-frame{display:block;width:100%;border:0;height:460px;transition:height .3s var(--ease-out-quart);}
.previa-nota{margin:10px 2px 0;font-size:13.5px;color:var(--ink-3);}

/* Prévia da foto escolhida antes do upload */
.arquivo-previa{
  margin:0;display:flex;align-items:center;gap:14px;
  padding:12px;border:1px solid var(--line-soft);border-radius:var(--r-sm);
  background:var(--ground-deep);flex:1 1 260px;min-width:0;
}
.arquivo-previa img{
  width:96px;height:64px;object-fit:cover;border-radius:var(--r-sm);
  border:1px solid var(--line-soft);flex-shrink:0;
}
.arquivo-previa figcaption{font-size:13.5px;color:var(--ink-3);line-height:1.45;min-width:0;word-break:break-word;}

/* Selo dentro do editor de slide */
.bn-selo-bloco{
  margin-top:18px;padding-top:18px;border-top:1px solid var(--line-soft);
}
.bn-selo-titulo{
  font-family:'Bodoni Moda',Georgia,serif;font-size:19px;color:var(--ink);margin-bottom:14px;
}
.bn-selo-titulo span{font-family:'Archivo',sans-serif;font-size:13.5px;color:var(--ink-3);}

/* A divisória só existe onde há espaço para duas colunas. Abaixo disso
   a prévia vai para cima do formulário, que é a ordem de leitura certa
   no celular: ver o resultado, depois mexer. */
@media (max-width:1100px){
  .editor-split{grid-template-columns:1fr;}
  .split-alca{display:none;}
  .split-form,.split-previa{padding:0;}
  .split-previa{order:-1;margin-bottom:22px;}
  .previa-sticky{position:static;}
  .previa-frame{height:360px;}
}
@media (max-width:600px){
  .previa-barra{gap:8px;}
  .previa-rotulo{width:100%;margin-right:0;}
  .previa-larg{flex:1;padding:8px 6px;}
}

/* =============================================================
   Prévia grudada no topo
   position:sticky morre em duas situações, e as duas estavam aqui:
   1) qualquer ancestral com overflow != visible vira o "scrollport"
      de referência — e .page-bg (overflow-x:hidden, que computa
      overflow-y:auto) e .admin-main (overflow:auto) faziam isso;
   2) o elemento só desliza dentro da caixa do próprio pai, e com
      align-items:start a coluna tinha exatamente a altura da prévia,
      ou seja, zero folga para viajar.
   ============================================================= */
body.is-admin .page-bg{overflow:visible;}
body.is-admin .admin-main{overflow:visible;min-width:0;}

.editor-split{align-items:stretch;}
.split-form{align-self:start;}

.previa-sticky{
  position:sticky;
  top:18px;
  /* Nunca mais alta que a tela: se o banner for alto, o palco rola por
     dentro em vez de o topo da prévia sair pela borda de cima. */
  max-height:calc(100vh - 36px);
  display:flex;
  flex-direction:column;
}
.previa-sticky .previa-palco{
  overflow:auto;
  min-height:0;      /* sem isto o flex recusa encolher e o max-height não vale */
}

@media (max-width:1100px){
  .editor-split{align-items:start;}
  .previa-sticky{position:static;max-height:none;display:block;}
  .previa-sticky .previa-palco{overflow:auto;}
}

/* Campo sem conteúdo na prévia editável: existe no DOM para receber o
   texto enquanto se digita, mas não ocupa espaço enquanto está vazio. */
.lb-editavel .esta-vazio{display:none !important;}

/* Campo de medida: número + unidade lado a lado, como um par só. */
.medida{display:flex;gap:8px;align-items:stretch;}
.medida .field-input{min-width:0;}
.medida input{flex:1;}
.medida-un{flex:0 0 82px;text-align:center;padding-inline:8px;}

/* ---------- Painel: marca e SEO ---------- */
.marca-linha{
  display:grid;grid-template-columns:180px 1fr;gap:22px;align-items:start;
  padding:20px 0;border-bottom:1px solid var(--line-soft);
}
.marca-linha:last-child{border-bottom:none;}
.marca-preview{
  display:flex;align-items:center;justify-content:center;
  min-height:110px;padding:14px;
  border:1px solid var(--line-soft);border-radius:var(--r-sm);
  background:var(--ground-deep);
}
.marca-preview img{max-width:100%;max-height:96px;object-fit:contain;}
.marca-preview.e-favicon img{max-height:56px;image-rendering:auto;}
.marca-vazio{font-size:13.5px;color:var(--ink-3);}
.marca-titulo{font-family:'Bodoni Moda',Georgia,serif;font-size:20px;color:var(--ink);}
.marca-form{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.marca-form .field-input{flex:1;min-width:220px;}

.cores-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:0 22px;}
.cor-picker{
  flex:0 0 60px;width:60px;height:52px;padding:4px;cursor:pointer;
  background:var(--ground-deep);border:1px solid var(--line);border-radius:var(--r-sm);
}

/* A arte da logo costuma vir num quadrado com margem transparente
   em volta. Prender só a altura deixa o desenho minúsculo — daí a
   folga de largura e o object-fit, que respeita a proporção. */
.brand-logo{max-height:var(--logo-alt,64px);max-width:280px;width:auto;height:auto;object-fit:contain;display:block;}
@media (max-width:720px){ .brand-logo{max-height:calc(var(--logo-alt,64px) * .72);max-width:180px;} }

@media (max-width:720px){
  .marca-linha{grid-template-columns:1fr;}
  .marca-preview{max-width:200px;}
}

/* ---------- Seta "tem mais abaixo" dentro do banner ---------- */
.lb-seta{
  position:absolute;z-index:6;left:50%;bottom:22px;transform:translateX(-50%);
  width:46px;height:46px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:rgba(var(--lb-veu-rgb),.5);border:1px solid var(--line);
  color:var(--lb-branco);cursor:pointer;
  transition:background .3s var(--ease-out-quart),border-color .3s,opacity .4s;
}
.lb-seta:hover{background:rgba(var(--lb-veu-rgb),.8);border-color:var(--lb-ouro);color:var(--lb-ouro);}
.lb-seta svg{display:block;animation:bob 2.5s ease-in-out infinite;}
.lb-seta.is-gone{opacity:0;pointer-events:none;}
.lb-seta.is-gone svg{animation-play-state:paused;}
/* Com miniaturas no mesmo canto no celular, a seta sobe para não brigar. */
@media (max-width:900px){ .lb-minis ~ .lb-seta{bottom:86px;} }
/* Movimento reduzido não zera esta seta: o vai-e-vem é o que ela
   comunica, e parada ela deixa de informar que há mais abaixo.
   O que muda é a dose — mais devagar e com metade do curso, longe
   do que incomoda quem liga essa preferência. */
@media (prefers-reduced-motion:reduce){
  .lb-seta svg{animation:bobSuave 3.2s ease-in-out infinite;}
}

/* ---------- Caixinha de WhatsApp ---------- */
.wa{position:fixed;bottom:22px;z-index:var(--z-modal);display:flex;flex-direction:column;align-items:flex-end;gap:12px;}
.wa-direita{right:22px;}
.wa-esquerda{left:22px;align-items:flex-start;}
.wa-bolha{
  width:60px;height:60px;border-radius:50%;border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:#25D366;color:#0A2E17;
  box-shadow:0 10px 30px -8px rgba(0,0,0,.6);
  transition:transform .35s var(--ease-out-quart),box-shadow .35s;
}
.wa-bolha:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 16px 38px -10px rgba(0,0,0,.7);}
.wa-caixa{
  width:min(310px,calc(100vw - 44px));
  padding:20px 20px 18px;border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--line);
  box-shadow:0 20px 50px rgba(0,0,0,.55);
  position:relative;
  animation:riseIn .4s var(--ease-out-quart) both;
}
.wa-fechar{
  position:absolute;top:8px;right:10px;background:transparent;border:none;
  color:var(--ink-3);font-size:24px;line-height:1;cursor:pointer;
  width:34px;height:34px;border-radius:var(--r-sm);
}
.wa-fechar:hover{color:var(--ink);}
.wa-titulo{display:block;font-family:'Bodoni Moda',Georgia,serif;font-size:21px;color:var(--ink);padding-right:28px;}
.wa-texto{margin:8px 0 16px;font-size:15.5px;line-height:1.55;color:var(--ink-2);}
.wa-cta{
  display:block;text-align:center;font-weight:600;font-size:15px;
  padding:13px 18px;border-radius:var(--r-sm);min-height:46px;
  background:#25D366;color:#0A2E17;
  transition:filter .25s var(--ease-out-quart);
}
.wa-cta:hover{filter:brightness(1.08);color:#0A2E17;}
@media (max-width:600px){
  .wa{bottom:16px;}
  .wa-direita{right:16px;}
  .wa-esquerda{left:16px;}
  .wa-bolha{width:54px;height:54px;}
}
@media (prefers-reduced-motion:reduce){
  .wa-caixa{animation:none;}
  .wa-bolha:hover{transform:none;}
}

/* Logomarca na barra lateral do painel. Largura livre e altura própria:
   a barra tem 250px e a logo não precisa acompanhar a do site. */
.admin-brand-logo{
  max-width:100%;max-height:86px;width:auto;height:auto;
  object-fit:contain;display:block;margin-bottom:10px;
}
.admin-brand{align-items:flex-start;}

/* ---------- Usuários do painel ---------- */
.usuario-linha{display:flex;gap:22px;align-items:flex-start;padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line-soft);}
.usuario-foto{
  width:110px;height:110px;flex-shrink:0;border-radius:50%;overflow:hidden;
  border:1px solid var(--line);background:var(--ground-deep);
  display:flex;align-items:center;justify-content:center;
}
.usuario-foto img{width:100%;height:100%;object-fit:cover;}
.usuario-inicial{font-family:'Bodoni Moda',Georgia,serif;font-size:44px;color:var(--gold-deep);}
.usuario-mini{
  width:38px;height:38px;border-radius:50%;overflow:hidden;flex-shrink:0;
  border:1px solid var(--line-soft);background:var(--ground-deep);
  display:flex;align-items:center;justify-content:center;
}
.usuario-mini img{width:100%;height:100%;object-fit:cover;}
.usuario-mini span{font-family:'Bodoni Moda',Georgia,serif;font-size:17px;color:var(--gold-deep);}
@media (max-width:600px){ .usuario-linha{flex-direction:column;} }

/* =============================================================
   Onde ficamos — endereço, mapa, avaliação e redes
   ============================================================= */
.local{padding:clamp(48px,7vw,100px) clamp(20px,5vw,64px);max-width:1180px;margin:0 auto;}
.local-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,60px);align-items:start;}
.local-info h2{margin:0 0 14px;}
.local-texto{color:var(--ink-2);font-size:17.5px;line-height:1.6;max-width:44ch;margin:0 0 32px;}
.local-item{
  display:flex;flex-direction:column;gap:5px;
  padding:18px 0;border-top:1px solid var(--line-soft);
}
.local-item:last-of-type{border-bottom:1px solid var(--line-soft);}
.local-rotulo{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);}
.local-valor{font-size:17px;color:var(--ink);font-style:normal;line-height:1.55;}
.local-link{color:var(--gold-hi);border-bottom:1px solid var(--line);align-self:flex-start;padding-bottom:1px;}
.local-link:hover{color:var(--gold);border-color:var(--gold);}

.local-acoes{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}
.local-rede{
  display:inline-flex;align-items:center;gap:10px;
  padding:14px 22px;border-radius:var(--r-sm);min-height:50px;
  border:1px solid var(--line);color:var(--ink);font-size:15.5px;font-weight:500;
  transition:border-color .3s var(--ease-out-quart),color .3s,background .3s;
}
.local-rede:hover{border-color:var(--gold);color:var(--gold-hi);background:rgba(212,175,55,.07);}
/* O botão de avaliar é o único cheio: é a ação que a página quer. */
.local-avaliar{
  background:linear-gradient(100deg,var(--gold-deep),var(--gold) 40%,var(--gold-hi) 55%,var(--gold) 70%,var(--gold-deep));
  background-size:230% 100%;background-position:88% center;
  color:#1A0E09;border-color:transparent;font-weight:600;
  transition:background-position .5s var(--ease-out-quart),transform .35s var(--ease-out-quart);
}
.local-avaliar:hover{background-position:12% center;transform:translateY(-2px);color:#1A0E09;border-color:transparent;}

.local-mapa{
  border:1px solid var(--line-soft);border-radius:var(--r-md);
  overflow:hidden;background:var(--surface);
}
.local-mapa iframe{
  display:block;width:100%;height:clamp(320px,42vw,460px);border:0;
  /* O mapa do Google é branco e brilhante no meio de uma página escura.
     Escurecer e reduzir o brilho o encaixa sem esconder a informação. */
  filter:invert(92%) hue-rotate(180deg) brightness(.92) contrast(.9);
}

@media (max-width:900px){
  .local-grid{grid-template-columns:1fr;}
  .local-mapa iframe{height:300px;}
}
