/* SpotMesa — identidade visual v1 (cores e fontes de identidade-visual/cores.json) */
:root {
  --rosa: #D6125F;
  --rosa-escuro: #B00E4E;
  --rosa-neon: #FF6FA5;
  --roxo: #2B0F4C;
  --amarelo: #FFC23D;
  --verde: #12B5AD;
  --verde-esc: #0B7A75;
  --creme: #FFF7F0;
  --lavanda: #6B6380;
  --borda: #EADFD8;
  --branco: #FFFFFF;
  --erro: #B42318;
  --r-botao: 14px;
  --r-card: 18px;
  --sombra: 0 6px 24px rgba(43, 15, 76, .08);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: "Nunito", system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.5;
  color: var(--roxo);
  background: var(--creme);
}
h1, h2, h3 { font-family: "Fredoka", "Nunito", sans-serif; font-weight: 600; line-height: 1.15; margin: 0 0 .5em; }
h1 { font-size: clamp(1.8rem, 5vw, 2.8rem); }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.15rem; }
a { color: var(--rosa); }
p { margin: 0 0 1em; }
.muted { color: var(--lavanda); }
.small { font-size: .9rem; }

.container { width: 100%; max-width: 1080px; margin: 0 auto; padding: 0 16px; }
main { padding: 24px 0 64px; }

/* Topo */
.topbar { background: var(--branco); border-bottom: 1px solid var(--borda); position: sticky; top: 0; z-index: 10; }
.topbar .container { display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 64px; }
.topbar .logo img { height: 36px; display: block; }
.nav { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.nav a, .nav button { font: inherit; font-weight: 600; font-size: .95rem; color: var(--roxo); text-decoration: none; background: none; border: 0; padding: 8px 10px; border-radius: 10px; cursor: pointer; }
.nav a:hover, .nav button:hover { background: var(--creme); }
.nav form { margin: 0; }
@media (max-width: 640px) { .nav .hide-sm { display: none; } }

/* Botões */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font: inherit; font-weight: 800; font-size: 1rem; padding: 12px 20px; border-radius: var(--r-botao); border: 2px solid transparent; background: var(--rosa); color: var(--branco); text-decoration: none; cursor: pointer; transition: background .15s; }
.btn:hover { background: var(--rosa-escuro); }
.btn-ghost { background: transparent; color: var(--rosa); border-color: var(--rosa); }
.btn-whats { background: #1FA855; border-color: #1FA855; color: #fff; }
.invite-banner { background: var(--creme); border: 1px solid var(--borda); border-radius: 12px; padding: 12px 14px; margin-bottom: 16px; }
.invite-banner ul { margin: 6px 0 0; padding-left: 18px; }
.btn-ghost:hover { background: rgba(214, 18, 95, .06); }
.btn-dark { background: var(--roxo); }
.btn-dark:hover { background: #1C0934; }
.btn-sm { padding: 8px 14px; font-size: .9rem; }
.btn-block { width: 100%; }
.btn-link { background: none; border: 0; color: var(--rosa); font: inherit; font-weight: 700; cursor: pointer; padding: 0; text-decoration: underline; }

/* Cards e grade */
.card { background: var(--branco); border-radius: var(--r-card); box-shadow: var(--sombra); padding: 20px; }
.grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.stack > * + * { margin-top: 16px; }
.row { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.row.between { justify-content: space-between; }
.two-cols { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 860px) { .two-cols { grid-template-columns: 1.4fr 1fr; } }

/* Hero */
.hero { background: var(--roxo); color: var(--branco); padding: 48px 0 56px; position: relative; overflow: hidden; }
.hero h1 { color: var(--branco); max-width: 640px; }
.hero h1 em { font-style: normal; color: var(--rosa-neon); }
h1 em { font-style: normal; color: var(--rosa); } /* destaque do título fora da faixa escura (ex.: página de busca) */
.hero p { color: #E4DCEF; max-width: 560px; font-size: 1.1rem; }
.hero .confete { position: absolute; border-radius: 50%; opacity: .9; }

/* Busca */
.search { margin-top: 24px; background: var(--branco); color: var(--roxo); border-radius: var(--r-card); padding: 16px; display: grid; gap: 12px; grid-template-columns: 1fr; box-shadow: var(--sombra); }
@media (min-width: 760px) { .search { grid-template-columns: 1.5fr minmax(76px, .55fr) 1.2fr 1fr .9fr auto; align-items: end; } }
@media (max-width: 759px) { .search { grid-template-columns: 96px 1fr; } .search > * { grid-column: 1 / -1; } .search > .search-uf, .search > .search-uf + div { grid-column: auto; } }

/* Formulários */
label { display: block; font-weight: 700; font-size: .9rem; margin-bottom: 4px; }
input, select, textarea { width: 100%; font: inherit; color: var(--roxo); background: var(--branco); border: 1.5px solid var(--borda); border-radius: var(--r-botao); padding: 11px 12px; }
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--rosa); box-shadow: 0 0 0 3px rgba(214, 18, 95, .15); }
textarea { min-height: 96px; resize: vertical; }
.field { margin-bottom: 14px; }
.field-row { display: grid; gap: 12px; grid-template-columns: 1fr 1fr; }
.check { display: flex; gap: 8px; align-items: center; font-weight: 600; }
.check input { width: auto; }
.error { color: var(--erro); font-size: .85rem; margin-top: 4px; }

/* Avisos */
.alert { border-radius: var(--r-botao); padding: 12px 16px; margin-bottom: 16px; font-weight: 600; }
.alert-ok { background: #E3F6F4; color: var(--verde-esc); }
.alert-erro { background: #FDECEA; color: var(--erro); }
.alert-aviso { background: #FFF1D1; color: #7A5200; }

/* Selos de status */
.badge { display: inline-block; font-size: .8rem; font-weight: 800; padding: 3px 10px; border-radius: 999px; background: var(--creme); color: var(--roxo); white-space: nowrap; }
.badge-solicitada { background: #FFF1D1; color: #7A5200; }
.badge-aceita { background: #FFE3EE; color: var(--rosa-escuro); }
.badge-fila { background: #E7F0FF; color: #1D4E89; }
.badge-confirmada, .badge-ativo { background: #E3F6F4; color: var(--verde-esc); }
.badge-recusada, .badge-cancelada, .badge-suspenso { background: #EEEAF2; color: var(--lavanda); }
.badge-concluida { background: var(--roxo); color: var(--branco); }
.badge-pendente { background: #FFF1D1; color: #7A5200; }

/* Card de parceiro */
.partner-card { display: flex; flex-direction: column; text-decoration: none; color: inherit; overflow: hidden; padding: 0; }
.partner-card .cover { height: 120px; background: linear-gradient(135deg, var(--rosa) 0%, var(--roxo) 100%); position: relative; }
.partner-card .cover span { position: absolute; left: 16px; bottom: 12px; }
.partner-card .body { padding: 16px 20px 20px; }
.partner-card .price { font-weight: 800; color: var(--rosa); }

/* Tabelas */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--borda); vertical-align: top; }
th { font-size: .85rem; color: var(--lavanda); font-weight: 700; }

.summary dt { color: var(--lavanda); font-size: .85rem; }
.summary dd { margin: 0 0 10px; font-weight: 700; }
.total { font-family: "Fredoka", sans-serif; font-size: 1.6rem; color: var(--rosa); }

.empty { text-align: center; padding: 40px 16px; color: var(--lavanda); }
.footer { padding: 24px 0 40px; color: var(--lavanda); font-size: .9rem; text-align: center; }
.tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; }
.tabs a { padding: 8px 14px; border-radius: 999px; text-decoration: none; font-weight: 700; color: var(--roxo); background: var(--branco); border: 1.5px solid var(--borda); }
.tabs a.active { background: var(--roxo); color: var(--branco); border-color: var(--roxo); }
details summary { cursor: pointer; font-weight: 700; color: var(--rosa); }

/* Tipos de reserva e forma de pagamento */
.options { display: grid; gap: 8px; }
.option { display: flex; gap: 10px; align-items: center; font-weight: 700; padding: 11px 12px; border: 1.5px solid var(--borda); border-radius: var(--r-botao); cursor: pointer; background: var(--branco); margin: 0; }
.option input { width: auto; accent-color: var(--rosa); }
.option:has(input:checked) { border-color: var(--rosa); background: #FFF0F5; }
.plain-list { margin: 0; padding-left: 18px; }
.plain-list li + li { margin-top: 6px; }
.menu-line { padding: 8px 0; border-bottom: 1px solid var(--borda); flex-wrap: nowrap; }
.menu-line:last-child { border-bottom: 0; }
.menu-picker { max-height: 320px; overflow-y: auto; border: 1.5px solid var(--borda); border-radius: var(--r-botao); padding: 4px 12px; }
.qty { width: 72px; flex: none; padding: 6px 8px; text-align: center; }
.estimate { background: var(--creme); border-radius: var(--r-botao); padding: 12px 14px; margin-bottom: 14px; font-size: .95rem; }
.share { display: flex; gap: 8px; }
.share input { flex: 1; min-width: 0; font-size: .9rem; }
.progress { height: 10px; border-radius: 999px; background: var(--creme); overflow: hidden; margin: 8px 0; }
.progress > span { display: block; height: 100%; background: var(--verde); }
[hidden] { display: none !important; }
.package-box { background: #FFF0F5; border: 1.5px solid #F7C6D9; border-radius: var(--r-botao); padding: 10px 14px; margin: 10px 0; }
.package-values { display: flex; flex-wrap: wrap; gap: 4px 18px; font-size: .95rem; margin-top: 2px; }
.contract-page { max-width: 820px; margin: 0 auto; }
.contract-text { white-space: pre-line; font-size: .95rem; line-height: 1.6; }
.contract-box { white-space: pre-line; font-size: .88rem; line-height: 1.5; max-height: 260px; overflow-y: auto; border: 1.5px solid var(--borda); border-radius: var(--r-botao); padding: 12px 14px; background: var(--creme); margin: 8px 0 10px; }
.discount { color: var(--verde-esc); }
code { font-size: .85em; background: var(--creme); padding: 1px 5px; border-radius: 6px; }
@media print { .topbar, .footer, .no-print { display: none !important; } body { background: #fff; } .card { box-shadow: none; } }

/* Festas e convidados (v0.5) */
.counters { grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); }
.counters .card { padding: 14px 16px; }
.timeline { list-style: none; margin: 10px 0 0; padding: 0 0 0 18px; border-left: 3px solid var(--borda); }
.timeline li { position: relative; padding: 0 0 14px 12px; }
.timeline li::before { content: ""; position: absolute; left: -27px; top: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--branco); border: 3px solid var(--borda); }
.timeline li.step-feito::before { background: var(--verde); border-color: var(--verde); }
.timeline li.step-pulado::before { background: var(--borda); }
.timeline li.step-alerta::before { background: var(--rosa); border-color: var(--rosa); }
.timeline li.step-alerta strong { color: var(--rosa); }
.badge.rsvp-sim { background: #E3F7EC; color: var(--verde-esc); }
.badge.rsvp-nao { background: #FDE7EA; color: #B42344; }
.badge.rsvp-talvez { background: #FFF4D6; color: #8A5A00; }
.badge.rsvp-pendente { background: var(--creme); color: var(--lavanda); }
.guests td.actions { white-space: nowrap; text-align: right; }
.guests td.actions details { display: inline-block; margin-left: 8px; text-align: left; }
.guests td.actions details[open] { display: block; margin: 8px 0 0; }
.supplier { padding: 10px 0; border-bottom: 1px solid var(--borda); }
.supplier:last-of-type { border-bottom: 0; }
tr.muted td { opacity: .6; }

/* Fase C: financeiro, comissões e CRM */
.subtabs { display: flex; gap: 4px; flex-wrap: wrap; margin: -8px 0 18px; border-bottom: 1.5px solid var(--borda); }
.subtabs a { padding: 8px 12px; text-decoration: none; font-weight: 700; font-size: .92rem; color: var(--lavanda); border-bottom: 3px solid transparent; margin-bottom: -1.5px; }
.subtabs a.active { color: var(--rosa); border-bottom-color: var(--rosa); }
.filters { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; padding: 12px; margin-bottom: 16px; }
.filters select, .filters input { width: auto; flex: 1 1 150px; }
@media (min-width: 860px) { .two-cols.wide-left { grid-template-columns: 2fr 1fr; } }
.money-in { color: var(--verde-esc); font-weight: 700; }
.money-out { color: var(--erro); font-weight: 700; }
.badge.fin-aberto, .badge.com-prevista { background: #FFF1D1; color: #7A5200; }
.badge.fin-vencido { background: #FDE7EA; color: var(--erro); }
.badge.fin-pago, .badge.com-paga { background: #E3F6F4; color: var(--verde-esc); }
.badge.com-liberada { background: #FFE3EE; color: var(--rosa-escuro); }
.badge.fin-cancelado, .badge.fin-estornado, .badge.com-cancelada { background: #EEEAF2; color: var(--lavanda); }
.account-card { display: block; text-decoration: none; color: var(--roxo); border: 2px solid transparent; padding: 14px 16px; }
.account-card:hover { border-color: var(--borda); }
.account-card.selected { border-color: var(--rosa); }
.flow { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 6px; }
.flow-month { flex: 1 0 64px; text-align: center; }
.flow-bars { display: flex; align-items: flex-end; justify-content: center; gap: 3px; height: 160px; border-bottom: 1.5px solid var(--borda); }
.bar { width: 10px; min-height: 2px; border-radius: 4px 4px 0 0; display: block; }
.bar.in-plan, .legend .in-plan { background: #A7E3DF; }
.bar.in, .legend .in { background: var(--verde); }
.bar.out-plan, .legend .out-plan { background: #F7B8CF; }
.bar.out, .legend .out { background: var(--rosa); }
.legend { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; }
.legend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; }
.rule { border-bottom: 1px solid var(--borda); padding: 10px 0; }
.rule:last-child { border-bottom: 0; }
.rule summary { cursor: pointer; font-weight: 700; }
.kanban { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 12px; align-items: flex-start; }
.kanban-col { flex: 0 0 250px; background: #F6EEE8; border-radius: var(--r-card); padding: 10px; border-top: 4px solid var(--cor, var(--lavanda)); }
.kanban-col header { padding: 2px 4px 8px; }
.kanban-col .dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--cor, var(--lavanda)); margin-right: 6px; }
.kanban-list { min-height: 60px; display: flex; flex-direction: column; gap: 8px; }
.kanban-card { display: flex; flex-direction: column; gap: 2px; background: var(--branco); border-radius: 12px; padding: 10px 12px; text-decoration: none; color: var(--roxo); box-shadow: 0 1px 3px rgba(43, 15, 76, .08); cursor: grab; }
.kanban-card:hover { box-shadow: var(--sombra); }
.kanban-card.ghost { opacity: .4; }
.new-deal { position: relative; }
.new-deal summary { list-style: none; }
.new-deal summary::-webkit-details-marker { display: none; }
.new-deal[open] > form, .new-deal[open] > .card { position: absolute; right: 0; z-index: 5; width: min(560px, calc(100vw - 32px)); }
.timeline-list { list-style: none; margin: 0; padding: 0; }
.timeline-list li { padding: 10px 0 10px 14px; border-left: 3px solid var(--borda); margin-left: 4px; }
.timeline-list li.done { opacity: .6; }
.timeline-list li.done .body { text-decoration: line-through; }
.stage-row { padding: 8px 0; border-bottom: 1px solid var(--borda); align-items: center; }
.stage-row input:not([type=number]):not([type=color]) { flex: 1 1 160px; width: auto; }
@media (min-width: 1112px) { .kanban { margin-right: calc(540px - 50vw); padding-right: 16px; } }
.two-cols > *, .stack > * { min-width: 0; }
.filters select, .filters input, .filters button { min-width: 0; max-width: 100%; }
.row input { min-width: 0; max-width: 100%; }
.share { display: flex; gap: 8px; } .share input { flex: 1; min-width: 0; }
.field-row > .field { min-width: 0; }
.field-row input { width: 100%; min-width: 0; }

/* v0.7: fotos, logomarca e mapa */
.photo-row { display: grid; grid-template-columns: 140px 1fr; gap: 16px; align-items: start; }
.photo-row img { width: 140px; height: 105px; object-fit: cover; border-radius: 12px; background: var(--borda); }
@media (max-width: 520px) { .photo-row { grid-template-columns: 1fr; } .photo-row img { width: 100%; height: 180px; } }
.photo-upload { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.photo-upload label.btn { cursor: pointer; margin: 0; }
.logo-preview { width: 120px; height: 120px; border-radius: 50%; border: 1px solid var(--borda); background: var(--branco); display: grid; place-items: center; overflow: hidden; margin-bottom: 12px; }
.logo-preview img { width: 100%; height: 100%; object-fit: contain; padding: 10px; }
.logo-preview span, .partner-logo span { font-family: "Fredoka", sans-serif; font-size: 44px; color: var(--rosa); }
.partner-card .cover { background-size: cover; background-position: center; }
.partner-card .cover.has-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(43, 15, 76, .55)); }
.partner-card .cover span { z-index: 1; }
.partner-card .cover .card-logo { position: absolute; right: 14px; bottom: -22px; width: 52px; height: 52px; border-radius: 50%; background: var(--branco) center/contain no-repeat; border: 3px solid var(--branco); box-shadow: var(--sombra); z-index: 1; }
.partner-head { display: flex; gap: 14px; align-items: center; }
.partner-logo { flex: 0 0 auto; width: 72px; height: 72px; border-radius: 50%; background: var(--branco); border: 1px solid var(--borda); display: grid; place-items: center; overflow: hidden; }
.partner-logo img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
.carousel { position: relative; border-radius: var(--r-card); overflow: hidden; background: var(--roxo); }
.carousel-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.carousel-track::-webkit-scrollbar { display: none; }
.carousel-track figure { flex: 0 0 100%; margin: 0; scroll-snap-align: start; position: relative; aspect-ratio: 4 / 3; max-height: 460px; }
.carousel-track img { width: 100%; height: 100%; object-fit: cover; display: block; }
.carousel-track figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 10px 16px; color: #fff; font-weight: 700; background: rgba(20, 12, 32, .8); } /* v0.67: faixa sólida */
.carousel-btn { position: absolute; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .9); color: var(--roxo); font-size: 22px; line-height: 1; cursor: pointer; box-shadow: var(--sombra); }
.carousel-btn.prev { left: 10px; } .carousel-btn.next { right: 10px; }
.carousel-dots { position: absolute; left: 0; right: 0; bottom: 10px; display: flex; justify-content: center; gap: 6px; }
.carousel-dots button { width: 8px; height: 8px; border-radius: 50%; border: 0; padding: 0; background: rgba(255, 255, 255, .55); cursor: pointer; }
.carousel-dots button.on { background: #fff; width: 20px; border-radius: 4px; }
.carousel-count { position: absolute; top: 10px; right: 10px; background: rgba(0, 0, 0, .5); color: #fff; font-size: 13px; padding: 2px 10px; border-radius: 99px; }
.map-frame { width: 100%; height: 260px; border: 0; border-radius: 12px; display: block; background: var(--borda); }
.map-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.map-picker { height: 280px; border-radius: 12px; border: 1px solid var(--borda); margin-top: 8px; }

/* Admin: ajustes (segunda linha do menu) e painel inicial */
.subnav { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.subnav a { color: var(--roxo); font-weight: 700; text-decoration: none; border-bottom: 2px solid transparent; padding-bottom: 2px; }
.subnav a.active { border-bottom-color: var(--rosa, var(--roxo)); }
.attention { list-style: none; margin: 0; padding: 0; }
.attention li { display: flex; gap: 12px; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid var(--borda); }
.attention li:last-child { border-bottom: 0; }
.attention .n { min-width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; font-weight: 800; background: #FFF1D1; color: #7A5200; }
.attention .n.zero { background: #E3F6F4; color: var(--verde-esc); }

/* Equipe (v0.10) */

/* Ocasiões (v0.11) */
.occ-row { display: grid; grid-template-columns: 68px 48px minmax(0, 1fr) max-content max-content 52px; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--borda); }
.occ-row .check { white-space: nowrap; }
.nowrap { white-space: nowrap; }
@media (max-width: 640px) { .occ-row { grid-template-columns: 64px 48px minmax(0, 1fr); } .occ-row > .occ-opcoes { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; gap: 4px 14px; } }
.occ-opcoes { display: flex; flex-direction: column; gap: 2px; }
/* v0.71: ícone ou GIF da ocasião */
.ocasiao-icone { display: inline-block; vertical-align: middle; object-fit: contain; margin-right: 8px; border-radius: 8px; }
.occ-icone { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.occ-icone > label:first-child { width: 40px; height: 40px; border: 2px dashed var(--borda); border-radius: 10px; display: grid; place-items: center; cursor: pointer; overflow: hidden; font-weight: 800; color: var(--muted, #6B6380); }
.occ-icone > label:first-child:focus-within { outline: 2px solid var(--rosa); outline-offset: 2px; }
.occ-icone img { width: 100%; height: 100%; object-fit: contain; }
.occ-icone .check { font-size: .75rem; gap: 3px; }

/* Fornecedor que não pode entrar na reserva: só o aviso fica (v0.12) */
#form-reserva[data-blocked] > :not(.estimate):not(.alert):not(input) { display: none; }

/* v0.13: grupos de acesso, avaliações e aniversários */
.perm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: 10px 16px; margin: 14px 0; }
.perm-grid .check { align-items: flex-start; font-weight: 700; }
.perm-grid .check input { margin-top: 3px; }
.stars { color: #F5A524; letter-spacing: 1px; white-space: nowrap; }
.stars .stars-off { color: #E5DDEB; }
.stars.big { font-size: 1.4rem; }
.stars-inline { font-size: .9rem; font-weight: 700; color: inherit; text-decoration: none; white-space: nowrap; }
.partner-card h3 .stars-inline { font-size: .85rem; margin-left: 4px; }
.review-line { padding: 12px 0; border-bottom: 1px solid var(--borda); }
.review-line:first-child { padding-top: 0; }
.review-line:last-child { border-bottom: 0; padding-bottom: 0; }
.review-card { border: 2px solid #FFE3EE; }
.review-prompt { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.star-input { border: 0; padding: 0; margin: 0; display: inline-flex; flex-direction: row-reverse; gap: 2px; }
.star-input input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.star-input label { font-size: 2.2rem; line-height: 1; color: #E5DDEB; cursor: pointer; padding: 0 2px; }
.star-input label:hover, .star-input label:hover ~ label, .star-input input:checked ~ label { color: #F5A524; }
.star-input input:focus-visible + label { outline: 2px solid var(--rosa); border-radius: 4px; }
.review-summary { display: flex; gap: 28px; align-items: center; flex-wrap: wrap; }
.review-summary .bars { flex: 1; min-width: 200px; max-width: 360px; }
.bar-row { display: grid; grid-template-columns: 36px 1fr 28px; gap: 8px; align-items: center; }
.bar { height: 8px; background: var(--creme); border-radius: 999px; overflow: hidden; }
.bar i { display: block; height: 100%; background: #F5A524; }
.birthday-strip { text-decoration: none; color: inherit; }
.strong { font-weight: 800; color: var(--rosa-escuro); }
.review-card, #avaliacoes { scroll-margin-top: 90px; }
.guests td.actions details[open] form { width: 230px; margin-left: auto; white-space: normal; }
.guests td.actions details[open] form input, .guests td.actions details[open] form select { display: block; width: 100%; }

/* Janela de confirmação (modal) */
.modal { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 16px; }
.modal[hidden] { display: none; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(43, 15, 76, .55); animation: modal-fade .15s ease-out; }
.modal-dialog { position: relative; width: 100%; max-width: 440px; background: var(--branco); border-radius: var(--r-card); box-shadow: 0 20px 60px rgba(43, 15, 76, .3); animation: modal-in .18s ease-out; }
.modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 20px 0; }
.modal-header h3 { margin: 0; font-size: 1.15rem; }
.modal-x { background: none; border: 0; font-size: 1.6rem; line-height: 1; color: var(--lavanda); cursor: pointer; padding: 0 4px; }
.modal-body { padding: 10px 20px 4px; color: var(--lavanda); }
.modal-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 16px 20px 18px; }
.btn-danger { background: var(--erro); border-color: var(--erro); color: #fff; }
body.modal-open { overflow: hidden; }
@keyframes modal-fade { from { opacity: 0; } }
@keyframes modal-in { from { opacity: 0; transform: translateY(12px) scale(.98); } }

/* Central de Ajuda e chamados */
.help-wrap { max-width: 760px; margin: 0 auto; }
.help-search { width: 100%; font-size: 1.05rem; padding: 14px 16px; margin-bottom: 18px; }
.faq-group h2 { font-size: 1.15rem; margin: 22px 0 8px; }
.faq { background: var(--branco); border: 1px solid var(--borda); border-radius: 14px; margin-bottom: 8px; }
.faq summary { cursor: pointer; list-style: none; padding: 14px 44px 14px 16px; font-weight: 700; color: var(--roxo); position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); font-size: 1.4rem; color: var(--rosa); }
.faq[open] summary::after { content: '–'; }
.faq-answer { padding: 0 16px 12px; }
.faq-answer p { margin: 0 0 8px; }
.faq-vote { display: flex; gap: 10px; align-items: center; margin-top: 6px; }
.help-contact { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 28px; }
.ticket-thread { display: flex; flex-direction: column; gap: 10px; }
.ticket-msg { background: var(--creme); border: 1px solid var(--borda); border-radius: 14px; padding: 10px 14px; max-width: 88%; }
.ticket-msg.from-team { align-self: flex-end; background: #FDE7EF; border-color: #F6C3D6; }
.badge.ticket-aberto { background: #FFF1CC; color: #8A5A00; }
.badge.ticket-respondido { background: #E3ECFF; color: #2C4FA8; }
.badge.ticket-resolvido { background: #DDF5F3; color: var(--verde-esc); }

/* Conversa da reserva (v0.16) */
.chat { display: flex; flex-direction: column; gap: 10px; max-height: 520px; overflow-y: auto; padding: 2px; }
.chat-msg { background: var(--creme); border: 1px solid var(--borda); border-radius: 14px; padding: 10px 14px; max-width: 85%; align-self: flex-start; }
.chat-msg.mine, .chat-msg.other-partner { align-self: flex-end; background: #FDE7EF; border-color: #F6C3D6; }
.chat-form { margin-top: 14px; }
.chat-form textarea { margin-bottom: 8px; }
.inbox-row { display: block; color: inherit; text-decoration: none; }
.inbox-row:hover { border-color: var(--rosa); }
.nav-count { display: inline-block; min-width: 18px; padding: 0 6px; margin-left: 4px; border-radius: 9px; background: var(--rosa); color: #fff; font-size: 12px; line-height: 18px; text-align: center; font-weight: 700; }

/* Identificação do usuário logado (v0.16.1) */
.user-menu { position: relative; }
.user-menu summary { list-style: none; display: flex; align-items: center; gap: 6px; padding: 4px 8px 4px 4px; border-radius: 999px; cursor: pointer; font-weight: 700; color: var(--roxo); border: 1px solid var(--borda); }
.user-menu summary::-webkit-details-marker { display: none; }
.user-menu summary:hover, .user-menu[open] summary { background: var(--creme); }
.user-caret { font-size: .75rem; opacity: .7; }
.avatar { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; color: #fff; font-size: .8rem; font-weight: 800; letter-spacing: .02em; flex: none; }
.avatar-lg { width: 44px; height: 44px; font-size: 1rem; }
.avatar-cliente { background: var(--rosa); }
.avatar-parceiro { background: var(--roxo); }
.avatar-equipe { background: var(--verde-esc); }
.user-panel { position: absolute; right: 0; top: calc(100% + 8px); width: 270px; max-width: calc(100vw - 32px); background: var(--branco); border: 1px solid var(--borda); border-radius: 14px; box-shadow: 0 10px 30px rgba(43,15,76,.15); padding: 8px; z-index: 30; display: flex; flex-direction: column; }
.user-id { display: flex; gap: 10px; align-items: center; padding: 8px 8px 12px; margin-bottom: 4px; border-bottom: 1px solid var(--borda); }
.user-id strong { display: block; color: var(--roxo); line-height: 1.2; overflow-wrap: anywhere; }
.user-email { display: block; font-size: .85rem; color: #6b5b73; overflow-wrap: anywhere; }
.user-role { display: inline-block; margin-top: 4px; font-size: .75rem; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.role-cliente { background: #fde7f0; color: var(--rosa); }
.role-parceiro { background: #ece5f5; color: var(--roxo); }
.role-equipe { background: #dff5f3; color: var(--verde-esc); }
.user-panel a, .user-panel button { display: block; width: 100%; text-align: left; }
.user-panel form { margin: 0; border-top: 1px solid var(--borda); margin-top: 4px; padding-top: 4px; }
@media (max-width: 640px) { .user-first, .user-caret { display: none; } .user-menu summary { padding: 2px; border-color: transparent; } }

/* Sininho de notificações (v0.17) */
.bell-menu { position: relative; }
.bell-menu summary { list-style: none; position: relative; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; cursor: pointer; color: var(--roxo); }
.bell-menu summary::-webkit-details-marker { display: none; }
.bell-menu summary:hover, .bell-menu[open] summary { background: var(--creme); }
.bell-count { position: absolute; top: 1px; left: 22px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: var(--rosa); color: #fff; font-size: 10px; font-weight: 800; line-height: 16px; text-align: center; border: 2px solid var(--branco); box-sizing: content-box; }
.bell-count[hidden] { display: none; }
.bell-new .bell-icon { animation: bell-ring .9s ease-in-out 1; transform-origin: 50% 10%; }
@keyframes bell-ring { 20% { transform: rotate(14deg); } 40% { transform: rotate(-12deg); } 60% { transform: rotate(8deg); } 80% { transform: rotate(-4deg); } }
.bell-panel { position: absolute; right: -52px; top: calc(100% + 8px); width: 340px; max-width: calc(100vw - 24px); max-height: min(70vh, 520px); overflow-y: auto; background: var(--branco); border: 1px solid var(--borda); border-radius: 14px; box-shadow: 0 10px 30px rgba(43,15,76,.15); z-index: 30; }
.bell-head { position: sticky; top: 0; background: var(--branco); display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 12px 14px; border-bottom: 1px solid var(--borda); color: var(--roxo); }
.bell-head form { margin: 0; }
.bell-head button { font: inherit; font-size: .8rem; font-weight: 700; color: var(--verde-esc); background: none; border: 0; padding: 4px 6px; border-radius: 8px; cursor: pointer; }
.bell-item { display: flex; gap: 10px; padding: 12px 14px; text-decoration: none; color: inherit; border-bottom: 1px solid var(--borda); }
.bell-item:hover { background: var(--creme); }
.bell-item.unread { background: #fff3f8; }
.bell-item.unread:hover { background: #fde7f0; }
.bell-dot { flex: none; width: 8px; height: 8px; margin-top: 7px; border-radius: 50%; background: transparent; }
.bell-item.unread .bell-dot { background: var(--rosa); }
.bell-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bell-text strong { color: var(--roxo); font-size: .92rem; line-height: 1.3; }
.bell-text span { font-size: .85rem; color: #4f4257; overflow-wrap: anywhere; }
.bell-text time { font-size: .75rem; color: #8a7c90; }
.bell-item:not(.unread) .bell-text strong { font-weight: 600; }
.bell-action { display: block; margin: -4px 14px 0 32px; padding: 6px 0 12px; font-size: .85rem; font-weight: 700; color: var(--verde-esc); text-decoration: none; border-bottom: 1px solid var(--borda); }
.bell-action:hover { text-decoration: underline; }
.bell-empty { margin: 0; padding: 18px 14px; color: #6b5b73; font-size: .9rem; }
.bell-all { display: block; padding: 10px 14px; text-align: center; font-weight: 700; font-size: .9rem; color: var(--rosa); text-decoration: none; }
.nav .bell-panel a.bell-item, .nav .bell-panel a.bell-all { border-radius: 0; font-weight: inherit; padding: 12px 14px; }
.nav .bell-panel a.bell-all { color: var(--rosa); font-weight: 700; }
.nav .bell-panel a.bell-item { color: inherit; }
.bell-list { padding: 0; overflow: hidden; }
.bell-list .bell-item:last-child { border-bottom: 0; }
.bell-list > p { padding: 16px; }
@media (max-width: 640px) { .bell-panel { position: fixed; left: 12px; right: 12px; top: 64px; width: auto; max-width: none; } }

/* v0.18.1: Pix do sinal direto para o estabelecimento */
.pix-box { border: 2px solid var(--rosa, #d6145f); border-radius: 16px; padding: 16px; background: #fff; }
.pix-value { font-family: Fredoka, sans-serif; font-size: 2rem; font-weight: 600; color: var(--roxo, #2b0f4c); }
.pix-qr { max-width: 220px; margin: 8px auto; }
.pix-qr svg { width: 100%; height: auto; display: block; }
.pix-copy { width: 100%; font-family: monospace; font-size: .75rem; word-break: break-all; resize: none; margin-bottom: 6px; }

/* v0.19: fila de espera e prazos */
.fila-box { border: 2px dashed #1D4E89; border-radius: 14px; padding: 12px 14px; margin: 8px 0; background: #F3F7FF; }
.prazo { border-left: 4px solid var(--amarelo, #FFC83D); background: #FFF8E6; border-radius: 10px; padding: 8px 12px; margin: 10px 0; }

/* v0.20: convite para ligar os avisos pelo WhatsApp */
.wa-box { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; border: 1px solid #BFE9D2; background: #EFFBF4; border-left: 4px solid #25D366; border-radius: 14px; padding: 12px 14px; margin: 0 0 16px; }
.wa-box .wa-text { display: flex; flex-direction: column; gap: 2px; flex: 1 1 260px; }
.wa-box .wa-actions { display: flex; gap: 8px; align-items: center; flex: 0 1 auto; }
.wa-box .wa-actions input { width: 170px; margin: 0; }
.wa-status-enviado { color: #067647; } .wa-status-erro { color: #B42318; } .wa-status-fila { color: #6B6380; }
.wa-kinds { columns: 2; column-gap: 20px; } .wa-kinds label { break-inside: avoid; }
@media (max-width: 560px) { .wa-kinds { columns: 1; } .wa-box .wa-actions { width: 100%; } .wa-box .wa-actions input { flex: 1; width: auto; } }

/* v0.21: monetização, prêmio do parceiro e fila manual do WhatsApp */
.money-summary { margin: 0; padding-left: 18px; } .money-summary li { margin: 4px 0; }
.money-options { display: flex; flex-direction: column; gap: 8px; margin: 6px 0 10px; }
.money-options label.check { align-items: flex-start; }
.inline-number { display: inline-block; width: 80px; margin: 0 4px; padding: 4px 8px; }
.reward-card { display: flex; flex-direction: column; gap: 2px; border-left: 4px solid var(--verde); margin-bottom: 16px; }
.reward-card .progress { margin-bottom: 0; }
.wa-queue-link { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; margin: 12px 0 0; border-left: 4px solid #25D366; text-decoration: none; color: inherit; }
.wa-queue-item { margin-bottom: 12px; }
.wa-queue-item.wa-sent { opacity: .55; }
.wa-bubble { background: #E7FCE3; border-radius: 12px 12px 12px 4px; padding: 10px 12px; margin: 10px 0; white-space: pre-line; font-size: .95rem; max-width: 560px; }
.wa-status-manual { color: #B54708; } .wa-status-descartado { color: #6B6380; }

/* v0.22: promoções dos parceiros e clientes avulsos */
.badge-promo { background: #FFE3EE; color: var(--rosa-escuro); margin-left: 6px; vertical-align: middle; }
.news-card { margin-top: 16px; border-top: 6px solid var(--rosa); background: #FFF4F8; } /* v0.67: fundo sólido */
.add-client summary { cursor: pointer; list-style: none; display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.add-client summary::-webkit-details-marker { display: none; }
.add-client summary strong { color: var(--rosa); }
.add-client[open] summary { margin-bottom: 4px; }

/* Horário de funcionamento com turnos (v0.24) */
.hours-day { display: grid; grid-template-columns: 110px 1fr; gap: 8px; align-items: start; padding: 6px 0; border-bottom: 1px solid var(--borda); }
.hours-day > .check { margin-top: 8px; }
.hours-shifts { display: grid; gap: 6px; justify-items: start; }
.hours-shift { display: grid; grid-template-columns: 1fr auto 1fr 64px; gap: 8px; align-items: center; width: 100%; }
.hours-shift[hidden] { display: none; }
.hours-shift input[type=time] { min-width: 0; }
.hours-day:has(> .check input:not(:checked)) .hours-shifts { opacity: .45; }
@media (max-width: 520px) { .hours-day { grid-template-columns: 1fr; } .hours-day > .check { margin-top: 0; } }

/* v0.26: pré-cadastro por WhatsApp */
.badge-pre-enviado { background: #FFF1D1; color: #7A5200; }
.badge-pre-preenchido { background: #FFE3EE; color: var(--rosa-escuro); }
.badge-pre-cadastrado { background: #E3F6F4; color: var(--verde-esc); }
.badge-pre-descartado { background: #EEEAF2; color: var(--lavanda); }
.prefill-banner { margin-bottom: 16px; }

/* Festa entre amigos (v0.27) */
.amigos-wrap { max-width: 720px; margin: 0 auto; }
.amigos-intro h1 { margin: 8px 0 4px; }
.badge-novo { background: var(--amarelo); color: var(--roxo); }
.wz-steps { list-style: none; display: flex; gap: 8px; padding: 0; margin: 16px 0; counter-reset: wz; }
.wz-steps li { flex: 1; counter-increment: wz; font-weight: 700; font-size: .85rem; color: var(--lavanda); border-top: 4px solid var(--borda); padding-top: 6px; }
.wz-steps li::before { content: counter(wz) ". "; }
.wz-steps li.active { color: var(--rosa); border-color: var(--rosa); }
.wz-steps li.done { color: var(--verde-esc); border-color: var(--verde); cursor: pointer; }
.wz-step { margin-bottom: 16px; }
.wz-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 20px; }
.kind-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 140px), 1fr)); gap: 8px; }
.kind-chip { display: flex; align-items: center; gap: 8px; margin: 0; padding: 12px 10px; min-width: 0; overflow-wrap: anywhere; line-height: 1.2; border: 1.5px solid var(--borda); border-radius: var(--r-botao); background: var(--branco); cursor: pointer; font-weight: 700; }
.kind-chip input { position: absolute; opacity: 0; pointer-events: none; }
.kind-chip:has(input:checked) { border-color: var(--rosa); background: #FFF0F5; box-shadow: 0 0 0 3px rgba(214, 18, 95, .12); }
.kind-chip:has(input:focus-visible) { outline: 2px solid var(--rosa); }
.kind-icon { font-size: 1.5rem; line-height: 1; }
.stepper { display: inline-flex; align-items: center; border: 1.5px solid var(--borda); border-radius: var(--r-botao); background: var(--branco); overflow: hidden; }
.stepper input { width: 64px; border: 0; text-align: center; padding: 10px 4px; border-radius: 0; -moz-appearance: textfield; }
.stepper input::-webkit-outer-spin-button, .stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.stepper input:focus { box-shadow: none; }
.stepper-btn { width: 40px; height: 44px; border: 0; background: var(--creme); color: var(--rosa); font: inherit; font-size: 1.3rem; font-weight: 800; cursor: pointer; }
.stepper-btn:active { background: #FFE3EE; }
.stepper-sm input { width: 44px; padding: 6px 2px; }
.stepper-sm .stepper-btn { width: 34px; height: 38px; font-size: 1.1rem; }
.items-edit { display: grid; gap: 8px; margin-bottom: 12px; }
.item-row { display: grid; grid-template-columns: 28px 1fr auto 72px; gap: 8px; align-items: center; }
.item-row.off .item-name, .item-row.off .item-unit, .item-row.off .stepper { opacity: .4; }
.item-row.off .item-name { text-decoration: line-through; }
.item-on { margin: 0; display: flex; justify-content: center; }
.item-on input { width: 20px; height: 20px; accent-color: var(--rosa); }
.item-row input.item-name, .item-row input.item-unit { padding: 9px 10px; }
@media (max-width: 520px) {
  .item-row { grid-template-columns: 28px auto 1fr; grid-template-areas: "on name name" ". qty unit"; row-gap: 6px; padding-bottom: 10px; border-bottom: 1px solid var(--borda); }
  .item-row .item-on { grid-area: on; } .item-row .item-name { grid-area: name; } .item-row .stepper { grid-area: qty; } .item-row .item-unit { grid-area: unit; max-width: 120px; }
}
.owner-box { background: var(--creme); border-radius: var(--r-card); padding: 16px; margin-top: 8px; }
.owner-box h3 { margin-bottom: 12px; }
.shake { animation: shake .4s; }
@keyframes shake { 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
.amigos-head { display: flex; gap: 16px; align-items: flex-start; }
.amigos-icon { font-size: 2.4rem; line-height: 1; width: 64px; height: 64px; flex: none; display: flex; align-items: center; justify-content: center; background: var(--creme); border-radius: 18px; }
.amigos-note { background: #FFF6DE; border-radius: 12px; padding: 10px 12px; margin: 10px 0 0; white-space: pre-line; }
.amigos-stats { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 12px; font-size: .95rem; }
.amigos-stats span { background: var(--creme); border-radius: 999px; padding: 4px 12px; }
.answer-card { margin-top: 16px; scroll-margin-top: 80px; }
.answer-done { font-size: 1.05rem; }
.rsvp-seg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 16px; }
.rsvp-seg label { margin: 0; }
.rsvp-seg input { position: absolute; opacity: 0; pointer-events: none; }
.rsvp-seg span { display: block; text-align: center; padding: 14px 6px; border: 2px solid var(--borda); border-radius: var(--r-botao); font-weight: 800; cursor: pointer; background: var(--branco); }
.rsvp-seg input:checked + span { border-color: var(--rosa); background: var(--rosa); color: #fff; }
.rsvp-seg input[value=nao]:checked + span { background: var(--lavanda); border-color: var(--lavanda); }
.rsvp-seg input:focus-visible + span { outline: 2px solid var(--roxo); outline-offset: 2px; }
.companions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.companions label { margin: 0; }
.bring-list { border: 1.5px solid var(--borda); border-radius: var(--r-card); overflow: hidden; }
.bring-group { background: var(--creme); font-size: .8rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--lavanda); padding: 6px 14px; }
.bring { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--borda); background: var(--branco); transition: background .15s; }
.bring-group + .bring { border-top: 0; }
.bring.mine { background: #FFF0F5; }
.bring.full { opacity: .6; }
.bring-info { display: flex; flex-direction: column; min-width: 0; }
.bring-toggle { margin: 0; }
.bring-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.bring-toggle span { display: inline-block; padding: 8px 14px; border: 2px solid var(--rosa); color: var(--rosa); border-radius: 999px; font-weight: 800; font-size: .9rem; cursor: pointer; white-space: nowrap; }
.bring-toggle input:checked + span { background: var(--rosa); color: #fff; }
.bring-toggle input:checked + span::before { content: "✓ "; }
.bring-toggle input:focus-visible + span { outline: 2px solid var(--roxo); outline-offset: 2px; }
.other-item { margin: 12px 0; }
.pot-choice { display: flex; gap: 12px; align-items: flex-start; margin: 14px 0 8px; padding: 14px; border: 2px solid var(--borda); border-radius: var(--r-card); cursor: pointer; font-weight: 400; }
.pot-choice input { width: 22px; height: 22px; accent-color: var(--verde); margin-top: 2px; flex: none; }
.pot-choice > span { display: flex; flex-direction: column; }
.pot-choice.on { border-color: var(--verde); background: #EAF8F6; }
.pot-amount { margin-left: 4px; }
.who-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.who-list li { display: flex; gap: 10px; align-items: flex-start; }
.amigos-cta { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--roxo); color: #fff; }
.amigos-cta h3 { color: #fff; margin-bottom: 4px; }
.amigos-cta .muted { color: #D9CFE8; }
.share-hero { text-align: center; border: 2px solid var(--verde); margin-bottom: 16px; }
.share-hero-icon { font-size: 2.6rem; }
.share-bar { display: grid; gap: 8px; margin-top: 12px; }
@media (min-width: 640px) { .share-bar { grid-template-columns: auto auto 1fr; align-items: center; } }
.panel-items { margin: 12px 0; }
.panel-item { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--borda); }
.panel-item.covered .panel-item-main > strong { color: var(--verde-esc); }
.panel-item-main .badge { margin-left: 4px; }
.panel-item-main a { margin-left: 6px; }
.panel-item-edit summary { font-size: .85rem; }
.panel-item-edit[open] { flex-basis: 100%; }
.item-edit-form, .add-item-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin: 8px 0; }
.item-edit-form input[name=name], .add-item-form input[name=name] { flex: 1; min-width: 140px; }
.panel-item:has(.panel-item-edit[open]) { flex-wrap: wrap; }
.guest-rows { list-style: none; margin: 0; padding: 0; }
.guest-rows li { display: flex; gap: 10px; align-items: flex-start; padding: 12px 0; border-bottom: 1px solid var(--borda); }
.guest-rows li:last-child { border-bottom: 0; }
.guest-main { flex: 1; min-width: 0; }
.guest-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.pot-status { font-weight: 800; }
.pot-prometida { color: #7A5200; }
.pot-informada { color: var(--rosa); }
.pot-recebida { color: var(--verde-esc); }
.amigos-list { display: grid; gap: 10px; }
.amigos-card { display: flex; align-items: center; gap: 14px; text-decoration: none; color: inherit; }
.amigos-card-body { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.amigos-card .progress { margin: 6px 0 0; }
.amigos-promo { display: flex; align-items: center; gap: 16px; padding: 16px 20px; margin-bottom: 28px; border-radius: var(--r-card); background: linear-gradient(90deg, #FFF0F5, #FFF6DE); border: 1.5px solid #F6D3E1; text-decoration: none; color: var(--roxo); }
.amigos-promo:hover { border-color: var(--rosa); }
.amigos-promo-icons { font-size: 1.8rem; white-space: nowrap; }
.amigos-promo-text { flex: 1; display: flex; flex-direction: column; }
.amigos-promo-text strong { font-family: "Fredoka", sans-serif; font-size: 1.2rem; font-weight: 600; }
@media (max-width: 560px) { .amigos-promo { flex-wrap: wrap; } .amigos-promo .btn { width: 100%; } .amigos-head { flex-direction: column; } }
.kind-chip input, .rsvp-seg input, .bring-toggle input { width: 1px; height: 1px; }
.kind-chip, .rsvp-seg label, .bring-toggle { position: relative; }

/* v0.28: Deixe com a SpotMesa (festa entre amigos) */
.managed-opt { display: flex; gap: 12px; align-items: flex-start; margin: 16px 0 0; padding: 14px; border: 1.5px dashed var(--rosa); border-radius: var(--r-card); background: #FFF0F5; cursor: pointer; }
.managed-opt input { margin-top: 4px; width: 20px; height: 20px; flex: none; accent-color: var(--rosa); }
.managed-opt > span { display: flex; flex-direction: column; gap: 2px; }
.gestao-card { margin-top: 16px; border: 2px solid var(--rosa); background: #FFF0F5; } /* v0.67: fundo sólido */
.gestao-card.gestao-on { border-color: var(--verde); background: #E9FAF8; }
.gestao-head { display: flex; gap: 12px; align-items: flex-start; }
.gestao-head h2 { margin: 0 0 2px; font-size: 1.25rem; }
.gestao-head p { margin: 0; }
.gestao-icon { font-size: 2rem; line-height: 1; flex: none; }
.gestao-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 4px; }
.chip-static { display: inline-block; padding: 4px 10px; border-radius: 999px; background: var(--creme); border: 1px solid var(--borda); font-size: .85rem; font-weight: 700; }
.gestao-form { margin-top: 12px; }
.gestao-form > summary { list-style: none; }
.gestao-form > summary::-webkit-details-marker { display: none; }
.gestao-form[open] > summary { display: none; }
.gestao-form fieldset { border: 0; padding: 0; margin: 0 0 12px; }
.gestao-form legend { font-weight: 800; margin-bottom: 8px; }
.gestao-scope { grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); }
.gestao-row { display: flex; gap: 16px; justify-content: space-between; padding: 14px 0; border-top: 1px solid var(--borda); }
.gestao-row-nova { background: #FFF8E6; margin: 0 -16px; padding: 14px 16px; }
.gestao-row-main { min-width: 0; flex: 1; }
.gestao-row-actions { display: flex; flex-direction: column; gap: 6px; align-items: stretch; min-width: 190px; }
.gestao-row-actions form .btn { width: 100%; }
@media (max-width: 640px) { .gestao-row { flex-direction: column; } .gestao-row-actions { min-width: 0; } }

/* v0.28: Indique a SpotMesa */
.indique-faixa { background: var(--roxo); color: #fff; padding: 12px 0; margin-top: 32px; }
.indique-faixa .container { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.indique-faixa strong { font-family: "Fredoka", sans-serif; font-weight: 600; font-size: 1.05rem; }
.indique-faixa-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.indique-faixa .btn-ghost { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .5); }
.indique-faixa + .footer { margin-top: 0; }
.indique-card { display: flex; gap: 14px; align-items: flex-start; border: 1.5px solid var(--borda); }
.indique-card h2 { margin: 0 0 4px; font-size: 1.2rem; }
.indique-card p { margin: 0 0 10px; }
.indique-icon { font-size: 2rem; line-height: 1; flex: none; }
.indique-body { flex: 1; min-width: 0; }
.indique-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.indique-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.indique-opt h2 { margin: 6px 0 4px; }
@media (max-width: 560px) { .indique-faixa .container { justify-content: center; text-align: center; } .indique-faixa-btns { width: 100%; } .indique-faixa-btns .btn { flex: 1; } }

/* v0.28.2: quadro "Quanto custa" na Ajuda */
.help-prices { margin-bottom: 18px; }
.help-prices h2 { font-size: 1.15rem; margin: 0 0 8px; }
.help-prices dl { margin: 0; }
.help-prices dl > div { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: 8px 0; border-top: 1px solid var(--borda); }
.help-prices dl > div:first-child { border-top: 0; }
.help-prices dt { font-weight: 700; display: flex; flex-direction: column; gap: 2px; }
.help-prices dt .small { font-weight: 400; }
.help-prices dd { margin: 0; font-weight: 800; color: var(--rosa); text-align: right; max-width: 45%; }
.help-prices dt { flex: 1; }

/* v0.29: política de cancelamento e devolução */
.policy-box { background: var(--creme, #FFF6EE); border-radius: 12px; padding: 12px 14px; margin-top: 8px; }
.policy-tiers { margin: 6px 0 0; padding-left: 18px; font-size: .92rem; }
.policy-tiers li { margin: 2px 0; }
.policy-details { margin-top: 14px; }
.policy-details > summary { cursor: pointer; font-weight: 600; }
.cancel-confirmed { border-top: 1px solid #eee; margin-top: 12px; padding-top: 12px; }
.refund-box { border-left: 4px solid var(--rosa, #d6145f); background: #FFF1F6; border-radius: 10px; padding: 10px 12px; margin-top: 14px; }
.cancel-box textarea { width: 100%; min-width: 200px; }
.policy-pick { display: grid; gap: 8px; margin: 8px 0; }
.policy-pick label.check { align-items: flex-start; }

/* v0.29: pedido de orçamentos */
.quote-wrap { max-width: 760px; margin: 0 auto; }
.quote-card { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; color: inherit; text-decoration: none; }
.quote-answer.is-chosen { outline: 2px solid var(--verde, #1aa36f); }
.quote-price { font-weight: 800; font-size: 1.15rem; white-space: nowrap; color: var(--rosa-escuro, #a80f4a); }
.quote-cta { display: flex; gap: 12px; align-items: center; margin-top: 16px; color: inherit; text-decoration: none; background: #FFF8E6; border: 1px dashed var(--amarelo, #FFC83D); }
.quote-cta:hover { border-style: solid; }

/* v0.29: selos do parceiro */
.partner-badges { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0; }
.pbadge { font-size: .74rem; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: #F2EEFF; color: #4b2aa8; white-space: nowrap; }
.pbadge-premio { background: #FFF1C9; color: #7a5200; }
.pbadge-destaque { background: #FFE3EE; color: #a80f4a; }
.pbadge-avaliado { background: #E3F6FF; color: #075985; }
.pbadge-rapido { background: #E6F8EF; color: #166b45; }
.pbadge-promo { background: #E7F7F4; color: #0b6b5c; }
.awards-year h2 { margin-top: 28px; }
.feature-card { background: #FFF8E6; }

/* v0.29: guia de preços */
.price-guide { max-width: 900px; margin: 0 auto; }
.price-hero .total { font-size: 1.8rem; }
.price-range { position: relative; height: 10px; border-radius: 999px; background: #F1E7EC; margin: 14px 0 4px; }
.price-range span { position: absolute; top: 0; bottom: 0; border-radius: 999px; background: var(--rosa, #d6145f); }
.home-tools { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 12px; margin-top: 24px; }
.home-tools .quote-cta { margin-top: 0; }

/* v0.29: lista de presentes */
.gift-list { list-style: none; padding: 0; margin: 0; }
.gift { display: flex; justify-content: space-between; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid #f0e6ea; flex-wrap: wrap; }
.gift:first-child { border-top: 0; }
.gift.is-done .gift-main strong { color: #777; }
.gift-main { flex: 1; min-width: 180px; }
.gift-main .progress { margin-top: 4px; }
.gift-act { text-align: right; }
.gift-admin { padding: 10px 0; border-top: 1px solid #f0e6ea; }
.gift-who { margin: 4px 0 0 22px; }
.gift-form { border-top: 1px solid #f0e6ea; margin-top: 10px; padding-top: 12px; }
.gift-form input[name=link] { width: 100%; }
.nowrap { white-space: nowrap; }
@media (max-width: 640px) {
    .price-table thead { display: none; }
    .price-table tr { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; padding: 12px 0; border-bottom: 1px solid #f0e6ea; }
    .price-table td { border: 0; padding: 0; }
    .price-table td:first-child, .price-table td:nth-child(2) { grid-column: 1 / -1; }
    .price-table td[data-label]::before { content: attr(data-label); display: block; font-size: .78rem; color: var(--muted, #6B6380); }
}
.gift-admin > .row { flex-wrap: nowrap; align-items: flex-start; }

/* v0.56: menu lateral recolhível do Admin e do parceiro (desenho "Menu lateral") */
.app-shell { display: flex; align-items: flex-start; min-height: calc(100vh - 64px); }
.app-main { flex: 1 1 auto; min-width: 0; }
.app-main .container { max-width: 1180px; padding-left: 24px; padding-right: 24px; }
.sidebar { flex: 0 0 248px; width: 248px; position: sticky; top: 64px; height: calc(100vh - 64px); overflow: hidden; background: var(--side); color: var(--side-fg); display: flex; flex-direction: column; transition: width .18s ease, flex-basis .18s ease; font-family: var(--font); }
.sb-ic { width: 20px; flex: 0 0 20px; display: inline-flex; justify-content: center; line-height: 0; }
.sb-ic .ico { width: 19px; height: 19px; }
.sb-label { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-brand { display: flex; align-items: center; gap: 10px; padding: 14px; font-weight: 700; color: #fff; border-bottom: 1px solid rgba(255, 255, 255, .08); }
.sb-mark { width: 32px; height: 32px; flex: 0 0 32px; border-radius: 8px; background: var(--accent); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 15px; }
.sb-close { display: none; margin-left: auto; border: 0; background: none; color: var(--side-fg); font-size: 1.6rem; line-height: 1; cursor: pointer; padding: 0 6px; }
.sb-unit, .sb-search { margin: 10px 10px 0; padding: 8px 10px; border-radius: 8px; background: var(--side-hover); display: flex; gap: 8px; align-items: center; font-size: 13px; color: var(--side-fg); }
.sb-unit select { background: transparent; border: 0; color: var(--side-fg); font: inherit; font-weight: 700; padding: 0; width: 100%; cursor: pointer; }
.sb-unit select option { color: #1d1a26; }
.sb-search { margin-bottom: 4px; color: var(--side-muted); }
.sb-search label { cursor: pointer; color: var(--side-muted); }
.sb-search input { background: transparent; border: 0; color: var(--side-fg); font: inherit; font-size: 13px; padding: 0; width: 100%; outline: none; }
.sb-search input::placeholder { color: var(--side-muted); }
.sb-search:focus-within { box-shadow: 0 0 0 2px var(--accent); }
.sb-nav { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: 8px; display: flex; flex-direction: column; gap: 1px; }
.sb-item, .sb-gh { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; color: var(--side-fg); text-decoration: none; font-size: 14px; cursor: pointer; list-style: none; }
.sb-item:hover, .sb-gh:hover { background: var(--side-hover); color: #fff; }
.sb-item.on { background: var(--side-active); color: #fff; font-weight: 700; box-shadow: inset 3px 0 0 var(--accent); } /* v1.42.2: barra de destaque no item da tela atual */
.sb-gh { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .07em; color: var(--side-muted); margin-top: 10px; }
.sb-gh::-webkit-details-marker { display: none; }
.sb-gicon { display: none; }
.sb-gcount { display: none; }
.sb-caret { flex: 0 0 auto; line-height: 0; transition: transform .15s; }
.sb-caret .ico { width: 14px; height: 14px; }
.sb-group[open] > .sb-gh .sb-caret { transform: rotate(90deg); }
.sb-sub { padding-left: 14px; }
.sb-count { margin-left: auto; flex: 0 0 auto; font-size: 11px; font-weight: 700; background: var(--bad); color: #fff; border-radius: 99px; padding: 1px 7px; line-height: 16px; }
.sb-count.warn { background: var(--warn); }
.sb-foot { padding: 10px; border-top: 1px solid rgba(255, 255, 255, .08); display: flex; align-items: center; gap: 10px; }
.sb-avatar { background: var(--side-hover); font-size: 13px; }
.sb-who { display: flex; flex-direction: column; line-height: 1.25; color: #fff; font-size: 13px; }
.sb-who form { margin: 0; }
.sb-who button { background: none; border: 0; padding: 0; color: var(--side-muted); font: inherit; font-size: 12px; cursor: pointer; }
.sb-who button:hover { color: #fff; text-decoration: underline; }
.sb-collapse { margin-left: auto; flex: 0 0 auto; background: var(--side-hover); color: var(--side-fg); border: 0; border-radius: 8px; padding: 6px 7px; cursor: pointer; line-height: 0; }
.sb-collapse:hover { color: #fff; }
.sidebar a:focus-visible, .sidebar button:focus-visible, .sidebar summary:focus-visible, .sidebar select:focus-visible { outline: 2px solid var(--accent-2); outline-offset: 2px; }
.sb-open { display: none; align-items: center; gap: 6px; border: 1px solid var(--borda); background: var(--branco); color: var(--roxo); font: inherit; font-weight: 700; padding: 6px 10px; border-radius: 8px; cursor: pointer; }
.sb-backdrop { position: fixed; inset: 0; background: rgba(0, 0, 0, .4); z-index: 39; }
.page-tabs { display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 1px solid var(--borda); margin: 0 0 18px; }
.page-tabs a { display: inline-flex; align-items: center; gap: 6px; padding: 9px 14px; color: var(--lavanda); text-decoration: none; font-weight: 700; font-size: .92rem; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.page-tabs a:hover { color: var(--roxo); }
.page-tabs a.on { color: var(--accent); border-bottom-color: var(--accent); }
.page-tabs .sb-count { margin-left: 2px; }
.has-shell .kanban { margin-right: 0; }
.has-shell .indique-faixa { display: none; }

/* Recolhido (computador): só os ícones, com os contadores. */
@media (min-width: 901px) {
  .sb-mini .sidebar { flex-basis: 64px; width: 64px; }
  .sb-mini .sb-label, .sb-mini .sb-caret { display: none !important; }
  .sb-mini .sb-brand { justify-content: center; padding: 14px 0; }
  .sb-mini .sb-unit, .sb-mini .sb-search { justify-content: center; margin: 10px 8px 0; padding: 8px 0; }
  .sb-mini .sb-nav { padding: 8px 6px; }
  .sb-mini .sb-item, .sb-mini .sb-gh { justify-content: center; padding: 9px 0; position: relative; }
  .sb-mini .sb-gh { height: 1px; padding: 0; margin: 8px 8px; background: rgba(255, 255, 255, .1); overflow: hidden; pointer-events: none; }
  .sb-mini .sb-gh > * { display: none !important; }
  .sb-mini .sb-count { position: absolute; top: 2px; right: 6px; font-size: 10px; padding: 0 5px; line-height: 15px; }
  .sb-mini .sb-foot { flex-direction: column; padding: 10px 0; }
  .sb-mini .sb-collapse { margin: 0 auto; transform: rotate(180deg); }
}
/* Celular e tablet: o menu abre por cima pelo botão Menu. */
@media (max-width: 900px) {
  .sb-open { display: inline-flex; }
  .sidebar { position: fixed; z-index: 40; top: 0; left: 0; height: 100vh; height: 100dvh; width: min(280px, 86vw); transform: translateX(-102%); transition: transform .18s ease; padding-top: env(safe-area-inset-top, 0px); }
  .sb-shown .sidebar { transform: none; }
  .sb-collapse { display: none; }
  .sb-close { display: block; }
  .app-main .container { padding-left: 16px; padding-right: 16px; }
  .topbar .logo img { height: 30px; }
}
@media (prefers-reduced-motion: reduce) { .sidebar, .sb-caret { transition: none; } }
@media print { .sidebar, .sb-open, .sb-backdrop, .page-tabs { display: none !important; } }

/* v0.56: área do cliente mais simples */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.client-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.client-tabs { display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 2px solid var(--borda); margin-bottom: 18px; }
.client-tabs a { padding: 9px 14px; font-weight: 700; color: var(--lavanda); text-decoration: none; border-bottom: 3px solid transparent; margin-bottom: -2px; }
.client-tabs a:hover { color: var(--roxo); }
.client-tabs a.on { color: var(--rosa); border-bottom-color: var(--rosa); }
.next-step { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; border-radius: 14px; padding: 12px 14px; margin: 0 0 14px; background: var(--creme); border: 1px solid var(--borda); }
.next-step .next-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; background: var(--lavanda); }
.next-step .next-text { flex: 1 1 220px; min-width: 0; font-weight: 700; }
.next-step .next-text small { display: block; font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--lavanda); }
.next-acao { background: var(--accent-soft); border-color: var(--accent-soft); } .next-acao .next-dot { background: var(--rosa); } .next-acao .next-text small { color: var(--rosa-escuro); }
.next-espera { background: #FFF4D6; border-color: #F5E2A8; } .next-espera .next-dot { background: #E8A400; }
.next-ok { background: #E3F5F3; border-color: #BFE6E1; } .next-ok .next-dot { background: var(--verde); } .next-ok .next-text small { color: var(--verde-esc); }
.card > .next-step { margin: -4px -4px 14px; }
.next-party { margin-bottom: 20px; }
.next-party .next-step { margin: 14px 0 0; }
.res-timeline { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 0 0 18px; padding: 0; counter-reset: passo; }
.res-timeline li { position: relative; padding-top: 14px; font-size: .82rem; font-weight: 700; color: var(--lavanda); border-top: 4px solid var(--borda); }
.res-timeline li.done { color: var(--roxo); border-top-color: var(--verde); }
.res-timeline li.now { color: var(--rosa-escuro); border-top-color: var(--rosa); }
.coupon-box > summary, .managed-box > summary { cursor: pointer; color: var(--rosa); font-weight: 700; font-size: .92rem; list-style: none; }
.coupon-box > summary::-webkit-details-marker, .managed-box > summary::-webkit-details-marker { display: none; }
.managed-box[open] > summary { margin-bottom: 8px; }
.coupon-box[open] > summary { margin-bottom: 6px; }
.promo-strip { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 20px 0 0; padding: 12px 16px; border-radius: 14px; background: var(--branco); border: 1px dashed var(--borda); }
.promo-strip span { flex: 1 1 220px; min-width: 0; color: var(--lavanda); }
.rsvp-form .options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 14px; }
.rsvp-form .options .option { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 56px; border: 2px solid var(--borda); border-radius: 14px; font-weight: 800; font-size: 1.05rem; cursor: pointer; background: var(--branco); }
.rsvp-form .options .option:has(input:checked) { border-color: var(--rosa); background: var(--accent-soft); color: var(--rosa-escuro); }
.rsvp-more { margin-bottom: 12px; }
.rsvp-more > summary { cursor: pointer; color: var(--lavanda); font-size: .92rem; font-weight: 700; margin-bottom: 8px; }
.reserve-sticky { display: none; }
@media (max-width: 859px) {
  .reserve-sticky { display: block; position: fixed; z-index: 20; left: 16px; right: 16px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); text-align: center; padding: 14px; border-radius: 16px; background: var(--rosa); color: #fff; font-weight: 800; text-decoration: none; box-shadow: 0 8px 24px rgba(214, 18, 95, .35); }
  .partner-layout { padding-bottom: 72px; }
  .res-timeline li { font-size: .74rem; }
}

/* v0.58: tema claro do desenho do menu (DM Sans, cinzas neutros e menu escuro) com o destaque no vermelho da marca
   (#D6125F). O tema escuro (padrão) está em tema-escuro.css, com o mesmo vermelho num tom mais claro. */
:root {
  --font: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "DM Mono", ui-monospace, "SFMono-Regular", monospace;
  --accent: #D6125F; --accent-2: #FF6FA5; --accent-soft: #FDE7EF;
  --bad: #c6372f; --warn: #b7791f; --ok: #1f8a5b;
  --side: #211c33; --side-fg: #d9d5e8; --side-muted: #8d87a3; --side-hover: #2d2745; --side-active: #4a1a33;
  --rosa: #D6125F; --rosa-escuro: #B00E4E; --rosa-neon: #FF6FA5;
  --roxo: #1d1a26; --creme: #f6f5f8; --lavanda: #6b6677; --borda: #e4e1ea; --branco: #ffffff;
  --verde: #1f8a5b; --verde-esc: #17694a;
  --r-botao: 8px; --r-card: 12px; --sombra: 0 2px 10px rgba(29, 26, 38, .05);
}
body { font-family: var(--font); background: var(--creme); color: var(--roxo); }
h1, h2, h3, .total, .pix-value, .amigos-promo-text strong, .indique-faixa strong, .hl-num strong, .hl-alert summary b, .hl-funnel strong, .kv strong {
  font-family: var(--font); font-weight: 700; letter-spacing: -.01em;
}
.btn { font-weight: 700; }
.btn-ghost:hover { background: var(--accent-soft); }
.btn-dark:hover { background: #000; }
.tabs a.active { background: var(--accent); border-color: var(--accent); }
.topbar { background: var(--branco); border-bottom-color: var(--borda); }

/* v0.57: escolha do tema no menu do usuário */
.user-panel form.user-theme { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; padding: 8px 10px; }
.user-panel form.user-theme span { flex: 1 0 100%; font-size: .78rem; font-weight: 700; color: var(--lavanda); margin-bottom: 2px; }
.user-panel form.user-theme button { width: auto; flex: 1 1 0; text-align: center; padding: 6px 4px; border: 1px solid var(--borda); border-radius: 8px; background: transparent; color: var(--roxo); font: inherit; font-size: .82rem; cursor: pointer; }
.user-panel form.user-theme button.on { background: var(--accent); border-color: var(--accent); color: #fff; }

/* v0.57: logo clara no tema escuro */
html .topbar .logo .logo-escuro { display: none; }
html[data-tema="escuro"] .topbar .logo .logo-claro { display: none; }
html[data-tema="escuro"] .topbar .logo .logo-escuro { display: block; }

/* v0.59: documentos e fotos do parceiro */
.doc-upload { display: grid; gap: 10px; }
.doc-drop { position: relative; display: grid; place-items: center; gap: 4px; text-align: center; padding: 22px 14px; border: 2px dashed var(--borda); border-radius: var(--r-card); background: var(--creme); cursor: pointer; }
.doc-drop.on, .doc-drop:focus-within { border-color: var(--accent); background: var(--accent-soft); }
.doc-drop input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
.doc-drop-ico { font-size: 1.6rem; line-height: 1; color: var(--accent); }
.doc-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.doc-camera { min-height: 44px; }
.doc-preview, .doc-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); }
.doc-preview li { display: flex; align-items: center; gap: 8px; min-width: 0; border: 1px solid var(--borda); border-radius: 10px; padding: 6px 8px; background: var(--branco); }
.doc-preview img { width: 44px; height: 44px; object-fit: cover; border-radius: 6px; flex: none; }
.doc-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
.doc-bad { color: var(--erro); }
.doc-pdf { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 6px; background: var(--accent-soft); color: var(--accent); font-weight: 800; font-size: .75rem; flex: none; }
.doc-item { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; align-items: start; border: 1px solid var(--borda); border-radius: var(--r-card); padding: 10px; background: var(--branco); min-width: 0; }
.doc-item form { grid-column: 2; margin: 0; }
.doc-thumb { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 8px; overflow: hidden; background: var(--creme); }
.doc-thumb img { width: 100%; height: 100%; object-fit: cover; }
.doc-thumb .doc-pdf { width: 72px; height: 72px; font-size: .9rem; }
.doc-meta { display: grid; gap: 2px; min-width: 0; }
.doc-meta .doc-name { white-space: normal; word-break: break-word; }

/* v0.59: indicação por e-mail */
.indique-email { display: grid; gap: 4px 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); align-items: end; }
.indique-email .btn { min-height: 44px; }

/* v0.59: revisão de responsividade (celular e tablet) */
img, video, iframe, canvas { max-width: 100%; }
@media (max-width: 700px) {
    .new-deal[open] > form, .new-deal[open] > .card { position: static; width: 100%; margin-top: 10px; }
    .new-deal { width: 100%; }
}
.rsvp-form .options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 400px) {
    .rsvp-form .options .option { font-size: .95rem; padding: 0 4px; flex-direction: column; gap: 2px; text-align: center; }
}
.options .option { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 760px) {
    input:not([type=checkbox]):not([type=radio]):not([type=range]), select, textarea { font-size: 16px; max-width: 100%; }
    .table-wrap, .table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    main :not(.table-wrap) > table { display: block; max-width: 100%; overflow-x: auto; }
    .modal, dialog { max-width: calc(100vw - 24px); }
    .tabs { overflow-x: auto; flex-wrap: nowrap; scrollbar-width: thin; }
    .tabs > * { flex: none; }
}
@media (pointer: coarse) {
    .btn, button, select, input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=range]), .tabs a, .sb-nav a, .sb-group > summary { min-height: 44px; }
    input[type=checkbox], input[type=radio] { min-width: 22px; min-height: 22px; }
}
.contract-vars { table-layout: fixed; width: 100%; }
.contract-vars td { overflow-wrap: anywhere; vertical-align: top; }
.contract-vars td:first-child { width: 48%; }

/* v0.60: botões de entrar com redes sociais (cores de cada marca, legíveis nos dois temas) */
.social-login { display: grid; gap: 10px; margin: 6px 0 16px; }
.social-btn { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 46px; padding: 10px 16px; border-radius: var(--r-botao, 12px); font-weight: 700; text-decoration: none; border: 1px solid #dadce0; background: #fff; color: #1f1f1f; }
.social-btn:hover { text-decoration: none; filter: brightness(.97); }
.social-btn svg { width: 20px; height: 20px; flex: none; }
.social-apple { background: #000; color: #fff; border-color: #000; }
.social-facebook { background: #1877F2; color: #fff; border-color: #1877F2; }
html[data-tema="escuro"] .social-apple { background: #fff; color: #000; border-color: #fff; }
.social-ou { display: flex; align-items: center; gap: 10px; color: var(--lavanda); font-size: .85rem; margin-top: 4px; }
.social-ou::before, .social-ou::after { content: ""; flex: 1; height: 1px; background: var(--borda); }

/* v0.60: Pix da plataforma (QR Code, copia e cola e quem recebe cada valor) */
.pix-page { max-width: 980px; }
.pix-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 16px; align-items: start; }
@media (max-width: 760px) { .pix-grid { grid-template-columns: 1fr; } }
.pix-card { display: grid; gap: 10px; }
.pix-valor { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.pix-valor strong { font-size: 1.8rem; }
.pix-qr-img { display: block; width: min(240px, 100%); height: auto; margin: 6px auto; background: #fff; padding: 10px; border-radius: 12px; }
.pix-copia { display: grid; gap: 8px; }
.pix-copia textarea { width: 100%; font-family: Consolas, "Courier New", monospace; font-size: .85rem; word-break: break-all; resize: none; }
.pix-ok { background: var(--accent-soft, #EAF7F6); border-radius: 12px; padding: 12px 14px; }
.pix-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.pix-lista li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; padding-top: 10px; border-top: 1px solid var(--borda); }
.pix-lista li:first-child { border-top: 0; padding-top: 0; }
.pix-lista em { grid-column: 1 / -1; font-style: normal; font-size: .85rem; color: var(--lavanda); }

/* v0.61: cardápio com seções, ordem (arrastar) e foto por item */
.menu-thumb { width: 56px; height: 56px; flex: none; border-radius: 10px; object-fit: cover; background: var(--creme); }
.menu-thumb-vazia { display: inline-flex; align-items: center; justify-content: center; font-size: 1.4rem; border: 1px dashed var(--borda); }
.menu-line { gap: 10px; align-items: center; }
.menu-admin { display: grid; gap: 14px; }
.menu-sec { padding-top: 12px; }
.menu-sec-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.menu-sec-head h2 { margin: 0; flex: 1; min-width: 0; font-size: 1.15rem; }
.menu-sec-edit { flex-basis: 100%; }
.menu-handle { cursor: grab; user-select: none; touch-action: none; font-size: 1.3rem; line-height: 1; color: var(--lavanda); padding: 10px 6px; min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.menu-list { display: grid; gap: 8px; margin-top: 10px; min-height: 12px; }
.menu-item { border: 1px solid var(--borda); border-radius: var(--r-card, 12px); padding: 6px 12px 8px 4px; background: var(--branco); }
.menu-item-row { display: flex; align-items: center; gap: 10px; }
.menu-item-main { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.menu-item-edit { margin: 4px 0 0 54px; }
.menu-item.ghost, .menu-sec.ghost { opacity: .45; }
@media (max-width: 520px) { .menu-item-edit { margin-left: 8px; } .menu-thumb { width: 48px; height: 48px; } }

/* v0.62: Planos para parceiros */
.planos { max-width: 1100px; margin: 0 auto; }
.planos-hero { text-align: center; max-width: 720px; margin: 8px auto 24px; }
.planos-tag { font-size: .8rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--rosa); margin: 0 0 6px; }
.planos-sub { color: var(--lavanda); font-size: 1.05rem; }
.planos-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 16px; align-items: stretch; }
.plano-card { position: relative; display: flex; flex-direction: column; gap: 8px; }
.plano-card h2 { margin: 0; }
.plano-destaque { border: 2px solid var(--rosa); box-shadow: 0 8px 28px rgba(214, 18, 95, .18); }
.plano-selo { position: absolute; top: -12px; left: 16px; background: var(--rosa); color: #fff; font-size: .75rem; font-weight: 800; padding: 3px 10px; border-radius: 999px; }
html[data-tema="escuro"] .plano-selo { background: #D6125F; color: #fff; }
.plano-pitch { color: var(--lavanda); margin: 0; }
.plano-preco { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.plano-preco strong { font-size: 1.9rem; line-height: 1.1; }
.plano-preco span, .plano-nota { color: var(--lavanda); }
.plano-nota { margin: 0; }
.plano-inclui { margin: 4px 0 8px; padding-left: 20px; flex: 1; }
.plano-inclui li { margin: 4px 0; }
.planos-h2 { margin-top: 32px; }
.planos-tabela td, .planos-tabela th { text-align: center; }
.planos-tabela td:first-child, .planos-tabela th:first-child { text-align: left; }
.plano-col-destaque { color: var(--rosa); }
.planos-faq { display: grid; gap: 10px; }
.planos-faq summary { font-weight: 700; cursor: pointer; min-height: 32px; }
.planos-faq p { margin: 10px 0 0; }
.planos-cta { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 24px; }
.planos-opcoes { display: grid; gap: 10px; margin-bottom: 12px; }
.plano-opcao { padding: 10px 12px; border: 1px solid var(--borda); border-radius: var(--r-card, 12px); }
.plano-escolhido { padding: 8px 10px; border-radius: 10px; background: var(--accent-soft, #FFE6EC); }
@media (max-width: 560px) { .planos-tabela table { font-size: .88rem; } .planos-tabela td:first-child { width: 52%; } .planos-tabela td, .planos-tabela th { padding-left: 6px; padding-right: 6px; } }

/* v0.63: Mensal/Anual e vagas de fundador */
.planos-ciclo { display: flex; justify-content: center; gap: 4px; margin: 0 auto 20px; padding: 4px; border: 1px solid var(--borda); border-radius: 999px; width: fit-content; max-width: 100%; background: var(--branco); }
.planos-ciclo button { border: 0; background: transparent; color: var(--roxo); font: inherit; font-weight: 700; padding: 8px 18px; border-radius: 999px; min-height: 44px; cursor: pointer; }
.planos-ciclo button[aria-pressed="true"] { background: var(--rosa); color: #fff; }
html[data-tema="escuro"] .planos-ciclo button[aria-pressed="true"] { background: #D6125F; }
.planos-economia { font-size: .78rem; font-weight: 800; margin-left: 4px; }
.plano-economia { margin: 0; color: var(--verde-esc, #0B7A75); }
html[data-tema="escuro"] .plano-economia { color: #7dd3ab; }
.plano-vagas { margin: 0; padding: 6px 10px; border-radius: 10px; background: var(--accent-soft, #FFE6EC); width: fit-content; }

/* v0.64: mala direta, tipo de parceiro no CRM e ações da lista de parceiros */
.mala-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 16px; align-items: start; margin-top: 12px; }
.mala-lgpd { font-size: .9rem; margin: 10px 0 14px; }
.mala-email { width: 100%; height: 460px; border: 1px solid var(--borda); border-radius: 12px; background: #fff; }
.mala-sms { background: var(--creme); border: 1px solid var(--borda); border-radius: 14px 14px 14px 4px; padding: 12px 14px; max-width: 320px; white-space: pre-wrap; overflow-wrap: anywhere; }
.sms-prov { border: 1px solid var(--borda); border-radius: 12px; padding: 8px 12px; margin: 0 0 12px; }
.crm-tipo { display: inline-block; margin: 2px 0; font-size: .72rem; }
.partner-actions .btn, .partner-actions form { flex: none; }
@media (max-width: 640px) {
  .mala-tabela thead { display: none; }
  .mala-tabela, .mala-tabela tbody, .mala-tabela tr, .mala-tabela td { display: block; width: 100%; }
  .mala-tabela tr { padding: 10px 0; border-bottom: 1px solid var(--borda); }
  .mala-tabela td { border: 0; padding: 2px 0; }
  .mala-tabela td[data-label] { display: flex; justify-content: space-between; gap: 12px; }
  .mala-tabela td[data-label]::before { content: attr(data-label); color: var(--muted, inherit); opacity: .75; }
}

/* v0.65: implantação de parceiros */
.impl-progress { margin: 14px 0 16px; }
.impl-bar { display: block; height: 8px; border-radius: 99px; background: var(--borda); overflow: hidden; margin: 6px 0 2px; }
.impl-bar > span { display: block; height: 100%; background: var(--verde); border-radius: 99px; transition: width .3s; }
.impl-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 6px; }
.impl-steps a { display: flex; flex-direction: column; align-items: center; gap: 4px; text-decoration: none; color: inherit; font-size: .75rem; text-align: center; line-height: 1.2; }
.impl-n { width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; border: 2px solid var(--borda); background: var(--branco); }
.impl-ok .impl-n { background: var(--verde); border-color: var(--verde); color: #fff; }
.impl-and .impl-n { border-color: var(--amarelo); }
.impl-cur .impl-n { outline: 3px solid var(--rosa); outline-offset: 2px; }
.impl-cur .impl-l { font-weight: 800; color: var(--rosa); }
@media (max-width: 760px) { .impl-steps .impl-l { display: none; } .impl-steps .impl-cur .impl-l { display: none; } }
.impl-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 340px); gap: 16px; align-items: start; }
@media (max-width: 900px) { .impl-grid { grid-template-columns: minmax(0, 1fr); } }
.impl-main { min-width: 0; }
.impl input[type=file] { max-width: 100%; min-width: 0; }
.impl .btn:disabled, .impl .btn[aria-disabled=true] { opacity: .5; cursor: not-allowed; }
.impl-aside { display: grid; gap: 12px; position: sticky; top: 76px; }
@media (max-width: 900px) { .impl-aside { position: static; } }
.impl-help ol { margin: 8px 0 0; padding-left: 18px; display: grid; gap: 6px; }
.impl-check ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.impl-check li { display: grid; gap: 2px; padding-bottom: 8px; border-bottom: 1px solid var(--borda); }
.impl-check li a { color: inherit; text-decoration: none; font-weight: 700; }
.impl-chip { display: inline-block; font-size: .7rem; font-weight: 800; padding: 2px 8px; border-radius: 99px; margin-right: 4px; vertical-align: 1px; border: 1px solid var(--borda); }
.impl-ok .impl-chip { background: var(--verde); border-color: var(--verde); color: #fff; }
.impl-and .impl-chip { background: var(--amarelo); border-color: var(--amarelo); color: #2B0F4C; }
.impl-falta { color: var(--erro); }
html[data-tema="escuro"] .impl-falta { color: #ef7b72; }
.impl-block { border-left: 4px solid var(--erro); background: rgba(180, 35, 24, .08); border-radius: 8px; padding: 8px 12px; margin: 10px 0; }
.impl-block ul { margin: 4px 0 0; padding-left: 18px; }
.impl-ready { border-left: 4px solid var(--verde); background: rgba(18, 181, 173, .1); border-radius: 8px; padding: 8px 12px; margin: 10px 0; }
.impl-draft, .impl-missing { border-radius: 8px; padding: 6px 10px; background: rgba(255, 194, 61, .18); }
.impl-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 18px; }
.impl-items { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 6px; }
.impl-items li { display: flex; align-items: center; gap: 10px; justify-content: space-between; border: 1px solid var(--borda); border-radius: 10px; padding: 6px 10px; min-width: 0; }
.impl-items li > span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.impl-items img { width: 40px; height: 40px; object-fit: cover; border-radius: 8px; flex: none; }
.impl-nophoto { font-size: .65rem; color: var(--lavanda); border: 1px dashed var(--borda); border-radius: 8px; padding: 10px 4px; flex: none; text-align: center; width: 48px; }
.impl-box { border: 1px solid var(--borda); border-radius: 12px; padding: 10px 12px; margin: 10px 0; }
.impl-box form { margin-top: 10px; }
.impl-pre { background: var(--creme); border: 1px solid var(--borda); border-radius: 8px; padding: 8px 10px; font-size: .8rem; overflow-x: auto; }
.impl-areas { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; align-items: center; margin-bottom: 10px; }
.impl-areas-check { display: grid; gap: 6px; }
.impl-plans { display: grid; gap: 10px; }
.impl-plan { display: flex; gap: 10px; align-items: flex-start; border: 2px solid var(--borda); border-radius: 12px; padding: 10px 12px; cursor: pointer; }
.impl-plan:has(input:checked) { border-color: var(--rosa); }
.impl-plan input { width: auto; margin-top: 4px; accent-color: var(--rosa); }
.impl-cycle { border: 1px solid var(--borda); border-radius: 12px; padding: 10px 12px; margin-top: 12px; }
.impl-photos { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; }
.impl-photos figure { margin: 0; }
.impl-photos img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 10px; display: block; }
.impl-photos figcaption { display: flex; gap: 6px; align-items: center; justify-content: space-between; margin-top: 4px; }
.impl-logo { border-radius: 12px; object-fit: cover; }
.impl-review { display: grid; gap: 8px; }
.impl-rev { border: 1px solid var(--borda); border-left-width: 4px; border-radius: 10px; padding: 8px 12px; }
.impl-rev.impl-ok { border-left-color: var(--verde); }
.impl-rev.impl-and, .impl-rev.impl-pend { border-left-color: var(--amarelo); }
.impl-alert { display: block; border-left: 4px solid var(--amarelo); background: rgba(255, 194, 61, .18); border-radius: 10px; padding: 10px 14px; margin: 12px 0; color: inherit; text-decoration: none; }
.impl-filter { margin: 12px 0; }
.impl-list { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.impl-card { display: grid; gap: 6px; color: inherit; text-decoration: none; }
.impl-card.impl-stalled { border-left: 4px solid var(--amarelo); }

/* v0.68: ajudante da festa e motivo de não ir */
.helper-page { max-width: 560px; margin: 0 auto; }
.helper-card { margin-bottom: 14px; }
.helper-list { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 8px; }
.helper-list li { display: flex; flex-wrap: wrap; gap: 8px; justify-content: space-between; align-items: center; border: 1px solid var(--borda); border-radius: 12px; padding: 8px 12px; }
.helper-list li > div:first-child { min-width: 0; overflow-wrap: anywhere; }
.decline-reason { display: block; margin-top: 2px; font-style: italic; }

/* v0.69: organizadores, item e mesa por adesão, check-in da festa entre amigos */
.org-list { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 8px; }
.org-list li { display: flex; flex-wrap: wrap; gap: 8px; justify-content: space-between; align-items: flex-start; border: 1px solid var(--borda); border-radius: 12px; padding: 8px 12px; }
.org-main { min-width: 0; overflow-wrap: anywhere; flex: 1 1 220px; }
.org-task { margin-top: 2px; font-size: .92rem; }
.org-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.org-task-edit form { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
.org-task-edit input { flex: 1 1 180px; min-width: 0; }
.org-add, .org-log { margin-top: 8px; }
.adesao-note { border-left: 4px solid var(--verde); background: var(--creme); border-radius: 8px; padding: 8px 12px; margin: 8px 0; }
.adesao-count { margin-top: 6px; }
.adesao-count .total { font-size: 1.4rem; }
.adesao-box { border: 1.5px solid var(--verde); border-radius: 14px; padding: 12px 14px; margin: 16px 0 6px; }
.adesao-opt { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; border-top: 1px dashed var(--borda); cursor: pointer; }
.adesao-opt input { width: auto; margin-top: 4px; accent-color: var(--verde); }
.badge-adesao { background: var(--verde); color: #fff; }
.adesao-check { display: inline-flex; gap: 4px; align-items: center; }
.item-ad { display: inline-flex; gap: 4px; align-items: center; white-space: nowrap; }
.amigos-checkin .ci-item { background: var(--branco); border: 1px solid var(--borda); border-radius: var(--r-card); padding: 12px 14px; margin-bottom: 8px; }
.amigos-checkin .ci-item.in { border-color: var(--verde); }
.amigos-checkin .ci-go { background: var(--verde); border-color: var(--verde); }

/* v0.70: "Não precisa levar nada" */
.nada-note { border-left: 4px solid var(--verde); background: var(--creme); border-radius: 8px; padding: 8px 12px; margin: 12px 0; }

/* v0.71: convite personalizado. As cores e a fonte vêm do tema escolhido (variáveis --cv-*, ver InviteTheme). */
.convite { background: var(--cv-fundo); border-radius: 26px; padding: 18px; margin-bottom: 16px; }
.convite-cartao { background: var(--cv-cartao); color: var(--cv-tinta); border-radius: 20px; overflow: hidden; box-shadow: 0 14px 34px rgba(0,0,0,.22); }
.convite-capa { position: relative; height: 120px; background: var(--cv-capa); }
.convite-capa.com-foto { height: 150px; margin-bottom: 64px; }
.convite-capa.com-arte { height: 170px; background-size: cover; background-position: center; }
@media (max-width: 560px) { .convite .convite-capa.com-arte { height: 130px; } }
.convite-confete { position: absolute; inset: 0; overflow: hidden; }
.convite-confete i { position: absolute; display: block; }
.convite-confete .cf-o { width: 12px; height: 12px; border-radius: 50%; }
.convite-confete .cf-r { width: 22px; height: 7px; border-radius: 4px; transform: rotate(-28deg); }
.convite-confete .cf-r:nth-child(3n) { transform: rotate(32deg); }
.convite-confete .cf-c1 { background: rgba(255,255,255,.55); }
.convite-confete .cf-c2 { background: var(--cv-cor2); }
.convite-confete .cf-c3 { background: var(--cv-cor3); }
.convite-foto { position: absolute; left: 50%; bottom: -60px; transform: translateX(-50%); width: 132px; height: 132px; border-radius: 50%; object-fit: cover; border: 6px solid var(--cv-cartao); background: var(--cv-cartao); }
.convite-corpo { padding: 22px 24px 22px; text-align: center; }
.convite-kicker { margin: 0; font-size: .82rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--cv-suave); }
.convite-selo { display: inline-block; margin-left: 6px; padding: 2px 8px; border-radius: 999px; background: var(--cv-linha); color: var(--cv-tinta); letter-spacing: 0; text-transform: none; font-size: .75rem; }
.convite-titulo { margin: 6px 0 4px; font-family: var(--cv-fonte); font-weight: var(--cv-peso); font-style: var(--cv-estilo); font-size: clamp(2rem, 7vw, 2.9rem); line-height: 1.05; color: var(--cv-destaque); overflow-wrap: anywhere; }
.convite-msg { margin: 10px auto 0; max-width: 34em; font-size: 1.02rem; white-space: pre-line; color: var(--cv-tinta); }
.convite-quando { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; margin: 16px 0 0; border: 1.5px solid var(--cv-linha); border-radius: 14px; overflow: hidden; }
.convite-quando > div { padding: 8px 6px; display: flex; flex-direction: column; gap: 2px; }
.convite-quando > div + div { border-left: 1.5px solid var(--cv-linha); }
.convite-quando span { font-size: .7rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--cv-suave); }
.convite-quando strong { font-family: Fredoka, sans-serif; font-weight: 600; font-size: 1.2rem; color: var(--cv-tinta); }
.convite-onde { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; margin: 12px 0 0; font-weight: 700; }
.convite-onde svg { color: var(--cv-destaque); flex: none; }
.convite-onde a { color: var(--cv-destaque); font-weight: 800; }
.convite .amigos-note { text-align: left; color: #2B0F4C; }
.convite .amigos-stats { justify-content: center; }
.convite .amigos-stats span { background: var(--cv-linha); color: var(--cv-tinta); }
.convite .agenda-buttons { justify-content: center; }
html[data-tema] .convite .btn-ghost, .convite .btn-ghost { color: var(--cv-tinta); border-color: var(--cv-linha); background: transparent; }
@media (max-width: 560px) { .convite { padding: 10px; border-radius: 20px; } .convite-corpo { padding: 18px 16px; } .convite-quando strong { font-size: 1.05rem; } }

/* Tela de personalizar o convite */
.temas-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.temas-grid label { position: relative; margin: 0; cursor: pointer; }
.temas-grid input { position: absolute; opacity: 0; }
.tema-opcao { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 4px; border: 2px solid var(--linha, #EADFEA); border-radius: 14px; font-size: .8rem; font-weight: 700; text-align: center; min-height: 44px; }
.tema-amostra { width: 44px; height: 44px; border-radius: 12px; display: block; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); }
.temas-grid input:checked + .tema-opcao { border-color: var(--rosa, #D6125F); box-shadow: 0 0 0 2px var(--rosa, #D6125F); }
.temas-grid input:focus-visible + .tema-opcao { outline: 3px solid var(--rosa, #D6125F); outline-offset: 2px; }
.convite-imagem { display: block; width: 100%; height: auto; max-width: 360px; border-radius: 14px; box-shadow: var(--sombra); margin: 0 auto; }
.personalizar-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; align-items: start; }
@media (max-width: 760px) { .personalizar-grid { grid-template-columns: 1fr; } .temas-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.convite-painel-corpo { display: grid; grid-template-columns: minmax(0, 260px) minmax(0, 1fr); gap: 16px; align-items: center; margin-top: 14px; }
.convite-painel-corpo .convite-imagem { max-width: 260px; }
@media (max-width: 560px) { .convite-painel-corpo { grid-template-columns: 1fr; } .convite-painel .row.between { flex-wrap: wrap; gap: 10px; } }
.convite-arte { display: block; width: 100%; height: auto; max-height: 80vh; object-fit: contain; background: var(--cv-fundo); }
.convite-modo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-bottom: 16px; }
.convite-modo label { margin: 0; cursor: pointer; position: relative; }
.convite-modo input { position: absolute; opacity: 0; }
.convite-modo > label > span { display: block; height: 100%; box-sizing: border-box; padding: 12px; border: 2px solid var(--linha, #EADFEA); border-radius: 14px; font-size: .9rem; }
.convite-modo strong { display: block; }
.convite-modo input:checked + span { border-color: var(--rosa, #D6125F); box-shadow: 0 0 0 2px var(--rosa, #D6125F); }
.convite-modo input:focus-visible + span { outline: 3px solid var(--rosa, #D6125F); outline-offset: 2px; }
@media (max-width: 560px) { .convite-modo { grid-template-columns: 1fr; } }

/* v0.71: ícone da ocasião no convite */
.convite-icone { display: block; margin: 0 auto 6px; width: 52px; height: 52px; object-fit: contain; }

/* v0.80: página inicial e busca com foco em mesa */
.sb { margin-top: 22px; background: var(--branco); color: var(--roxo); border-radius: var(--r-card); padding: 14px 16px 16px; box-shadow: var(--sombra); }
.sb [hidden] { display: none !important; }
.sb-tabs { display: inline-flex; gap: 4px; background: var(--creme); border-radius: 12px; padding: 4px; margin-bottom: 12px; flex-wrap: wrap; }
.sb-tabs button { font: inherit; font-weight: 800; font-size: .92rem; border: 0; background: transparent; color: var(--lavanda); padding: 8px 16px; border-radius: 9px; cursor: pointer; }
.sb-tabs button.on { background: var(--rosa); color: #fff; }
.sb-fields { display: grid; gap: 10px; grid-template-columns: 1fr; align-items: end; }
@media (min-width: 900px) { .sb-fields { grid-template-columns: 74px 1.5fr minmax(300px, 2.4fr) 1fr auto; } }
@media (min-width: 560px) and (max-width: 899px) { .sb-fields { grid-template-columns: 1fr 1fr; } .sb-fields .sb-when, .sb-fields .sb-go { grid-column: 1 / -1; } }
.sb-f label { display: block; font-size: .8rem; font-weight: 700; color: var(--lavanda); margin-bottom: 4px; }
.sb-f select, .sb-f input[type=date], .sb-f input[type=search], .sb-step input { width: 100%; font: inherit; padding: 11px 12px; border: 1.5px solid var(--borda); border-radius: 12px; background: var(--branco); color: var(--roxo); }
.sb-when-row { display: flex; gap: 6px; }
.sb-when-row input[type=date] { flex: 1.4; min-width: 120px; }
.sb-quick { font: inherit; font-weight: 700; padding: 0 12px; border: 1.5px solid var(--borda); background: var(--branco); color: var(--roxo); border-radius: 12px; cursor: pointer; }
.sb-quick.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.sb-step { display: flex; align-items: stretch; border: 1.5px solid var(--borda); border-radius: 12px; overflow: hidden; background: var(--branco); }
.sb-step button { width: 40px; border: 0; background: var(--creme); color: var(--roxo); font-size: 1.2rem; font-weight: 800; cursor: pointer; }
.sb-step input { border: 0; border-radius: 0; text-align: center; min-width: 0; }
.sb-go { height: 46px; }
.sb-chips { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 12px 0 0; }
.sb-chip { font-family: inherit; cursor: pointer; display: inline-flex; padding: 6px 12px; border-radius: 99px; border: 1px solid var(--borda); background: var(--creme); color: var(--roxo); font-size: .88rem; font-weight: 700; text-decoration: none; }
.sb-chip:hover { border-color: var(--rosa); }
.sb-filters { margin-top: 14px; border-top: 1px solid var(--borda); padding-top: 10px; }
.sb-filters summary { cursor: pointer; margin-bottom: 8px; }
.sb-filter-grid { display: grid; gap: 10px 16px; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); align-items: end; margin-bottom: 10px; }
.sb-filter-row { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin-bottom: 10px; }
.home-shelf { margin-top: 36px; }
.home-shelf:first-child { margin-top: 0; }
.tcard { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.tcard-cover { display: block; height: 130px; background: linear-gradient(135deg, var(--rosa), var(--roxo)) center/cover; position: relative; text-decoration: none; }
.tcard-cover .badge { position: absolute; left: 12px; top: 12px; }
.tcard-body { padding: 14px 16px 16px; }
.tcard-promo { margin: 0 0 8px; font-weight: 800; font-size: .86rem; color: var(--rosa); }
.tcard-slots { display: flex; flex-wrap: wrap; gap: 6px; }
.slot { display: inline-block; padding: 7px 12px; border-radius: 10px; background: var(--creme); border: 1.5px solid var(--borda); color: var(--roxo); font-weight: 800; font-size: .92rem; text-decoration: none; }
.slot:hover { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.promo-card { display: flex; flex-direction: column; gap: 2px; text-decoration: none; color: inherit; border: 1px solid var(--borda); }
.promo-kicker { font-size: .78rem; font-weight: 800; color: var(--rosa); letter-spacing: .04em; }
.promo-name { font-family: Fredoka, "Nunito", sans-serif; font-size: 1.25rem; }
.home-occasions { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); }
.home-occasions .card { display: flex; flex-direction: column; gap: 4px; text-decoration: none; color: inherit; }
.bnav { display: none; }
@media (max-width: 640px) {
  .bnav { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; background: var(--branco); border-top: 1px solid var(--borda); justify-content: space-around; padding: 6px 4px calc(6px + env(safe-area-inset-bottom)); }
  .bnav a { display: flex; flex-direction: column; align-items: center; gap: 1px; font-size: .72rem; font-weight: 700; color: var(--lavanda); text-decoration: none; padding: 2px 8px; }
  .bnav a.on { color: var(--rosa); }
  .bnav a span { font-size: 1.25rem; }
  main { padding-bottom: 88px; }
}

/* v0.80: ajustes da página inicial no computador */
.hero-home { padding: 56px 0 44px; }
.hero-home h1 { max-width: none; font-size: clamp(2.2rem, 5.2vw, 3.6rem); letter-spacing: -.5px; }
.hero-home p { max-width: 640px; font-size: 1.15rem; }
.hero-mark { position: absolute; right: max(24px, calc((100% - 1080px) / 2 - 20px)); top: 28px; opacity: .14; pointer-events: none; }
@media (max-width: 760px) { .hero-mark { width: 200px; height: 200px; right: -30px; top: 10px; } .hero-home { padding: 36px 0 28px; } }
.home-occasions { grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.home-shelf .grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 270px), 1fr)); }
.sb { box-shadow: 0 18px 44px rgba(0, 0, 0, .28); }
.hero-home .container { position: relative; z-index: 1; }
.hero-mark { top: 18px; }

.sb-chips-par { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
.sb-chips-par .sb-chip { justify-content: center; align-items: center; gap: 8px; padding: 12px 16px; font-size: 1rem; border: 1.5px solid var(--rosa); background: rgba(214, 18, 95, .10); color: var(--roxo); }
.sb-chips-par .sb-chip:hover { background: var(--rosa); color: #fff; }
@media (max-width: 480px) { .sb-chips-par .sb-chip { font-size: .9rem; padding: 11px 8px; } }

/* v0.80: duas portas (mesa e festa), Para comemorar e modelos da Festa entre amigos */
.doors { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; max-width: 660px; margin: 18px 0 12px; }
.door { display: flex; gap: 12px; align-items: center; text-align: left; padding: 14px 16px; border-radius: 16px; border: 1.5px solid rgba(255, 255, 255, .18); background: rgba(255, 255, 255, .06); color: #fff; font: inherit; cursor: pointer; }
.door b { display: block; font-size: 1.05rem; }
.door span span { display: block; font-size: .84rem; opacity: .8; }
.door-ic { font-size: 1.6rem; }
.door.on { border-color: var(--rosa); background: linear-gradient(135deg, rgba(214, 18, 95, .35), rgba(214, 18, 95, .10)); }
.door:focus-visible { outline: 3px solid var(--rosa-neon); outline-offset: 2px; }
#porta-mesa .sb { margin-top: 0; }
.festa-form { margin-top: 0; }
.festa-occ { display: flex; flex-wrap: wrap; gap: 8px; }
.festa-pill input { position: absolute; opacity: 0; pointer-events: none; }
.festa-pill span { display: inline-flex; align-items: center; padding: 10px 14px; border-radius: 12px; border: 1.5px solid var(--borda); font-weight: 700; font-size: .92rem; cursor: pointer; }
.festa-pill input:checked + span { border-color: var(--rosa); background: rgba(214, 18, 95, .16); }
.festa-pill input:focus-visible + span { outline: 3px solid var(--rosa-neon); }
.festa-row { display: grid; gap: 10px; align-items: end; margin-top: 12px; grid-template-columns: 1fr; }
@media (min-width: 900px) { .festa-row { grid-template-columns: 1.6fr 1.3fr 1fr auto; } }
.festa-row select { width: 100%; font: inherit; padding: 11px 12px; border: 1.5px solid var(--borda); border-radius: 12px; background: var(--branco); color: var(--roxo); }
.cel-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.cel-tags span { font-size: .76rem; font-weight: 800; padding: 4px 9px; border-radius: 99px; background: var(--creme); border: 1px solid var(--borda); }
.cel-tags span.ok { color: var(--verde-esc); border-color: var(--verde); }
.cel-cta { display: block; margin-top: 12px; font-weight: 800; font-size: .9rem; color: var(--rosa); }
.tpl-card { display: flex; flex-direction: column; gap: 4px; text-decoration: none; color: inherit; }
.tpl-ic { font-size: 2rem; }
@media (max-width: 420px) { .door span span { display: none; } }.hero-home .festa-form p { font-size: .88rem; max-width: none; }

.sb-chips-par { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 560px) { .sb-chips-par .sb-chip { font-size: .8rem; padding: 10px 4px; gap: 4px; } }

/* v0.80: os três atalhos com o mesmo tamanho (no celular, ícone em cima do texto) */
.sb-chips-par { align-items: stretch; }
.sb-chips-par .sb-chip { min-height: 50px; text-align: center; line-height: 1.2; }
@media (max-width: 560px) { .sb-chips-par .sb-chip { flex-direction: column; justify-content: center; gap: 3px; min-height: 70px; padding: 8px 4px; font-size: .8rem; } .sb-chip-ic { font-size: 1.15rem; } }
@media (max-width: 560px) { .sb-chips-par .sb-chip { border-radius: 16px; min-height: 74px; } }

/* v0.81: etapas já respondidas antes, na mesma linha de passos */
.wz-steps li.pre { counter-increment: none; }
.wz-steps li.pre::before { content: ""; }
.wz-steps li.pre::after { content: none; }
.wz-steps li small { display: block; font-weight: 600; color: var(--lavanda); font-size: .78rem; }

/* v0.81: Organizar festa em etapas */
.fz-steps { margin: 0 0 14px; }
.fz-steps li { cursor: default; }
.fz-steps li.done { cursor: pointer; }
.fz-q { display: block; font-size: .8rem; font-weight: 700; color: var(--lavanda); margin-bottom: 8px; }
.fz-opts { display: grid; gap: 8px; grid-template-columns: 1fr 1fr; }
.fz-opts.fz-cols { grid-template-columns: repeat(auto-fill, minmax(min(100%, 190px), 1fr)); }
.fz-opts button { font: inherit; font-weight: 700; text-align: left; padding: 14px 16px; border-radius: 14px; border: 1.5px solid var(--borda); background: transparent; color: var(--roxo); cursor: pointer; }
.fz-opts button:hover, .fz-opts button:focus-visible { border-color: var(--rosa); background: rgba(214, 18, 95, .10); }
@media (max-width: 480px) { .fz-opts { grid-template-columns: 1fr; } }

/* v0.87: trocar onde vai ser */
.fz-onde { margin: -6px 0 10px; }

/* v0.88: três opções de onde vai ser */
.fz-onde3 { grid-template-columns: repeat(3, 1fr); }
.fz-onde3 small { display: block; font-weight: 600; font-size: .78rem; color: var(--lavanda); margin-top: 2px; }
@media (max-width: 700px) { .fz-onde3 { grid-template-columns: 1fr; } }

/* v0.90: painel Hoje do Admin */
.adm-kpis { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 160px), 1fr)); margin-bottom: 14px; }
.adm-kpis .card { padding: 12px 14px; }
.adm-kpis span { display: block; font-size: .8rem; color: var(--lavanda); }
.adm-kpis b { display: block; font-family: Fredoka, "Nunito", sans-serif; font-size: 1.7rem; line-height: 1.2; }
.adm-kpis em { font-style: normal; font-size: .78rem; color: var(--lavanda); }

/* v0.90: índice das páginas longas do Admin */
.adm-toc { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; position: sticky; top: 64px; z-index: 5; padding: 8px 0; background: var(--creme); }
.adm-toc a { padding: 5px 12px; border-radius: 99px; border: 1px solid var(--borda); text-decoration: none; font-size: .84rem; font-weight: 700; color: inherit; background: var(--branco); }
.adm-toc a:hover { border-color: var(--rosa); }
main h2[id^="secao-"] { scroll-margin-top: 130px; }

/* v0.91: cabeçalho padrão das telas do Admin e do parceiro */
.page-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin: 0 0 14px; }
.page-head-text { min-width: 0; }
.page-title { margin: 0; font-size: clamp(1.45rem, 3.2vw, 2rem); line-height: 1.15; }
.page-sub { margin: 4px 0 0; color: var(--lavanda); font-size: .92rem; max-width: 70ch; }
.page-actions { display: flex; gap: 8px; flex-wrap: wrap; }
/* o título antigo de cada tela some: quem manda é o cabeçalho padrão */
.has-page-head .app-main .container h1:not(.keep) { display: none; }
.has-page-head .app-main .sr-only { display: none; }
/* celular: tabelas rolam de lado, abas roláveis, cabeçalho em coluna */
@media (max-width: 760px) {
  .app-main .table-wrap, .app-main .card:has(> table) { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .app-main table { min-width: 560px; }
  .page-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .page-tabs a { white-space: nowrap; }
  .page-head { align-items: flex-start; }
  .page-actions .btn { padding: 8px 12px; }
  .app-main .field-row { grid-template-columns: 1fr !important; }
}
/* v0.93: linha de formulário com três campos (vira uma coluna no celular) */
.field-row.r3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 760px) { .field-row.r3 { grid-template-columns: 1fr; } }

/* v0.97: linha de formulário com quatro campos */
.field-row.r4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 760px) { .field-row.r4 { grid-template-columns: 1fr 1fr; } }
/* v1.04: ícones das redes sociais no rodapé */
.social { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin: 0 0 12px; }
.social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; color: var(--lavanda); border: 1px solid currentColor; text-decoration: none; transition: .15s; }
.social a:hover { color: #fff; background: var(--rosa, #D6125F); border-color: var(--rosa, #D6125F); transform: translateY(-2px); }
/* v1.06: cartões das listas Minhas festas e Minhas reservas (separados, com a data em destaque e as ações dentro) */
.lc { display: flex; gap: 16px; align-items: stretch; background: var(--branco); border: 1px solid var(--borda); border-left: 6px solid var(--lc-cor, var(--rosa)); border-radius: 16px; padding: 16px 18px; margin-bottom: 16px; box-shadow: 0 6px 18px rgba(0,0,0,.12); }
.lc + .lc { margin-top: 0; }
.lc.st-confirmada, .lc.st-concluida { --lc-cor: #1FA855; }
.lc.st-aguardando, .lc.st-solicitada, .lc.st-aceita { --lc-cor: #F5B21B; }
.lc.st-cancelada, .lc.st-recusada, .lc.st-expirada { --lc-cor: #8a83a0; opacity: .85; }
.lc-date { flex: none; width: 64px; border-radius: 12px; background: var(--creme); color: var(--roxo); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 8px 0; text-align: center; align-self: flex-start; }
.lc-date b { font-size: 1.7rem; line-height: 1; }
.lc-date span { font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.lc-date small { font-size: .72rem; opacity: .8; }
.lc-main { flex: 1; min-width: 0; }
.lc-head { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; flex-wrap: wrap; }
.lc-head h3 { margin: 0; }
.lc-head h3 a { color: inherit; text-decoration: none; }
.lc-foot { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; border-top: 1px solid var(--borda); margin-top: 12px; padding-top: 12px; }
.lc-foot .spacer { flex: 1; }
.lc .supplier:last-of-type { border-bottom: 0; }
.lc .next-step { margin-bottom: 10px; }
.lc-group { margin: 26px 0 10px; display: flex; align-items: baseline; gap: 10px; }
.lc-group h2 { margin: 0; }
@media (max-width: 560px) { .lc { padding: 14px; gap: 12px; } .lc-date { width: 52px; } .lc-date b { font-size: 1.4rem; } }
/* v1.06: menu de ações da reserva na lista do Admin */
.rv-menu { position: relative; }
.rv-menu > summary { list-style: none; white-space: nowrap; }
.rv-menu > summary::-webkit-details-marker { display: none; }
.rv-menu[open] > .rv-actions { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; background: var(--branco); border: 1px solid var(--borda); border-radius: 12px; padding: 10px; box-shadow: 0 12px 30px rgba(0,0,0,.3); flex-direction: column; min-width: 220px; }
.rv-menu .rv-actions > * { width: 100%; }
.rv-menu .rv-actions .btn { width: 100%; text-align: center; }
.rv-menu .cancel-box > summary { width: 100%; text-align: center; }
/* v1.10: atalhos das configurações */
.cfg-hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; max-width: 980px; }
.cfg-tile { display: flex; gap: 12px; align-items: flex-start; padding: 14px; border: 1px solid var(--borda); border-radius: 14px; background: var(--branco); color: inherit; text-decoration: none; transition: .15s; }
.cfg-tile:hover { border-color: var(--rosa); transform: translateY(-1px); }
.cfg-tile b { display: block; margin-bottom: 2px; }
.cfg-ic { flex: none; width: 36px; height: 36px; border-radius: 10px; background: var(--creme); color: var(--rosa); display: inline-flex; align-items: center; justify-content: center; }
.cfg-ic svg { width: 20px; height: 20px; }

/* v1.32: Prospecção: painel "Situação e observações" numa linha inteira, logo abaixo do influenciador */
.pp-acoes { white-space: nowrap; }
.pp-acoes .btn { margin-bottom: 6px; }
.pp-toggle { display: block; }
tr.pp-edit > td { padding-top: 0; }
.pp-painel { position: sticky; left: 0; max-width: min(100%, calc(100vw - 48px)); background: var(--creme); border: 1px solid var(--borda); border-radius: var(--r-card, 12px); padding: 12px 14px; }
.pp-grade { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 2fr); gap: 10px 12px; align-items: start; }
.pp-grade .field { margin: 0; }
.pp-grade textarea { min-height: 46px; }
.pp-rodape { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.pp-rodape form { margin: 0; }
.pp-tirar { color: var(--lavanda); }
@media (max-width: 900px) { .pp-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pp-obs { grid-column: 1 / -1; } }
@media (max-width: 560px) { .pp-grade { grid-template-columns: 1fr; } }.pp-dados { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
.pp-titulo { margin: 4px 0 6px; font-size: .78rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--lavanda); }
.pp-titulo + .pp-grade { margin-bottom: 8px; }
#adicionar .pp-obs { grid-column: 1 / -1; }
tr.pp-edit .pp-painel { max-width: min(100%, calc(100vw - 72px)); }

/* v1.33: Prospecção de estabelecimentos (usa o painel .pp-* da 1.32) */
.vp-filtros { padding: 12px 14px; }
.vp-linha { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; align-items: center; }
.vp-linha input[name="busca"] { grid-column: span 2; }
.vp-filtros summary { cursor: pointer; margin-top: 8px; color: var(--accent, var(--rosa)); font-weight: 700; }
.vp-acoes { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--borda); }
.vp-acoes form { margin: 0; }
.vp-grupo { border-bottom: 1px solid var(--borda); padding: 10px 0; }
.vp-grupo > summary { cursor: pointer; display: flex; gap: 6px; align-items: baseline; flex-wrap: wrap; }
.pp-largo { grid-column: span 2; }
@media (max-width: 560px) { .vp-linha input[name="busca"], .pp-largo { grid-column: 1 / -1; } }

/* v1.39: Monte minha festa */
.org-hero{margin:14px 0 0;font-size:.95rem}
.org-hero a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.org-wrap .org-form .check{display:inline-flex;align-items:center;gap:6px;width:auto;font-weight:400;margin:6px 0 0}
.org-wrap .org-form .check input{width:auto;min-height:0;margin:0;flex:none}
.org-wrap fieldset.field{border:0;padding:0;margin:0 0 12px}
.org-wrap fieldset legend{font-weight:600;margin-bottom:6px}

/* v1.41: menu lateral fixo no computador. Antes ele era "sticky" dentro da área do painel e, no fim da página
   (onde começa o rodapé, fora dessa área), subia junto com o conteúdo. */
@media (min-width: 901px) {
  .has-shell .sidebar { position: fixed; top: 64px; left: 0; bottom: 0; height: auto; z-index: 30; }
  .has-shell .app-main, .has-shell .footer { margin-left: 248px; transition: margin-left .18s ease; }
  .has-shell.sb-mini .app-main, .has-shell.sb-mini .footer { margin-left: 64px; }
}
/* v1.41: no celular, com o menu aberto, a página de trás não rola. */
@media (max-width: 900px) {
  html:has(body.sb-shown), body.sb-shown { overflow: hidden; overscroll-behavior: none; }
}
/* v1.41: botões redondos de tamanho fixo não esticam no celular (a regra de toque dava 44px de altura a todo botão). */
@media (pointer: coarse) {
  .tk-check { width: 34px; height: 34px; min-height: 34px; min-width: 34px; }
  .carousel-btn { min-height: 40px; }
  .carousel-dots button { min-height: 8px; }
}
.tk-check, .carousel-btn, .carousel-dots button { aspect-ratio: 1; flex-shrink: 0; -webkit-appearance: none; appearance: none; box-sizing: border-box; }
/* v1.41: filtros de grupo em Minhas festas (botões com o mesmo visual das abas) */
.grupo-filtro button { padding: 8px 14px; border-radius: 999px; font: inherit; font-weight: 700; color: var(--roxo); background: var(--branco); border: 1.5px solid var(--borda); cursor: pointer; }
.grupo-filtro button.on { background: var(--accent, var(--roxo)); border-color: var(--accent, var(--roxo)); color: #fff; }
.grupo-filtro button.on .muted { color: rgba(255, 255, 255, .8); }
@media (max-width: 760px) { .grupo-filtro { overflow-x: auto; flex-wrap: nowrap; } .grupo-filtro button { flex: none; } }
/* v1.41: mais contraste entre o fundo e os cartões (blocos) em toda a plataforma: fundo um pouco mais acinzentado,
   cartão branco com borda de 1px e sombra leve, e o título do bloco com a faixa da marca. */
:root { --creme: #eceaf1; --card-borda: #d8d3e0; --sombra: 0 1px 2px rgba(29, 26, 38, .06), 0 4px 14px rgba(29, 26, 38, .07); }
.card { border: 1px solid var(--card-borda); }
.card > h2:first-child, .card > header:first-child h2, .ia-bloco > h2 { border-left: 4px solid var(--accent); padding-left: 10px; margin-left: -4px; }
/* v1.41.1: item "Minhas reservas e festas" mais curto no celular */
.nav .show-sm { display: none; }
@media (max-width: 640px) { .nav .show-sm { display: inline; } }
/* v1.43.4: campos que não cortam o texto nem desalinham (conferido em todas as telas do Admin e do parceiro a 1280, 1366, 1440 e 390 px).
   1. Dois campos lado a lado só quando cabem (no painel estreito cada um ocupa a linha toda) e alinhados por baixo:
      um rótulo de duas linhas não empurra mais o campo dele para baixo do vizinho. Linha com texto de ajuda embaixo do campo: alinha por cima. */
.field-row { grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); align-items: end; }
/* rótulo, campo e texto de ajuda em faixas comuns da linha (subgrid): os campos ficam na mesma altura mesmo com rótulo de duas linhas ou ajuda embaixo */
@supports (grid-template-rows: subgrid) {
    .field-row { row-gap: 0; }
    .field-row > * { grid-row: span 4; }
    .field-row > .field { display: grid; grid-template-rows: subgrid; row-gap: 0; align-content: start; }
    .field-row > .field > label:first-child { align-self: end; }
}
/* 2. Filtros: no computador a caixa de escolha nunca fica mais estreita que a opção mais longa; no celular, cada filtro ocupa a linha */
@media (min-width: 700px) {
    .filters select, .filters.fin-filtros > select, form.row select { min-width: max-content; }
}
@media (max-width: 699px) {
    .filters > select, .filters > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
    .filters.fin-filtros > select, .filters.fin-filtros > input:not([type=checkbox]):not([type=radio]):not([type=hidden]) { flex: 1 1 100%; width: 100%; }
}
/* 3. Campos dentro de tabelas (tipos, comodidades, ocasiões, colunas do CRM, redes, acessos): largura mínima legível */
td input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=color]):not([type=number]) { min-width: 12.5em; }
td select { min-width: max-content; }
/* 4. Data digitável (dd/mm/aaaa) e hora (hh:mm) sempre inteiras */
.campo-digitavel > input { min-width: 11ch; }
input[placeholder="hh:mm"] { min-width: 9ch; }
/* 5. Redes do influenciador no celular: o nome da rede em cima, perfil e seguidores lado a lado */
@media (max-width: 520px) {
    .net-row { grid-template-columns: 1fr 1fr !important; }
    .net-row > label { grid-column: 1 / -1; }
}
/* 6. Horário de funcionamento no celular: os dois horários dividem a linha e o "remover" desce */
@media (max-width: 520px) {
    .hours-shift { grid-template-columns: 1fr auto 1fr; }
    .hours-shift > .hours-del, .hours-shift > span:last-child:empty { grid-column: 1 / -1; justify-self: end; }
    .hours-shift .campo-digitavel > input { min-width: 6.5ch !important; }
}
/* 7. Busca do Financeiro: o texto de exemplo inteiro */
.filters.fin-filtros > input[name=busca] { min-width: 10.5rem; }
/* 8. Linha com e-mail: o endereço inteiro (a linha vira uma coluna mais cedo) */
.field-row:has(> .field > input[type=email]) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
/* 9. Contas a pagar e a receber: a linha "pago … · falta …" quebra, e a coluna Status (Pagar, Excluir) não sai da tabela */
table.fin-list td[data-label="Valor"] .muted { white-space: normal; }

/* v1.44.1: Configurações como a única entrada dos ajustes: busca, blocos de cartões e o caminho de volta nas telas de ajuste */
.cfg-busca { max-width: 980px; margin: 0 0 6px; }
.cfg-busca input { width: 100%; max-width: 420px; }
.cfg-blocos { max-width: 980px; }
.cfg-bloco { margin: 0 0 18px; }
.cfg-bloco[hidden], .cfg-tile[hidden] { display: none; }
.cfg-bloco-t { margin: 14px 0 8px; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--lavanda); }
.cfg-tile b { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cfg-badge { margin-left: 0; }
.page-crumb { margin: 0 0 4px; font-size: .86rem; color: var(--lavanda); }
.page-crumb a { color: var(--rosa); text-decoration: none; font-weight: 600; }
.page-crumb a:hover { text-decoration: underline; }

/* v1.44.2: a situação de cada cartão de Configurações (verde em dia, amarelo atenção, cinza desligado, vermelho problema) */
.cfg-tile .cfg-txt { display: flex; flex-direction: column; min-width: 0; flex: 1; align-self: stretch; }
.cfg-st { margin-top: auto; padding-top: 8px; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.cfg-chip { display: inline-block; max-width: 100%; font-size: 11.5px; font-weight: 700; line-height: 1.35; padding: 2px 9px; border-radius: 99px; border: 1px solid transparent; overflow-wrap: anywhere; }
.cfg-ok { background: #E3F5EA; color: #116B37; border-color: #B9E3C8; }
.cfg-aviso { background: #FFF4D6; color: #7A5300; border-color: #F2DC9B; }
.cfg-desligado { background: #EFEDF2; color: #5E5870; border-color: #DEDAE4; }
.cfg-problema { background: #FDE4E4; color: #A11A1A; border-color: #F5B8B8; }
.cfg-info { background: transparent; color: var(--lavanda); border-color: var(--borda); }
.cfg-motivo { font-size: 11.5px; line-height: 1.35; color: var(--lavanda); overflow-wrap: anywhere; }
.cfg-alerta { max-width: 980px; background: #FDE4E4; color: #7A1414; border: 1px solid #F5B8B8; }
.cfg-alerta a { color: inherit; font-weight: 700; }
html[data-tema="escuro"] .cfg-ok { background: #123222; color: #8FE0AE; border-color: #1F5236; }
html[data-tema="escuro"] .cfg-aviso { background: #3A2E0E; color: #F5D27A; border-color: #5B4816; }
html[data-tema="escuro"] .cfg-desligado { background: #26232F; color: #B7B1C6; border-color: #3A3548; }
html[data-tema="escuro"] .cfg-problema { background: #3D1616; color: #FFB4B4; border-color: #6B2424; }
html[data-tema="escuro"] .cfg-alerta { background: #3D1616; color: #FFD0D0; border-color: #6B2424; }
/* v1.44.3: o menu lateral começa no alto da tela, com a logo; a barra de cima (sininho e conta) fica só sobre o conteúdo.
   Antes a barra ocupava a largura toda e o menu começava 64px abaixo, com a logo repetida ("S SpotMesa · Admin"). */
.sb-brand { height: 64px; flex: 0 0 64px; box-sizing: border-box; padding: 0 12px 0 16px; gap: 8px; }
.sb-logo { display: flex; align-items: center; min-width: 0; line-height: 0; border-radius: 8px; }
.sb-logo-full { height: 26px; width: auto; display: block; }
.sb-logo-mini { display: none; width: 34px; height: 34px; border-radius: 8px; }
.sb-area { flex: 0 1 auto; margin-top: 7px; font-family: var(--mono); font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--side-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (min-width: 901px) {
  .has-shell .sidebar { top: 0; }
  .has-shell .topbar { margin-left: 248px; transition: margin-left .18s ease; }
  .has-shell.sb-mini .topbar { margin-left: 64px; }
  .has-shell .topbar .logo { display: none; }
  .has-shell .topbar .container { justify-content: flex-end; max-width: none; padding-left: 24px; padding-right: 24px; }
  .sb-mini .sb-brand { padding: 0; }
  .sb-mini .sb-logo-full, .sb-mini .sb-area { display: none; }
  .sb-mini .sb-logo-mini { display: block; }
}
@media (prefers-reduced-motion: reduce) { .has-shell .topbar { transition: none; } }
/* v1.45.0: lotação por dia e o selo do happy hour */
.lot-box { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin: 0 0 14px; padding: 10px 14px; }
.lot-box .lot-parte { display: inline-flex; align-items: baseline; gap: 6px; font-size: .92rem; }
.lot-box .lot-parte b { font-size: 1.05rem; }
.lot-box .lot-cheio { color: var(--bad, #B42318); }
.lot-bar { width: 90px; height: 6px; border-radius: 99px; background: var(--borda); overflow: hidden; display: inline-block; vertical-align: middle; }
.lot-bar i { display: block; height: 100%; background: var(--rosa); }
.lot-full { border-left: 4px solid var(--bad, #B42318); }
.cal .g button.lot { box-shadow: inset 0 -3px 0 var(--bad, #B42318); }
.lot-wd { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; }
.lot-wd .field { margin: 0; }
.hh-badge { display: inline-block; padding: 1px 8px; border-radius: 99px; background: #FFF1D1; color: #7A5200; font-weight: 700; font-size: .82rem; line-height: 1.5; }
.tcard-hh { margin: 0 0 6px; font-size: .86rem; font-weight: 700; color: #7A5200; }
.slot.slot-hh { border-color: #E2B33D; }
.slot-hh-tag { margin-left: 4px; font-size: .7rem; font-weight: 800; color: #7A5200; }
html[data-tema="escuro"] .hh-badge { background: #3A2E0E; color: #F5D27A; }
html[data-tema="escuro"] .tcard-hh, html[data-tema="escuro"] .slot-hh-tag { color: #F5D27A; }
/* v1.45.0: fotos dos pacotes */
.pk-fotos { margin: 10px 0 0; }
.pk-fotos-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; margin-bottom: 8px; }
.pk-foto { position: relative; margin: 0; border: 1px solid var(--borda); border-radius: 10px; overflow: hidden; background: var(--branco); }
.pk-foto img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.pk-capa { position: absolute; top: 6px; left: 6px; background: var(--rosa); color: #fff; font-size: .7rem; font-weight: 800; padding: 1px 7px; border-radius: 99px; }
.pk-foto figcaption { display: flex; gap: 4px; justify-content: center; padding: 4px; flex-wrap: wrap; }
.pk-foto figcaption form { margin: 0; }
.pk-foto figcaption button { min-height: 30px; min-width: 30px; border: 1px solid var(--borda); background: var(--branco); color: inherit; border-radius: 8px; font: inherit; font-size: .8rem; font-weight: 700; cursor: pointer; padding: 0 6px; }
.pk-foto figcaption .pk-del { color: var(--bad, #B42318); }
.pk-envio { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.pk-drop { position: relative; flex: 1 1 260px; display: flex; flex-direction: column; gap: 2px; align-items: center; justify-content: center; text-align: center; padding: 14px; border: 2px dashed var(--borda); border-radius: 12px; cursor: pointer; font-size: .88rem; }
.pk-drop:hover, .pk-drop:focus-within { border-color: var(--rosa); }
.pk-drop input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
.pk-galeria { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 10px 0 0; }
.pk-g-item { display: block; border-radius: 10px; overflow: hidden; background: var(--creme); }
.pk-g-item img { display: block; width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.pk-g-capa { grid-column: 1 / -1; }
.pk-g-capa img { aspect-ratio: 16 / 9; }
.pk-lightbox { border: 0; padding: 0; background: transparent; max-width: 96vw; max-height: 92vh; overflow: visible; }
.pk-lightbox::backdrop { background: rgba(10, 8, 16, .86); }
.pk-lightbox img { display: block; max-width: 92vw; max-height: 86vh; border-radius: 10px; }
.pk-lightbox button { position: fixed; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .92); color: #2B0F4C; font-size: 1.6rem; line-height: 1; cursor: pointer; }
.pk-lightbox .pk-lb-ant { left: 12px; }
.pk-lightbox .pk-lb-prox { right: 12px; }
.pk-lightbox .pk-lb-fechar { top: 28px; right: 12px; transform: none; }

/* v1.45.0: mala direta (editor, filtros, datas comerciais) */
.mala-barra { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 0 0 6px; }
.mala-barra button, .mala-img-btn { min-height: 34px; padding: 4px 10px; border: 1px solid var(--borda); border-radius: 8px; background: var(--branco); color: inherit; font: inherit; font-size: .85rem; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.mala-barra button:hover, .mala-img-btn:hover { border-color: var(--rosa); }
.mala-filtros { border: 1px solid var(--borda); border-radius: 12px; padding: 10px 14px 12px; margin: 4px 0 14px; }
.mala-filtros legend { font-weight: 700; padding: 0 6px; }
.mala-datas { margin: 0 0 14px; }
.mala-datas-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; margin-top: 8px; }
.mala-data { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border: 1px solid var(--borda); border-radius: 10px; color: inherit; text-decoration: none; }
.mala-data:hover { border-color: var(--rosa); }
.mala-data span { font-size: .85rem; color: var(--lavanda); }
.mala-data em { font-style: normal; font-size: .78rem; font-weight: 700; color: var(--rosa); }

/* v1.45.1: pedido antecipado — faixa "A PAGAR NO LOCAL", etiqueta de cada item e o selo "a receber no local" */
.apl-banner { display: block; text-align: center; background: #FFF1DC; border: 3px solid #E8740C; color: #8A3A00; border-radius: 14px; padding: 12px 14px; font-weight: 800; font-size: 1.35rem; letter-spacing: .01em; line-height: 1.25; }
.apl-banner small { display: block; font-weight: 600; font-size: .82rem; margin-top: 4px; letter-spacing: 0; }
.apl-banner.apl-pago { background: #E3F6EA; border-color: #1E9E5A; color: #0D5A31; }
.apl-text { color: #C25E00; }
.pago-tag { display: inline-block; font-size: .72rem; font-weight: 700; padding: 2px 8px; border-radius: 999px; vertical-align: middle; white-space: nowrap; }
.pago-tag-pago { background: #1E9E5A; color: #fff; }
.pago-tag-parte { background: #F6C445; color: #4A3500; }
.pago-tag-nao_pago { background: #E8740C; color: #fff; }
.receber-chip { display: inline-block; background: #E8740C; color: #fff; font-weight: 800; padding: 3px 10px; border-radius: 999px; font-size: .8rem; white-space: nowrap; }
.receber-chip.pago { background: #1E9E5A; }
.pre-hint { font-size: .74rem; color: var(--rosa); font-weight: 600; }
.pre-pay { border: 1px dashed var(--borda); border-radius: 12px; padding: 8px 12px; display: flex; flex-direction: column; gap: 4px; }
.pre-pay legend { font-weight: 700; font-size: .9rem; padding: 0 6px; }
.pre-resumo { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-top: 12px; }
.pre-resumo > div { background: var(--creme); border-radius: 12px; padding: 8px 12px; display: flex; flex-direction: column; }
.pre-resumo strong { font-size: 1.15rem; }
.print-only { display: none; }
@media print { .print-only { display: table-cell; } .kitchen-card { break-inside: avoid; } }

/* v1.45.1: telas em lista + um formulário só (Pacotes, Cardápio, Cupons) */
.list-head { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; justify-content: space-between; margin: 0 0 16px; }
.list-head > div { min-width: 0; flex: 1 1 320px; }
.empty-state { text-align: center; padding: 32px 18px; }
.empty-art { display: block; margin: 0 auto 6px; }
.pk-ideias { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; margin-top: 22px; text-align: left; }
.pk-ideia { display: flex; flex-direction: column; gap: 3px; border: 1px dashed var(--borda); border-radius: 12px; padding: 12px 14px; text-decoration: none; color: inherit; }
.pk-ideia:hover { border-color: var(--rosa); }
.pk-ideia .small:last-child { color: var(--rosa); font-weight: 700; margin-top: 4px; }
.pk-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.pk-card { display: flex; flex-direction: column; padding: 0; overflow: hidden; margin: 0; cursor: grab; min-width: 0; }
.pk-card.arrastando { opacity: .45; }
.pk-card.is-oculto .pk-card-capa img, .pk-card.is-oculto .pk-sem-foto { filter: grayscale(1); opacity: .6; }
.pk-card-capa { position: relative; aspect-ratio: 16 / 9; background: var(--creme); }
.pk-card-capa img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pk-sem-foto { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: var(--cinza, #8a8a8a); }
.pk-chip { position: absolute; top: 10px; right: 10px; background: #5c5c66; color: #fff; font-size: .72rem; font-weight: 800; padding: 3px 10px; border-radius: 999px; }
.pk-chip.on { background: #1E9E5A; }
.pk-card-corpo { padding: 12px 14px 4px; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pk-card-nome { font-size: 1.05rem; margin: 0; overflow-wrap: anywhere; }
.pk-card-preco { font-weight: 800; color: var(--rosa); }
.pk-card-acoes { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 10px 14px 14px; margin-top: auto; }
.pk-card-acoes form { margin: 0; }
.pk-excluir { color: #c0392b; }
.form-secoes { padding: 0; }
.form-secao { padding: 16px 20px; border-bottom: 1px solid var(--borda); }
.form-secao h2 { font-size: 1.05rem; margin: 0 0 10px; }
.form-acoes { display: flex; flex-wrap: wrap; gap: 10px; padding: 16px 20px; }
.pk-foto-ops { display: flex; justify-content: space-between; gap: 6px; padding: 6px 8px; flex-wrap: wrap; }
.pk-foto-ops label { display: inline-flex; gap: 4px; align-items: center; }
.pk-previa { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; margin-top: 8px; }
.pk-previa .pk-foto.demais { opacity: .35; }
.item-lista { display: flex; flex-direction: column; gap: 0; padding: 0; }
.item-linha { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--borda); }
.item-linha:last-child { border-bottom: 0; }
.item-linha > div:first-child { min-width: 0; flex: 1 1 260px; }
.item-acoes { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.item-acoes form { margin: 0; }
@media (max-width: 560px) { .form-secao, .form-acoes { padding: 14px; } .pk-card { cursor: default; } }
.menu-item-acoes { margin: 4px 0 0 34px; }
.menu-add { margin: 6px 0 0; }
.nova-secao { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin-top: 18px; }
.pk-chip-inline { display: inline-block; font-size: .7rem; font-weight: 800; padding: 1px 8px; border-radius: 999px; background: #5c5c66; color: #fff; vertical-align: middle; }
.pk-chip-inline.on { background: #1E9E5A; }
.dica-modelo { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.dica-modelo > div { flex: 1 1 300px; min-width: 0; }
.pk-card-acoes form:last-child { margin-left: auto; }
.apl-valor { white-space: nowrap; }

/* v1.45.2: seletor de dia e horário só com horários livres */
.slot-picker { display: flex; flex-direction: column; gap: 4px; }
.sp-rotulo { display: block; font-weight: 700; font-size: .9rem; margin-bottom: 6px; }
.sp-cal { border: 1px solid var(--borda); border-radius: 12px; padding: 10px; max-width: 360px; }
.sp-cal-topo { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.sp-mes { font-size: .95rem; }
.sp-nav { border: 0; background: transparent; color: inherit; font-size: 1.3rem; width: 36px; height: 36px; border-radius: 50%; cursor: pointer; }
.sp-nav:disabled { opacity: .3; cursor: default; }
.sp-semana, .sp-dias { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; text-align: center; }
.sp-semana span { font-size: .72rem; color: var(--cinza, #8a8a8a); font-weight: 700; }
.sp-dia { border: 1px solid transparent; background: transparent; color: inherit; border-radius: 8px; height: 38px; font-weight: 600; cursor: pointer; }
.sp-dia:hover:not(:disabled) { border-color: var(--rosa); }
.sp-dia:disabled { opacity: .28; text-decoration: line-through; cursor: not-allowed; }
.sp-dia.hoje { box-shadow: inset 0 -2px 0 var(--rosa); }
.sp-dia.on { background: var(--rosa); color: #fff; }
.sp-horas { display: flex; flex-wrap: wrap; gap: 6px; }
.sp-hora { border: 1px solid var(--borda); background: transparent; color: inherit; border-radius: 999px; padding: 6px 12px; font-weight: 700; cursor: pointer; font-variant-numeric: tabular-nums; }
.sp-hora:hover { border-color: var(--rosa); }
.sp-hora.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.sp-msg { margin: 6px 0 0; }
.sp-msg.sp-vazio { color: #C25E00; font-weight: 700; }
.sp-prox { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.sp-livres { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: -4px 0 12px; }
.sp-livres-lista { display: flex; flex-wrap: wrap; gap: 6px; }
.srv-lista { display: flex; flex-direction: column; gap: 0; }
.srv-item { display: flex; gap: 12px; align-items: flex-start; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--borda); }
.srv-item:last-child { border-bottom: 0; }
.srv-item > div { min-width: 0; flex: 1; }
.srv-dias { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-top: 4px; }
.switch { position: relative; flex: 0 0 auto; width: 46px; height: 26px; }
.switch input { opacity: 0; width: 100%; height: 100%; position: absolute; inset: 0; margin: 0; cursor: pointer; z-index: 1; }
.switch span { position: absolute; inset: 0; background: #8a8a95; border-radius: 999px; transition: background .15s; }
.switch span::after { content: ''; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .15s; }
.switch input:checked + span { background: #1E9E5A; }
.switch input:checked + span::after { transform: translateX(20px); }
.switch input:focus-visible + span { outline: 2px solid var(--rosa); outline-offset: 2px; }

/* v1.46.0: pedido em passos — letra e toques maiores, cartões, resumo e botão fixos embaixo */
#form-reserva { font-size: 1rem; }
#form-reserva label, #form-reserva .small, #form-reserva small { font-size: max(.95rem, 15px); }
#form-reserva input:not([type=radio]):not([type=checkbox]), #form-reserva select, #form-reserva textarea { min-height: 48px; font-size: 1rem; }
.wz-progresso { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; font-weight: 700; font-size: .95rem; }
.wz-barra { flex: 1; height: 6px; border-radius: 99px; background: var(--borda); overflow: hidden; }
.wz-barra > span { display: block; height: 100%; width: 50%; background: var(--rosa); transition: width .2s; }
.wz-titulo { margin: 0 0 12px; font-size: 1.15rem; }
.wz-intent, .wz-quem { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 14px; }
.wz-card { position: relative; display: flex; gap: 10px; align-items: flex-start; border: 2px solid var(--borda); border-radius: 14px; padding: 12px 14px; cursor: pointer; min-height: 64px; }
.wz-card input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.wz-card strong { display: block; font-size: 1rem; }
.wz-card small { display: block; color: var(--cinza, #8a8a8a); line-height: 1.35; }
.wz-card:has(input:checked) { border-color: var(--rosa); background: color-mix(in srgb, var(--rosa) 10%, transparent); }
.wz-card:has(input:focus-visible), .wz-pacote:has(input:focus-visible) { outline: 3px solid var(--rosa); outline-offset: 2px; }
.wz-ico { font-size: 1.5rem; line-height: 1; }
.wz-contador { display: flex; align-items: stretch; gap: 6px; max-width: 220px; }
.wz-contador button { width: 52px; min-height: 48px; border-radius: 12px; border: 2px solid var(--borda); background: transparent; color: inherit; font-size: 1.5rem; font-weight: 700; cursor: pointer; }
.wz-contador input { text-align: center; font-size: 1.15rem !important; font-weight: 800; min-width: 0; }
.wz-opcoes { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.wz-pacote { position: relative; display: flex; gap: 12px; align-items: center; border: 2px solid var(--borda); border-radius: 14px; padding: 10px; cursor: pointer; min-height: 72px; }
.wz-pacote input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.wz-pacote img, .wz-pacote-sem { width: 76px; height: 64px; flex: 0 0 76px; border-radius: 10px; object-fit: cover; display: flex; align-items: center; justify-content: center; font-size: 1.8rem; background: var(--creme); }
.wz-pacote-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.wz-pacote-txt small { color: var(--cinza, #8a8a8a); line-height: 1.35; }
.wz-preco { font-weight: 800; color: var(--rosa); }
.wz-pacote.on, .wz-pacote:has(input:checked) { border-color: var(--rosa); background: color-mix(in srgb, var(--rosa) 10%, transparent); }
.wz-extras summary, #form-reserva details > summary { min-height: 44px; display: flex; align-items: center; gap: 6px; cursor: pointer; font-weight: 700; }
.wz-resumo { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; margin: 0 0 12px; padding: 12px 14px; border-radius: 12px; background: var(--creme); }
.wz-resumo dt { color: var(--cinza, #8a8a8a); }
.wz-resumo dd { margin: 0; font-weight: 700; }
.wz-aviso { margin: 10px 0 0; font-weight: 700; }
.wz-barra-fixa { position: sticky; bottom: 0; z-index: 5; display: flex; align-items: center; gap: 8px; margin: 16px -4px 0; padding: 10px 4px; background: var(--branco); border-top: 1px solid var(--borda); }
.wz-barra-fixa .btn { min-height: 52px; font-size: 1.05rem; padding: 0 20px; white-space: nowrap; }
.wz-resumo-curto { flex: 1; min-width: 0; font-weight: 700; font-size: .95rem; line-height: 1.3; }
.wz-voltar { border: 0; background: transparent; color: inherit; min-height: 48px; padding: 0 6px; font-weight: 700; cursor: pointer; }
.wz-erro { color: #C25E00; font-weight: 700; margin: 8px 0 0; }
.reserve-sticky.escondido { display: none !important; }
#form-reserva .sp-hora { min-height: 44px; min-width: 64px; font-size: 1rem; }
#form-reserva .sp-dia { height: 44px; font-size: 1rem; }
@media (max-width: 859px) { .wz-barra-fixa { margin: 16px -16px 0; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); } }
.sp-rapidos { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.sp-rapidos:empty { display: none; }
.sp-rapido { min-height: 44px; padding: 0 16px; border-radius: 999px; border: 2px solid var(--borda); background: transparent; color: inherit; font-weight: 700; font-size: 1rem; cursor: pointer; }
.sp-rapido.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.wz-voltar { font-size: 1.6rem; min-width: 44px; } .wz-resumo-curto { font-size: .9rem; }
.sucesso { margin-bottom: 16px; border: 2px solid var(--borda); }
.sucesso.ok { border-color: #1E9E5A; }
.sucesso-topo { display: flex; gap: 12px; align-items: flex-start; }
.sucesso-ico { font-size: 2rem; line-height: 1; }
.sucesso-voucher { margin-top: 14px; min-height: 52px; font-size: 1.05rem; }
.sucesso-acoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 8px; margin-top: 10px; }
.sucesso-acoes .btn { min-height: 48px; display: flex; align-items: center; justify-content: center; }

/* v1.46.1: cartões do pedido sem texto sobreposto (o texto quebra a linha; o selo fica numa linha própria) */
.wz-card > span:last-child { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.wz-card strong, .wz-card small { white-space: normal; }
.wz-card .badge { display: block; width: fit-content; max-width: 100%; margin: 6px 0 0 !important; white-space: normal; line-height: 1.3; }
.wz-intent { grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); }
/* v1.46.1: selo discreto dos parceiros em Destaque na busca (vêm primeiro) */
.badge-destaque { position: absolute; top: 10px; right: 10px; left: auto; background: rgba(20, 18, 30, .78); color: #FFD27A; border: 1px solid rgba(255, 210, 122, .5); font-weight: 800; }
.cover .badge-destaque, .tcard-cover .badge-destaque { z-index: 2; }

/* v1.46.1: pacotes em cartões completos (página do lugar e pedido) */
.pk-cartoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 14px; }
.pk-cartao { display: flex; flex-direction: column; border: 2px solid var(--borda); border-radius: 16px; overflow: hidden; background: var(--branco); min-width: 0; }
.pk-cartao.on { border-color: var(--rosa); box-shadow: 0 0 0 3px color-mix(in srgb, var(--rosa) 25%, transparent); }
.pk-cartao .pk-galeria { margin: 0; }
.pk-sem-capa { aspect-ratio: 16 / 9; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, color-mix(in srgb, var(--rosa) 35%, var(--creme)), var(--creme)); font-size: 3rem; }
.pk-cartao-corpo { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; }
.pk-cartao-nome { margin: 0; font-size: 1.1rem; overflow-wrap: anywhere; }
.pk-cartao-preco strong { color: var(--rosa); font-size: 1.05rem; }
.pk-total { font-size: .9rem; color: var(--cinza, #8a8a8a); }
.pk-desc { margin: 0; white-space: pre-line; color: var(--cinza, #8a8a8a); line-height: 1.45; }
details.pk-desc summary { list-style: none; cursor: pointer; }
details.pk-desc summary::-webkit-details-marker { display: none; }
details.pk-desc[open] .pk-desc-curta, details.pk-desc[open] .pk-ver-mais { display: none; }
.pk-ver-mais { color: var(--rosa); font-weight: 700; }
.pk-escolher { position: relative; margin-top: 6px; min-height: 48px; display: flex; align-items: center; justify-content: center; text-align: center; }
.pk-escolher input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.pk-escolhido-txt { display: none; }
.pk-escolher:has(input:checked) { background: #1E9E5A; border-color: #1E9E5A; }
.pk-escolher:has(input:checked) .pk-escolher-txt { display: none; }
.pk-escolher:has(input:checked) .pk-escolhido-txt { display: inline; }
.pk-escolher:has(input:focus-visible) { outline: 3px solid var(--rosa); outline-offset: 2px; }
.wz-opcoes .pk-cartao { width: 100%; }
.wz-erro.wz-ok { color: #1E9E5A; }

/* v1.46.1: cardápio em cartões (foto à esquerda no celular, grade no computador) */
.it-atalhos { position: sticky; top: 64px; z-index: 3; display: flex; gap: 6px; overflow-x: auto; padding: 6px 0 10px; background: var(--branco); scrollbar-width: none; }
.it-atalhos a { flex: 0 0 auto; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--borda); text-decoration: none; color: inherit; font-weight: 700; font-size: .92rem; white-space: nowrap; }
.it-secao { margin: 14px 0 8px; font-weight: 800; scroll-margin-top: 120px; }
h3.it-secao { font-size: 1.1rem; }
.it-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 10px; }
.it-cartao { display: flex; gap: 12px; align-items: center; border: 1px solid var(--borda); border-radius: 14px; padding: 10px; min-width: 0; }
.it-cartao.on { border-color: var(--rosa); background: color-mix(in srgb, var(--rosa) 7%, transparent); }
.it-foto { width: 84px; height: 84px; flex: 0 0 84px; border-radius: 12px; object-fit: cover; }
.it-sem-foto { display: flex; align-items: center; justify-content: center; font-size: 2.2rem; background: var(--creme); }
.it-corpo { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.it-nome { overflow-wrap: anywhere; }
.it-desc { font-size: .9rem; color: var(--cinza, #8a8a8a); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.it-preco { font-weight: 700; }
.it-selos { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.it-selo { font-size: .75rem; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: color-mix(in srgb, var(--rosa) 14%, transparent); color: var(--rosa); }
.it-picker { display: flex; flex-direction: column; gap: 8px; }
.it-pedido { flex-wrap: wrap; }
.it-contador { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.it-contador button { width: 48px; height: 48px; border-radius: 12px; border: 2px solid var(--borda); background: transparent; color: inherit; font-size: 1.4rem; font-weight: 800; cursor: pointer; }
.it-contador input { width: 56px; min-height: 48px !important; text-align: center; font-weight: 800; font-size: 1.1rem !important; }
@media (max-width: 420px) { .it-pedido .it-contador { width: 100%; justify-content: flex-end; } .it-foto { width: 72px; height: 72px; flex-basis: 72px; } }
.menu-picker.it-picker { max-height: none; overflow: visible; border: 0; padding: 0; background: transparent; }
/* v1.46.1: ilustração da SpotMesa no lugar da foto que falta, com o selo "Imagem ilustrativa" */
.ilustra-wrap { position: relative; display: block; overflow: hidden; background: #FFF7F0; }
.ilustra-wrap > img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ilustra-selo { position: absolute; left: 6px; bottom: 6px; background: rgba(43, 15, 76, .82); color: #fff; font-size: .62rem; font-weight: 700; padding: 1px 6px; border-radius: 999px; letter-spacing: .01em; }
.ilustra-dica { position: absolute; left: 0; right: 0; top: 0; padding: 6px 10px; background: rgba(214, 18, 95, .9); color: #fff; font-size: .78rem; font-weight: 700; text-align: center; }
.pk-sem-capa.ilustra-wrap { aspect-ratio: 16 / 9; }
.pk-sem-capa.ilustra-wrap .ilustra-selo { font-size: .72rem; left: 10px; bottom: 10px; }
.it-foto.ilustra-wrap { padding: 0; }
.ilustra-mini { width: 56px; height: 56px; border-radius: 10px; flex: 0 0 auto; }
.ilustra-form { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
.ilustra-form .ilustra-wrap { width: 160px; aspect-ratio: 4 / 3; border-radius: 12px; flex: 0 0 160px; }
@media (max-width: 420px) { .ilustra-form { flex-direction: column; align-items: flex-start; } }

/* v1.46.1: Duração com − e + (mesmo tamanho do "Quantas pessoas?") e o horário grande da festa em casa */
.dur-contador { display: flex; align-items: stretch; gap: 6px; max-width: 260px; }
.dur-contador button { width: 52px; min-height: 48px; border-radius: 12px; border: 2px solid var(--borda); background: transparent; color: inherit; font-size: 1.5rem; font-weight: 700; cursor: pointer; }
.dur-contador button:disabled { opacity: .35; cursor: not-allowed; }
.dur-valor { flex: 1; display: flex; align-items: center; justify-content: center; min-width: 96px; border: 2px solid var(--borda); border-radius: 12px; font-size: 1.15rem; font-weight: 800; }
.dur-fim { margin: 6px 0 0; font-weight: 700; }
.dur-pacote { margin: 2px 0 0; }
input.hora-grande { font-size: 1.15rem; font-weight: 700; min-height: 48px; max-width: 200px; }
/* v1.46.1: festa entre amigos, lugares da SpotMesa em cartões (destaque primeiro) */
.lugar-busca { margin: 6px 0 8px; min-height: 48px; }
.lugar-cartoes { display: grid; grid-template-columns: 1fr; gap: 8px; max-height: 460px; overflow-y: auto; padding: 2px; }
@media (min-width: 720px) { .lugar-cartoes { grid-template-columns: 1fr 1fr; } }
.lugar-cartao { position: relative; display: flex; align-items: center; gap: 12px; padding: 10px 40px 10px 10px; border: 2px solid var(--borda); border-radius: 14px; cursor: pointer; min-height: 72px; }
.lugar-cartao[hidden] { display: none; }
.lugar-cartao input { position: absolute; opacity: 0; pointer-events: none; }
.lugar-cartao img, .lugar-sem-foto { width: 64px; height: 64px; flex: 0 0 64px; border-radius: 10px; object-fit: cover; }
.lugar-sem-foto { display: flex; align-items: center; justify-content: center; background: var(--rosa); color: #fff; font-size: 1.6rem; font-weight: 800; }
.lugar-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lugar-info strong { overflow-wrap: anywhere; }
.lugar-destaque { align-self: flex-start; font-size: .75rem; font-weight: 800; padding: 1px 8px; border-radius: 999px; color: #FFD27A; border: 1px solid rgba(255, 210, 122, .5); background: rgba(20, 18, 30, .5); }
.lugar-check { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--borda); display: flex; align-items: center; justify-content: center; font-size: .8rem; color: transparent; }
.lugar-cartao:has(input:checked) { border-color: var(--rosa); background: rgba(214, 18, 95, .08); }
.lugar-cartao:has(input:checked) .lugar-check { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.lugar-cartao:has(input:focus-visible) { outline: 3px solid var(--rosa); outline-offset: 2px; }
/* v1.46.1: cardápio da página em cartões com a foto grande em cima (2 colunas no celular, 3 no computador);
   no pedido, foto maior e o selo "Imagem ilustrativa" como faixa fina, sem cobrir a ilustração */
.it-cardapio .it-grade { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.it-cardapio .it-cartao { flex-direction: column; align-items: stretch; gap: 0; padding: 0; overflow: hidden; transition: transform .15s, box-shadow .15s; }
.it-cardapio .it-cartao:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0, 0, 0, .25); }
.it-cardapio .it-foto { width: 100%; height: auto; aspect-ratio: 4 / 3; flex: none; border-radius: 0; }
.it-cardapio .it-corpo { padding: 10px 12px 12px; gap: 4px; }
.it-cardapio .it-nome { font-size: 1rem; line-height: 1.25; }
.it-cardapio .it-preco { color: var(--rosa); font-size: .98rem; }
.it-cardapio .it-preco .muted, .it-cardapio .it-preco small { color: inherit; }
.it-cardapio .ilustra-selo { left: 8px; bottom: 8px; font-size: .66rem; }
.it-picker .it-foto { width: 96px; height: 96px; flex-basis: 96px; }
@media (max-width: 420px) { .it-picker .it-foto { width: 84px; height: 84px; flex-basis: 84px; } }
.it-picker .it-foto .ilustra-selo, .ilustra-mini .ilustra-selo { left: 0; right: 0; bottom: 0; border-radius: 0; text-align: center; font-size: .52rem; padding: 1px 2px; white-space: nowrap; overflow: hidden; }
/* v1.46.1: no painel, a miniatura sem foto um pouco maior e com o selo; o lembrete não cobre o "Visível" */
.menu-thumb.ilustra-mini { width: 72px; height: 72px; }
.ilustra-form .ilustra-wrap { width: 160px; height: 120px; flex: 0 0 auto; border-radius: 12px; }
.ilustra-dica { text-align: left; padding-right: 110px; }
.menu-thumb.ilustra-mini { width: 84px; height: 84px; }
.menu-thumb.ilustra-mini .ilustra-selo { font-size: .5rem; letter-spacing: -.01em; padding: 1px 0; }

/* v1.47.0: pizzas — quadro de tamanhos e cobrança, grade de preço do sabor, recorte da foto, painel "Montar pizza" e a lista no pedido */
.pz-selo { background: #FFE9C2; color: #7a4a00; }
.pz-config { margin-top: 18px; }
.pz-sub { font-size: 1.02rem; margin: 14px 0 8px; }
.pz-tamanhos { display: grid; gap: 6px; }
.pz-tam-cab, .pz-tam-linha { display: grid; grid-template-columns: 64px minmax(120px, 1fr) 84px minmax(150px, 1fr) 80px; gap: 8px; align-items: center; }
.pz-tam-linha input, .pz-tam-linha select { min-height: 44px; }
.pz-tam-novo input[name$="[nome]"] { border-style: dashed; }
@media (max-width: 640px) { .pz-tam-cab { display: none; } .pz-tam-linha { grid-template-columns: 56px 1fr 72px; padding: 8px; border: 1px solid var(--borda); border-radius: 12px; } .pz-tam-linha select { grid-column: 1 / -1; } .pz-tam-linha .check { grid-column: 1 / -1; } }
.pz-regras { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.pz-grade-box { margin: 0 0 12px; }
.pz-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.pz-grade-cel { display: flex; flex-direction: column; gap: 4px; font-weight: 700; }
.pz-grade-cel input { min-height: 48px; font-size: 1.05rem; }
.pz-recorte { margin-top: 10px; display: grid; gap: 6px; justify-items: start; }
.pz-recorte canvas { border-radius: 14px; touch-action: none; cursor: grab; background: #FFF7F0; max-width: 100%; }
.pz-recorte input[type=range] { width: 220px; }
.pz-precos { font-size: .9rem; }
.it-cardapio .pz-precos { color: var(--rosa); }
.pz-montar-pagina { margin-top: 8px; align-self: flex-start; }

body.pz-aberto { overflow: hidden; }
.pz-fundo { position: fixed; inset: 0; z-index: 90; background: rgba(15, 8, 28, .62); display: flex; align-items: flex-end; justify-content: center; }
.pz-fundo[hidden] { display: none; }
.pz-painel { background: var(--branco); color: inherit; width: 100%; max-width: 720px; max-height: 94vh; border-radius: 20px 20px 0 0; display: flex; flex-direction: column; box-shadow: 0 -10px 40px rgba(0, 0, 0, .35); }
@media (min-width: 760px) { .pz-fundo { align-items: center; } .pz-painel { border-radius: 20px; max-height: 90vh; } }
.pz-topo { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px 8px; }
.pz-topo h2 { margin: 0; font-size: 1.3rem; }
.pz-fechar { width: 48px; height: 48px; border-radius: 12px; border: 2px solid var(--borda); background: transparent; color: inherit; font-size: 1.2rem; cursor: pointer; }
.pz-corpo { overflow-y: auto; padding: 0 18px 12px; }
.pz-montada { display: flex; flex-direction: column; align-items: center; gap: 4px; margin: 4px 0 8px; }
.pz-montada svg { filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .3)); max-width: 62vw; height: auto; }
.pz-svg-nome { font: 800 12px/1 system-ui, sans-serif; fill: #fff; stroke: rgba(20, 10, 30, .75); stroke-width: 3px; paint-order: stroke; }
.pz-passo { display: flex; align-items: center; gap: 8px; font-size: 1.05rem; margin: 14px 0 8px; }
.pz-passo > span:first-child { width: 28px; height: 28px; border-radius: 50%; background: var(--rosa); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: .9rem; }
.pz-tamanhos-op, .pz-modos { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
.pz-op { display: flex; flex-direction: column; align-items: center; gap: 2px; min-height: 64px; padding: 10px 8px; border: 2px solid var(--borda); border-radius: 14px; background: transparent; color: inherit; font: inherit; cursor: pointer; text-align: center; }
.pz-op strong { font-size: 1.05rem; }
.pz-op small { opacity: .8; }
.pz-op.on { border-color: var(--rosa); background: rgba(214, 18, 95, .1); }
.pz-sabores { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.pz-sabor { display: flex; flex-direction: column; gap: 4px; padding: 0 0 10px; border: 2px solid var(--borda); border-radius: 14px; overflow: hidden; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.pz-sabor > strong, .pz-sabor > small, .pz-sabor > .pz-sabor-preco { padding: 0 10px; }
.pz-sabor.on { border-color: var(--rosa); box-shadow: 0 0 0 2px var(--rosa) inset; }
.pz-sabor-foto { position: relative; display: block; aspect-ratio: 1; background: #FFF7F0; }
.pz-sabor-foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pz-marca { position: absolute; top: 8px; right: 8px; min-width: 32px; height: 32px; border-radius: 16px; background: var(--rosa); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; padding: 0 6px; }
.pz-desc { opacity: .8; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pz-sabor-preco { font-weight: 800; color: var(--rosa); }
.pz-rodape { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 18px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--borda); }
.pz-preco-box { display: flex; flex-direction: column; flex: 1 1 160px; min-width: 0; }
.pz-preco { font-size: 1.35rem; }
.pz-regra { opacity: .85; }
.pz-qtd { display: flex; align-items: center; gap: 6px; }
.pz-qtd button, .pz-linha-qtd button { width: 48px; height: 48px; border-radius: 12px; border: 2px solid var(--borda); background: transparent; color: inherit; font-size: 1.4rem; font-weight: 800; cursor: pointer; }
.pz-qtd output { min-width: 28px; text-align: center; font-weight: 800; font-size: 1.15rem; }
.pz-add { min-height: 52px; flex: 1 1 180px; font-size: 1.05rem; }
.pz-add:disabled { opacity: .45; cursor: not-allowed; }

.pz-pedido { display: grid; gap: 10px; margin: 6px 0 12px; }
.pz-pedido-topo { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.pz-montar-btn { min-height: 52px; font-size: 1.05rem; }
.pz-linhas { display: grid; gap: 8px; }
.pz-linhas:empty { display: none; }
.pz-linha { display: grid; grid-template-columns: 64px 1fr auto; grid-template-areas: "img txt tirar" "img qtd qtd"; gap: 6px 10px; align-items: center; padding: 10px; border: 2px solid var(--rosa); border-radius: 14px; background: rgba(214, 18, 95, .06); }
.pz-linha-img { grid-area: img; }
.pz-linha-txt { grid-area: txt; display: flex; flex-direction: column; min-width: 0; }
.pz-linha-txt strong { overflow-wrap: anywhere; }
.pz-linha-qtd { grid-area: qtd; display: flex; align-items: center; gap: 8px; }
.pz-linha-qtd b { min-width: 24px; text-align: center; font-size: 1.1rem; }
.pz-tirar { grid-area: tirar; }
.pz-sabor-cartao { text-align: left; font: inherit; color: inherit; background: transparent; cursor: pointer; }
.pz-montar-com { color: var(--rosa); font-weight: 800; font-size: .9rem; margin-top: 2px; }
.pz-mini { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; vertical-align: middle; margin-right: 8px; }

/* v1.47.0: busca — barra compacta depois de buscar, título dos resultados e cartão inteiro tocável */
.sb-resumo { position: sticky; top: 64px; z-index: 8; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 8px 0 0; padding: 10px 14px; border: 1px solid var(--borda); border-radius: 14px; background: var(--branco); box-shadow: 0 4px 14px rgba(0, 0, 0, .18); }
.sb-resumo-txt { font-weight: 800; min-width: 0; overflow-wrap: anywhere; }
.sb-resumo .btn { flex: 0 0 auto; min-height: 44px; }
.sb-caixa { margin-top: 10px; }
.sb-caixa .sb { margin-top: 0; }
.sb[data-auto] .sb-go { display: none; }
.busca-res-topo { margin: 18px 0 12px; scroll-margin-top: 140px; }
.busca-res-topo h2 { margin: 0 0 2px; font-size: clamp(1.3rem, 3.6vw, 1.6rem); }
.busca-ajuda { margin: 6px 0 0; font-weight: 700; color: var(--rosa); }
.tcard { position: relative; }
.tcard-link::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.tcard-slots, .tcard-body a:not(.tcard-link), .tcard-cover { position: relative; z-index: 2; }
.tcard-slots .slot { min-height: 44px; display: inline-flex; align-items: center; }
.slot-more { font-weight: 800; }
.tcard-acao { display: inline-block; margin-top: 10px; font-weight: 800; color: var(--rosa); text-decoration: none; }
.tcard-cover .badge-destaque, .cover .badge-destaque { left: auto; right: 10px; width: auto; }
/* v1.47.0: tela de sucesso — o WhatsApp diz para que serve, com a prévia da mensagem; e o topo do celular sem quebrar */
.sucesso-wa { margin-top: 12px; display: grid; gap: 6px; }
.sucesso-principal { min-height: 52px; font-size: 1.05rem; display: flex; align-items: center; justify-content: center; text-align: center; }
.sucesso-acoes .sucesso-principal { background: var(--rosa); color: #fff; border-color: var(--rosa); }
.sucesso-previa { margin: 4px 0 0; padding: 10px 12px; border-radius: 12px; background: rgba(255, 255, 255, .05); border: 1px dashed var(--borda); font-size: .95rem; overflow-wrap: anywhere; }
.topbar .nav { flex-wrap: nowrap; min-width: 0; }
@media (max-width: 460px) {
  .topbar .nav { gap: 10px; }
  .nav .nav-minhas .show-sm { display: none; }
  .nav .nav-minhas::before { content: "📅"; font-size: 1.4rem; line-height: 1; }
}

/* v1.47.1: mesa com comida (o passo da festa só com o cardápio), "+ Adicionar" no cardápio da página e o botão fixo cheio */
/* v1.47.1: Pacotes e Cardápio em cartões que abrem um por vez (no pedido e na página) */
.acc { border: 2px solid var(--borda); border-radius: 16px; margin: 0 0 10px; overflow: hidden; }
.acc.aberto { border-color: var(--rosa); }
.acc-cab, .acc-pagina > summary { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 60px; padding: 12px 14px; background: transparent; border: 0; color: inherit; font: inherit; text-align: left; cursor: pointer; list-style: none; }
.acc-pagina > summary::-webkit-details-marker { display: none; }
.acc-ico { font-size: 1.5rem; line-height: 1; }
.acc-txt { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.acc-txt strong { font-size: 1.08rem; }
.acc-txt small { opacity: .85; overflow-wrap: anywhere; }
.acc-resumo { font-weight: 700; }
.acc-seta { font-size: 1.2rem; transition: transform .15s; }
.acc.aberto .acc-seta, .acc-pagina[open] > summary .acc-seta { transform: rotate(90deg); }
.acc-corpo { padding: 0 12px 12px; }
.acc-aviso { margin: 0 0 10px; padding: 10px 12px; border-radius: 12px; background: rgba(214, 18, 95, .08); font-weight: 600; }
.acc-pagina { padding: 0; margin-bottom: 12px; }
.acc-pagina > .pk-cartoes, .acc-pagina > .it-cardapio { padding: 0 14px 14px; }
.acc-sem-horario { color: var(--rosa); font-weight: 700; }
body.tem-horario [data-sem-horario] { display: none; }
body:not(.tem-horario) [data-com-horario] { display: none; } /* v1.47.3: "+ Adicionar" já antes do horário */
.it-dica { margin: 0 0 10px; font-weight: 700; }
.it-add-box { display: flex; align-items: center; margin-top: 8px; }
.it-add { min-height: 44px; font-weight: 800; }
.it-add-qtd { display: inline-flex; align-items: center; gap: 8px; }
.it-add-qtd button { width: 44px; height: 44px; border-radius: 12px; border: 2px solid var(--rosa); background: transparent; color: inherit; font-size: 1.3rem; font-weight: 800; cursor: pointer; }
.it-add-qtd b { min-width: 22px; text-align: center; font-size: 1.1rem; }
.it-cartao.on { border-color: var(--rosa); }
@media (max-width: 859px) { .reserve-sticky { background: #D6125F; color: #fff; font-size: 1.02rem; } }
/* v1.47.1: formulário do item: "Mais opções" recolhido e a promoção como escolha */
.mais-opcoes { border: 1px solid var(--borda); border-radius: 14px; padding: 10px 14px; }
.mais-opcoes > summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.promo-box { border: 1px dashed var(--borda); border-radius: 12px; padding: 10px 12px; }
.promo-box legend { padding: 0 6px; }
.promo-opcoes { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 8px; }
.promo-opcoes .check { min-height: 40px; }
/* v1.47.2: Pacotes e Cardápio para consulta dentro do pedido (passo 1); Mesa/Festa empilhados no celular; resumo acima do botão */
.pedido-consulta { margin-top: 14px; display: grid; gap: 10px; }
.pedido-consulta .acc-pagina { margin: 0; box-shadow: none; }
@media (max-width: 600px) {
  .wz-intent { grid-template-columns: 1fr; gap: 8px; }
  .wz-intent .wz-card { padding: 10px 12px; }
  .wz-intent .wz-card > span:last-child { min-width: 0; }
  .wz-intent .wz-card strong, .wz-intent .wz-card small { display: block; }
  .wz-card .badge { display: inline-block; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; border-radius: 999px; font-size: .72rem; padding: 2px 8px; margin-top: 4px !important; }
  .wz-barra-fixa { flex-wrap: wrap; row-gap: 4px; }
  .wz-barra-fixa .wz-resumo-curto { flex: 1 1 100%; order: -1; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .wz-barra-fixa .btn { flex: 1 1 auto; }
}
/* v1.47.3: Dia e pessoas → O que você quer? → Horário → Pacote ou Cardápio → Confirmar */
.wz-intent.wz-modos { grid-template-columns: 1fr; gap: 8px; }
.wz-modos .wz-card { min-height: 0; }
.wz-modos .wz-card .badge { display: inline-block; margin: 6px 0 0 !important; }
.wz-card.off { opacity: .55; cursor: not-allowed; border-style: dashed; }
.wz-card.off input { cursor: not-allowed; }
.wz-card .wz-motivo { color: #C25E00; font-weight: 700; margin-top: 2px; }
.wz-modo-info { margin: 10px 0 0; }
.wz-promo { margin: 0 0 10px; }
.wz-filtro { margin: 0 0 8px; padding: 8px 12px; border-radius: 10px; background: color-mix(in srgb, var(--rosa) 8%, transparent); }
.wz-filtro a { font-weight: 700; }
.pk-min-aviso { margin: 0 0 8px; color: #C25E00; font-weight: 700; }
.pk-min-aviso .btn-link { font-size: inherit; }
[data-wz-hora] .sp-campo { margin-top: 0; }
/* v1.47.4: cartão da busca com as fotos em carrossel e "📍 Ver no mapa"; o horário leva direto ao pedido */
.partner-card { position: relative; }
.partner-card h3 a.tcard-link { color: inherit; text-decoration: none; }
.cf { position: relative; z-index: 2; overflow: hidden; display: block; background: var(--roxo); }
.tcard-cover.cf { height: 150px; }
.partner-card .cover.cf { height: 140px; }
.cf-trilho { display: flex; height: 100%; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.cf-trilho::-webkit-scrollbar { display: none; }
.cf-foto { flex: 0 0 100%; height: 100%; scroll-snap-align: start; display: block; }
.cf-foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cf .badge { position: absolute; left: 12px; top: 12px; bottom: auto; z-index: 3; }
.cf .badge-destaque { left: auto; right: 10px; }
.cf-seta { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 30px; height: 30px; min-height: 0; padding: 0; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .88); color: var(--roxo); font-size: 18px; line-height: 1; cursor: pointer; display: none; }
.cf-ant { left: 8px; } .cf-prox { right: 8px; }
@media (hover: hover) and (pointer: fine) { .cf-seta { display: block; opacity: 0; transition: opacity .15s; } .cf:hover .cf-seta, .cf-seta:focus-visible { opacity: 1; } }
.cf-conta { position: absolute; right: 10px; bottom: 8px; z-index: 3; background: rgba(0, 0, 0, .55); color: #fff; font-size: 12px; line-height: 1.5; padding: 0 8px; border-radius: 99px; }
.cf-conta i { font-style: normal; }
.cf-bolinhas { position: absolute; left: 0; right: 0; bottom: 11px; z-index: 3; display: flex; justify-content: center; gap: 5px; pointer-events: none; }
.cf-bolinhas i { width: 6px; height: 6px; border-radius: 50%; background: rgba(255, 255, 255, .6); }
.cf-bolinhas i.on { width: 14px; border-radius: 3px; background: #fff; }
.partner-card .cover.cf .card-logo { z-index: 3; }
.cf-ver-mapa { position: relative; z-index: 2; display: block; margin: 3px 0 0; padding: 0; min-height: 0; background: none; border: 0; color: var(--rosa); font: inherit; font-weight: 700; cursor: pointer; text-align: left; }
.cf-mapa { width: min(520px, calc(100vw - 24px)); border: 0; border-radius: 16px; padding: 14px; background: var(--branco); color: inherit; box-shadow: var(--sombra); }
.cf-mapa::backdrop { background: rgba(0, 0, 0, .55); }
.cf-mapa-topo { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; margin-bottom: 10px; }
.cf-mapa-topo span { display: block; }
.cf-mapa-fechar { background: none; border: 0; min-height: 0; padding: 0 4px; font-size: 26px; line-height: 1; cursor: pointer; color: inherit; }
.cf-mapa iframe { width: 100%; height: 240px; border: 0; border-radius: 12px; display: block; }
.cf-mapa .map-actions { margin-top: 10px; }
.cf::after { pointer-events: none; }
.partner-card .cover.cf { overflow: visible; }
.partner-card .cover.cf .badge { top: 12px; bottom: auto; }
.partner-card .cover.cf .cf-conta { right: auto; left: 10px; }

/* v1.47.5: o cartão padrão de lugar (fotos em carrossel e "Ver no mapa") também em Para comemorar e Promoções de hoje */
.pj-card { position: relative; overflow: hidden; }
.pj-card > .tcard-cover { margin: -20px -20px 12px; }
.tcard .cel-cta { position: relative; z-index: 0; }
.sb-go-fim { display: block; width: 100%; margin-top: 12px; } /* v1.47.5: o botão depois dos atalhos */

/* v1.47.6: a promoção de agora no cartão do lugar, em uma linha, com "+1 promoção" */
.card-promo { display: flex; align-items: baseline; gap: 8px; min-width: 0; margin: 0 0 8px; font-size: .86rem; font-weight: 800; color: var(--rosa); }
.card-promo-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-promo-mais { flex: none; font-weight: 700; font-size: .8rem; padding: 1px 8px; border-radius: 999px; background: color-mix(in srgb, var(--rosa) 14%, transparent); }

/* v1.47.6: veio de um horário: só o pedido na página; fotos, mapa e avaliações em "Ver fotos e informações" */
.partner-layout.pl-foco > .stack > :not(#avise-me-caixa) { display: none !important; }
@media (min-width: 860px) { .partner-layout.pl-foco { grid-template-columns: minmax(0, 640px); justify-content: center; } }
.pl-foco-linha { margin: -4px 0 12px; font-size: .92rem; }
.pl-foco-linha .btn-link { font-size: inherit; }
.pl-info { width: min(560px, calc(100vw - 24px)); max-height: 88vh; overflow: auto; border: 0; border-radius: 16px; padding: 14px; background: var(--branco); color: inherit; box-shadow: var(--sombra); }
.pl-info::backdrop { background: rgba(0, 0, 0, .55); }
.pl-info .cf { border-radius: 12px; }

/* v1.47.6: a avaliação no cartão do lugar (estrelas com meia estrela, "4,7" e "Ver avaliações (128)") e o painel */
.est5 { display: inline-flex; gap: 1px; line-height: 1; vertical-align: -1px; }
.est { font-size: 1em; background: linear-gradient(90deg, #F5B301 var(--p), rgba(140, 130, 155, .45) var(--p)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cf-nota { position: relative; z-index: 2; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; margin: 2px 0 0; padding: 0; min-height: 0; background: none; border: 0; color: inherit; font: inherit; font-size: .9rem; cursor: pointer; text-align: left; }
.cf-nota b { font-weight: 800; }
.cf-nota-link { color: var(--rosa); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.cf-novo { display: inline-block; margin: 2px 0 0; font-size: .82rem; font-weight: 700; padding: 1px 10px; border-radius: 999px; background: color-mix(in srgb, var(--rosa) 14%, transparent); color: var(--rosa); }

/* v1.47.6: página pública do lugar (sem o pedido, com "Reservar" fixo) e o pedido em /reservar */
.partner-layout.pl-publica .pl-reserve { display: none !important; }
.partner-layout.pl-publica .pz-montar-pagina { display: none !important; }
.pl-consulta-publica .pedido-consulta { margin-top: 0; }
.pl-reservar-btn { position: fixed; z-index: 20; left: 16px; right: 16px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); max-width: 560px; margin: 0 auto; text-align: center; padding: 14px; border-radius: 16px; background: #D6125F; color: #fff; font-weight: 800; text-decoration: none; box-shadow: 0 8px 24px rgba(214, 18, 95, .35); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 859px) { body:has(.pl-reservar-btn) .bottom-nav { display: none; } }
.pl-publica ~ footer, body:has(.pl-reservar-btn) footer { padding-bottom: 90px; }
.pl-foco-nome { font-weight: 800; color: inherit; }
/* v1.47.7: festa no lugar: a linha dos pacotes no cartão */
.tcard-festa { margin: 0 0 8px; font-size: .88rem; font-weight: 700; }

/* v1.47.8: Organizar festa aberto como a mesa: a ocasião em atalhos pequenos e opcionais */
.fz-ocasioes { margin-top: 12px; }
.fz-ocasioes .sb-chip { font-size: .9rem; padding: 6px 12px; }
.fz-ocasioes .sb-chip.on { background: var(--rosa); color: #fff; border-color: var(--rosa); }
.festa-form .fz-casa a { font-weight: 700; }@media (min-width: 900px) { .festa-form .sb-fields { grid-template-columns: minmax(0, 1.5fr) minmax(300px, 2.4fr) minmax(0, 1fr); } }

/* v1.47.8: "Toque num horário para reservar" sem emoji, na fonte do corpo, peso 600, 16px, cor de texto secundário */
.busca-ajuda { margin: 4px 0 0; font-family: inherit; font-weight: 600; font-size: 1rem; font-style: normal; line-height: 1.4; color: var(--lavanda); }

/* v1.47.9: a Duração no último passo, logo abaixo do resumo */
[data-wz-duracao] .dur-campo { margin: 4px 0 14px; }

/* v1.47.9: carrossel da página pública: no celular só o dedo; no computador, setas discretas ao passar o mouse e arrastar */
.carousel .carousel-btn { display: none; }
@media (hover: hover) and (pointer: fine) {
  .carousel .carousel-btn { display: block; opacity: 0; transition: opacity .15s; width: 34px; height: 34px; font-size: 20px; }
  .carousel:hover .carousel-btn, .carousel .carousel-btn:focus-visible { opacity: .9; }
  .carousel-track, .cf-trilho { cursor: grab; }
  .carousel-track:active, .cf-trilho:active { cursor: grabbing; }
}
.carousel-track img, .cf-trilho img { -webkit-user-drag: none; user-select: none; }
/* v1.47.9: Duração e "Termina às" só na festa; na mesa, nada a escolher */
#form-reserva.sem-duracao .dur-campo { display: none !important; }

/* v1.47.10: página pública com "‹ Voltar" (a tela que chamou) e "Reservar" no rodapé */
.pl-voltar-btn { position: fixed; z-index: 20; left: 16px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); width: calc(38% - 20px); text-align: center; padding: 14px 8px; border-radius: 16px; background: var(--branco); color: inherit; font-weight: 800; text-decoration: none; border: 2px solid var(--rosa); box-shadow: 0 8px 24px rgba(0, 0, 0, .25); }
.pl-reservar-btn.com-voltar { left: auto; right: 16px; width: calc(62% - 20px); max-width: none; margin: 0; }
@media (min-width: 860px) {
  .pl-voltar-btn { left: calc(50% - 280px); width: 180px; }
  .pl-reservar-btn.com-voltar { right: auto; left: calc(50% - 88px); width: 368px; }
}@media (min-width: 860px) { .partner-layout.pl-publica { grid-template-columns: minmax(0, 780px); justify-content: center; } .partner-layout.pl-publica > .stack { padding-bottom: 90px; } } /* v1.47.10: a página pública numa coluna no PC, com o rodapé centralizado */

/* v1.47.12: a tela da reserva sem repetição */
.agenda-menu { position: relative; display: inline-block; }
.agenda-menu > summary { list-style: none; cursor: pointer; }
.agenda-menu > summary::-webkit-details-marker { display: none; }
.agenda-menu-op { position: absolute; z-index: 5; left: 0; top: calc(100% + 6px); min-width: 240px; display: grid; background: var(--branco); border: 1px solid var(--card-borda, rgba(140, 130, 155, .3)); border-radius: 12px; box-shadow: var(--sombra); overflow: hidden; }
.agenda-menu-op a { padding: 12px 14px; text-decoration: none; color: inherit; font-weight: 700; }
.agenda-menu-op a + a { border-top: 1px solid var(--card-borda, rgba(140, 130, 155, .3)); }
.sucesso-pedido { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--card-borda, rgba(140, 130, 155, .3)); }
.convite-card { display: flex; gap: 12px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.reserva-links { display: flex; gap: 8px 18px; flex-wrap: wrap; margin: 14px 0 0; }
.reserva-links a { font-weight: 700; }
.msg-card > summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; }
.msg-card > summary::-webkit-details-marker { display: none; }
.msg-card > summary::after { content: "▸"; font-size: 1.1rem; transition: transform .15s; }
.msg-card[open] > summary::after { transform: rotate(90deg); }
/* v1.47.13: tela da reserva: Agenda, Alterar e Cancelar numa linha; painéis (cancelar e mensagens); miniatura do convite */
.sucesso-compartilhar { margin-top: 12px; }
.sucesso-linha { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; margin-top: 14px; }
.sucesso-linha > * { min-width: 0; }
.sucesso-linha .agenda-menu { display: block; }
.sucesso-linha .btn, .sucesso-linha .agenda-menu > summary { width: 100%; min-height: 48px; padding: 11px 10px; gap: 6px; font-size: .95rem; white-space: nowrap; }
.sucesso-linha .btn.btn-cancelar { background: transparent; color: #d93036; border-color: rgba(217, 48, 54, .55); }
.sucesso-linha .btn.btn-cancelar:hover { background: rgba(217, 48, 54, .08); }
[data-tema="escuro"] .sucesso-linha .btn.btn-cancelar { background: transparent; color: #ff7b7f; border-color: rgba(255, 123, 127, .55); }
.rot-curto { display: none; }
@media (max-width: 560px) {
    .rot-longo { display: none; }
    .rot-curto { display: inline; }
    .sucesso-linha { gap: 6px; }
    .sucesso-linha .btn, .sucesso-linha .agenda-menu > summary { padding: 10px 4px; font-size: .9rem; gap: 4px; }
}
.summary-3 { display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(0, 1.5fr); gap: 0 16px; }
.summary-3 dd { overflow-wrap: anywhere; }
.convite-card { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.convite-card .convite-txt { flex: 1 1 180px; min-width: 0; }
.convite-mini { flex: none; display: block; border-radius: 12px; overflow: hidden; box-shadow: var(--sombra); line-height: 0; }
.convite-mini img { width: 72px; height: 72px; object-fit: cover; display: block; }
dialog.painel-dlg { margin: auto; padding: 0; border: 0; border-radius: 18px; width: min(560px, calc(100vw - 32px)); max-width: none; max-height: 86vh; background: var(--branco); color: inherit; box-shadow: 0 20px 60px rgba(20, 8, 40, .35); overflow: hidden; }
dialog.painel-dlg[open] { display: flex; flex-direction: column; }
dialog.painel-dlg::backdrop { background: rgba(20, 8, 40, .6); }
.painel-in { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.painel-topo { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px 12px; border-bottom: 1px solid var(--card-borda, rgba(140, 130, 155, .3)); }
.painel-topo h2 { margin: 0; font-size: 1.15rem; }
.painel-fechar { background: none; border: 0; font-size: 1.8rem; line-height: 1; color: inherit; cursor: pointer; padding: 0 4px; }
.painel-corpo { padding: 14px 18px; overflow-y: auto; flex: 1; min-height: 0; }
.painel-acoes { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 18px 16px; border-top: 1px solid var(--card-borda, rgba(140, 130, 155, .3)); }
.painel-acoes .btn.btn-danger, [data-tema="escuro"] .painel-acoes .btn.btn-danger { background: #c4262c; border-color: #c4262c; color: #fff; }
.painel-acoes .btn.btn-danger:hover { background: #a51d22; border-color: #a51d22; }
.cancelar-agora { background: rgba(217, 48, 54, .08); border-radius: 12px; padding: 10px 12px; margin-bottom: 12px; }
.painel-msg .painel-corpo { min-height: 220px; }
@media (max-width: 760px) {
    dialog.painel-dlg { width: 100vw; max-width: 100vw; margin: auto 0 0; border-radius: 18px 18px 0 0; max-height: 88vh; padding-bottom: env(safe-area-inset-bottom); }
    .painel-acoes .btn { flex: 1; }
}
/* v1.47.14: lista de convidados com limite, lista de espera, aumento e o convite grande */
.lista-card .lista-topo { display: flex; align-items: baseline; justify-content: space-between; gap: 8px 14px; flex-wrap: wrap; }
.lista-card h2 { margin: 0; }
.lista-conta { font-size: 1.05rem; }
.lista-conta.cheia strong { color: #d93036; }
[data-tema="escuro"] .lista-conta.cheia strong { color: #ff7b7f; }
.lista-barra { height: 8px; border-radius: 99px; background: rgba(140, 130, 155, .25); overflow: hidden; margin-top: 10px; }
.lista-barra i { display: block; height: 100%; background: var(--rosa); border-radius: 99px; }
.lista-aumento { margin-top: 14px; }
.lista-aumento label { font-weight: 700; display: block; margin-bottom: 6px; }
.lista-aumento-linha { display: flex; gap: 8px; align-items: center; }
.lista-aumento-linha input { width: 90px; flex: none; }
.lista-espera-tit { font-size: 1rem; margin: 16px 0 6px; }
.lista-espera { margin: 0; padding-left: 22px; }
.lista-espera li { padding: 2px 0; }
.lista-lugares { margin: 0 0 10px; }
.aumentos-card { border: 2px solid var(--rosa); margin-bottom: 16px; }
.aumento-item { display: flex; justify-content: space-between; align-items: center; gap: 10px 16px; flex-wrap: wrap; padding: 12px 0; }
.aumento-item + .aumento-item { border-top: 1px solid var(--card-borda, rgba(140, 130, 155, .3)); }
.aumento-numeros { font-size: 1.15rem; margin-top: 4px; }
.aumento-numeros span { text-decoration: line-through; opacity: .7; }
.aumento-acoes { display: flex; gap: 8px; }
button.convite-mini { padding: 0; border: 0; background: none; cursor: zoom-in; }
.painel-foto .painel-corpo { padding: 0; }
.painel-foto .painel-corpo { display: flex; justify-content: center; background: rgba(0, 0, 0, .25); }
.painel-foto .painel-corpo img { display: block; width: auto; max-width: 100%; height: auto; max-height: calc(86vh - 150px); object-fit: contain; }
.painel-foto .painel-acoes .btn { flex: 1; }
@media (min-width: 761px) { dialog.painel-foto { width: min(620px, calc(100vw - 32px)); } }
/* v1.47.16: aviso no alto da tela inicial (ex.: reserva cancelada) */
.alert-topo { position: fixed; z-index: 60; top: 74px; left: 50%; transform: translateX(-50%); width: min(560px, calc(100vw - 24px)); margin: 0; padding-right: 44px; box-shadow: 0 12px 34px rgba(20, 8, 40, .35); transition: opacity .35s; }
.alert-topo.saindo { opacity: 0; }
.alert-topo-x { position: absolute; top: 6px; right: 8px; background: none; border: 0; font-size: 1.6rem; line-height: 1; color: inherit; cursor: pointer; padding: 2px 6px; }
/* v1.47.17: os horários a mais abrem no próprio cartão */
.tcard-slots .slot-extra[hidden] { display: none; }
button.slot-more { font-family: inherit; cursor: pointer; }
/* v1.47.17: os campos da busca abertos em cima dos resultados, compactos */
.sb-aberta .sb { margin-top: 4px; }
@media (max-width: 759px) {
    .sb-aberta .sb-fields { grid-template-columns: 92px minmax(0, 1fr); gap: 8px 10px; }
    .sb-aberta .sb-fields > .sb-f { grid-column: 1 / -1; }
    .sb-aberta .sb-fields > .sb-uf, .sb-aberta .sb-fields > .sb-uf + .sb-f { grid-column: auto; }
}
/* v1.47.17: "Como quer reservar?" no cartão da busca */
.tcard-slots .slot.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.tcard-como { margin-top: 12px; padding: 12px; border-radius: 12px; background: rgba(214, 18, 95, .08); border: 1px solid rgba(214, 18, 95, .35); }
.tcard-como-tit { margin: 0 0 8px; }
.tcard-como-ops { display: grid; grid-template-columns: 1fr; gap: 8px; }
.tcard-como-ops .btn { justify-content: center; }
.tcard-como [data-fechar-como] { margin-top: 8px; }
/* v1.47.17: as comodidades no cartão do lugar */
.card-comod { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 8px; padding: 0; }
.card-comod li { display: inline-flex; align-items: center; gap: 4px; font-size: .78rem; font-weight: 700; padding: 3px 9px; border-radius: 99px; background: rgba(140, 130, 155, .16); line-height: 1.3; }
.card-comod li[hidden] { display: none; }
.card-comod-mais button { background: none; border: 0; padding: 0; font: inherit; color: var(--rosa); cursor: pointer; }
.card-comod-mais { background: rgba(214, 18, 95, .1) !important; }
/* v1.47.17: o horário do dia e "Mais informações" no cartão do lugar */
.card-hoje { display: flex; flex-wrap: wrap; gap: 2px 12px; margin: -2px 0 8px; }
.card-aberto { color: #1f9d55; font-weight: 700; }
[data-tema="escuro"] .card-aberto { color: #4ade80; }
.card-fechado { color: #d93036; font-weight: 700; }
[data-tema="escuro"] .card-fechado { color: #ff7b7f; }
.card-mais { margin: 0 0 10px; font-size: .88rem; }
.card-mais > summary { cursor: pointer; font-weight: 700; color: var(--rosa); list-style: none; }
.card-mais > summary::-webkit-details-marker { display: none; }
.card-mais > summary::after { content: " ▾"; }
.card-mais[open] > summary::after { content: " ▴"; }
.card-mais ul { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 4px; }
.tcard-garantir { margin: 0 0 8px; }
/* v1.47.18: regras da casa (página do lugar) e a opção para mais gente no cartão */
.pl-regras { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: .9rem; }
.tcard-como-ops [data-como-acima] small { display: block; font-weight: 600; opacity: .8; }
.tcard-como-ops [data-como-acima] { flex-direction: column; gap: 0; }
/* v1.47.19: Ver cardápio e Ver pacotes no cartão da busca, e as páginas de consulta */
.tcard-ver { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; margin-top: 12px; }
.tcard-ver .btn { justify-content: center; white-space: nowrap; }
.consulta-pagina { max-width: 960px; margin: 0 auto; }
.consulta-topo { display: flex; align-items: center; gap: 14px; margin: 6px 0 16px; }
.consulta-topo h1 { margin: 0; font-size: 1.5rem; }
/* v1.47.20: "Escolha o horário" acima dos horários do cartão */
.tcard-escolha { margin: 4px 0 8px; font-weight: 800; font-size: .95rem; }

/* v1.47.21: tipo do lugar e "Novo na SpotMesa" juntos em cima da foto, no alto à esquerda */
.cf-tags { position: absolute; left: 12px; top: 12px; z-index: 3; display: flex; gap: 6px; align-items: center; max-width: calc(100% - 130px); }
.cf-tags .badge, .cf .cf-tags .badge, .tcard-cover .cf-tags .badge, .partner-card .cover.cf .cf-tags .badge { position: static; white-space: nowrap; }
.badge-novo { background: var(--rosa); color: #fff; font-weight: 800; }
.novo-curto { display: none; }
@media (max-width: 380px) { .novo-longo { display: none; } .novo-curto { display: inline; } }
/* v1.47.22: Admin › Aparelhos */
.ap-topo { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.ap-periodos { display: flex; gap: 6px; }
.ap-periodos a { padding: 6px 12px; border-radius: 99px; border: 1px solid var(--card-borda, rgba(140, 130, 155, .3)); text-decoration: none; font-weight: 700; font-size: .9rem; }
.ap-periodos a.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.ap-cartoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 14px 0; }
.ap-conv { display: grid; gap: 4px; }
.ap-conv b { font-size: 1.8rem; }
.ap-funil { overflow-x: auto; }
.ap-tabela { width: 100%; border-collapse: collapse; font-size: .92rem; }
.ap-tabela th, .ap-tabela td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--card-borda, rgba(140, 130, 155, .25)); white-space: nowrap; }
.ap-barra { display: inline-block; width: 70px; height: 8px; border-radius: 99px; background: rgba(140, 130, 155, .2); margin-right: 8px; vertical-align: middle; overflow: hidden; }
.ap-barra i { display: block; height: 100%; border-radius: 99px; background: var(--rosa); }
.ap-desktop i { background: #7c5cff; }
.ap-tablet i { background: #f5a524; }
@media (max-width: 560px) { .ap-funil { padding: 14px 8px; } .ap-barra { display: none; } .ap-tabela { font-size: .78rem; } .ap-tabela th, .ap-tabela td { padding: 7px 4px; white-space: normal; } .ap-tabela td small { display: block; } }
/* v1.48.0: cartão compacto da busca (modelo A): foto pequena à esquerda e o resto em 5 linhas */
.grid-tca { grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); gap: 10px 14px; }
.tcard.tca { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 12px; padding: 10px; align-items: start; }
.tca .tca-foto, .tca .tcard-cover.cf { height: 104px; border-radius: 12px; overflow: hidden; }
.tca .tca-foto .cf-tags, .tca .tca-foto .cf-bolinhas, .tca .tca-foto .cf-seta, .tca .tca-foto .badge-destaque { display: none !important; }
.tca .tca-foto .cf-conta { right: 6px; bottom: 6px; font-size: 11px; padding: 0 6px; }
.tca-info { min-width: 0; display: grid; gap: 1px; }
.tca-nome { margin: 0; font-size: 1.05rem; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tca-l2, .tca-mut, .tca-festa, .tca .card-promo { margin: 0; font-size: .84rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tca-l2 { color: var(--lavanda); } .tca-l2 .tca-nota b { color: var(--roxo); }
.tca-estrela { color: #F5A400; }
.tca-novo { display: inline-block; font-size: .74rem; font-weight: 800; padding: 0 7px; border-radius: 99px; background: rgba(214, 18, 95, .14); color: var(--rosa); }
.tca-destaque { font-size: .72rem; font-weight: 800; padding: 0 7px; border-radius: 99px; background: var(--amarelo); color: #2B0F4C; }
.tca-mut { color: var(--lavanda); }
.tca-festa { font-weight: 800; color: #9a6a00; }
html[data-tema="escuro"] .tca-festa { color: var(--amarelo); }
.tca .card-hoje { margin: 0; font-size: .82rem; flex-wrap: nowrap; overflow: hidden; white-space: nowrap; gap: 0 8px; }
.tca .card-hoje span { overflow: hidden; text-overflow: ellipsis; }
.tca .card-hoje span + span { flex: 0 1 auto; color: var(--lavanda); font-weight: 600; }
.tca .card-promo { display: flex; margin: 0; }
.tca .card-promo-mais { display: none; }
.tca-horas { margin-top: 6px; gap: 5px; flex-wrap: nowrap; overflow: hidden; }
.tca-horas .slot { min-height: 36px; padding: 5px 9px; font-size: .86rem; flex: none; }
.tca-horas .slot-hh-tag { display: none; }
.tca-horas .slot-mais { font-family: inherit; cursor: pointer; color: var(--rosa); min-width: 36px; justify-content: center; }
.tca-sem { margin: 4px 0 0; font-size: .84rem; }
.tca-sem a { position: relative; z-index: 2; }
@media (max-width: 370px) { .tcard.tca { grid-template-columns: 88px minmax(0, 1fr); gap: 10px; } .tca .tca-foto, .tca .tcard-cover.cf { height: 88px; } .tca-horas .slot { padding: 5px 7px; } }
/* a ordem da lista */
.ordem-chips { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin: 8px 0 2px; padding-bottom: 2px; }
.ordem-chips::-webkit-scrollbar { display: none; }
.ordem-chips button { flex: none; min-height: 34px; padding: 4px 12px; border-radius: 99px; border: 1.5px solid var(--borda); background: var(--branco); color: var(--roxo); font: inherit; font-size: .85rem; font-weight: 800; cursor: pointer; }
.ordem-chips button.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.ordem-chips button.esperando { opacity: .6; }
/* a folha do lugar: sobe de baixo no celular; no PC fica ao lado da lista */
.folha-lugar[hidden] { display: none; }
.folha-lugar { position: fixed; inset: 0; z-index: 80; }
.fl-veu { position: absolute; inset: 0; background: rgba(10, 6, 20, .5); opacity: 0; transition: opacity .2s; }
.fl-caixa { position: absolute; left: 0; right: 0; bottom: 0; max-height: 92vh; max-height: 92dvh; overflow-y: auto; overscroll-behavior: contain; background: var(--branco); color: var(--roxo); border-radius: 20px 20px 0 0; box-shadow: 0 -12px 40px rgba(0, 0, 0, .3); transform: translateY(100%); transition: transform .22s ease-out; }
.folha-lugar.on .fl-veu { opacity: 1; } .folha-lugar.on .fl-caixa { transform: none; }
html.fl-aberta, html.fl-aberta body { overflow: hidden; }
.fl-puxa { width: 44px; height: 5px; border-radius: 99px; background: var(--borda); margin: 8px auto 4px; }
.fl-in { padding: 4px 16px 12px; }
.fl-carregando { padding: 30px 16px; text-align: center; color: var(--lavanda); }
.fl-fotos { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 4px; height: 150px; margin: 0 -8px 10px; }
.fl-fotos-1 { grid-template-columns: 1fr; } .fl-fotos-2 { grid-template-columns: 2fr 1fr; }
.fl-fotos a { display: block; border-radius: 12px; overflow: hidden; } .fl-fotos img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fl-topo { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.fl-nome { margin: 0; font-size: 1.35rem; }
.fl-x { background: none; border: 0; font-size: 28px; line-height: 1; padding: 0 4px; min-height: 0; color: var(--lavanda); cursor: pointer; }
.fl-l2 { margin: 2px 0 0; font-size: .9rem; color: var(--lavanda); }
.fl-in .cf-ver-mapa { margin: 2px 0 6px; }
.fl-in .card-hoje { margin: 0 0 6px; }
.fl-tagline { margin: 0 0 6px; font-weight: 600; }
.fl-sec { margin: 12px 0 6px; font-weight: 800; }
.fl-horas { gap: 6px; }
.fl-horas .slot { font-family: inherit; cursor: pointer; }
.fl-sem { margin: 10px 0; }
.fl-como { margin-top: 10px; padding: 10px 12px 12px; border-radius: 14px; background: rgba(214, 18, 95, .07); border: 1px solid rgba(214, 18, 95, .3); }
.fl-como .fl-sec { margin-top: 0; }
.fl-ops { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 6px; }
.fl-op { border: 1.5px solid var(--borda); border-radius: 12px; background: var(--branco); color: var(--roxo); padding: 8px 6px; font: inherit; font-weight: 800; font-size: .9rem; cursor: pointer; line-height: 1.2; }
.fl-op small { display: block; font-weight: 600; font-size: .74rem; color: var(--lavanda); margin-top: 2px; }
.fl-op.on { border-color: var(--rosa); background: rgba(214, 18, 95, .12); }
.fl-mudar { margin-top: 8px; } .fl-mudar p { margin: 0 0 6px; }
.fl-abas { display: flex; gap: 18px; border-bottom: 1px solid var(--borda); margin: 16px 0 8px; overflow-x: auto; scrollbar-width: none; }
.fl-abas button { flex: none; background: none; border: 0; border-bottom: 2.5px solid transparent; padding: 8px 0; min-height: 0; font: inherit; font-weight: 800; color: var(--lavanda); cursor: pointer; }
.fl-abas button.on { color: var(--roxo); border-bottom-color: var(--rosa); }
.fl-painel .card-comod { margin-bottom: 4px; }
.fl-regras { margin: 0; }
.fl-desc { white-space: pre-line; }
.fl-painel .it-grade, .fl-painel .pk-cartoes { grid-template-columns: 1fr; }
.fl-acao { position: sticky; bottom: 0; padding: 10px 16px calc(12px + env(safe-area-inset-bottom)); background: var(--branco); border-top: 1px solid var(--borda); }
.fl-reservar { display: block; width: 100%; text-align: center; }
.fl-reservar[aria-disabled="true"] { background: var(--borda); border-color: var(--borda); color: var(--lavanda); }
@media (min-width: 1100px) {
    /* lista à esquerda e o lugar aberto à direita (a lista continua rolando) */
    html.fl-aberta, html.fl-aberta body { overflow: visible; }
    html.fl-aberta body { padding-right: 500px; }
    .folha-lugar { inset: 0 0 0 auto; width: 500px; }
    .fl-veu { display: none; }
    .fl-caixa { top: 0; max-height: none; border-radius: 0; transform: translateX(100%); box-shadow: -10px 0 30px rgba(0, 0, 0, .18); border-left: 1px solid var(--borda); }
    .fl-puxa { display: none; }
    .fl-in { padding-top: 16px; }
    .fl-fotos { height: 190px; margin: 0 0 12px; }
}
/* v1.48.0: no celular, a busca aberta fica compacta (campos baixos, rótulos pequenos, pessoas numa linha só) */
@media (max-width: 759px) {
    .sb-aberta .sb { padding: 10px 12px 8px; }
    .sb-aberta .sb-fields { grid-template-columns: 64px minmax(0, 1fr); gap: 6px 8px; }
    .sb-aberta .sb-f label { font-size: .72rem; margin-bottom: 2px; }
    .sb-aberta .sb-f select, .sb-aberta .sb-f input[type=date], .sb-aberta .sb-step input { padding: 7px 9px; font-size: .95rem; }
    .sb-aberta .sb-quick { padding: 0 10px; font-size: .92rem; }
    .sb-aberta .sb-f:has(.sb-step) { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
    .sb-aberta .sb-f:has(.sb-step) label { margin: 0; font-size: .85rem; }
    .sb-aberta .sb-step { width: 150px; }
    .sb-aberta .sb-step button { width: 38px; font-size: 1.05rem; }
    .sb-aberta .sb-filters { margin-top: 4px; }
    .sb-aberta .sb-filters > summary { padding: 4px 0; font-size: .9rem; }
    .busca-res-topo h2 { font-size: 1.15rem; margin-bottom: 0; }
    .busca-res-topo .busca-ajuda { margin: 0; font-size: .85rem; }
}
/* v1.48.0: cartão mais baixo no celular; os horários sempre com o "+" à vista */
.tca-nome a.tcard-link { color: inherit; text-decoration: none; }
@media (max-width: 759px) {
    .tcard.tca { grid-template-columns: 92px minmax(0, 1fr); gap: 10px; padding: 9px; }
    .tca .tca-foto, .tca .tcard-cover.cf { height: 92px; }
    .tca-nome { font-size: 1rem; }
    .tca-l2, .tca-mut, .tca-festa, .tca .card-promo, .tca .card-hoje { font-size: .8rem; line-height: 1.35; }
    .tca-horas { gap: 4px; margin-top: 4px; }
    .tca-horas .slot { min-height: 34px; padding: 4px 7px; font-size: .82rem; }
}
@media (max-width: 420px) { .tca-horas .slot:nth-child(4):not(.slot-mais) { display: none; } }
/* v1.48.0: Reservar mesa | Festa no lugar em cima da busca (a Início é a busca) e a ocasião em atalhos */
.busca-portas { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; margin: 14px 0 0; border-radius: 14px; background: var(--branco); border: 1px solid var(--borda); max-width: 520px; }
.busca-portas a { text-align: center; padding: 9px 6px; border-radius: 11px; font-weight: 800; text-decoration: none; color: var(--lavanda); }
.busca-portas a.on { background: var(--rosa); color: #fff; }
.busca-portas + .sb-aberta .sb, .busca-portas + .sb { margin-top: 8px; }
.busca-ocasioes { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin: 10px 0 0; padding-bottom: 2px; }
.busca-ocasioes::-webkit-scrollbar { display: none; }
.busca-ocasioes a { flex: none; padding: 5px 12px; border-radius: 99px; border: 1.5px solid var(--borda); background: var(--branco); color: var(--roxo); font-size: .86rem; font-weight: 800; text-decoration: none; }
.busca-ocasioes a.on { background: var(--amarelo); border-color: var(--amarelo); color: #2B0F4C; }
@media (max-width: 759px) { .busca-portas { margin-top: 8px; } .busca-portas a { padding: 7px 4px; font-size: .92rem; } }
@media (max-width: 759px) {
    .fl-horas { gap: 5px; }
    .fl-horas .slot { min-height: 36px; padding: 5px 9px; font-size: .86rem; }
    .sb-aberta .sb-f input[type=date] { font-size: .88rem; padding: 7px 6px; }
}
/* v1.48.1: três botões numa linha: Reservar mesa | Festa no lugar | Festa em casa */
.busca-portas { grid-template-columns: repeat(3, 1fr); max-width: 640px; }
.busca-portas a { white-space: nowrap; }
@media (max-width: 759px) { .busca-portas { gap: 2px; padding: 3px; } .busca-portas a { padding: 8px 2px; font-size: .8rem; letter-spacing: -.01em; } }
@media (max-width: 370px) { .busca-portas a { font-size: .74rem; } }
@media (max-width: 420px) { .busca-portas a { font-size: .76rem; } }
@media (max-width: 370px) { .busca-portas a { font-size: .7rem; } }
@media (max-width: 759px) {
    .minhas-portas { display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 5px !important; width: 100%; }
    .minhas-portas .btn { padding: 8px 3px; font-size: .74rem; white-space: nowrap; text-align: center; min-width: 0; }
}
/* v1.48.2: Lista | Mapa. No celular o mapa ocupa a tela (com "☰ Lista" em cima); no PC fica ao lado da lista */
.ordem-linha { display: flex; gap: 8px; align-items: center; margin: 8px 0 2px; min-width: 0; }
.ordem-linha .ordem-chips { margin: 0; min-width: 0; }
.vista-chave { flex: none; display: inline-flex; border: 1.5px solid var(--borda); border-radius: 99px; overflow: hidden; background: var(--branco); }
.vista-chave button { border: 0; background: none; color: var(--lavanda); font: inherit; font-size: .85rem; font-weight: 800; padding: 6px 11px; min-height: 34px; cursor: pointer; }
.vista-chave button.on { background: var(--roxo); color: var(--branco); }
html[data-tema="escuro"] .vista-chave button.on { background: #efedf5; color: #15131c; }
.busca-mapa[hidden] { display: none; }
.busca-mapa { position: fixed; inset: 0; z-index: 75; background: var(--creme); display: flex; flex-direction: column; }
.bm-topo { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--branco); border-bottom: 1px solid var(--borda); flex: none; }
.bm-nota { color: var(--lavanda); }
.bm-mapa { flex: 1; min-height: 0; background: #dfe6ea; }
.bm-cartao { position: absolute; left: 10px; right: 10px; bottom: calc(14px + env(safe-area-inset-bottom)); z-index: 1000; }
.bm-cartao[hidden] { display: none; }
.bm-cartao .tca { margin: 0; box-shadow: 0 10px 30px rgba(0, 0, 0, .35); }
html.mapa-aberto, html.mapa-aberto body { overflow: hidden; }
.bm-pino { background: none; border: 0; }
.bm-pino span { display: inline-block; transform: translate(-50%, -100%); white-space: nowrap; padding: 3px 8px; border-radius: 99px; background: #fff; color: #2B0F4C; border: 2px solid var(--rosa); font: 800 12px/1.3 "Nunito", sans-serif; box-shadow: 0 2px 8px rgba(0, 0, 0, .25); cursor: pointer; }
.bm-pino.bm-destaque span { background: var(--amarelo); border-color: #2B0F4C; }
.bm-pino.on span { background: var(--rosa); border-color: #fff; color: #fff; font-size: 13px; }
@media (min-width: 1100px) {
    html.mapa-aberto, html.mapa-aberto body { overflow: visible; }
    .busca-lista-mapa.com-mapa { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 16px; align-items: start; }
    .busca-lista-mapa.com-mapa .grid-tca { grid-template-columns: 1fr; }
    .busca-mapa { position: sticky; inset: auto; top: 76px; height: calc(100vh - 96px); z-index: 1; border-radius: 16px; overflow: hidden; border: 1px solid var(--borda); }
    .bm-topo .btn { display: none; }
    .bm-cartao { left: 14px; right: 14px; }
}
/* v1.48.3: o "+" do cartão sempre visível (antes ficava rosa sobre rosa ao tocar ou passar o mouse) e o texto branco em todo horário marcado */
.tca-horas .slot-mais { font-size: 1.05rem; font-weight: 900; }
.tca-horas .slot-mais:hover, .tca-horas .slot-mais:focus-visible, .tca-horas .slot-mais:active, .tca-horas .slot-mais.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.slot:hover .slot-hh-tag, .slot:focus-visible .slot-hh-tag, .slot.on .slot-hh-tag { color: #fff; }
.slot:focus-visible { outline: 2px solid var(--rosa-neon); outline-offset: 2px; }
.tcard-slots .slot:active, .tcard-slots .slot.on { background: var(--rosa); border-color: var(--rosa); color: #fff; }
/* v1.49.0: escolher e enviar na folha do lugar */
.fl-escolha { margin-top: 10px; }
.fl-pac { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 8px; align-items: start; border: 1.5px solid var(--borda); border-radius: 12px; padding: 9px 10px; margin-bottom: 6px; cursor: pointer; font-size: .9rem; }
.fl-pac input { margin-top: 3px; accent-color: var(--rosa); }
.fl-pac small { display: block; color: var(--lavanda); font-size: .8rem; }
.fl-pac.on { border-color: var(--rosa); background: rgba(214, 18, 95, .08); }
.fl-pac.fora { opacity: .5; cursor: not-allowed; }
.fl-pac-preco { white-space: nowrap; }
.fl-secao { margin: 10px 0 4px; font-weight: 800; font-size: .85rem; color: var(--lavanda); text-transform: uppercase; letter-spacing: .03em; }
.fl-item { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--borda); font-size: .9rem; }
.fl-item small { display: block; color: var(--lavanda); font-size: .8rem; }
.fl-item.on b { color: var(--rosa); }
.fl-qt { display: inline-flex; align-items: center; gap: 8px; flex: none; }
.fl-qt i { font-style: normal; font-weight: 800; min-width: 18px; text-align: center; }
.fl-qt button { width: 32px; height: 32px; min-height: 0; padding: 0; border-radius: 9px; border: 1.5px solid var(--rosa); background: none; color: var(--rosa); font: inherit; font-weight: 900; cursor: pointer; }
.fl-qt button[data-fl-mais] { background: var(--rosa); color: #fff; }
.fl-pagar, .fl-quem { border: 0; padding: 0; margin: 10px 0 0; display: grid; gap: 4px; }
.fl-resumo { margin-top: 14px; padding: 12px; border-radius: 14px; border: 1px solid var(--borda); background: var(--creme); }
.fl-resumo .fl-sec { margin-top: 0; }
.fl-linhas div { display: flex; justify-content: space-between; gap: 10px; font-size: .9rem; padding: 2px 0; } .fl-linhas span { color: var(--lavanda); }
.fl-valor .pay-row { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; border-top: 1px dashed var(--borda); font-size: .9rem; } .fl-valor small { display: block; color: var(--lavanda); font-size: .78rem; }
.fl-deixa { margin-top: 8px; }
.fl-politica { margin: 8px 0 4px; }
.fl-obs { margin-top: 6px; } .fl-obs summary { cursor: pointer; font-weight: 700; font-size: .9rem; } .fl-obs textarea, .fl-obs input { width: 100%; margin-top: 6px; font: inherit; padding: 8px 10px; border-radius: 10px; border: 1.5px solid var(--borda); background: var(--branco); color: var(--roxo); }
.fl-contato { margin-top: 14px; padding: 12px; border-radius: 14px; border: 1.5px solid var(--rosa); }
.fl-contato .fl-sec { margin-top: 0; }
.fl-ct-abas { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 3px; border-radius: 12px; border: 1px solid var(--borda); margin-bottom: 10px; }
.fl-ct-abas button { border: 0; background: none; padding: 8px; border-radius: 9px; font: inherit; font-weight: 800; color: var(--lavanda); cursor: pointer; } .fl-ct-abas button.on { background: var(--rosa); color: #fff; }
.fl-ct-form .field { margin-bottom: 8px; } .fl-ct-form label { font-size: .85rem; font-weight: 700; } .fl-ct-form input:not([type=checkbox]) { width: 100%; }
.fl-erro { margin-top: 10px; padding: 10px 12px; border-radius: 12px; background: rgba(180, 35, 24, .1); border: 1px solid rgba(180, 35, 24, .4); font-size: .9rem; } .fl-erro ul { margin: 4px 0 0; padding-left: 18px; }
.fl-erro.fl-aviso { background: rgba(31, 138, 91, .1); border-color: rgba(31, 138, 91, .4); }
.fl-reservar.esperando { opacity: .7; pointer-events: none; }
/* v1.49.1: o convite em áudio */
.convite-audio { margin-top: 16px; }
.ca-botoes { display: flex; gap: 8px; flex-wrap: wrap; }
.ca-arquivo { cursor: pointer; }
.ca-gravando { display: flex; align-items: center; gap: 8px; font-weight: 700; margin: 0 0 8px; }
.ca-ponto { width: 12px; height: 12px; border-radius: 50%; background: #e5484d; animation: ca-pisca 1s infinite; }
@keyframes ca-pisca { 50% { opacity: .25; } }
.ca-musicas { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; }
.ca-musica { display: flex; align-items: center; gap: 6px; border: 1.5px solid var(--borda); border-radius: 12px; padding: 7px 9px; cursor: pointer; font-size: .9rem; font-weight: 700; }
.ca-musica:has(input:checked) { border-color: var(--rosa); background: rgba(214, 18, 95, .08); }
.ca-musica span { flex: 1; }
.ca-ouvir { width: 30px; height: 30px; min-height: 0; padding: 0; border-radius: 50%; border: 1.5px solid var(--rosa); background: none; color: var(--rosa); cursor: pointer; font-size: .8rem; }
.convite-audio audio, .ca-atual audio { width: 100%; }
.ca-atual { padding: 10px; border-radius: 12px; background: var(--creme); border: 1px solid var(--borda); }
.ca-erro { color: var(--erro); margin: 8px 0 0; }
.ca-ouvir-box { display: flex; align-items: center; gap: 12px; margin: 12px 0 4px; padding: 12px; border-radius: 16px; background: rgba(214, 18, 95, .1); border: 1.5px solid rgba(214, 18, 95, .45); text-align: left; }
.ca-play { flex: none; width: 54px; height: 54px; min-height: 0; padding: 0; border-radius: 50%; border: 0; background: var(--rosa); color: #fff; font-size: 1.3rem; cursor: pointer; box-shadow: 0 6px 16px rgba(214, 18, 95, .35); }
.ca-ouvir-txt { flex: 1; min-width: 0; display: grid; gap: 2px; } .ca-ouvir-txt small { color: var(--lavanda); }
.ca-barra { display: block; height: 5px; border-radius: 99px; background: rgba(140, 130, 155, .25); overflow: hidden; margin-top: 4px; } .ca-barra i { display: block; height: 100%; width: 0; background: var(--rosa); transition: width .2s linear; }
.convite-mini { position: relative; }
.convite-som { position: absolute; right: -6px; bottom: -6px; width: 26px; height: 26px; border-radius: 50%; background: var(--rosa); color: #fff; display: grid; place-items: center; font-size: .8rem; box-shadow: 0 2px 6px rgba(0, 0, 0, .3); }
.convite-painel-audio { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin-top: 12px; }
.ca-musica span { text-align: left; font-size: .88rem; line-height: 1.2; }
@media (max-width: 420px) { .ca-musicas { grid-template-columns: 1fr 1fr; } }
/* v1.49.2: Admin › Configurações › Áudio e vídeo (ffmpeg) */
.md-ok { color: #1f9d55; font-weight: 700; } [data-tema="escuro"] .md-ok { color: #4ade80; }
.md-nao { color: #d93036; font-weight: 700; } [data-tema="escuro"] .md-nao { color: #ff7b7f; }
.md-teste { margin-top: 12px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--borda); }
.md-teste-ok { border-color: rgba(31, 157, 85, .5); background: rgba(31, 157, 85, .08); }
.md-teste-nao { border-color: rgba(217, 48, 54, .5); background: rgba(217, 48, 54, .07); }
.md-lista { margin: 0; padding-left: 0; list-style: none; display: grid; gap: 6px; }
.md-estado code, .md-teste code { word-break: break-all; }
.badge-pendente { background: #FFF1D1; color: #7A5200; } /* v1.49.2: Aguardando aprovação (Em breve) */
/* v1.49.2: Aguardando aprovação e boas-vindas no WhatsApp viram cartões no celular */
@media (max-width: 700px) {
  #aguardando table, #aguardando tbody, #aguardando tr, #aguardando td,
  #boasvindas-whatsapp table, #boasvindas-whatsapp tbody, #boasvindas-whatsapp tr, #boasvindas-whatsapp td { display: block; width: auto; }
  #aguardando thead, #boasvindas-whatsapp thead { display: none; }
  #aguardando tr, #boasvindas-whatsapp tr { position: relative; padding: 10px 0; border-bottom: 1px solid var(--borda); }
  #aguardando tr { padding-left: 34px; }
  #aguardando td, #boasvindas-whatsapp td { padding: 2px 0; border: 0; }
  #aguardando td:first-child { position: absolute; left: 0; top: 12px; }
  #aguardando td:last-child, #boasvindas-whatsapp td:last-child { padding-top: 8px; }
  .app-main #aguardando table, .app-main #boasvindas-whatsapp table, #aguardando table, #boasvindas-whatsapp table { min-width: 0; }
  #aguardando .table-wrap, #boasvindas-whatsapp .table-wrap { overflow: visible; }
}
/* v1.49.3: as boas-vindas na linha do cliente aprovado do Em breve */
.bv-linha { margin-top: 4px; }
.bv-botoes { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 2px; }
.bv-botoes form { display: inline; margin: 0; }
.bv-botoes a, .bv-botoes .btn-link { font-size: .85rem; font-weight: 600; }
/* v1.49.4 / v1.49.5: Músicas do convite (Admin): no PC e no tablet, uma linha por música com cabeçalho único; no celular, cartões */
.mu-lista { display: grid; gap: 0; }
.mu-cab, .mu-item { display: grid; grid-template-columns: 56px minmax(0, 1fr) 84px minmax(0, 300px) 92px; gap: 12px; align-items: center; }
.mu-cab { padding: 0 10px 6px; font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--lavanda); border-bottom: 1px solid var(--borda); }
.mu-item { padding: 10px; border-bottom: 1px solid var(--borda); }
.mu-item.mu-off { opacity: .6; }
.mu-rot { display: none; }
.mu-liga { display: flex; align-items: center; justify-content: center; margin: 0; cursor: pointer; }
.mu-liga input { width: 20px; height: 20px; margin: 0; }
.mu-nome, .mu-ordem { margin: 0; min-width: 0; }
.mu-nome-campo { display: flex; align-items: center; gap: 8px; min-width: 0; }
.mu-nome-campo input { flex: 1 1 150px; min-width: 0; margin: 0; }
@media (min-width: 761px) and (max-width: 1100px) { .mu-cab, .mu-item { grid-template-columns: 48px minmax(0, 1fr) 70px minmax(0, 200px) 80px; gap: 10px; } }
.mu-tag { flex: 0 0 auto; font-size: .72rem; font-weight: 700; padding: 3px 8px; border-radius: 999px; background: rgba(140, 120, 170, .14); color: var(--lavanda); white-space: nowrap; }
.mu-ordem input { width: 100%; margin: 0; text-align: center; }
.mu-ouvir audio { display: block; width: 100%; height: 40px; }
.mu-acao { text-align: right; }
@media (max-width: 760px) {
  .mu-cab { display: none; }
  .mu-lista { gap: 10px; }
  .mu-item { grid-template-columns: 76px minmax(0, 1fr); grid-template-areas: "liga liga" "nome nome" "ordem ouvir" "acao acao"; gap: 8px 10px; align-items: end; border: 1px solid var(--borda); border-radius: 12px; }
  .mu-nome-campo { flex-wrap: wrap; } .mu-nome-campo input { flex-basis: 100%; }
  .mu-rot { display: block; font-size: .78rem; font-weight: 700; color: var(--lavanda); margin-bottom: 4px; }
  .mu-liga { grid-area: liga; justify-content: flex-start; gap: 8px; }
  .mu-liga .mu-rot { margin: 0; }
  .mu-nome { grid-area: nome; } .mu-ordem { grid-area: ordem; } .mu-ouvir { grid-area: ouvir; } .mu-acao { grid-area: acao; text-align: left; }
  .mu-acao:empty { display: none; }
}
.ca-propria { margin-top: 10px; padding: 10px 12px; border: 1px dashed var(--borda); border-radius: 12px; }
.ca-propria .check { display: flex; gap: 6px; align-items: center; }
.bv-web { font-weight: 400 !important; font-size: .8rem !important; color: var(--lavanda) !important; } /* v1.49.4 */
/* v1.49.4: os botões de música cabem no celular de 360 (o rádio não estica e o nome quebra dentro) */
.ca-musicas > .ca-musica { min-width: 0; }
.ca-musica input[type="radio"] { flex: 0 0 auto; width: auto; margin: 0; }
.ca-musica span { min-width: 0; overflow-wrap: break-word; hyphens: auto; }
.ca-musica .ca-ouvir { flex: 0 0 auto; }
@media (max-width: 420px) { .ca-musicas { grid-template-columns: 1fr; } } /* uma por linha no celular: o nome inteiro, sem quebrar a palavra */
/* v1.49.5: efeitos no convite (Admin) e o efeito de voz no gravador */
.ef-grupo { border: 1px solid var(--borda); border-radius: 12px; padding: 8px 12px 12px; margin: 10px 0 12px; }
.ef-grupo legend { padding: 0 6px; }
.ef-itens { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px 14px; margin-top: 6px; }
.ca-efeitos { margin-bottom: 12px; }
@media (max-width: 420px) { .ca-efeitos .ca-musicas { grid-template-columns: 1fr 1fr; } } /* v1.49.5: nomes curtos, duas colunas */
/* v1.49.5.1: a tela do link de boas-vindas e o código primeiro no Entrar */
.bv-tela { max-width: 420px; margin: 32px auto; text-align: center; }
.bv-tela h1 { margin: 4px 0 6px; }
.bv-emoji { font-size: 2.6rem; margin: 0; }
/* v1.57.1: o código no e-mail como link discreto embaixo do Entrar */
.login-codigo { margin-top: 14px; }
.login-codigo > summary { list-style: none; cursor: pointer; text-align: center; font-size: .9rem; color: var(--lavanda); padding: 6px 0; }
.login-codigo > summary::-webkit-details-marker { display: none; }
.login-codigo > summary span { color: var(--rosa); text-decoration: underline; text-underline-offset: 2px; }
.login-codigo[open] > summary { margin-bottom: 8px; }
.login-codigo-primeiro { padding: 12px; border: 1.5px solid var(--rosa); border-radius: 12px; background: rgba(214, 18, 95, .06); margin-bottom: 6px; }
/* v1.49.6: o convite em vídeo (gravar, editar, gerar e assistir) */
.convite-video video, .cv-ver-box video { display: block; width: 100%; max-height: 70vh; border-radius: 14px; background: #000; }
.cv-atual video { max-width: 420px; }
.cv-camera { display: block; width: 100%; max-height: 60vh; border-radius: 14px; background: #000; object-fit: cover; }
.cv-espelho { transform: scaleX(-1); }
.cv-palco { position: relative; max-width: 420px; margin: 0 auto 10px; }
.cv-palco canvas { display: block; width: 100%; height: auto; max-height: 62vh; object-fit: contain; border-radius: 14px; background: #000; }
.cv-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 64px; height: 64px; border-radius: 50%; border: 0; background: rgba(214, 18, 95, .9); color: #fff; font-size: 1.6rem; cursor: pointer; box-shadow: 0 6px 20px rgba(0, 0, 0, .35); }
.cv-opcoes { display: grid; gap: 12px; }
.cv-grupo p { margin: 0 0 6px; }
.cv-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cv-chip { position: relative; display: inline-flex; align-items: center; cursor: pointer; margin: 0; }
.cv-chip input { position: absolute; left: 0; top: 0; width: 1px !important; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.cv-chip span { padding: 7px 12px; border: 1.5px solid var(--borda); border-radius: 999px; font-size: .88rem; font-weight: 700; white-space: nowrap; }
.cv-chip input:checked + span { border-color: var(--rosa); background: rgba(214, 18, 95, .12); }
.cv-chip input:focus-visible + span { outline: 2px solid var(--rosa); outline-offset: 2px; }
.cv-emojis { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0; }
.cv-emojis button { font-size: 1.35rem; line-height: 1; padding: 6px; border-radius: 10px; border: 1px solid var(--borda); background: transparent; cursor: pointer; }
.cv-progresso { height: 10px; border-radius: 999px; background: var(--borda); overflow: hidden; }
.cv-progresso i { display: block; height: 100%; width: 0; background: var(--rosa); transition: width .2s; }
.cv-ver-box { margin: 0 0 14px; }
.cv-ver-txt { margin: 0 0 6px; }
@media (min-width: 900px) { .cv-ver-box video { max-width: 520px; } }
/* v1.49.7: o link na bio da casa */
.bio { max-width: 460px; margin: 0 auto; }
.bio-capa { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 18px; }
.bio-cabeca { text-align: center; margin: 14px 0; }
.bio-capa + .bio-cabeca { margin-top: -36px; }
.bio-logo { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; border: 4px solid var(--fundo, #fff); background: #fff; }
.bio-cabeca h1 { margin: 6px 0 2px; }
.bio-botoes { display: grid; gap: 10px; }
.bio-botoes .btn { justify-content: center; }
.bio-rodape { text-align: center; margin: 18px 0 0; }
/* v1.49.7.1: links das casas no Admin (relatório e a ficha do parceiro) */
.lk-filtros { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; justify-content: space-between; margin-bottom: 14px; }
.lk-periodos { display: flex; gap: 6px; flex-wrap: wrap; }
.lk-periodos a { padding: 6px 14px; border-radius: 99px; border: 1px solid var(--borda); text-decoration: none; font-weight: 700; font-size: .9rem; }
.lk-periodos a.on { background: var(--rosa); color: #fff; border-color: var(--rosa); }
.lk-ordem { display: grid; gap: 4px; margin: 0; }
.lk-totais { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin: 0 0 8px; }
.lk-totais > div { border: 1px solid var(--borda); border-radius: 12px; padding: 10px 12px; display: grid; }
.lk-totais strong { font-size: 1.5rem; line-height: 1.1; }
.lk-totais span { font-size: .82rem; opacity: .75; }
.lk-totais-sm strong { font-size: 1.2rem; }
.lk-vias { margin: 0 0 14px; }
.lk-link { display: flex; gap: 6px; align-items: center; margin-top: 4px; min-width: 0; }
.lk-link input { flex: 1; min-width: 0; font-size: .82rem; margin: 0; }
.lk-tabela table { width: 100%; }
.lk-casa { margin-bottom: 16px; max-width: 980px; }
.lk-casa summary { cursor: pointer; display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.lk-casa-corpo { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 16px; margin-top: 12px; }
.lk-casa-qr img { background: #fff; padding: 6px; border-radius: 10px; image-rendering: pixelated; }
@media (max-width: 700px) {
  .lk-casa-corpo { grid-template-columns: 1fr; }
  .lk-tabela table, .lk-tabela tbody, .lk-tabela tr, .lk-tabela td { display: block; width: auto; }
  .app-main .lk-tabela table { min-width: 0; }
  .lk-tabela thead { display: none; }
  .lk-tabela tr { padding: 10px 0; border-bottom: 1px solid var(--borda); }
  .lk-tabela td { padding: 2px 0; border: 0; display: flex; justify-content: space-between; gap: 10px; }
  .lk-tabela td[data-rot="Parceiro"] { display: block; }
  .lk-tabela td:not([data-rot="Parceiro"])::before { content: attr(data-rot); opacity: .7; font-size: .85rem; }
  .lk-tabela { overflow: visible; }
}
.lk-acoes { display: flex; gap: 6px; flex-wrap: wrap; } .lk-link .btn { flex: 0 0 auto; }
.lk-link { flex-wrap: wrap; } .lk-link input { flex: 1 1 180px; } /* v1.49.7.1: no celular, os botões descem */
/* v1.49.7.1: os links na bio (Divulgar e a ficha do Admin) */
.bl-lista { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 8px; }
.bl-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--borda); border-radius: 12px; background: var(--card, transparent); }
.bl-item.bl-movendo { opacity: .5; }
.bl-off { opacity: .6; }
.bl-alca { cursor: grab; opacity: .6; font-weight: 700; }
.bl-campos { display: grid; gap: 6px; min-width: 0; }
.bl-linha1 { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 6px; }
.bl-campos input, .bl-novo input, .bl-linha1 select { width: 100%; margin: 0; }
.bl-acoes { display: flex; flex-direction: column; gap: 6px; align-items: flex-end; }
.bl-setas { display: flex; gap: 4px; }
.bl-novo { display: grid; gap: 6px; }
.lk-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.lk-links li { display: flex; gap: 8px; align-items: center; justify-content: space-between; flex-wrap: wrap; border-bottom: 1px solid var(--borda); padding: 4px 0; }
.lk-links li form { margin: 0; }
@media (max-width: 600px) { .bl-item { grid-template-columns: minmax(0, 1fr); } .bl-alca { display: none; } .bl-acoes { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; } .bl-linha1 { grid-template-columns: 1fr; } }
/* v1.49.8: Serviços para a festa (Festa em casa) */
.sv-tipos { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.sv-tipo { display: inline-flex; gap: 6px; align-items: center; padding: 8px 12px; border-radius: 999px; border: 1.5px solid var(--borda); background: transparent; color: inherit; font-weight: 700; font-size: .9rem; cursor: pointer; }
.sv-tipo small { opacity: .7; font-weight: 600; }
.sv-tipo.on { border-color: var(--rosa); background: rgba(214, 18, 95, .12); }
.sv-lista { display: grid; gap: 8px; }
.sv-prest { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 8px; border: 1px solid var(--borda); border-radius: 14px; }
.sv-prest img, .sv-sem-foto { width: 72px; height: 72px; border-radius: 12px; object-fit: cover; }
.sv-sem-foto { display: grid; place-items: center; font-size: 2rem; background: rgba(214, 18, 95, .08); }
.sv-info { display: grid; gap: 2px; min-width: 0; }
.sv-ja { color: #1f9d55; font-weight: 700; }
.sv-contratados ul { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 6px; }
.sv-contratados li { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; justify-content: space-between; padding: 8px 10px; border: 1px solid var(--borda); border-radius: 12px; }
.sv-off { opacity: .6; }
@media (max-width: 480px) { .sv-prest { grid-template-columns: 56px minmax(0, 1fr); } .sv-prest img, .sv-sem-foto { width: 56px; height: 56px; } .sv-prest > .btn, .sv-prest > .sv-ja { grid-column: 1 / -1; justify-self: stretch; text-align: center; } }
/* v1.49.8.1: o aviso de sessão vencida (no lugar da contagem do sininho) */
.sessao-vencida { position: sticky; top: 0; z-index: 60; padding: 10px 16px; text-align: center; background: #FFF1D1; color: #7A5200; font-weight: 700; }
.sessao-vencida a { color: #7A5200; text-decoration: underline; }
/* v1.49.9: o linktree da SpotMesa (/links), feito para o celular */
.sml { max-width: 460px; margin: 0 auto; padding: 28px 18px 22px; border-radius: 24px; background: linear-gradient(160deg, var(--roxo) 0%, #4A1A7A 55%, var(--rosa) 130%); color: #fff; box-shadow: var(--sombra); }
.sml-cabeca { text-align: center; margin-bottom: 20px; }
.sml-logo { width: 190px; height: auto; }
.sml-slogan { margin: 8px 0 0; font-weight: 600; opacity: .92; }
.sml-botoes { display: grid; gap: 12px; }
.sml-btn { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 54px; padding: 12px 18px; border-radius: var(--r-botao); background: rgba(255, 255, 255, .12); border: 1.5px solid rgba(255, 255, 255, .55); color: #fff; font-weight: 700; font-size: 1.02rem; text-decoration: none; transition: background .15s, transform .15s; }
.sml-btn:hover, .sml-btn:focus-visible { background: rgba(255, 255, 255, .22); transform: translateY(-1px); color: #fff; }
.sml-destaque { background: var(--rosa); border-color: var(--rosa); box-shadow: 0 6px 18px rgba(214, 18, 95, .45); }
.sml-destaque:hover, .sml-destaque:focus-visible { background: var(--rosa-escuro); }
.sml-ico { font-size: 1.2rem; line-height: 1; }
.sml-rodape { text-align: center; font-size: .85rem; opacity: .8; margin: 22px 0 0; }
.sml-admin-topo { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 16px; align-items: center; }
@media (max-width: 560px) { .sml { border-radius: 0; margin: -16px -16px 0; min-height: calc(100vh - 64px); } .sml-admin-topo { grid-template-columns: 1fr; justify-items: start; } }
/* v1.49.9: Links das casas: o bloco da SpotMesa no topo */
.lk-sm { margin-bottom: 16px; border-left: 4px solid var(--rosa); }
.lk-sm .lk-totais { margin-top: 10px; }
.lk-casas-tit { margin: 4px 0 8px; }
/* v1.49.9: os links da bio alterados pela equipe */
.bl-equipe { background: #F4EEFF; border: 1px solid #DCCFF5; border-radius: 12px; padding: 10px 12px; margin: 0 0 12px; }
.bl-equipe ul { margin: 4px 0 6px; padding-left: 18px; }
.bl-tag-equipe { color: #5B2E9E; font-weight: 600; }
/* v1.49.9: a faixa do painel do parceiro aberto pela equipe */
.pp-faixa { position: sticky; top: 0; z-index: 70; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 8px 16px; background: #5B2E9E; color: #fff; font-size: .92rem; }
.pp-faixa b { color: #fff; }
.pp-quando { opacity: .85; }
.pp-acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pp-acoes form { margin: 0; }
.pp-faixa .btn { background: #fff; color: #5B2E9E; border-color: #fff; }
.pp-liberar { position: relative; }
.pp-liberar summary { cursor: pointer; text-decoration: underline; list-style: none; }
.pp-liberar summary::-webkit-details-marker { display: none; }
.pp-liberar-form { position: absolute; right: 0; top: calc(100% + 6px); width: min(320px, 90vw); display: grid; gap: 8px; padding: 12px; border-radius: 12px; background: #fff; color: var(--roxo); box-shadow: var(--sombra); }
.pp-liberar-form label { display: grid; gap: 4px; }
.pp-liberar-form .btn { background: var(--rosa); color: #fff; border-color: var(--rosa); }
.pp-card .pp-corpo { display: grid; gap: 14px; margin-top: 12px; }
.pp-abrir, .pp-implantacao { display: grid; gap: 8px; justify-items: start; }
.pp-abrir label, .pp-implantacao label.small { display: grid; gap: 4px; width: 100%; max-width: 520px; }
.pp-feito { margin: 0; padding-left: 18px; }
.eq-lista table { width: 100%; }
@media (max-width: 700px) {
  .pp-faixa { font-size: .85rem; padding: 8px 12px; }
  .pp-liberar-form { left: 0; right: auto; }
  .eq-lista thead { display: none; }
  .eq-lista tr { display: grid; gap: 2px; padding: 8px 0; border-bottom: 1px solid var(--borda); }
  .eq-lista td::before { content: attr(data-rot) ': '; font-weight: 700; }
}
/* v1.49.9: Convidar no WhatsApp (Link, Imagem, Vídeo e Áudio lado a lado) */
.cw { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--borda); }
.cw-tit { margin: 0 0 10px; }
.cw-opcoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.cw-op { display: grid; gap: 6px; align-content: start; padding: 12px; border: 1px solid var(--borda); border-radius: 14px; background: transparent; }
.cw-op .btn { width: 100%; justify-content: center; }
.cw-nome { font-weight: 700; }
.cw-salvo { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
.cw-salvo form { margin: 0; }
.md-pc-aviso { margin: 6px 0 0; }
@media (max-width: 420px) { .cw-opcoes { grid-template-columns: 1fr 1fr; } .cw-op { padding: 10px; } }
/* v1.49.9: os botões Reservar mesa | Festa no lugar | Festa em casa (partials.portas): o ícone sempre visível no selecionado */
.portas a { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-width: 0; }
.porta-ico { display: inline-grid; place-items: center; width: 1.6em; height: 1.6em; border-radius: 50%; line-height: 1; flex: none; }
.portas a.on .porta-ico { background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .18); }
.porta-rot { overflow: hidden; text-overflow: ellipsis; }
.porta-n { font-size: .78em; font-weight: 800; padding: 1px 7px; border-radius: 999px; background: rgba(107, 99, 128, .14); }
.portas a.on .porta-n { background: rgba(255, 255, 255, .28); }
/* em Minhas reservas e festas: a versão compacta, como filtro (4 com o Todas) */
.minhas-topo { display: grid; gap: 10px; margin-bottom: 14px; }
.portas-filtro { grid-template-columns: repeat(4, auto); max-width: 760px; margin: 0; justify-content: start; }
.portas-filtro a { padding: 7px 12px; font-size: .9rem; }
.minhas-novo { margin: 0; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.minhas-novo a:not(.btn) { font-weight: 700; }
@media (max-width: 759px) {
  .portas-filtro { grid-template-columns: 1fr 1fr; gap: 3px; padding: 3px; max-width: none; }
  .portas-filtro a { padding: 8px 6px; font-size: .84rem; justify-content: flex-start; }
  .portas-filtro .porta-n { margin-left: auto; }
}
@media (max-width: 370px) { .portas-filtro a { font-size: .8rem; padding: 7px 4px; } }
/* v1.49.9: o Liberar ações sensíveis abre dentro da faixa (claro e escuro), sem passar da tela */
.pp-acoes { flex: 1 1 auto; justify-content: flex-end; }
.pp-liberar[open] { flex-basis: 100%; order: 2; }
.pp-liberar-form { position: static; width: min(380px, 100%); margin-top: 8px; padding: 12px; border-radius: 12px; background: #3E1F70; color: #fff; box-shadow: none; box-sizing: border-box; }
.pp-liberar-form input { width: 100%; box-sizing: border-box; background: #fff; color: #2B0F4C; border: 1px solid #CDBDEB; border-radius: 10px; padding: 8px 10px; }
.pp-liberar-form .btn { width: 100%; background: var(--rosa); color: #fff; border-color: var(--rosa); justify-content: center; }
.pp-liberar-form p { margin: 0; color: #EDE4FF; }
@media (max-width: 700px) { .pp-acoes { justify-content: flex-start; } }
.pp-faixa > span, .pp-acoes, .pp-liberar, .pp-liberar-form, .pp-liberar-form label { min-width: 0; max-width: 100%; }
.pp-liberar-form label { display: grid; }
.pp-faixa .pp-liberar-form input { width: 100%; min-width: 0; background: #fff; color: #2B0F4C; }
.pp-liberar-form { white-space: normal; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 760px) { .portas-filtro { width: max-content; } }
/* v1.49.10: a roleta de prêmios */
.rt-box { margin: 18px auto 0; max-width: 360px; text-align: center; padding: 14px; border: 1.5px solid var(--borda); border-radius: 18px; }
.rt-roda-caixa { position: relative; width: min(280px, 78vw); margin: 0 auto 12px; }
.rt-roda { display: block; width: 100%; height: auto; transform-origin: 50% 50%; transform-box: fill-box; }
.rt-seta { position: absolute; left: 50%; top: -6px; transform: translateX(-50%); font-size: 1.6rem; color: var(--rosa); z-index: 1; text-shadow: 0 2px 4px rgba(0,0,0,.4); }
.rt-resultado { margin-top: 10px; }
.rt-ganhou { font-size: 1.15rem; }
.rt-codigo { font-family: var(--mono, monospace); letter-spacing: .06em; }
.rp-lista { display: grid; gap: 0; margin: 10px 0; }
.rp-cab, .rp-item { display: grid; grid-template-columns: 56px minmax(0, 1fr) 90px 110px 110px 110px 84px; gap: 10px; align-items: center; }
.rp-cab { padding: 0 6px 6px; font-size: .78rem; font-weight: 700; text-transform: uppercase; opacity: .75; border-bottom: 1px solid var(--borda); }
.rp-item { padding: 8px 6px; border-bottom: 1px solid var(--borda); }
.rp-c { margin: 0; min-width: 0; }
.rp-c input { width: 100%; margin: 0; }
.rp-c input[type=checkbox] { width: 20px; height: 20px; }
.rp-rot { display: none; }
@media (max-width: 900px) { .rp-cab { display: none; } .rp-item { grid-template-columns: 1fr 1fr; border: 1px solid var(--borda); border-radius: 12px; margin-bottom: 8px; } .rp-nome { grid-column: 1 / -1; } .rp-rot { display: block; font-size: .78rem; font-weight: 700; opacity: .75; margin-bottom: 3px; } }
/* v1.49.10.1: Textos legais: qual documento está sendo editado, o histórico e o restaurar */
.tl-topo { display: grid; gap: 2px; margin: 0 0 14px; padding: 12px 16px; border-radius: 14px; border: 2px solid var(--rosa); background: rgba(214, 18, 95, .06); }
.tl-termo { border-color: #5B2E9E; background: rgba(91, 46, 158, .07); }
.tl-deixe { border-color: #0B7A75; background: rgba(18, 181, 173, .07); }
.tl-rot { font-size: .8rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; opacity: .7; }
.tl-nome { font-size: 1.45rem; line-height: 1.2; }
.tl-quem { font-size: .92rem; opacity: .85; }
.tl-outros { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 6px; font-size: .85rem; }
.tl-outros::before { content: 'Outros:'; opacity: .7; }
.tl-versoes { margin-top: 16px; }
.tl-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.tl-item { border: 1px solid var(--borda); border-radius: 12px; padding: 10px 12px; display: grid; gap: 4px; }
.tl-em-uso { border-color: var(--rosa); }
.tl-linha { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; font-size: .92rem; }
.tl-v { font-weight: 800; }
.tl-tag { font-size: .75rem; font-weight: 800; padding: 1px 8px; border-radius: 999px; background: var(--rosa); color: #fff; }
.tl-mud { font-size: .8rem; padding: 1px 8px; border-radius: 999px; background: rgba(107, 99, 128, .15); }
.tl-mud-grande { background: #FFE1E1; color: #A1121B; font-weight: 800; }
.tl-previa { overflow-wrap: anywhere; }
.tl-dif { margin: 6px 0; display: grid; gap: 2px; }
.tl-saiu { color: #A1121B; background: rgba(255, 0, 0, .06); padding: 1px 6px; border-radius: 4px; overflow-wrap: anywhere; }
.tl-entrou { color: #0B6B33; background: rgba(0, 160, 60, .08); padding: 1px 6px; border-radius: 4px; overflow-wrap: anywhere; }
.tl-texto { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 320px; overflow: auto; font-family: inherit; font-size: .85rem; padding: 8px; border-radius: 8px; background: rgba(107, 99, 128, .08); }
.tl-item form { margin: 0; }
.tl-confirma { background: #FFF1D1; color: #7A5200; padding: 8px 10px; border-radius: 10px; }
/* v1.49.11: a bolinha "?" de ajuda (padrão do formulário do INPI): ao lado do rótulo, abre com toque, fecha no X, fora ou Esc */
.aj { position: relative; display: inline-flex; vertical-align: middle; margin-left: 6px; font-weight: 400; text-transform: none; letter-spacing: 0; }
.aj-q { width: 22px; height: 22px; padding: 0; border-radius: 50%; border: 1.5px solid var(--rosa); background: transparent; color: var(--rosa); font: 800 13px/1 Arial, sans-serif; cursor: pointer; display: inline-grid; place-items: center; position: relative; }
.aj-q::after { content: ''; position: absolute; inset: -11px; } /* área de toque de 44 px */
.aj-q:hover, .aj-q[aria-expanded="true"] { background: var(--rosa); color: #fff; }
.aj-q:focus-visible { outline: 3px solid var(--rosa-neon); outline-offset: 2px; }
.aj-balao { position: absolute; top: calc(100% + 8px); left: 0; z-index: 90; width: min(300px, calc(100vw - 24px)); padding: 10px 30px 10px 12px; border-radius: 12px; background: var(--roxo); color: #fff; font-size: .9rem; line-height: 1.4; font-weight: 400; text-align: left; white-space: normal; box-shadow: 0 8px 24px rgba(0, 0, 0, .25); }
.aj-balao::before { content: ''; position: absolute; top: -6px; left: 6px; border: 6px solid transparent; border-top: 0; border-bottom-color: var(--roxo); }
.aj-balao[hidden] { display: none; }
.aj-x { position: absolute; top: 4px; right: 6px; width: 24px; height: 24px; border: 0; background: transparent; color: #fff; font-size: 18px; line-height: 1; cursor: pointer; }
.aj-extra { display: block; margin-top: 6px; opacity: .85; }
:root[data-tema="escuro"] .aj-balao { background: #F4EEFF; color: #2B0F4C; } :root[data-tema="escuro"] .aj-balao::before { border-bottom-color: #F4EEFF; } :root[data-tema="escuro"] .aj-x { color: #2B0F4C; }
.portas-ajuda { display: flex; justify-content: flex-end; margin-top: 4px; }
/* v1.49.11: a ajuda dos horários com desconto no cartão (no lugar da dica que só aparecia no mouse) e a tela do Admin */
.tca-hh-aj { display: inline-flex; align-items: center; }
.tca-hh-aj .aj { margin-left: 2px; }
.aj-exemplo { display: inline-grid; vertical-align: middle; }
.aj-grupo { margin-top: 14px; }
.aj-item { display: grid; gap: 6px; padding: 10px 0; border-top: 1px solid var(--borda); }
.aj-item:first-of-type { border-top: 0; }
.aj-item textarea { width: 100%; box-sizing: border-box; min-height: 64px; }
.aj-item-topo { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; justify-content: space-between; }
.aj-off textarea { opacity: .55; }
.aj-tag { font-size: .75rem; font-weight: 800; padding: 1px 8px; border-radius: 999px; background: rgba(214, 18, 95, .12); color: var(--rosa); }
.aj-admin > .btn { margin-top: 14px; }
.tca .aj, .card-promo .aj { position: relative; z-index: 2; } /* v1.49.11: acima do link que cobre o cartão */
.portas-ajuda { max-width: 640px; } /* alinhado com os três botões */
/* v1.49.11.1: no tema escuro, as caixas claras novas ficavam com o texto claro em fundo claro */
:root[data-tema="escuro"] .bl-equipe { background: rgba(91, 46, 158, .28); border-color: #6B45B0; color: inherit; }
:root[data-tema="escuro"] .bl-tag-equipe { color: #CDB6FF; }
:root[data-tema="escuro"] .tl-saiu { color: #FFB4B4; background: rgba(255, 80, 80, .14); }
:root[data-tema="escuro"] .tl-entrou { color: #A8F0C0; background: rgba(60, 200, 120, .14); }
/* v1.49.11.1: o balão da ajuda preso à tela visível (fixed), sempre dentro dela; a setinha aponta para o "?" */
.aj-balao { position: fixed; top: 0; left: 0; z-index: 1000; box-sizing: border-box; max-width: calc(100vw - 32px); overflow-wrap: anywhere; }
.aj-balao::before { left: var(--seta, 10px); }
.aj-balao.aj-cima::before { top: auto; bottom: -6px; border-top: 6px solid var(--roxo); border-bottom: 0; }
:root[data-tema="escuro"] .aj-balao.aj-cima::before { border-top-color: #F4EEFF; }
.aj-balao:focus { outline: none; }
/* v1.49.11.1: o "?" redondo (o botão herdava a altura mínima de toque e ficava oval) e na linha do rótulo */
.aj { display: inline-flex; align-items: center; vertical-align: middle; white-space: nowrap; line-height: 1; margin-left: 4px; }
.aj-q { box-sizing: border-box; flex: none; width: 22px; height: 22px; min-width: 22px; min-height: 0; max-height: 22px; padding: 0; aspect-ratio: 1 / 1; line-height: 1; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; align-self: center; font-size: 13px; }
.aj-x { min-height: 0; min-width: 0; }
/* v1.49.11.1: os links de gravar convite (tela da reserva) */
.convite-gravar { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; }
.convite-gravar a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; white-space: nowrap; font-weight: 700; font-size: .92rem; }
/* v1.49.11.1: os menus flutuantes (Ações ▾ e outros): por cima de tudo, nunca cortados; no celular, folha de baixo */
.mf-painel { z-index: 1100 !important; }
.mf-fechar { display: none; }
.mf-folha > .mf-painel { position: fixed !important; left: 0 !important; right: 0 !important; bottom: 0 !important; top: auto !important; width: auto !important; min-width: 0 !important; max-height: 80vh !important; overflow: auto !important; display: grid !important; gap: 6px; padding: 16px 16px calc(16px + env(safe-area-inset-bottom)) !important; border-radius: 18px 18px 0 0 !important; background: var(--branco); box-shadow: 0 0 0 100vmax rgba(0, 0, 0, .45); }
.mf-folha > .mf-painel .btn, .mf-folha > .mf-painel > a, .mf-folha > .mf-painel form button { min-height: 44px; }
.mf-folha .mf-fechar { display: block; width: 100%; margin-top: 4px; }
.aj > .aj-q { width: 22px !important; height: 22px !important; min-width: 22px !important; min-height: 0 !important; padding: 0 !important; border-radius: 50% !important; font-size: 13px !important; line-height: 1 !important; } /* nem os botões de grupos (Ordem da lista) mudam o tamanho */
.aj-junto { white-space: nowrap; } /* a última palavra e o "?" na mesma linha */
.convite-gravar { flex-direction: column; align-items: flex-start; gap: 0; } .convite-gravar a { text-decoration: none; } .convite-gravar .cg-txt { text-decoration: underline; text-underline-offset: 3px; }
/* v1.49.11.2: Vou / Talvez / Não vou grandes, "Confirmar resposta" e a tela de sucesso do convidado */
.rsvp-escolha { border: 0; padding: 0; margin: 0 0 14px; min-width: 0; }
.rsvp-escolha legend { font-weight: 800; margin-bottom: 8px; padding: 0; }
.rsvp-opcoes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.rsvp-opcao { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 84px; padding: 10px 4px; margin: 0; border: 2px solid var(--borda); border-radius: 16px; background: var(--branco); cursor: pointer; text-align: center; font-weight: 800; font-size: 1.05rem; line-height: 1.15; -webkit-tap-highlight-color: transparent; }
.rsvp-opcao input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.rsvp-opcao .ro-ic { font-size: 1.7rem; line-height: 1; }
.rsvp-opcao:has(input:checked) { border-color: var(--rosa); background: var(--accent-soft); color: var(--rosa-escuro); box-shadow: 0 0 0 3px color-mix(in srgb, var(--rosa) 25%, transparent); }
.rsvp-opcao:has(input:checked)::after { content: "✓"; position: absolute; top: 6px; right: 8px; font-size: .85rem; }
.rsvp-opcao:has(input:focus-visible) { outline: 3px solid var(--rosa); outline-offset: 2px; }
[data-so][hidden] { display: none !important; }
.btn[data-confirmar]:disabled { opacity: .45; cursor: not-allowed; }
.rsvp-sucesso { text-align: center; padding: 6px 0 4px; }
.rsvp-sucesso .rs-ic { font-size: 3rem; line-height: 1; }
.rsvp-sucesso h2 { margin: 10px 0 6px; }
.rsvp-sucesso .btn { margin-top: 12px; }
.lista-outros { display: block; margin-top: 4px; }
/* v1.49.11.2: o que é redondo fica redondo (varredura p149112/redondos.mjs em 360, 390, 768 e 1366) */
.ca-musicas > .ca-musica { display: flex !important; flex-direction: row !important; align-items: center !important; gap: 8px; min-height: 48px; }
.ca-musica > span { flex: 1 1 auto !important; min-width: 0; overflow-wrap: normal; word-break: normal; hyphens: manual; line-height: 1.2; }
.ca-musica > .ca-ouvir, .ca-ouvir { box-sizing: border-box; position: relative; flex: none !important; width: 36px !important; height: 36px !important; min-width: 36px !important; max-width: 36px; min-height: 0 !important; max-height: 36px; aspect-ratio: 1 / 1; padding: 0 !important; border-radius: 50% !important; display: inline-flex; align-items: center; justify-content: center; align-self: center; line-height: 1; font-size: .85rem; }
.ca-ouvir::before { content: ""; position: absolute; inset: -4px; border-radius: 50%; } /* área de toque de 44 px */
@media (max-width: 420px) { .ca-musicas:not(.ca-efeitos .ca-musicas) { grid-template-columns: 1fr !important; } }
input[type="radio"], input[type="checkbox"] { flex-shrink: 0; aspect-ratio: 1 / 1; }
.sb-count { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; line-height: 1; }
.sb-mini .sb-count { min-width: 16px; height: 16px; padding: 0 4px; line-height: 1; }
.porta-n { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; min-width: 1.6em; height: 1.6em; padding: 0 .45em; line-height: 1; }
.badge-n { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 6px; line-height: 1; vertical-align: middle; }
.campo-digitavel > .btn { box-sizing: border-box; flex: none; width: 42px; height: 42px; min-height: 0; padding: 0 !important; aspect-ratio: 1 / 1; display: inline-flex; align-items: center; justify-content: center; }
/* v1.49.11.3: a legenda curta embaixo do título dos botões (no lugar do "O que é cada um?"); no máximo 2 linhas por botão */
.portas a.com-leg { flex-direction: row; align-items: center; text-align: left; }
.porta-txt { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; line-height: 1.15; }
.porta-leg { display: block; font-weight: 600; font-size: .74rem; opacity: .85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; letter-spacing: 0; }
.porta-leg .leg-curta { display: none; }
@media (max-width: 759px) {
  .busca-portas a.com-leg { flex-direction: column; justify-content: center; gap: 1px; text-align: center; padding: 6px 2px; }
  .busca-portas a.com-leg .porta-txt { align-items: center; max-width: 100%; }
  .busca-portas a.com-leg .porta-ico { display: none; }
  .busca-portas a.com-leg .porta-rot { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
  .porta-leg { font-size: .64rem; }
  .porta-leg .leg-longa { display: none; } .porta-leg .leg-curta { display: inline; }
  .portas-filtro a.com-leg { flex-direction: row; text-align: left; justify-content: flex-start; padding: 6px 8px; }
  .portas-filtro a.com-leg .porta-txt { align-items: flex-start; flex: 1; }
  .portas-filtro a.com-leg .porta-ico { display: inline-flex; }
}
.busca-portas:has(.com-leg) { max-width: 740px; } /* a legenda inteira no computador */
.portas-filtro:has(.com-leg) { max-width: 960px; }
@media (min-width: 760px) and (max-width: 1100px) { .portas-filtro:has(.com-leg) { grid-template-columns: 1fr 1fr; max-width: 640px; } }
/* v1.49.11.3: o marcador do mapa com o nome do lugar e a etiqueta (nota ou Novo) ao lado */
.bm-pino span { display: inline-flex; align-items: center; gap: 5px; max-width: 220px; }
.bm-pino .bm-nome { font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.bm-pino .bm-tag { flex: none; font-size: 10.5px; font-weight: 800; padding: 1px 6px; border-radius: 99px; background: #F3ECF8; color: #2B0F4C; }
.bm-pino .bm-tag.bm-novo { background: #FDEFF4; color: #D6125F; }
.bm-pino.on .bm-tag { background: rgba(255, 255, 255, .25); color: #fff; }
@media (max-width: 759px) { .bm-pino span { max-width: 160px; } }
/* v1.49.11.4: o botão único dos filtros, os chips dos ativos e a folha (de baixo no celular, painel no computador) */
.filtros-btn { flex: none; min-height: 34px; padding: 4px 14px; border-radius: 99px; border: 1.5px solid var(--borda); background: var(--branco); color: var(--roxo); font: inherit; font-size: .85rem; font-weight: 800; cursor: pointer; }
.filtros-btn.on { border-color: var(--rosa); color: var(--rosa); }
.filtros-ativos { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 2px; }
.ff-ativo { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 4px 10px 4px 12px; border-radius: 99px; background: var(--accent-soft); color: var(--rosa-escuro); font-size: .82rem; font-weight: 800; text-decoration: none; }
.ff-ativo span { font-size: .9em; opacity: .8; }
.filtros-folha { border: 0; padding: 0; border-radius: 18px; width: min(560px, calc(100vw - 32px)); max-height: min(86vh, 760px); background: var(--branco); color: var(--texto, inherit); box-shadow: 0 20px 60px rgba(0, 0, 0, .45); overflow: hidden; }
.filtros-folha[open] { display: flex; flex-direction: column; }
.filtros-folha::backdrop { background: rgba(10, 4, 20, .55); }
.ff-topo { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px 8px; border-bottom: 1px solid var(--borda); }
.ff-topo h2 { margin: 0; font-size: 1.15rem; }
.ff-x { width: 40px; height: 40px; border-radius: 50%; border: 0; background: none; color: inherit; font-size: 1.6rem; line-height: 1; cursor: pointer; }
.ff-corpo { overflow: auto; padding: 6px 18px 12px; flex: 1; }
.ff-grupo { border: 0; padding: 0; margin: 12px 0 0; min-width: 0; }
.ff-grupo legend { font-weight: 800; margin-bottom: 8px; padding: 0; }
.ff-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ff-chip { position: relative; margin: 0; cursor: pointer; }
.ff-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ff-chip span { display: inline-flex; align-items: center; min-height: 36px; padding: 6px 12px; border-radius: 99px; border: 1.5px solid var(--borda); font-size: .88rem; font-weight: 700; }
.ff-chip input:checked + span { background: var(--rosa); border-color: var(--rosa); color: #fff; }
.ff-chip input:focus-visible + span { outline: 3px solid var(--rosa); outline-offset: 2px; }
.ff-lista { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; }
.ff-lista .check { margin: 0; min-height: 36px; align-items: center; }
.ff-nota { margin: 6px 0 0; font-size: .78rem; opacity: .75; }
.ff-pe { display: flex; gap: 10px; padding: 12px 18px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--borda); }
.ff-pe .btn { min-height: 48px; }
.ff-pe [data-ff-ver] { flex: 1; }
.ff-pe [data-ff-ver]:disabled { opacity: .55; }
@media (max-width: 640px) {
  .filtros-folha { width: 100vw; max-width: 100vw; margin: auto 0 0; border-radius: 18px 18px 0 0; max-height: 88vh; }
  .ff-lista { grid-template-columns: 1fr; }
}
/* v1.49.11.4: o fim da página (rodapé com as redes) nunca fica atrás da barra de baixo do celular */
@media (max-width: 640px) { body:has(.bnav) { padding-bottom: calc(76px + env(safe-area-inset-bottom)); } body:has(.bnav) main { padding-bottom: 12px; } }
/* v1.49.11.5: Ajuda › Mais da SpotMesa e o título de seção no menu do usuário */
.mais-spotmesa { margin-top: 18px; }
.mais-grupos { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px 24px; }
.mais-grupos h3 { margin: 0 0 6px; font-size: .95rem; }
.mais-grupos a { display: block; padding: 6px 0; font-weight: 700; }
.footer .rodape-linha { display: inline-block; white-space: nowrap; font-size: max(13px, .85rem); }
.um-sec { display: block; padding: 10px 14px 2px; font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; opacity: .65; }
/* v1.49.11.5: as abas da página Planos (Para o seu negócio | Para você) */
.planos-abas { display: flex; gap: 4px; padding: 4px; margin: 0 auto 14px; max-width: 520px; border: 1px solid var(--borda); border-radius: 14px; background: var(--branco); }
.planos-abas a { flex: 1; text-align: center; padding: 10px 8px; border-radius: 11px; font-weight: 800; text-decoration: none; color: var(--lavanda); }
.planos-abas a[aria-selected="true"] { background: var(--rosa); color: #fff; }
.planos-outros { text-align: center; margin-top: 14px; }
/* v1.49.11.5: o 🏆 no cartão e o passo 1 do cadastro (a escolha do plano) */
.tca-premio { display: inline-block; font-size: .72rem; font-weight: 800; padding: 1px 7px; border-radius: 99px; background: #FFF3CF; color: #7A5200; }
.cad-planos { display: grid; gap: 8px; }
.cad-plano { display: grid; gap: 2px; padding: 12px 14px; border-radius: 12px; border: 2px solid rgba(255, 255, 255, .25); color: inherit; text-decoration: none; }
.cad-plano:hover, .cad-plano:focus-visible { border-color: #FFC23D; }
.cad-plano span { color: #FFC23D; font-weight: 800; }
.cad-plano small { opacity: .8; }

/* v1.51.0: "Perto de mim" ao lado do rótulo Cidade e o aviso da cidade achada */
.sb-lbl { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 4px; }
.sb-f .sb-lbl label { margin-bottom: 0; }
.sb-perto { background: none; border: 0; padding: 0; min-height: 0; line-height: 1.2; color: var(--rosa-neon, #ff6fa5); font: inherit; font-size: .8rem; font-weight: 700; cursor: pointer; white-space: nowrap; }
.sb-perto:disabled { opacity: .7; cursor: wait; }
.sb-aviso { margin: 10px 0 0; color: var(--lavanda); }
.sb-aviso .linkish { background: none; border: 0; padding: 0; min-height: 0; color: var(--rosa-neon, #ff6fa5); font: inherit; font-weight: 700; text-decoration: underline; cursor: pointer; }

/* v1.51.0: Momentos (cards de foto rolando para o lado no celular; 5 a 7 à vista no computador) */
.momentos { margin: 22px 0 6px; }
.momentos h2 { margin: 0; font-size: 1.25rem; }
.momentos-sub { margin: 2px 0 10px; color: var(--lavanda); font-size: .9rem; }
.momentos-trilho { display: grid; grid-auto-flow: column; grid-auto-columns: 132px; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 6px; scrollbar-width: thin; }
.momento { position: relative; display: flex; align-items: flex-end; justify-content: center; aspect-ratio: 3 / 4.2; border-radius: 14px; overflow: hidden; scroll-snap-align: start;
    background: linear-gradient(160deg, #7a2a55, #2b1d3a) center / cover no-repeat; color: #fff; text-decoration: none; text-align: center; padding: 10px 8px 12px; }
.momento::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,.72) 100%); }
.momento span { position: relative; font-weight: 700; font-size: .92rem; line-height: 1.2; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
.momento:hover, .momento:focus-visible { color: #fff; outline: 2px solid var(--rosa-neon, #ff6fa5); outline-offset: 2px; }
@media (min-width: 900px) { .momentos-trilho { grid-auto-columns: minmax(128px, 1fr); } }
.momento-ativo { display: inline-flex; align-items: center; gap: 10px; margin: 16px 0 4px; padding: 6px 8px 6px 14px; border-radius: 999px; background: var(--card, rgba(255,255,255,.06)); border: 1px solid var(--borda, rgba(255,255,255,.15)); }
.momento-ativo .chip-x { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; text-decoration: none; }

/* v1.51.0: Admin › Momentos */
/* v1.57.1: Admin › Tipos de cozinha */
.coz-row { display: grid; grid-template-columns: max-content 64px minmax(0, 1fr) max-content max-content max-content; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--borda); }
.coz-row .coz-ordem { display: inline-flex; gap: 2px; }
.coz-row .coz-ordem button { font-size: 1.1rem; padding: 2px 6px; }
.coz-row .coz-ordem button:disabled { opacity: .3; }
.coz-row .coz-emoji { text-align: center; }
.coz-row .coz-acoes { display: inline-flex; gap: 8px; align-items: center; }
@media (max-width: 640px) { .coz-row { grid-template-columns: max-content 56px minmax(0, 1fr); } .coz-row > .check, .coz-row > .coz-uso { grid-column: span 1; } .coz-row > .coz-acoes { grid-column: 1 / -1; justify-content: flex-end; } }
.mom-row { display: grid; grid-template-columns: 64px 72px minmax(0, 1fr) max-content; gap: 12px; align-items: start; padding: 10px 0; border-bottom: 1px solid var(--borda); }
.mom-foto { display: grid; place-items: center; width: 72px; aspect-ratio: 3 / 4; border-radius: 10px; background: linear-gradient(160deg, #7a2a55, #2b1d3a) center / cover no-repeat; cursor: pointer; color: #fff; font-size: 1.4rem; }
.mom-campos { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.mom-opcoes { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.mom-acoes { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
@media (max-width: 640px) { .mom-row { grid-template-columns: 56px 64px minmax(0, 1fr); } .mom-foto { width: 64px; } .mom-row > .mom-acoes { grid-column: 1 / -1; flex-direction: row; justify-content: flex-end; } }

/* v1.51.0: login por SMS */
.login-sms-bloco { margin-bottom: 4px; }
.login-ou { display: flex; align-items: center; gap: 10px; margin: 16px 0 12px; }
.login-ou::before, .login-ou::after { content: ""; flex: 1; border-top: 1px solid var(--borda); }

/* v1.52.0: painel do parceiro, cartão "Cardápio digital" */
.cdp { border-top:4px solid var(--cdp-cor); margin:0 0 16px; }
.cdp-topo { display:flex; gap:16px; justify-content:space-between; align-items:flex-start; }
.cdp-qr { flex:none; border-radius:10px; background:#fff; padding:4px; }
.cdp-link { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.cdp-link input { flex:1 1 220px; min-width:0; }
.cdp-form { display:flex; flex-wrap:wrap; gap:14px 24px; align-items:flex-end; }
.cdp-form fieldset { border:0; padding:0; margin:0; }
.cdp-form legend { font-weight:700; font-size:14px; margin-bottom:6px; }
.cdp-cores { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.cdp-cor input { position:absolute; opacity:0; }
.cdp-cor span { display:block; width:32px; height:32px; border-radius:50%; border:2px solid rgba(127,127,127,.35); cursor:pointer; }
.cdp-cor input:checked + span { outline:3px solid currentColor; outline-offset:2px; }
.cdp-cor input:focus-visible + span { outline:3px dashed currentColor; outline-offset:2px; }
.cdp-outra { display:flex; align-items:center; gap:6px; font-size:14px; }
.cdp-outra input { width:40px; height:32px; padding:0; border:0; background:none; }
.cdp-op { display:inline-block; margin:0 6px 6px 0; }
.cdp-op input { position:absolute; opacity:0; width:1px; height:1px; }
.cdp-op span { display:inline-block; padding:7px 14px; border-radius:99px; border:1px solid rgba(127,127,127,.4); font-size:14px; cursor:pointer; }
.cdp-op input:checked + span { background:var(--cdp-cor); border-color:var(--cdp-cor); color:#fff; font-weight:700; }
.cdp-op input:focus-visible + span { outline:2px dashed currentColor; outline-offset:2px; }
.cdp-cor { position:relative; }
.cdp-form fieldset { min-width:0; }
@media (max-width:560px) { .cdp-topo { flex-direction:column-reverse; } .cdp-qr { align-self:flex-start; } }
/* v1.52.3: prévia do cardápio digital no painel, num celular */
.cdp-previa { margin-top:14px; }
.cdp-previa > summary { list-style:none; display:inline-block; }
.cdp-previa > summary::-webkit-details-marker { display:none; }
.cdp-celular { width:min(100%, 360px); height:640px; border:10px solid #111; border-radius:34px; overflow:hidden; background:#111; box-shadow:0 10px 30px rgba(0,0,0,.25); }
.cdp-celular iframe { width:100%; height:100%; border:0; display:block; background:#fff; }
/* v1.56.0: a miniatura nos editores de links (Divulgar, ficha do parceiro e Links da SpotMesa) e a frase do /links */
.bl-img { display: flex; align-items: center; gap: 8px 14px; flex-wrap: wrap; font-size: .85rem; }
.bl-img img { width: 40px; height: 40px; flex: none; border-radius: 8px; object-fit: cover; border: 1px solid var(--borda, rgba(0, 0, 0, .1)); }
.bl-img label { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 0; }
.bl-campos .bl-img input[type=checkbox], .bl-novo .bl-img input[type=checkbox] { width: auto; height: auto; flex: none; }
.bl-img label:last-child { flex: 1 1 200px; min-width: 0; }
.bl-campos .bl-img input[type=file], .bl-novo .bl-img input[type=file] { width: 100%; min-width: 0; font-size: .82rem; }
.lt-frase-form { display: grid; gap: 8px; }

/* v1.59.8: Admin e parceiro aproveitam a tela. Quadros, tabelas e painéis vão até a borda; o resto fica largo, com texto em até 90 caracteres. */
.app-main .container { max-width: 1400px; }
.app-main.pg-larga .container, .app-main .container:has(table, .table-wrap, .kanban, .counters) { max-width: 2200px; }
.app-main .container p, .app-main .container li { max-width: 90ch; }
.app-main.pg-larga .container form.card:not(:has(table)), .app-main .container:has(table, .table-wrap, .kanban, .counters) form.card:not(:has(table)) { max-width: 1000px; }
/* v1.59.8: quadro do CRM */
.kanban-col { flex: 1 1 185px; min-width: 185px; }
@media (min-width: 1600px) { .kanban-col { min-width: 160px; flex-basis: 160px; } }
.kanban-card .crm-tipo { align-self: flex-start; max-width: 100%; overflow: hidden; text-overflow: ellipsis; font-weight: 600; padding: 1px 8px; }
.crm-fone { white-space: nowrap; }
@media (max-width: 759px) {
  .kanban { scroll-snap-type: x mandatory; }
  .kanban-col { flex: 0 0 85%; min-width: 0; scroll-snap-align: start; }
}
.crm-barra { position: relative; }
.crm-barra > form { flex: 1 1 auto; min-width: 0; }
@media (min-width: 1000px) {
  .crm-barra { flex-wrap: nowrap !important; align-items: center; }
  .crm-barra > form { flex-wrap: nowrap !important; }
  .crm-barra > form input[name=busca] { flex: 1 1 200px; width: auto !important; min-width: 140px; }
  .crm-barra > form select { flex: 0 1 200px; width: auto; min-width: 120px; }
  .crm-barra > details { flex: none; }
  .crm-barra > details summary { white-space: nowrap; }
  .crm-barra > details[open] > .card, .crm-barra > details[open] > form { position: absolute; right: 0; top: 100%; z-index: 30; width: min(560px, 90vw); }
}

/* v1.59.10.2: borda rosa só nas abas Reservar mesa, Festa no lugar e Festa em casa. Horários, filtros e opções ficam neutros; o selecionado ganha fundo um pouco mais claro e texto rosa. */
:root { --sec: var(--rosa); }
html[data-tema="claro"] { --sec: #B00E4E; }
.portas { gap: 4px; }
.portas a { border: 1px solid transparent; }
.portas a.on { background: #D6125F; color: #fff; }
@media (max-width: 420px) { .portas a { padding-left: 1px; padding-right: 1px; } .portas .porta-leg, .portas .porta-leg * { min-width: 0; } .portas .porta-leg small, .portas .leg-curta { font-size: .64rem; letter-spacing: -.02em; overflow: visible; text-overflow: clip; } }
.portas a:not(.on) { border-color: var(--sec); color: var(--roxo); }
.portas a:not(.on) small, .portas a:not(.on) span { color: inherit; }
.slot:not(.slot-hh), .sp-hora { background: var(--branco); border: 1.5px solid var(--borda); color: var(--roxo); }
.slot:hover, .sp-hora:hover { background: color-mix(in srgb, var(--roxo) 14%, transparent); border-color: var(--borda); color: var(--sec); }
.slot.on, .sp-hora.on { background: color-mix(in srgb, var(--roxo) 14%, transparent); border-color: var(--borda); color: var(--sec); font-weight: 800; }
html[data-tema="escuro"] .slot.on, html[data-tema="escuro"] .sp-hora.on, html[data-tema="escuro"] .slot:hover, html[data-tema="escuro"] .sp-hora:hover { color: #FFA3C3; }
.portas a:focus-visible { outline: 3px solid var(--sec); outline-offset: 2px; }
.sb-quick { white-space: nowrap; }
.sb-quick.on, .ordem-chips button.on, .sp-rapido.on, .sp-dia.on, .vista-chave button.on { background: color-mix(in srgb, var(--roxo) 14%, transparent); border-color: var(--borda); color: var(--sec); font-weight: 800; }
.sp-dia.on { border: 1px solid var(--borda); }
html[data-tema="escuro"] .sb-quick.on, html[data-tema="escuro"] .ordem-chips button.on, html[data-tema="escuro"] .sp-rapido.on, html[data-tema="escuro"] .sp-dia.on, html[data-tema="escuro"] .vista-chave button.on { color: #FFA3C3; }
.sb-when .btn, body:not(.has-shell) .aj-q { background: transparent; border: 1.5px solid var(--borda); color: inherit; }
html[data-tema] .sb-when .btn { background: transparent; border: 1.5px solid var(--borda); color: inherit; }
html[data-tema] .vista-chave button.on { background: color-mix(in srgb, var(--roxo) 14%, transparent); color: var(--sec); }
.tca-horas .slot-mais { color: var(--roxo); }
html[data-tema="escuro"] .vista-chave button.on { color: #FFA3C3; }
.ordem-chips button.on::before { content: "✓ "; }
.sb-quick:focus-visible, .ordem-chips button:focus-visible, .sp-rapido:focus-visible, .sp-hora:focus-visible, .sp-dia:focus-visible, .slot:focus-visible, .filtros-btn:focus-visible, .vista-chave button:focus-visible, .sb-when .btn:focus-visible, form [data-step]:focus-visible, .wz-contador button:focus-visible { outline: 3px solid var(--sec); outline-offset: 2px; }

/* v1.60.0.3: entrada única da reserva */
.entrada-topo { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin: 6px 0 8px; }
.entrada-topo h2 { margin: 0; font-size: 1.25rem; }
.entrada-unica { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.entrada-unica a { display: flex; align-items: center; gap: 8px; min-height: 52px; padding: 8px 12px; border-radius: 12px; border: 1px solid var(--rosa); background: var(--branco); color: var(--roxo); font-weight: 800; font-size: .92rem; line-height: 1.2; text-decoration: none; }
.entrada-unica a.on { background: #D6125F; border-color: #D6125F; color: #fff; }
.entrada-casa { margin: 10px 0 0; text-align: center; }
@media (min-width: 768px) { .entrada-unica { grid-template-columns: repeat(4, 1fr); } }
.minhas-topo .portas-filtro.portas { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 480px) { .minhas-topo .portas-filtro .porta-ico { display: none; } }

/* v1.61.4: os painéis (Admin, parceiro, prestador e influenciador) usam a largura do CRM, colados no menu. Os quadros alinham nas duas bordas; só os campos guardam uma largura boa de ler. */
.app-main.pg-painel .container { max-width: 2200px !important; margin-left: 0; }
.app-main.pg-painel .container .card:not(.empty) { max-width: none !important; }
.app-main.pg-painel .card .field, .app-main.pg-painel .card .field-row { max-width: 980px; }
.app-main.pg-painel .container [style*="max-width"]:has(.card, .table-wrap) { max-width: none !important; }
.avisos-cad { min-width: 0; }
.bl-novo input[type=checkbox] { width: auto; height: auto; flex: none; }
.app-main.pg-painel .pix-page { max-width: none; }
.app-main.pg-painel .inf { max-width: none; }
