:root{
    --font-sans:Segoe UI,system-ui,-apple-system,Arial,sans-serif;
    --font-display:Georgia,'Times New Roman',Segoe UI,system-ui,sans-serif;
    --primary:#f58fb4;
    --accent:#ffd74a;
    --text:#2b2b2b;
    --bg:#fff8fb;
    --muted:#6b7280;
    --card:#ffffff;
    --fieldbg:#fff1f6;
    --fieldborder:#f2c7d6;
    --fieldfocus:rgba(245,143,180,.35);
    --shadow:0 10px 20px rgba(0,0,0,.07);
    --radius:18px;
    --headerH:64px
}

*{
    box-sizing:border-box
}

html,body{
    margin:0;
    padding:0;
    font-family:var(--font-sans);
    color:var(--text);
    background:var(--bg)
}

img{
    max-width:100%;
    display:block;
    height:auto
}

a{
    color:#c94f81;
    text-decoration:none
}

.container{
    width:min(1100px,92%);
    margin:0 auto
}

header{
    position:sticky;
    top:0;
    background:#fff;
    box-shadow:var(--shadow);
    z-index:2200
}

.nav{display:flex;align-items:center;gap:14px;padding:10px 0}
.brand{display:flex;align-items:center;gap:14px;min-width:0;flex:0 0 auto}
.brand-link{color:inherit}
.brand-copy{min-width:0}
.brand-logo{width:58px;height:58px;border-radius:16px;background:#fff url('../../site_media.php?key=img%2Flogo.png') center/cover no-repeat;box-shadow:var(--shadow);flex:0 0 auto}
h1{font-size:22px;line-height:1.05;margin:0;font-family:var(--font-display)}
.menu{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-left:auto}
.nav-user{margin-left:12px;display:flex;align-items:center;gap:10px;flex:0 0 auto}
.nav-user .hello{color:var(--muted);font-size:14px;max-width:28vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.btn.small{min-height:36px;padding:8px 10px;border-radius:12px;font-size:14px}
@media (max-width:900px){
  .nav{gap:10px;padding:9px 0}
  .brand{gap:10px;min-width:0;flex:1 1 auto}
  .brand-logo{width:48px;height:48px;border-radius:14px}
  h1{font-size:19px}
  .nav-user{gap:8px;margin-left:auto}
  .nav-user .hello{max-width:30vw;font-size:12px}
  .btn.small{min-height:34px;padding:7px 9px;font-size:13px}
}
@media (max-width:640px){
  .brand-logo{width:44px;height:44px;border-radius:12px}
  h1{font-size:17px}
  .nav-user .hello{display:none}
}

/* Sub-estruturas do menu */
.menu-links{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.menu-user{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-left:auto}
.menu-user .hello{color:var(--muted);font-size:14px}
.pill-admin{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:999px;font-size:12px;background:#fff7e6;border:1px solid #ffe1a3;color:#7a4a00}

.menu a{
    padding:10px 14px;
    border-radius:12px
}

.menu a.active, .menu a:hover{
    background:var(--primary);
    color:#fff
}

.hero{
    position:relative;
    background:linear-gradient(135deg, rgba(245,143,180,.22), rgba(255,215,74,.18)), url('../../site_media.php?key=img%2Fpattern.png') center/256px 256px repeat;
    border-bottom:1px solid rgba(0,0,0,.06)
}
.hero .inner{padding:34px 0}
.hero .hero-media{border-radius:22px;overflow:hidden;box-shadow:var(--shadow);border:1px solid rgba(0,0,0,.06)}
.hero .hero-media img{width:100%;height:auto;display:block}


.hero .inner{
    padding:84px 0 60px
}

.card{
    background:var(--card);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:22px
}

.grid{display:grid;gap:clamp(12px,3vw,18px)}

.grid-2{
    grid-template-columns:repeat(2,1fr)
}

.grid-3{
    grid-template-columns:repeat(3,1fr)
}

@media(max-width:768px){
    .grid-2,.grid-3{grid-template-columns:1fr}
}

h2{
    margin:6px 0 14px;
    font-size:26px
}

h3{
    margin:6px 0 10px;
    font-size:20px
}

p{
    line-height:1.6;
    color:#3c3c3c
}

.btn{border:0;border-radius:14px;padding:12px 18px;font-weight:600;cursor:pointer;background:var(--primary);color:#fff;box-shadow:var(--shadow);display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:140px;max-width:100%;text-align:center;white-space:normal;word-break:keep-all}

.btn.secondary{
    background:var(--accent);
    color:#2b2b2b
}

.btn.btn-sm{padding:8px 10px;min-width:auto;min-height:38px;font-size:14px;}

.form-actions{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    align-items:center
}

@media(max-width:480px){
    .form-actions .btn{
        flex:1 1 160px
    }
}

/* Campos (inputs, selects, textareas) */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="search"],
input[type="url"],
textarea,
select{
    background:var(--fieldbg);
    border:1px solid var(--fieldborder);
    border-radius:12px;
    padding:8px 10px;
    font-size:15px;
    color:var(--text)
}

input:focus,
select:focus,
textarea:focus{
    outline:0;
    border-color:var(--primary);
    box-shadow:0 0 0 3px var(--fieldfocus)
}

.input{
    position:relative;
    display:flex;
    align-items:center;
    background:var(--fieldbg);
    border:1px solid var(--fieldborder);
    border-radius:12px;
    padding:8px 10px;
    gap:8px
}

.input input,.input select,.input textarea{
    border:0;
    outline:0;
    width:100%;
    padding:0;
    box-shadow:none;
    font-size:15px;
    background:transparent;
    color:var(--text)
}

.input:focus-within{
    border-color:var(--primary);
    box-shadow:0 0 0 3px var(--fieldfocus)
}

.input input:focus,.input select:focus,.input textarea:focus{
    box-shadow:none;
    border:0
}

.input .eye{
    width:22px;
    height:22px;
    cursor:pointer;
    opacity:.7
}

.form-row{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px
}

@media(max-width:900px){
    .form-row{
        grid-template-columns:1fr
    }
}

label{
    font-size:13px;
    color:var(--muted);
    margin-bottom:6px;
    display:block
}

small.err{
    color:#b42318;
    font-size:12px;
    display:none;
    margin-top:6px
}

footer{
    margin-top:40px;
    padding:20px 0;
    color:#6b7280
}

footer .grid-3{
    grid-template-columns:2fr 1fr 1fr
}

.kpis{
    display:flex;
    gap:12px;
    flex-wrap:wrap
}

.kpi{
    padding:12px 14px;
    border-radius:12px;
    background:linear-gradient(180deg,#fff,#fff2f6);
    box-shadow:var(--shadow)
}

/* Menu toggle: escondido por padrão; mostrado em mobile.
   Nota: o drawer do menu (lado direito) está definido mais abaixo na secção
   "MENU MOBILE" para evitar regras duplicadas e conflitos. */
.menu-toggle{ display:none; }

@media (max-width:900px){
  .menu-toggle{ display:inline-flex; align-items:center; justify-content:center; }
}

/* ================================================= */
/* FIM DA MOBILE MEDIA QUERY             */
/* ================================================= */


.msg{
    margin:12px 0 16px;
    border-radius:10px;
    padding:10px 12px
}

.msg.err{
    background:#ffe6e6;
    border:1px solid #ff9b9b;
    color:#a10000
}

.msg.ok{
    background:#e9ffe6;
    border:1px solid #8fda7f;
    color:#064b00
}

.noscroll{
    overflow:hidden
}

.input input[disabled], .input select[disabled], .input textarea[disabled]{
    opacity:.7; 
    cursor:not-allowed
}


h1,h2,h3{font-family:var(--font-display);letter-spacing:.2px}
h1{font-size:1.15rem;margin:0}
h2{font-size:1.85rem;line-height:1.15;margin:0 0 10px}
h3{font-size:1.2rem;margin:0 0 8px}
.lead{font-size:1.05rem;color:var(--muted);line-height:1.6}
.small{font-size:.92rem;color:var(--muted)}


/* Marketing sections */
.section{padding:26px 0}
.section.alt{background:rgba(255,255,255,.55);border-top:1px solid rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.05)}
.section .section-head{display:flex;align-items:flex-end;justify-content:flex-start;
    gap:10px;gap:14px;margin-bottom:14px}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pill{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border-radius:999px;background:#fff;border:1px solid rgba(0,0,0,.08);color:var(--text);font-size:.92rem}
.pill svg{width:16px;height:16px;opacity:.85;flex:0 0 auto}

.feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media(max-width:860px){.feature-grid{grid-template-columns:1fr}}
  touch-action:manipulation;
  -webkit-tap-highlight-color: transparent;
.feature{padding:16px;border-radius:22px;background:#fff;border:1px solid rgba(0,0,0,.08);box-shadow:var(--shadow)}
.feature .icon{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;background:rgba(245,143,180,.18);border:1px solid rgba(0,0,0,.06);margin-bottom:10px}
.feature p{margin:0;color:var(--muted);line-height:1.6}

.media-card{padding:0;overflow:hidden}
.media-card .body{padding:16px}
.media-card img{width:100%;height:auto;display:block}

.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media(max-width:860px){.gallery{grid-template-columns:1fr}}
.gallery a{display:block;border-radius:22px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:var(--shadow)}
.gallery img{width:100%;height:auto;display:block;transform:scale(1.01);transition:transform .25s ease}
.gallery a:hover img{transform:scale(1.05)}

.video-embed{position:relative;border-radius:22px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:var(--shadow);background:#000}
.video-embed iframe{width:100%;aspect-ratio:16/9;border:0;display:block}
.video-embed .note{padding:8px 10px;background:#fff;color:var(--muted);font-size:.92rem;border-top:1px solid rgba(0,0,0,.08)}

.testimonials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media(max-width:860px){.testimonials{grid-template-columns:1fr}}
.quote{padding:16px;border-radius:22px;background:#fff;border:1px solid rgba(0,0,0,.08);box-shadow:var(--shadow)}
.quote .who{margin-top:10px;color:var(--muted);font-size:.92rem}

.faq{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:860px){.faq{grid-template-columns:1fr}}
.faq .q{padding:16px;border-radius:22px;background:#fff;border:1px solid rgba(0,0,0,.08);box-shadow:var(--shadow)}
.faq .q strong{display:block;margin-bottom:6px}
.faq .q span{color:var(--muted);line-height:1.6}

.reveal{opacity:0;transform:translateY(8px);transition:opacity .55s ease, transform .55s ease}
.reveal.in{opacity:1;transform:none}

/* Buttons refinement */
.btn{border-radius:999px;padding:10px 14px}
.btn.secondary{background:rgba(255,255,255,.9)}
.btn:hover{transform:translateY(-1px)}


/* Notices */
.notice{margin:12px 0;padding:12px 14px;border-radius:12px;font-size:14px;line-height:1.35;border:1px solid rgba(0,0,0,.08)}
.notice.ok{background:#f0fff2;color:#0b6b00;border-color:rgba(11,107,0,.18)}
.notice.err{background:#fff0f2;color:#b00020;border-color:rgba(176,0,32,.18)}

/* Forms: make help text a bit clearer */
.field small{opacity:.85}


/* Admin badges */
.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;border:1px solid #f3d3dc;background:#fff3f7;color:#7a1f3d}
.badge-open{background:#fff3f7}
.badge-proc{background:#fff7e6;border-color:#ffe1a3;color:#7a4a00}
.badge-done{background:#e9fff0;border-color:#b8f0c9;color:#165a2b}
.badge-cancel{background:#ffecec;border-color:#ffb8b8;color:#7a1f1f}


/* Form selects */
select{width:100%;padding:8px 10px;border-radius:12px;border:1px solid #f3d3dc;background:#fff;}


/* Google Maps */
#gmapsSearch{width:100%;}

/* Google Maps InfoWindow (melhor contraste do texto) */
.gm-style .gm-style-iw,
.gm-style .gm-style-iw-c,
.gm-style .gm-style-iw-d{
  color:#111 !important;
}
.gm-style .gm-style-iw a{color:#111 !important;}
.gm-style .gm-style-iw-d{font-size:14px;line-height:1.35;}


/* Fix Google Maps tiles broken by global img rules */
.gm-style img,
.gm-style iframe,
.gm-style canvas {
  max-width: none !important;
}

#map img,
#adminMap img {
  max-width: none !important;
}


/* Google Maps: prevent global img{max-width:100%} from breaking tiles/markers */
.gm-style img{max-width:none !important;}

/* Google Places Autocomplete dropdown should overlay modals/cards */
.pac-container{z-index:999999 !important;}

/* Do not clip Google marker/shadow */
#map,#adminMap{overflow:visible !important;}

.gmaps-box{position:relative;border-radius:14px;}
.gmaps-box::after{content:'';position:absolute;inset:0;border-radius:14px;border:1px solid #f3d3dc;pointer-events:none;}

.gm-style img{max-width:none !important;}


/* Accessibility */
.skip{
  position:absolute;
  left:-9999px;
  top:10px;
  background:#111;
  color:#fff;
  padding:8px 10px;
  border-radius:12px;
  z-index:99999;
}
.skip:focus{left:10px;}
:focus-visible{outline:3px solid rgba(245,143,180,.55); outline-offset:2px;}

/* Tables (admin) */
.table-wrap{overflow:auto;-webkit-overflow-scrolling:touch;border-radius:16px;border:1px solid rgba(0,0,0,.08);box-shadow:var(--shadow);background:#fff}
.table-wrap table{width:100%;border-collapse:collapse}
.table-wrap th,.table-wrap td{padding:8px 10px;border-bottom:1px solid rgba(0,0,0,.06);text-align:left;vertical-align:top}
.table-wrap th{position:sticky;top:0;background:#fff;z-index:1}
@media(max-width:700px){
  .table-wrap{border-radius:14px}
}

/* Mobile CTA bar (optional, enabled when config provides WhatsApp) */
.mobile-cta{
  position:fixed; left:0; right:0; bottom:0;
  padding:8px 10px;
  background:rgba(255,255,255,.92);
  border-top:1px solid rgba(0,0,0,.08);
  backdrop-filter: blur(10px);
  z-index:2400;
  display:none;
}
.mobile-cta .row{display:flex;gap:10px}
.mobile-cta .row a{flex:1; text-align:center}
@media(max-width:768px){ .mobile-cta.show{display:block;} body{padding-bottom:72px;} }


/* ===== Mobile: botões sempre dentro do ecrã, à esquerda e com quebra ===== */

.form-actions,
.actions,
.btn-row,
.table-actions,
.card-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  align-items:center;
  gap:10px;
  max-width:100%;
}

.form-actions > *,
.actions > *,
.btn-row > *,
.table-actions > *,
.card-actions > *{
  max-width:100%;
}

/* Barra de ações duplicada no topo (JS) */
.form-actions.top-actions{margin-bottom:12px}

.btn, button.btn, a.btn, input[type="submit"].btn{
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
}

@media (max-width: 768px){
  .form-actions, .actions, .btn-row, .table-actions, .card-actions{
    flex-direction:column;
    align-items:stretch;
  }
  .btn, button.btn, a.btn, input[type="submit"].btn{
    width:100%;
  }
  /* Evita ações a sair do ecrã em grids antigas */
  .form-row .field{ min-width: 0; }

  /* Normaliza alinhamentos antigos à direita */
  .text-right, .ta-right{ text-align:left !important; }
  .pull-right, .float-right{ float:none !important; }
}

.table-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }


/* Head stacks and action buttons left in mobile (override inline space-between) */
@media (max-width: 768px){
  .mobile-stack{
    flex-direction:column !important;
    align-items:flex-start !important;
    justify-content:flex-start !important;
  }
  .mobile-actions-left{
    justify-content:flex-start !important;
    width:100% !important;
  }
  .mobile-actions-left .btn,
  .mobile-actions-left button.btn,
  .mobile-actions-left a.btn,
  .mobile-actions-left input[type="submit"].btn{
    width:100% !important;
  }
  .card-actions{
    margin-left:0 !important;
    justify-content:flex-start !important;
    align-items:stretch !important;
  }
}

/* =========================================================
   UX/RESPONSIVE OVERRIDES (Mobile-First) — v1.16.1
   - sem scroll horizontal 320–480
   - touch targets >=44x44
   - focus/active visível
   - menu mobile drawer (classe .open já existente)
   - bottom navigation (thumb zone)
   ========================================================= */

html{
  font-size:16px;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body{
  line-height:1.5;
  overflow-x:hidden;
}
*{ min-width:0; box-sizing:border-box; }
p, li{ line-height:1.5; }

.container{
  width:100%;
  max-width:1100px;
  margin:0 auto;
  padding-left:16px;
  padding-right:16px;
}
img, video, canvas, svg{ max-width:100%; height:auto; }

/* Touch targets + feedback */
.btn, button, a.btn, button.btn, input[type="submit"].btn{
  min-height:44px;
  min-width:44px;
  padding:12px 16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  line-height:1.2;
  white-space:normal;
  text-align:center;
  max-width:100%;
  touch-action:manipulation;
  -webkit-tap-highlight-color: rgba(0,0,0,0);
}
.btn:active, button:active, a:active{ transform:scale(.98); }

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

.menu a, .menu-links a, .menu-user a{
  min-height:44px;
  display:flex;
  align-items:center;
  padding:8px 10px;
  border-radius:12px;
}

/* Form controls */
input[type="text"],input[type="email"],input[type="password"],input[type="number"],
input[type="tel"],input[type="search"],input[type="url"],select,textarea{
  font-size:16px;
  min-height:44px;
  padding:8px 10px;
}
textarea{ min-height:120px; }

/* Ações sempre à esquerda; em mobile em coluna, sem scroll horizontal */
.form-actions,.card-actions,.page-actions,.table-actions,.actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-start !important;
  align-items:center;
}
@media (max-width:900px){
  .form-actions,.card-actions,.page-actions,.table-actions,.actions{
    width:100%;
    flex-direction:column;
    align-items:stretch;
  }
  .form-actions .btn,.card-actions .btn,.page-actions .btn,.table-actions .btn,.actions .btn{
    width:100%;
  }
}
@media (max-width:480px){
  .form-actions .btn{ flex:unset !important; }
}

/* Tabelas: scroll só dentro da tabela, nunca no body */
.table-wrap{ width:100%; overflow:auto; -webkit-overflow-scrolling:touch; }
table{ width:100%; }

/* =========================================================
   MENU MOBILE (aproveita .menu-toggle + #mobileMenu + .open)
   ========================================================= */
.menu-toggle{
  min-width:48px;
  min-height:48px;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(0,0,0,.08);
  background:#fff;
  touch-action:manipulation;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select:none;
  user-select:none;
  box-shadow:var(--shadow);
  cursor:pointer;
}

.menu-close{
  display:none;
  min-width:44px;
  min-height:44px;
  border-radius:14px;
  border:1px solid rgba(0,0,0,.08);
  background:#fff;
  font-weight:800;
  align-items:center;
  justify-content:center;
  margin:6px 0 10px auto;
}

header .menu-backdrop{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.35);
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease;
  z-index:2499;
}
header .menu-backdrop.open{
  opacity:1;
  pointer-events:auto;
}

@media (max-width:900px){
  /* drawer */
  #mobileMenu.menu{
    position:fixed;
    top:0;
    right:0;
    left:auto;
    height:100dvh;
    width:max-content;
    max-width:92vw;
    background:#fff;
    z-index:2500;
    padding:10px 10px calc(96px + env(safe-area-inset-bottom));
    border-left:1px solid rgba(0,0,0,.06);
    box-shadow:0 16px 50px rgba(0,0,0,.18);
    transform:translateX(110%);
    transition:transform .22s ease;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    overflow:auto;
  }
  #mobileMenu.menu.open{ transform:translateX(0); }
  .menu-links{ display:flex; flex-direction:column; gap:6px; align-items:flex-start; }
  .menu-links a{
    width:auto;
    display:inline-flex;
    align-items:center;
    justify-content:flex-start;
    white-space:nowrap;
    padding:7px 10px;
    font-size:14px;
    line-height:1.2;
    border-radius:12px;
  }
  .menu-close{ margin:4px 0 8px auto; }
  .menu-user a, .menu-user .btn{ width:100%; justify-content:center; }
  .menu-user .hello{ width:100%; text-align:center; padding:8px 10px; border:1px solid rgba(0,0,0,.06); border-radius:12px; background:#fafafa; }

  .menu-user{ display:flex; flex-direction:column; gap:8px; align-items:stretch; margin-top:auto; }
  .menu-close{ display:inline-flex; }
}

/* =========================================================
   BOTTOM NAV (thumb zone)
   ========================================================= */
.bottom-nav{
  position:fixed;
  left:0; right:0; bottom:0;
  z-index:2300;
  display:none;
  background:rgba(255,255,255,.92);
  backdrop-filter: blur(10px);
  border-top:1px solid rgba(0,0,0,.08);
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
}
.bottom-nav .bn{ display:flex; gap:6px; justify-content:space-around; }
.bottom-nav a{
  flex:1;
  min-height:44px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  border-radius:12px;
  padding:6px 8px;
  color:#374151;
  font-size:12px;
  line-height:1.1;
}
.bottom-nav a svg{ width:20px; height:20px; }
.bottom-nav a[aria-current="page"]{
  background:rgba(245,143,180,.18);
  color:#c94f81;
}
@media (max-width:900px){
  .bottom-nav{ display:block; }
  body{ padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
  .mobile-cta{ bottom: calc(72px + env(safe-area-inset-bottom)) !important; }
}



/* Utilitários leves (evitar inline styles) */
.container.narrow{max-width:980px}
.mt-22{margin-top:22px}
.mt-14{margin-top:14px}
.mb-12{margin-bottom:12px}
.m0{margin:0}
.subtle{color:var(--muted)}
/* Cabeçalho de página e ações */
.page-head{display:flex;justify-content:flex-start;
    gap:10px;align-items:flex-start;gap:12px;flex-wrap:wrap}
.page-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-start}
.card-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-start}
@media(max-width:900px){
  .page-head{flex-direction:column;align-items:flex-start}
  .page-actions{width:100%}
  .card-actions{width:100%}
  .page-actions .btn,.card-actions .btn{width:100%}
}
/* Locais (perfil) — ações em coluna só em ecrãs muito pequenos */
@media(max-width:420px){
  #locais > .card > div{flex-direction:column}
  #locais .card-actions{width:100%;flex-direction:column}
  #locais .card-actions .btn{width:100%}
}

/* Botões longos: permitir queb. em 2 linhas sem esmagar ícones */
.btn svg,.btn i{flex:0 0 auto}
.btn span{flex:1 1 auto}


.mt-6{margin-top:6px}

@media(max-width:900px){
  #locais [style*="grid-template-columns"]{grid-template-columns:1fr !important;}
}


/* Logout link */
.logout-link{ color:#b00020; font-weight:700; }
.logout-link:hover{ background:#ffe6ea !important; color:#b00020 !important; }


/* =========================================================
   MEDIA SIZE GUARDRAILS — v1.80.1
   Reduz imagens e vídeos para não deformarem a página
   ========================================================= */
:root{
  --hero-media-h: clamp(260px, 34vw, 430px);
  --card-media-h: clamp(180px, 24vw, 260px);
  --gallery-media-h: clamp(180px, 28vw, 300px);
  --video-media-h: min(70vh, 520px);
}

.hero .hero-media{
  max-width:100%;
  min-height:var(--hero-media-h);
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
}
.hero .hero-media img{
  width:100%;
  height:var(--hero-media-h);
  object-fit:contain;
  object-position:center;
  background:#fff;
}

.media-card > img,
.media-card img:first-child{
  display:block;
  width:100%;
  height:var(--card-media-h);
  object-fit:contain;
  object-position:center;
  background:#fff;
}

.gallery a{
  aspect-ratio:4/3;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
}
.gallery img{
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
  background:#fff;
}

video.auto-viewport-video,
.video-embed video,
.card video{
  width:100% !important;
  max-width:100%;
  height:auto !important;
  max-height:var(--video-media-h);
  aspect-ratio:16/9;
  object-fit:contain;
  background:#000;
  display:block;
  margin:0 auto;
}

@media (max-width: 768px){
  :root{
    --hero-media-h: 260px;
    --card-media-h: 210px;
    --gallery-media-h: 210px;
    --video-media-h: min(58vh, 340px);
  }
}

/* I18N switcher — v1.82.2 */
.lang-switch{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lang-pill{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;text-decoration:none;color:inherit;padding:0;border-radius:999px;border:1px solid #f3d3dc;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,.05);transition:transform .15s ease, background .15s ease, border-color .15s ease}
.lang-pill:hover{background:#fff3f7;border-color:#e8a9bf;transform:translateY(-1px)}
.lang-pill.active{background:#fff3f7;border-color:#d98eab}
.flag-img{width:22px;height:22px;display:block;border-radius:999px;object-fit:cover;box-shadow:0 0 0 1px rgba(0,0,0,.08)}
.menu-lang{display:none}


/* Mobile CTA fixes — v1.82.2 */
.section .section-head{flex-wrap:wrap;}
.section .section-head > div:last-child{flex:0 0 auto;}
.section .section-head .btn{min-width:0;white-space:nowrap;}
@media (max-width:480px){
  .section .section-head{flex-direction:column;align-items:stretch;}
  .section .section-head > div:last-child{width:100%;}
  .section .section-head > div:last-child .btn{display:inline-flex;width:100%;max-width:100%;justify-content:center;padding:12px 14px;font-size:14px;line-height:1.2;white-space:nowrap;}
}

/* Flag buttons clarity — v1.82.2 */
.lang-switch{gap:10px;}
.lang-pill{width:48px;height:38px;border-radius:12px;padding:0 6px;}
.flag-img{width:26px;height:18px;border-radius:4px;object-fit:fill;box-shadow:0 0 0 1px rgba(0,0,0,.12);}


/* Admin fixes — v1.82.2 */
.admin-orders-table .admin-order-status-select,
.admin-orders-table .admin-order-status-btn{
  white-space:nowrap !important;
  min-width:186px;
  width:186px;
  line-height:1.15;
}
.admin-orders-table .admin-order-status-select{width:auto;max-width:none;}
.admin-orders-table .admin-order-status-btn{width:auto !important;display:inline-flex;}
.admin-orders-table td:nth-child(7),
.admin-orders-table td:nth-child(8){
  white-space:nowrap;
  min-width:202px;
}
.route-picker-form{flex-wrap:wrap}
.route-picker-submit{white-space:nowrap}
.admin-bases-actions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
}
.admin-base-row{cursor:pointer}
.admin-base-row.is-selected td{background:#fff4f8}
.route-stop-list{padding-left:18px;margin:0}
.route-stop-item{margin:8px 0}
.route-stop-item-inner{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}
.route-stop-copy{flex:1 1 auto;min-width:0}
.route-stop-title{font-weight:600}
.route-stop-address{font-size:12px}
.route-stop-remove{white-space:nowrap;flex:0 0 auto}
@media (max-width:900px){
  .admin-bases-actions .btn,
  .route-map-toolbar .btn,
  .route-picker-form .btn{
    width:auto !important;
    min-width:0;
    padding:8px 10px;
    font-size:13px;
  }
  .route-picker-form{align-items:stretch}
  .route-picker-form select{min-width:0;flex:1 1 180px}
}
@media (max-width:768px){
  .admin-orders-table .admin-order-status-select,
  .admin-orders-table .admin-order-status-btn{
    min-width:176px;
    width:176px;
    font-size:14px;
  }
  .route-map-popup-btn{
    width:auto !important;
    min-width:0 !important;
    max-width:100%;
  }
  .route-stop-item-inner{
    flex-direction:column;
    align-items:stretch;
  }
  .route-stop-remove{
    align-self:flex-start;
    margin-top:6px;
  }
  .admin-bases-actions .btn{
    flex:0 0 auto;
  }
}


/* Routes map popup + order action sizing — v1.82.3 */
.admin-orders-table .admin-order-status-btn span{flex:0 0 auto;}
.admin-orders-table .admin-order-status-btn,
.admin-orders-table .admin-order-status-select,
.admin-orders-table .admin-order-status-select option{word-break:keep-all;}
.gm-style .route-map-popup-btn{font-size:14px;line-height:1.15;}
@media (max-width:768px){
  .gm-style .route-map-popup-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 10px !important;font-size:13px;line-height:1.1;}
}


/* Header + language dropdown + admin sizing — v1.82.5 */
.badge-version{font-size:11px;padding:4px 9px;white-space:nowrap}
.nav-tools{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.lang-menu{position:relative}
.lang-menu summary{list-style:none}
.lang-menu summary::-webkit-details-marker{display:none}
.lang-menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;border:1px solid #f3d3dc;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,.05);cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}
.lang-menu-toggle:hover{background:#fff3f7;border-color:#e8a9bf;transform:translateY(-1px)}
.lang-menu[open] .lang-menu-toggle{background:#fff3f7;border-color:#d98eab}
.lang-combo-flag{width:24px;height:18px;display:block;border-radius:5px;box-shadow:0 0 0 1px rgba(0,0,0,.14)}
.lang-menu-list{position:absolute;top:calc(100% + 8px);right:0;display:grid;gap:6px;min-width:94px;padding:8px;border-radius:14px;background:#fff;border:1px solid #f3d3dc;box-shadow:0 14px 28px rgba(0,0,0,.10);z-index:2400}
.lang-option{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;color:inherit;white-space:nowrap}
.lang-option:hover,.lang-option.active{background:#fff3f7}
.lang-option .flag-img{width:22px;height:16px;border-radius:3px;object-fit:cover;box-shadow:0 0 0 1px rgba(0,0,0,.12)}
@media (max-width:768px){
  .nav-tools{gap:8px}
  .badge-version{font-size:10px;padding:3px 7px}
  .lang-menu-toggle{width:36px;height:36px;border-radius:10px}
  .lang-combo-flag{width:20px;height:14px;border-radius:4px}
  .lang-menu-list{min-width:84px;padding:7px}
  .lang-option{padding:7px 8px;font-size:13px}
  .lang-option .flag-img{width:20px;height:14px}
}

.admin-orders-table .admin-order-status-select,
.admin-orders-table .admin-order-status-btn,
.admin-orders-table td:nth-child(7),
.admin-orders-table td:nth-child(8){white-space:nowrap !important}
.admin-orders-table .admin-order-status-select,
.admin-orders-table .admin-order-status-btn{min-width:208px !important;width:208px !important}
.admin-orders-table .admin-order-status-btn{display:inline-flex !important;align-items:center;justify-content:center;padding:10px 14px;font-size:14px}
.admin-orders-wrap{overflow:auto}
@media (max-width:768px){
  .admin-orders-table .admin-order-status-select,
  .admin-orders-table .admin-order-status-btn{min-width:194px !important;width:194px !important;font-size:13px}
}

.admin-bases-actions .btn{white-space:nowrap}
@media (min-width:901px){
  .admin-bases-actions .btn{min-width:96px;justify-content:center}
}
@media (max-width:900px){
  .admin-bases-actions .btn{padding:7px 9px;font-size:12px;min-height:34px}
}


/* Header ordering refinement — v1.82.5 */
.menu{order:2;flex:1 1 auto;justify-content:center;margin-left:0}
.nav-tools{order:3;margin-left:auto}
.menu-toggle{order:4}
@media (max-width:900px){
  .menu{order:4;flex:0 0 auto;justify-content:flex-start}
  .nav-tools{order:2;margin-left:auto}
  .menu-toggle{order:3}
}

/* v1.89.3 — cabeçalho compacto e logótipo reduzido */
.nav{position:relative;gap:12px;padding:8px 0;align-items:center;min-height:0;}
.brand{gap:12px;}
.container.nav .brand-logo{width:96px;height:96px;border-radius:20px;background-size:cover;box-shadow:0 8px 22px rgba(0,0,0,.10);}
.brand-copy h1{font-size:1.35rem;line-height:1.05;}
.nav-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:0;}
.nav-user .hello{display:block;max-width:320px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hello-mobile{display:none;color:var(--muted);font-size:11px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;}
.menu-toggle{display:inline-flex !important;align-items:center;justify-content:center;}
#mobileMenu.menu{
  position:fixed;
  top:0;
  right:0;
  left:auto;
  height:100dvh;
  width:min(340px,92vw);
  background:#fff;
  z-index:2500;
  padding:14px 14px calc(96px + env(safe-area-inset-bottom));
  border-left:1px solid rgba(0,0,0,.06);
  box-shadow:0 18px 48px rgba(0,0,0,.18);
  transform:translateX(110%);
  transition:transform .22s ease;
  display:flex !important;
  flex-direction:column;
  align-items:stretch;
  gap:10px;
  overflow:auto;
  scroll-padding-bottom:calc(96px + env(safe-area-inset-bottom));
  overscroll-behavior:contain;
  margin-left:0 !important;
}
#mobileMenu.menu.open{transform:translateX(0);}
#mobileMenu .menu-links{display:flex;flex-direction:column;gap:6px;align-items:stretch;}
#mobileMenu .menu-links a{width:100%;display:flex;align-items:center;justify-content:flex-start;white-space:nowrap;padding:9px 12px;font-size:14px;line-height:1.2;border-radius:12px;}
.menu-close{display:inline-flex;}
.lang-menu-toggle{width:40px;height:40px;border-radius:11px;}
.lang-combo-flag{width:22px;height:16px;border-radius:4px;}
.lang-option .flag-img{width:20px;height:14px;border-radius:2px;object-fit:cover;}
.contact-brand-icon{width:110px;height:110px;border-radius:28px;background:#fff url('../../site_media.php?key=img%2Flogo.png') center/cover no-repeat;box-shadow:var(--shadow);border:1px solid rgba(0,0,0,.06);margin:0 0 14px;}
.admin-base-danger{background:#fff1f2 !important;color:#9f1239 !important;}
.client-form-error{margin-bottom:12px;}
@media (max-width:900px){
  .nav{gap:10px;padding:7px 0;}
  .brand{gap:10px;}
  .container.nav .brand-logo{width:78px;height:78px;border-radius:17px;}
  .brand-copy h1{font-size:1.15rem;}
}
@media (max-width:640px){
  .nav{gap:8px;padding:6px 0;}
  .brand{flex:1 1 auto;align-items:center;gap:9px;}
  .container.nav .brand-logo{width:60px;height:60px;border-radius:14px;}
  .brand-copy h1{font-size:1rem;}
  .nav-tools{align-items:flex-end;gap:6px;}
  .nav-meta{gap:3px;max-width:120px;}
  .nav-user .hello{display:none;}
  .hello-mobile{display:block;}
  .badge-version{font-size:10px;padding:3px 6px;}
  .lang-menu-toggle{width:32px;height:32px;border-radius:9px;}
  .lang-combo-flag{width:17px;height:12px;}
  .lang-option .flag-img{width:18px;height:13px;}
}


/* v1.89.4 — destaque Portier na página inicial */
.portier-home-card{
  display:grid;
  grid-template-columns:minmax(280px,1.05fr) minmax(300px,.95fr);
  gap:28px;
  align-items:center;
  padding:0;
  overflow:hidden;
}
.portier-home-media{
  min-height:320px;
  height:100%;
  background:#fff;
  border-right:1px solid #f3d3dc;
}
.portier-home-media img{
  width:100%;
  height:100%;
  min-height:320px;
  display:block;
  object-fit:cover;
  background:#fff;
}
.portier-home-content{padding:30px 32px 30px 4px;}
.portier-home-content h3{margin:0 0 8px;}
.portier-home-content .lead{margin:0;}
.portier-home-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;}
.portier-home-account-note{margin:14px 0 0;color:var(--muted);}
.portier-home-account-note a{font-weight:700;text-decoration:underline;text-underline-offset:3px;}
@media (max-width:820px){
  .portier-home-card{grid-template-columns:1fr;gap:0;}
  .portier-home-media{min-height:230px;border-right:0;border-bottom:1px solid #f3d3dc;}
  .portier-home-media img{min-height:230px;max-height:360px;}
  .portier-home-content{padding:22px;}
}
@media (max-width:520px){
  .portier-home-media,.portier-home-media img{min-height:190px;}
  .portier-home-actions{display:grid;grid-template-columns:1fr;}
  .portier-home-actions .btn{width:100%;justify-content:center;}
}

/* Seletor dinâmico de idiomas e bandeiras representativas. */
.lang-flag-emoji{display:inline-flex!important;align-items:center;justify-content:center;width:auto!important;height:auto!important;min-width:24px;box-shadow:none!important;border-radius:0!important;font-size:24px;line-height:1}
.lang-menu-list{min-width:190px;max-height:min(68vh,520px);overflow:auto}
.lang-option .flag-emoji{font-size:24px;line-height:1;flex:0 0 28px;text-align:center}
.lang-option-copy{display:flex;flex-direction:column;min-width:0;line-height:1.12}
.lang-option-copy strong{font-size:12px;letter-spacing:.04em}
.lang-option-copy small{max-width:145px;overflow:hidden;text-overflow:ellipsis;font-size:11px;color:#64748b}

/* v2 — seletor de idioma com bandeira e nome lado a lado */
.lang-menu-toggle{width:auto;min-width:42px;padding:0 10px;gap:7px}
.lang-current-name{display:inline-block;max-width:112px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:750;color:#4b2334}
.lang-menu-list{min-width:230px}
.lang-option-copy strong{font-size:13px;letter-spacing:0;text-transform:none}
.lang-option-copy small{max-width:180px}
@media(max-width:700px){.lang-menu-toggle{padding:0 7px}.lang-current-name{display:none}.lang-menu-list{min-width:210px}}


/* Ver/ocultar password — aplicado globalmente a todos os campos password */
.password-field-wrap{
  position:relative;
  display:flex;
  align-items:center;
  width:100%;
  gap:8px;
}
.password-field-wrap > input{
  flex:1 1 auto;
  min-width:0;
  padding-right:42px!important;
}
.input.password-field-wrap > input{
  padding-right:0!important;
}
.password-visibility-toggle{
  flex:0 0 40px;
  width:40px;
  min-width:40px!important;
  height:40px;
  min-height:40px!important;
  padding:8px!important;
  border:0;
  border-radius:10px;
  background:transparent;
  color:var(--text);
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.password-field-wrap:not(.input) .password-visibility-toggle{
  position:absolute;
  right:2px;
  top:50%;
  transform:translateY(-50%);
}
.password-visibility-toggle:hover,
.password-visibility-toggle:focus-visible{
  background:rgba(245,143,180,.18);
}
.password-visibility-toggle svg{
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
  pointer-events:none;
}
