/* css/base.css — reset, base elements, animations, utility classes, accessibility. */

/* ============================================================================
     ANTI-CURSOR / FOCUS / TAP — solução definitiva (3 camadas)
     ----------------------------------------------------------------------------
     Camada 1: caret oculto GLOBALMENTE (incluindo body/html/p/h*).
       Só os campos REAIS (input/textarea) têm caret reativado abaixo.
     Camada 2: tap-highlight removido (quadrado azul mobile).
     Camada 3: outline só para teclado (:focus-visible), nunca para rato.
     ============================================================================ */

/* CAMADA 1 — caret invisível em TUDO por defeito */
html,
body,
*,
*::before,
*::after {
  caret-color: transparent;
}

/* Re-habilita caret SÓ onde faz sentido (campos editáveis reais) */
input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="reset"]),
textarea,
[contenteditable="true"]:not([contenteditable="false"]) {
  caret-color: auto;
}

/* CAMADA 2 — sem flash azul mobile */
*,
*::before,
*::after {
  -webkit-tap-highlight-color: transparent;
}

/* CAMADA 3 — outline de focus só para teclado */
:focus {
  outline: none;
}

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

/* Bonus: previne seleção acidental em elementos clicáveis grandes
     (mantém seleção de texto nos parágrafos para o user copiar morada/email) */
button,
.btn,
.nav-btn,
nav,
.menu-tab,
.hero-cta,
.hamburger,
.edit-toolbar {
  -webkit-user-select: none;
  user-select: none;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: 'Cormorant Garamond', serif;
  font-size: 20px;
  line-height: 1.7;
  overflow-x: hidden;
}

/* ===== SCROLL FADE-IN ANIMATION ===== */
.fade-in-up {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.7s ease, transform 0.7s ease;
  /* Fallback: se o IntersectionObserver não disparar (Android antigo, JS truncado, etc.)
       ao fim de 0.4s força visibilidade — quase imediato mas mantém o efeito de animação */
  animation: fadeInUpFallback 0.6s ease 0.4s forwards;
}

.fade-in-up.visible {
  opacity: 1;
  transform: translateY(0);
  animation: none;
}

@keyframes fadeInUpFallback {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Sinalizado por JS quando IntersectionObserver existe — desliga o fallback (quem comanda é o IO) */
.has-io .fade-in-up {
  animation: none;
}

/* Respeita user preference: sem animações = sempre visível.
   Cobre fade-in-up, cv-wine-card (cvFadeIn em catalogos com >70 elementos)
   e stagger-items (que aplica delays escalonados a grids completos). */
@media (prefers-reduced-motion: reduce) {
  .fade-in-up,
  .cv-wine-card,
  .stagger-items > * {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}

/* Sem JS = sempre visível */
.no-js .fade-in-up {
  opacity: 1;
  transform: none;
  animation: none;
}

/* Scrollbar: 8px em desktop, 4px em mobile (toque, menos pixels para a barra). */
::-webkit-scrollbar {
  width: 8px;
}
@media (max-width: 700px) {
  ::-webkit-scrollbar { width: 4px; }
}

::-webkit-scrollbar-track {
  background: var(--bg);
}

::-webkit-scrollbar-thumb {
  background: var(--gold);
  border-radius: 4px;
}

/* ============================================================================
   UTILITY CLASSES — substitui style="" inline em padrões repetidos,
   viabilizando CSP estrita (style-src sem 'unsafe-inline').
   ============================================================================ */
.u-text-gold { color: var(--gold); }
.u-text-cream { color: var(--cream); }
.u-text-muted { color: var(--muted); }
.u-italic-muted-sm { font-size: 0.82rem; font-style: italic; color: var(--muted); margin-top: 0.2rem; }
.u-flex-center-gap { display: flex; align-items: center; gap: 0.8rem; }
.u-pratoday-card { background: var(--surface); padding: 1.2rem; display: flex; align-items: center; gap: 1rem; }
.u-emoji-lg { font-size: 1.8rem; }
.u-mb-md { margin-bottom: 1.5rem; }
.u-mb-lg { margin-bottom: 2rem; }

/* ============================================================
 * Classes CSP-estrita (style-src sem 'unsafe-inline') — substituem
 * inline styles em js/main.js e index.html.
 * ============================================================ */

/* Helpers de visibilidade */
.is-hidden.is-hidden { display: none; }
.is-block { display: block; }
.is-flex { display: flex; }

/* Modal: trava o scroll do body */
body.modal-open { overflow: hidden; }

/* Open/closed badge — base + variantes (substitui style.cssText em js/main.js). */
.open-badge {
  display: block;
  margin-top: 0.6rem;
  width: -moz-fit-content;
  width: fit-content;
  padding: 0.2rem 0.7rem;
  border-radius: 2rem;
  font-family: 'Montserrat', sans-serif;
  font-size: 0.5rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: #fff;
}
.open-badge--open { background: var(--open-badge-bg-open); }
.open-badge--closed { background: var(--open-badge-bg-closed); }

/* Cards de produto sempre clicáveis (substitui card.style.cursor em JS). */
.cv-wine-card,
.spirit-card {
  cursor: pointer;
}

/* Estilos das templates dinâmicas (js/main.js renderEventsList, summary,
 * verify-details, reviews, menu-dia). */
.dp-summary-row.dp-summary-row { margin-bottom: 0.8rem; }
.dp-summary-label.dp-summary-label,
.dp-row-label.dp-row-label,
.dp-event-day-num.dp-event-day-num {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.75rem; /* 12px — antes 0.55rem (~8.8px), ilegível */
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--accent-gold);
}
.dp-row.dp-row { margin-bottom: 1rem; }
.dp-row-value.dp-row-value { color: var(--text); font-size: 1rem; }

.dp-verify-cancelled.dp-verify-cancelled {
  text-align: center;
  padding: 1rem 0;
}
.dp-verify-cancelled-icon.dp-verify-cancelled-icon {
  font-size: 2.5rem;
  margin-bottom: 0.5rem;
}
.dp-verify-cancelled-title.dp-verify-cancelled-title {
  color: var(--red);
  font-family: 'Playfair Display', serif;
  margin-bottom: 0.6rem;
  font-size: 1.6rem;
}
.dp-verify-cancelled-text.dp-verify-cancelled-text {
  color: var(--muted);
  font-size: 0.95rem;
  margin-bottom: 1.5rem;
}

.dp-events-empty-public.dp-events-empty-public {
  color: var(--muted);
  text-align: center;
  padding: 2.5rem 1.5rem;
  border: 1px solid var(--border);
  background: rgba(212, 160, 23, 0.03);
}

.dp-events-empty-title.dp-events-empty-title {
  font-style: italic;
  font-size: 1.05rem;
  margin-bottom: 0.8rem;
  color: var(--cream);
}

.dp-events-empty-hint.dp-events-empty-hint {
  font-style: italic;
  margin-bottom: 1.2rem;
  color: var(--muted);
}

.dp-events-empty-link.dp-events-empty-link {
  display: inline-block;
  font-family: 'Montserrat', sans-serif;
  font-size: 0.7rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--gold);
  text-decoration: none;
  padding: 0.7rem 1.5rem;
  border: 1px solid var(--gold);
  transition: all 0.3s ease;
}

.dp-events-empty-link.dp-events-empty-link:hover {
  background: var(--gold);
  color: var(--bg);
}

/* Classes auto-geradas a partir dos atributos style="..." de
 * index.html, para CSP estrita (style-src sem 'unsafe-inline').
 * Se um valor for partilhado, todas as ocorrências referenciam
 * a mesma classe (ex: .s-XXXXX).
 */
.dp-flex-center.dp-flex-center { display:flex; align-items:center; gap:0.8rem; }
.dp-theme-btn.dp-theme-btn { background:none; border:1px solid var(--border); color:var(--accent-gold); width:2rem; height:2rem; cursor:pointer; font-size:0.9rem; transition:all 0.3s; display:flex; align-items:center; justify-content:center; }
.dp-hero-z.dp-hero-z { position:relative; z-index:1; }
.dp-hero-logo-wrap.dp-hero-logo-wrap { width: 500px; height: 500px; max-width: 80vw; max-height: 80vw; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 1.5rem auto 2rem; position: relative; animation: fadeUp 1s ease both; }
.dp-hero-logo-img.dp-hero-logo-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; image-rendering: -webkit-optimize-contrast; image-rendering: crisp-edges; box-shadow: 0 20px 80px rgba(0,0,0,0.4); }
.dp-sobre-grid.dp-sobre-grid { display:grid; grid-template-columns:1fr; gap:2.5rem; max-width:900px; margin:0 auto; align-items:center; }
.dp-text-center.dp-text-center { text-align:center; }
.dp-sobre-logo.dp-sobre-logo { width:180px; height:180px; border-radius:50%; object-fit:cover; box-shadow:0 10px 40px rgba(0,0,0,0.35); margin-bottom:1.5rem; }
.dp-sobre-text.dp-sobre-text { font-family:'Cormorant Garamond',serif; font-size:1.4rem; line-height:1.7; color:var(--cream); margin-bottom:1.2rem; font-weight:300; }
.dp-gold-bold.dp-gold-bold { color:var(--accent-gold); font-weight:500; }
.dp-sobre-text-alt.dp-sobre-text-alt { font-family:'Cormorant Garamond',serif; font-size:1.2rem; line-height:1.7; color:var(--muted); margin-bottom:2rem; font-weight:300; }
.dp-info-cards.dp-info-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1.5rem; margin-top:1rem; }
.dp-info-card.dp-info-card { background:var(--surface); border:1px solid var(--border); padding:1.8rem 1.5rem; text-align:center; border-radius:4px; }
.dp-card-label.dp-card-label { font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:3px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:0.8rem; }
.dp-card-address.dp-card-address { font-family:'Cormorant Garamond',serif; font-size:1.05rem; color:var(--cream); line-height:1.5; }
.dp-card-link.dp-card-link { display:inline-block; margin-top:1rem; color:var(--accent-gold); font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:2px; text-decoration:none; border-bottom:1px solid var(--accent-gold-border); padding-bottom:2px; }
.dp-card-body.dp-card-body { font-family:'Cormorant Garamond',serif; font-size:1.05rem; color:var(--cream); line-height:1.6; }
.dp-phone-link.dp-phone-link { color:var(--cream); text-decoration:none; }
.dp-email-link.dp-email-link { color:var(--accent-gold); text-decoration:none; font-size:0.95rem; }
.dp-social-row.dp-social-row { margin-top:1rem; display:flex; gap:0.8rem; justify-content:center; }
.dp-social-link.dp-social-link { color:var(--accent-gold); font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:2px; text-decoration:none; border-bottom:1px solid var(--accent-gold-border); padding-bottom:2px; }
.dp-cta-center.dp-cta-center { text-align:center; margin-top:2rem; }
.dp-ls-wide.dp-ls-wide { letter-spacing:3px; }
.dp-section-intro.dp-section-intro { text-align:center; margin-bottom:2rem; }
.dp-pretitle.dp-pretitle { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:4px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:0.5rem; }
.dp-subtitle.dp-subtitle { font-family:'Playfair Display',serif; font-size:2rem; color:var(--cream); font-weight:400; }
.dp-gold.dp-gold { color:var(--accent-gold); }
.dp-prices-row.dp-prices-row { display:flex; justify-content:center; gap:1rem; flex-wrap:wrap; margin-bottom:2.5rem; }
.dp-price-card.dp-price-card { text-align:center; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm); padding:1.2rem 1rem; flex: 1; min-width:120px; max-width: 250px; }
.dp-price-big.dp-price-big { font-family:'Playfair Display',serif; font-size:2rem; color:var(--accent-gold); font-weight:700; }
.dp-price-label.dp-price-label { font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:2px; text-transform:uppercase; color:var(--muted); margin-top:0.3rem; }
.dp-price-card--hoje.dp-price-card--hoje { border-color:var(--accent-gold); box-shadow:0 0 0 1px var(--accent-gold); }
.dp-price-hoje { font-family:'Montserrat',sans-serif; font-size:0.6rem; font-weight:600; letter-spacing:2px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:0.4rem; }
.dp-included-box.dp-included-box { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:2rem; margin-bottom:2rem; }
.dp-included-title.dp-included-title { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:3px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:1.5rem; }
.dp-included-grid.dp-included-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:1.2rem; }
.dp-emoji-md.dp-emoji-md { font-size:1.3rem; }
.dp-text-cream.dp-text-cream { color:var(--cream); }
.dp-text-muted-sm.dp-text-muted-sm { font-size:0.8rem; color:var(--muted); font-style:italic; }
.dp-mb-2.dp-mb-2 { margin-bottom:2rem; }
.dp-hidden-default.dp-hidden-default { display:none; }
.dp-subsection-title.dp-subsection-title { font-family:'Playfair Display',serif; font-size:1.3rem; color:var(--cream); font-style:italic; margin-bottom:1.2rem; padding-bottom:0.8rem; border-bottom:1px solid var(--border); }
.dp-empty-state.dp-empty-state { text-align:center; padding:2rem; background:var(--surface); border:1px solid var(--border); }
.dp-empty-text.dp-empty-text { font-size:1.2rem; color:var(--muted); font-style:italic; margin-bottom:0.5rem; }
.dp-empty-hint.dp-empty-hint { font-size:0.85rem; color:var(--muted); }
.dp-info-note.dp-info-note { background:var(--surface); border:1px solid var(--border); padding:1.2rem 1.5rem; font-size:0.8rem; color:var(--muted); }
.dp-italic.dp-italic { font-style:italic; }
.dp-rodizio-highlight.dp-rodizio-highlight { background:var(--rodizio-bg); border:1px solid var(--rodizio-border); border-radius:var(--radius-lg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:clamp(1.5rem, 5vw, 3rem); margin-bottom:2rem; text-align:center; position:relative; overflow:hidden; }
.dp-accent-line.dp-accent-line { position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg,transparent,var(--gold),transparent); }
.dp-highlight-pretitle.dp-highlight-pretitle { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:4px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:1rem; }
.dp-highlight-title.dp-highlight-title { font-family:'Playfair Display',serif; font-size:2rem; color:var(--cream); font-weight:400; margin-bottom:1.5rem; }
.dp-highlight-desc.dp-highlight-desc { color:var(--muted); font-style:italic; margin-bottom:2rem; max-width:600px; margin-left:auto; margin-right:auto; }
.dp-highlight-prices.dp-highlight-prices { display:flex; justify-content:center; gap:3rem; flex-wrap:wrap; margin-bottom:2rem; }
.dp-highlight-price.dp-highlight-price { font-family:'Playfair Display',serif; font-size:2.5rem; color:var(--accent-gold); font-weight:700; }
.dp-highlight-label.dp-highlight-label { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:2px; text-transform:uppercase; color:var(--muted); margin-top:0.3rem; }
.dp-included-title-sm.dp-included-title-sm { font-family:'Playfair Display',serif; font-size:1.2rem; color:var(--cream); font-style:italic; margin-bottom:1rem; padding-bottom:0.8rem; border-bottom:1px solid var(--border); }
.dp-included-grid-border.dp-included-grid-border { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(260px, 100%),1fr)); gap:1px; background:transparent; }
.dp-included-item.dp-included-item { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:1.2rem; display:flex; align-items:center; gap:1rem; }
.dp-emoji-lg.dp-emoji-lg { font-size:1.8rem; }
.dp-bullet.dp-bullet { flex:none; width:0.5rem; height:0.5rem; border-radius:50%; background:var(--accent-gold); box-shadow:0 0 0 4px rgba(212,160,23,0.12); margin:0 0.4rem; }
.dp-included-name.dp-included-name { font-family:'Playfair Display',serif; color:var(--cream); font-size:1rem; }
.dp-included-desc.dp-included-desc { font-size:0.82rem; font-style:italic; color:var(--muted); margin-top:0.2rem; }
.dp-icon-sm.dp-icon-sm { height: 1.8rem; vertical-align: middle; }
.dp-alt-card.dp-alt-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:2rem; margin-bottom:1rem; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:1rem; }
.dp-alt-pretitle.dp-alt-pretitle { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:3px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:0.3rem; }
.dp-alt-title.dp-alt-title { font-family:'Playfair Display',serif; font-size:1.4rem; color:var(--cream); font-weight:400; }
.dp-alt-note.dp-alt-note { font-style:italic; color:var(--muted); font-size:0.9rem; margin-top:0.3rem; }
.dp-alt-price.dp-alt-price { font-family:'Playfair Display',serif; font-size:2rem; color:var(--accent-gold); font-weight:700; white-space:nowrap; }
.dp-disclaimer.dp-disclaimer { text-align:center; font-style:italic; color:var(--muted); font-size:0.85rem; padding-top:1.5rem; border-top:1px solid var(--border); margin-top:1.5rem; }
.dp-qty-label.dp-qty-label { font-size:1rem; font-weight:500; color:var(--cream); }
.dp-item-featured.dp-item-featured { border:1px solid rgba(212,160,23,0.3); background:rgba(212,160,23,0.04); }
.dp-pax-badge.dp-pax-badge { font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:2px; background:rgba(212,160,23,0.15); color:var(--accent-gold); padding:0.2rem 0.5rem; margin-left:0.5rem; display:inline-block; white-space:nowrap; }
.dp-kids-note.dp-kids-note { text-align:center; font-style:italic; color:var(--muted); font-size:0.85rem; margin-top:2rem; }
.dp-gold-price.dp-gold-price { color:var(--accent-gold); font-weight:700; }
.dp-notice-box.dp-notice-box { background:var(--surface); border:1px solid var(--gold); border-radius:var(--radius-md); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:2rem; text-align:center; margin-bottom:2.5rem; }
.dp-notice-text.dp-notice-text { font-size:1.1rem; color:var(--cream); margin-bottom:1rem; }
.dp-notice-small.dp-notice-small { font-size:0.9rem; color:var(--muted); font-style:italic; }
.dp-order-grid.dp-order-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(220px, 100%),1fr)); gap:1.5rem; margin-bottom:2.5rem; }
.dp-order-card.dp-order-card { text-decoration:none; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:2rem; text-align:center; transition:all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); }
.dp-order-card.dp-order-card:hover { border-color:var(--gold); transform:translateY(-5px) scale(1.02); box-shadow:var(--shadow-card); z-index:1; position:relative; }
.dp-order-emoji.dp-order-emoji { font-size:2.5rem; margin-bottom:0.8rem; }
.dp-order-title.dp-order-title { font-family:'Playfair Display',serif; font-size:1.2rem; color:var(--cream); margin-bottom:0.3rem; }
.dp-order-desc.dp-order-desc { font-size:0.8rem; color:var(--muted); font-style:italic; margin-bottom:0.8rem; }
.dp-order-cta.dp-order-cta { font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:2px; text-transform:uppercase; color:var(--accent-gold); }
.dp-order-card-phone.dp-order-card-phone { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:2rem; text-align:center; }
.dp-phone-cta.dp-phone-cta { font-family:'Montserrat',sans-serif; font-size:0.55rem; letter-spacing:2px; text-transform:uppercase; color:var(--accent-gold); text-decoration:none; }
.dp-subsection-heading.dp-subsection-heading { font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:3px; text-transform:uppercase; color:var(--accent-gold); margin-bottom:1rem; }
.dp-takeaway-disclaimer.dp-takeaway-disclaimer { text-align:center; font-style:italic; color:var(--muted); font-size:0.85rem; padding-top:1.5rem; border-top:1px solid var(--border); }
.dp-section-desc.dp-section-desc { font-size:1rem; font-style:italic; color:var(--muted); margin-top:1rem; }
.dp-res-info.dp-res-info { color:var(--muted); font-style:italic; margin-bottom:2rem; }
.dp-open-badge-base.dp-open-badge-base { display:block; margin-top:0.6rem; padding:0.2rem 0.7rem; border-radius:2rem; font-family:'Montserrat',sans-serif; font-size:0.55rem; font-weight:600; letter-spacing:1px; text-transform:uppercase; width:fit-content; }
.dp-gold-link.dp-gold-link { color:var(--accent-gold); text-decoration:none; }
.dp-phone-input.dp-phone-input { border-left:none; }
.dp-honeypot.dp-honeypot { position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden; }
.dp-btn-full.dp-btn-full { width:100%; margin-top:0.5rem; }
.dp-btn-full-mt.dp-btn-full-mt { width:100%; margin-top:1.5rem; }
.dp-res-summary.dp-res-summary { margin-top:1.5rem; text-align:left; background:var(--surface2); padding:1.5rem; border:1px solid var(--border); }
.dp-mt-1p5.dp-mt-1p5 { margin-top:1.5rem; }
.dp-verify-float.dp-verify-float { position:fixed; bottom:2rem; right:2rem; z-index:8000; display:none; }
.dp-verify-btn.dp-verify-btn { background:var(--verify-btn-bg); border:1px solid var(--accent-gold); color:var(--accent-gold); padding:0.8rem 1.4rem; cursor:pointer; font-family:'Montserrat',sans-serif; font-size:0.6rem; letter-spacing:2px; text-transform:uppercase; transition:all 0.3s; box-shadow:0 4px 20px rgba(0,0,0,0.4); }
.dp-verify-btn.dp-verify-btn:hover { background:var(--verify-btn-bg-hover); }
.dp-no-decoration.dp-no-decoration { text-decoration:none; }
.dp-tripadvisor-icon.dp-tripadvisor-icon { color:#00af87; }
.dp-mt-sm.dp-mt-sm { margin-top:0.8rem; }
.dp-gps-btn.dp-gps-btn { display:inline-flex; align-items:center; gap:0.5rem; background:var(--gold); color:var(--bg); padding:0.5rem 1rem; font-family:'Montserrat',sans-serif; font-size:0.55rem; font-weight:600; letter-spacing:1.5px; text-transform:uppercase; text-decoration:none; transition:opacity 0.2s; }
.dp-footer-col.dp-footer-col { flex-direction: column; gap: 0.8rem; text-align: center; }
.dp-footer-legal.dp-footer-legal { display:flex; flex-wrap:wrap; gap: 0.8rem 1.5rem; justify-content: center; }
.dp-footer-legal-link.dp-footer-legal-link { color:var(--muted); text-decoration:none; font-size:0.65rem; text-transform:uppercase; letter-spacing:1px; transition:color 0.2s; }

/* Render dinâmico do menu do dia (js/main.js renderMenuDiaDisplay).
 * Substitui inline styles para permitir CSP estrita. */
.menudia-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1px;
  background: var(--border);
}
.menudia-cell {
  background: var(--surface);
  padding: 1.2rem;
  display: flex;
  align-items: center;
  gap: 1rem;
}
.menudia-icon { font-size: 1.5rem; }
.menudia-label {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.55rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--accent-gold);
}
.menudia-name {
  color: var(--cream);
  font-size: 1rem;
  margin-top: 0.2rem;
}

/* Acessibilidade: h1 invisível para leitores de ecrã/SEO sem afectar layout. */
.dp-visually-hidden.dp-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.dp-noscript-msg.dp-noscript-msg {
  text-align: center;
  padding: 2rem;
  color: var(--muted);
  font-style: italic;
}

.dp-reviews-count-link.dp-reviews-count-link {
  color: var(--gold);
  text-decoration: none;
  transition: color 0.2s;
}

.dp-reviews-count-link.dp-reviews-count-link:hover {
  color: var(--gold2);
  text-decoration: underline;
}
