/* CASA DA ABRUNHEIRA — V17
   Fonte única: paleta, tipografia, componentes, composição e estados.
   data-ui contém apenas tokens de composição reutilizáveis; IDs são ganchos funcionais. */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Cormorant+Garamond:wght@500;600&display=swap');
:root {
 --brand:#36584a; --brand-hover:#29483b; --brand-soft:#e2ebe1;
 --accent:#a75238; --accent-soft:#f5e5dc; --cream:#f8f5ed;
 --surface:#fffefb; --ink:#28392f; --muted:#5f6b64; --line:#d9e0d5;
 --success:#32614b; --success-soft:#e4efe5; --info:#365f74; --info-soft:#e6eff3;
 --warning:#805e1b; --warning-soft:#f7efd8; --danger:#963f3c; --danger-soft:#f9e9e5;
 --lavender:#6e5684; --lavender-soft:#eee8f5; --rose:#854d63; --rose-soft:#f5e7ed;
 --muted-soft:#edf0eb; --radius:10px; --shadow:0 7px 25px #28392f09;
 --font-body:'DM Sans',system-ui,sans-serif; --font-title:'Cormorant Garamond',Georgia,serif;
 --primary-green:var(--brand); --background-green:var(--cream); --text-color:var(--ink);
 --light-grey:var(--line); --dark-grey:var(--muted); --white:var(--surface);
 --success-green:var(--success); --success-green-hover:var(--brand-hover);
 --warning-orange:var(--warning); --error-red:var(--danger); --neutral-light:var(--cream);
}
* { box-sizing:border-box; }
html { color-scheme:light; scroll-behavior:smooth; }
body { margin:0; font:400 14px/1.6 var(--font-body); color:var(--ink); background:var(--cream); }
::selection { background:var(--brand-soft); }
a { color:var(--brand); text-underline-offset:3px; }
a:hover { color:var(--accent); }
p { margin:0 0 1rem; }
p:last-child { margin-bottom:0; }
small { font-size:.8rem; line-height:1.45; color:var(--muted); }
strong,b { font-weight:600; }
h1,h2,h3,h4 { margin:0 0 1rem; color:var(--brand); line-height:1.2; font-weight:600; }
h1 { font:600 clamp(1.9rem,3vw,2.5rem)/1.15 var(--font-title); }
h2,.section-title { font:600 clamp(1.5rem,2.2vw,1.9rem)/1.2 var(--font-title); }
h3 { font-size:1rem; } h4 { font-size:.9rem; }
.section-title { margin-bottom:1.25rem; }
hr { border:0; border-top:1px solid var(--line); margin:1.25rem 0; }
ul,ol { padding-left:1.25rem; } li+li { margin-top:.35rem; }
img { max-width:100%; height:auto; } iframe { max-width:100%; border:0; }
:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button,input,select,textarea { font:inherit; }
button,[type=submit],[type=button],.button-style,.btn,.btn-privado,.btn-maps,.submit-button-style,.select-tariff-button,.botao-finalizar-pedido {
 display:inline-flex; align-items:center; justify-content:center; gap:.4rem;
 min-height:38px; padding:.55rem .95rem; border:1px solid transparent; border-radius:7px;
 background:var(--brand); color:var(--surface); font-size:.8rem; line-height:1.35;
 font-family:var(--font-body); font-weight:600; text-align:center; text-decoration:none;
 cursor:pointer; white-space:normal; transition:background .15s,border-color .15s,box-shadow .15s;
}
button:hover,.button-style:hover,.btn:hover,.btn-privado:hover,.btn-maps:hover { background:var(--brand-hover); color:var(--surface); box-shadow:0 3px 10px #28392f15; }
button:disabled,[aria-disabled=true] { opacity:.6; cursor:not-allowed; box-shadow:none; }
button:disabled:hover { transform:none; }
button small { color:inherit; }
.btn-secondary,.btn-cancel,.btn-cancelar,.button-outline { background:var(--surface); color:var(--brand); border-color:var(--line); }
.btn-rejeitar,.btn-delete,.btn-danger,.btn-remover { background:var(--danger); }
.button-center { display:flex; margin-inline:auto; }
.button-small,.btn-acao,.btn-edit,.btn-aprovar,.btn-rejeitar { min-height:38px; padding:.55rem .95rem; font-size:.8rem; }
button .material-symbols-outlined { font-size:1.15rem; }
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]):not([type=button]),select,textarea,.input-style {
 width:100%; min-height:38px; padding:.55rem .7rem; color:var(--ink); background:var(--surface);
 border:1px solid var(--line); border-radius:7px; font-size:.85rem; line-height:1.4;
}
input:focus,select:focus,textarea:focus { border-color:var(--brand); }
input:disabled,select:disabled,textarea:disabled,input[readonly] { background:var(--muted-soft); color:var(--muted); }
input[type=checkbox],input[type=radio] { width:16px; height:16px; margin:0 .35rem 0 0; vertical-align:middle; accent-color:var(--brand); }
input[type=color] { padding:.2rem; }
textarea { min-height:96px; resize:vertical; }
label,.form-label { font-size:.8rem; font-weight:500; color:var(--ink); }
label>input:not([type=checkbox]):not([type=radio]),label>select,label>textarea { display:block; margin-top:.35rem; }
.form-label { display:block; margin-bottom:.35rem; }
.form-group { margin-bottom:1rem; min-width:0; }
.form-row,.rh-row { display:flex; flex-wrap:wrap; gap:1rem; align-items:end; margin-bottom:1rem; }
.form-row>.form-group { flex:1 1 180px; margin:0; }
.rh-row { display:block; } .rh-row>label { display:block; margin-bottom:.35rem; }
fieldset { min-width:0; border:1px solid var(--line); border-radius:var(--radius); padding:1rem; margin:0 0 1rem; }
legend { padding:0 .4rem; color:var(--brand); font-weight:600; font-size:.85rem; }
progress { max-width:100%; height:8px; accent-color:var(--brand); }
#main-app-container { min-height:50vh; padding:1.5rem 0 2rem; }
.container,.container-rh { width:calc(100% - 3rem); max-width:1180px; margin:1.5rem auto; }
.workspace,.container-rh { max-width:1600px; }
.section,.card,.info-box,.room-card,.site-editor,.multibanco-details {
 background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:1.5rem; margin-bottom:1.25rem; box-shadow:var(--shadow);
}
.admin-header,.finance-header,.finance-filters-bar,.table-filters { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:1rem; margin-bottom:1.25rem; }
.admin-header h1 { margin:0; }
.table-filters,.finance-filters-bar { padding:1rem; background:var(--brand-soft); border:1px solid var(--line); border-radius:var(--radius); }
.filter-group { flex:1 1 160px; min-width:0; }
.filter-group label { display:block; margin-bottom:.35rem; }
/* Um único componente de abas, tanto na gestão como nos serviços ao hóspede. */
.tabs-nav,.sub-tabs-nav,.tabs-rh,.nav-pedidos-container,.nav-pedidos-sub,#menuAbas,#subTabsNav {
 display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:.4rem; padding:.45rem;
 background:var(--brand-soft); border:1px solid var(--line); border-radius:var(--radius); margin:0 0 1.25rem; align-items:stretch;
}
:is(.tabs-nav,.sub-tabs-nav,.tabs-rh,.nav-pedidos-container,.nav-pedidos-sub,#menuAbas,#subTabsNav)[data-ui-display] { display:grid; }
:where(.tabs-nav,.sub-tabs-nav,.tabs-rh,.nav-pedidos-container,.nav-pedidos-sub,#menuAbas,#subTabsNav)>button,
.tab-button,.sub-tab-button,.tab-link,.aba-pedido {
 width:100%; min-height:44px; height:100%; margin:0; padding:.6rem .65rem; font-size:.78rem; font-weight:500;
 background:transparent; color:var(--brand); border:1px solid transparent; border-radius:6px; line-height:1.3;
}
:is(.tab-button,.sub-tab-button,.tab-link,.aba-pedido):hover { background:var(--surface); color:var(--brand); }
:is(.tab-button,.sub-tab-button,.tab-link,.aba-pedido).active,.aba-pedido-ativa {
 background:var(--brand); color:var(--surface); font-weight:600; border-color:var(--brand);
}
.tab-content,.sub-tab-content { display:none; min-width:0; }
.tab-content.active,.sub-tab-content.active { display:block; }
#lista-funcionarios-rh { display:grid; gap:.45rem; max-height:70vh; overflow-y:auto; }
.user-item { display:block; width:100%; text-align:left; padding:.8rem; background:var(--cream); border:1px solid var(--line); border-radius:7px; cursor:pointer; min-height:64px; }
.user-item strong { font:600 .85rem/1.4 var(--font-body); color:var(--ink); }
.user-item small { font-size:.75rem; }
.user-item:hover { background:var(--brand-soft); }
.user-item-active { background:var(--brand-soft); border-color:var(--brand); box-shadow:inset 3px 0 var(--brand); }
#nome-funcionario-titulo { font:600 1.65rem/1.2 var(--font-title); margin-bottom:.5rem; }
/* Todas as tabelas, incluindo as geradas pelo JavaScript. */
table { width:100%; border-collapse:separate; border-spacing:0; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); font-size:.8rem; line-height:1.45; font-variant-numeric:tabular-nums; }
th,td { text-align:left; padding:.75rem .8rem; border-bottom:1px solid var(--line); vertical-align:middle; }
th { color:var(--brand); background:var(--brand-soft); font-size:.75rem; font-weight:600; }
tr:last-child>td { border-bottom:0; }
tbody tr:nth-child(even) { background:var(--cream); }
tbody tr:hover { background:var(--brand-soft); }
td small { font-size:.74rem; } td button { margin:.15rem; }
.table-scroll,.calendar-scroll { overflow:auto; max-width:100%; border-radius:var(--radius); margin-bottom:1rem; }
.table-scroll>table { min-width:620px; }
.tabela-reservas { min-width:980px; table-layout:fixed; }
.tabela-reservas tbody th,.tabela-reservas thead th:first-child { position:sticky; left:0; z-index:2; width:130px; }
.evento-reserva { min-height:70px; padding:.45rem; overflow:hidden; font-size:.72rem; }
[data-info][aria-disabled=true] { background:var(--muted-soft); color:var(--muted); opacity:1; }
.staff-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:.4rem; min-width:560px; }
.dia-box-staff,[data-ui~="cell-height"] { border-radius:7px; padding:.5rem; }
#calendario-rh-grid,#calendario-staff,#corpo-calendario-rh { overflow:auto; }
.finance-summary-grid,.stats-grid { display:flex; gap:1rem; flex-wrap:wrap; }
.summary-card,.stat-card,.card-kpi { flex:1 1 150px; border:1px solid var(--line); border-top:3px solid var(--brand); border-radius:var(--radius); background:var(--surface); padding:1rem; box-shadow:var(--shadow); }
.summary-card:nth-child(3n),.stat-card:nth-child(3n),.card-kpi:nth-child(3n) { border-top-color:var(--accent); }
.summary-card h3,.stat-number,.card-kpi strong { display:block; font:600 1.6rem/1.2 var(--font-title); margin:.5rem 0 0; }
.summary-card small,.card-kpi span { color:var(--muted); font-size:.875rem; }
.chart-container { position:relative; min-height:300px; padding:1rem; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
canvas { max-width:100%; }
/* Avisos, erros, validação e estados vazios. */
.status-message,.warning-message,.direct-booking-alert,.alert,.notification,.notice,[role=alert] {
 border:1px solid var(--line); border-left:3px solid var(--info); border-radius:8px; background:var(--info-soft); color:var(--info); padding:.85rem 1rem; margin:1rem 0; font-size:.85rem;
}
.status-message:empty,[role=status]:empty { display:none; }
.status-message.error,.alert-danger { color:var(--danger); background:var(--danger-soft); border-left-color:var(--danger); }
.status-message.success,.alert-success { color:var(--success); background:var(--success-soft); border-left-color:var(--success); }
.warning-message,.alert-warning { color:var(--warning); background:var(--warning-soft); border-left-color:var(--warning); }
.badge,.badge-ferias,.badge-falta,.promo-code-pill { display:inline-flex; gap:.3rem; border-radius:5px; padding:.25rem .5rem; font-size:.73rem; font-weight:600; background:var(--brand-soft); color:var(--brand); }
.badge-falta { background:var(--danger-soft); color:var(--danger); }
/* Modais existentes e confirmações partilham a mesma superfície. */
.custom-modal,.modal,#modal-overlay-ficha { display:none; position:fixed; inset:0; z-index:1000; padding:1.25rem; background:#20362bbb; align-items:center; justify-content:center; overflow:auto; }
.custom-modal.active { display:flex; }
.modal-box,.modal-content,.modal-conteudo { width:100%; max-width:560px; max-height:88vh; overflow:auto; margin:auto; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:12px; padding:1.5rem; box-shadow:0 24px 80px #14231c44; }
[data-ui~="fixed"][data-ui~="center-dialog"] { z-index:1001; width:min(520px,calc(100vw - 2rem)); max-height:88vh; overflow:auto; background:var(--surface); border-radius:12px; padding:1.5rem; box-shadow:0 24px 80px #14231c44; }
.custom-modal[data-ui-display=block],.modal[data-ui-display=block],#modal-overlay-ficha[data-ui-display=flex],#modal-overlay-ficha[data-ui-display=block] { display:flex; }
body:has(.custom-modal[data-ui-display=flex],.custom-modal[data-ui-display=block],dialog[open]) { overflow:hidden; }
#campos-ativo label,#modal-ativar-ativo label { display:block; margin:.8rem 0; }
.ui-dialog { width:min(480px,calc(100vw - 2rem)); border:1px solid var(--line); border-radius:12px; padding:1.5rem; background:var(--surface); color:var(--ink); box-shadow:0 24px 80px #14231c44; }
.ui-dialog::backdrop { background:#20362bbb; }
.ui-dialog p { white-space:pre-wrap; }
.ui-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:.5rem; margin-top:1.25rem; }
.ui-notices { position:fixed; right:1rem; bottom:1rem; z-index:3000; width:min(420px,calc(100vw - 2rem)); display:grid; gap:.6rem; }
.ui-notice { padding:1rem; border:1px solid var(--line); border-left:4px solid var(--brand); border-radius:10px; background:var(--surface); box-shadow:0 8px 30px #20362b22; display:flex; gap:.7rem; align-items:start; }
.ui-notice p { flex:1; margin:0; white-space:pre-wrap; }
.ui-notice button { background:transparent; color:var(--brand); padding:.2rem .5rem; min-height:30px; }
.spinner { width:32px; height:32px; border:3px solid var(--line); border-top-color:var(--accent); border-radius:50%; animation:spin 1s linear infinite; margin:1rem auto; }
@keyframes spin { to { transform:rotate(360deg); } }
/* Cabeçalho, navegação e rodapé. */
.header-main { background:var(--brand); color:var(--surface); position:relative; }
.header-content { min-height:110px; max-width:1600px; width:calc(100% - 3rem); padding:1rem 0 1rem 125px; margin:auto; display:flex; align-items:center; gap:1rem; flex-wrap:wrap; }
#floating-logo { position:absolute; top:10px; left:max(1.5rem,calc((100vw - 1600px)/2)); height:90px; width:105px; object-fit:contain; z-index:5; }
#floating-header-bg,#logo-placeholder { display:none; }
.logo-area { display:none; }
.main-menu { display:flex; flex:1; justify-content:center; flex-wrap:wrap; gap:.45rem 1rem; }
.main-menu a { color:var(--surface); text-decoration:none; font-size:.875rem; font-weight:500; padding:.35rem 0; border-bottom:1px solid transparent; }
.main-menu a:hover { border-bottom-color:#e3bd9f; color:#f8e5d6; }
.language-menu { display:flex; gap:.5rem; }
.language-menu a { color:var(--surface); font-size:.8rem; text-decoration:none; padding:.25rem; }
.language-menu .active-lang { border-bottom:2px solid #e3bd9f; }
.session-controls { display:flex; align-items:center; justify-content:center; gap:.5rem; flex-wrap:wrap; }
.session-controls form { margin:0; }
.session-controls small { color:inherit; max-width:160px; overflow-wrap:anywhere; }
.header-content .session-controls { font-size:.85rem; }
.header-content .session-controls :is(button,.btn-privado) { background:var(--surface); color:var(--brand); min-height:34px; font-size:.82rem; padding:.45rem .65rem; }
.header-hero { min-height:430px; background:linear-gradient(#14281d66,#14281d55),url('/images/12.jpg') center/cover; }
.header-hero .header-content { background:#263e31a8; width:100%; max-width:none; padding-inline:145px 1.5rem; }
.hero-body { text-align:center; padding:4rem 1.5rem; }
.hero-body h1 { font-size:clamp(2.8rem,5vw,4rem); color:var(--surface); }
.hero-body p { font-size:.85rem; letter-spacing:.2em; text-transform:uppercase; }
footer { background:var(--brand-soft); color:var(--ink); border-top:1px solid var(--line); padding:2rem 0; margin-top:2rem; }
.footer-top { display:flex; justify-content:space-between; gap:2rem; }
.footer-col p { font-size:.94rem; margin:.3rem 0; }
.footer-col.right { text-align:right; }
.footer-bottom { margin-top:1.5rem; padding-top:1rem; border-top:1px solid #36584a22; font-size:.85rem; color:var(--muted); text-align:center; }
.btn-privado-container { margin-top:1rem; text-align:center; }
/* Conteúdos públicos: a mesma família de cartões e grelhas. */
.main-hero-section,.service-row,.promo-item { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2rem; align-items:center; margin:2rem auto; }
.main-hero-section { max-width:1180px; padding:0 1.5rem; }
.welcome-title-main { font:600 2.4rem/1.1 var(--font-title); color:var(--brand); }
.welcome-content p { font-size:.92rem; }
#image-gallery-area,#css-carousel-container { overflow:hidden; border-radius:12px; }
#css-carousel-container { height:360px; }
.carousel-track { display:flex; height:100%; width:400%; animation:slide 24s infinite; }
.carousel-track img { width:25%; height:100%; flex-shrink:0; object-fit:cover; }
@keyframes slide { 0%,20% {transform:translateX(0)} 25%,45% {transform:translateX(-25%)} 50%,70% {transform:translateX(-50%)} 75%,95% {transform:translateX(-75%)} 100% {transform:translateX(0)} }
#motor-reservas-section { margin-top:-2rem; position:relative; z-index:2; }
#searchSection { align-items:end; }
#processingMessage { display:none; text-align:center; }
#easypayCheckoutContainer { min-height:350px; }
#easypay-checkout { width:100%; }
.room-card { margin-block:1rem; }
.tariff-options { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:.75rem; }
.tariff-option { border:1px solid var(--line); border-radius:8px; padding:1rem; cursor:pointer; }
.tariff-option.selected { background:var(--brand-soft); border-color:var(--brand); }
.tariff-price { font-weight:600; color:var(--accent); }
.assistant-dialogue,.container-suporte-novo { max-width:1100px; margin:2rem auto; padding:1.5rem; }
.assistant-header { display:flex; align-items:center; justify-content:center; gap:1rem; margin:1rem 0 2rem; }
.assistant-avatar { width:64px; height:64px; border-radius:50%; display:grid; place-items:center; background:var(--brand-soft); color:var(--brand); }
#assistantText { margin:0; } #assistantText span { font:400 .95rem var(--font-body); color:var(--muted); }
.options-grid-recepcao,.services-grid-new,.grelha-servicos,.additional-services,#opcoes-container { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:1rem; }
.recepcao-card,.option-button-recepcao,.s-item,.service-box,.product-card-premium { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:1.25rem; color:var(--ink); text-align:left; box-shadow:var(--shadow); }
.recepcao-card,.option-button-recepcao { cursor:pointer; }
.recepcao-card:hover,.option-button-recepcao:hover { background:var(--brand-soft); color:var(--ink); border-color:var(--brand); }
.material-symbols-outlined { color:var(--accent); font-size:1.8rem; }
.recepcao-card .material-symbols-outlined,.s-item .material-symbols-outlined { display:block; margin-bottom:.75rem; }
.service-image img,.promo-img-wrapper img { width:100%; height:320px; object-fit:cover; border-radius:12px; }
.service-reverse .service-image,.promo-item.alternate .promo-img-wrapper { order:2; }
.service-info,.promo-details { padding:1rem; }
.promo-category { font-size:.75rem; letter-spacing:.08em; color:var(--accent); text-transform:uppercase; }
.promo-price-tag { font:600 1.6rem var(--font-title); color:var(--accent); }
.promo-price-tag span { font:.8rem var(--font-body); }
.promo-footer { display:flex; gap:1rem; align-items:center; flex-wrap:wrap; }
.promo-divider { border-color:var(--line); }
.promo-intro { max-width:800px; margin:0 auto 2rem; }
.auto-scroll-gallery,.scroll-horizontal-container { overflow:auto; max-width:100%; padding:1rem 0; }
.scroll-track { display:flex; gap:1rem; width:max-content; }
.scroll-item-with-caption { flex:0 0 320px; width:320px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.scroll-item-with-caption img { width:100%; height:210px; object-fit:cover; }
.scroll-caption { padding:1rem; display:grid; gap:.5rem; }
.scroll-caption strong { font:600 1.3rem var(--font-title); color:var(--brand); }
.scroll-caption span { font-size:.82rem; }
.scroll-horizontal-container { display:flex; gap:1rem; }
.scroll-horizontal-container .info-box { flex:0 0 280px; }
.product-card-premium { padding:0; overflow:hidden; }
.img-produto-wrapper img { width:100%; height:180px; object-fit:cover; }
.product-desc-premium,.product-footer-premium { padding:1rem; }
.product-title-premium { font-size:1rem; }
.product-price-premium { color:var(--accent); font-weight:600; }
.product-controls-premium { display:flex; align-items:center; gap:.5rem; }
.product-qty-premium { max-width:80px; }
.menu-opcoes-cartao { display:grid; gap:.75rem; margin-top:1rem; }
.menu-opcoes-grupo { display:grid; gap:.5rem; }
.menu-opcao-label { display:flex; align-items:center; gap:.5rem; }
.menu-opcao-label input[type=number],.menu-opcoes-grupo input[type=number] { max-width:80px; }
.barra-carrinho-premium { position:sticky; bottom:0; z-index:20; background:var(--surface); border-top:1px solid var(--line); padding:1rem; box-shadow:0 -4px 20px #20362b0d; }
.carrinho-content { display:flex; justify-content:space-between; align-items:center; gap:1rem; max-width:1180px; margin:auto; }
.valor-total { color:var(--accent); font-weight:600; margin-left:.5rem; }
.map-section { padding:2rem 0; }
.map-wrapper { border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.map-responsive { position:relative; padding-bottom:45%; }
.map-responsive iframe { position:absolute; inset:0; width:100%; height:100%; }
.map-actions { text-align:center; margin-top:1rem; }
.site-editor { box-shadow:none; }
.site-editor label { display:block; margin:.7rem 0; }
.site-actions { display:flex; gap:.5rem; flex-wrap:wrap; }
.export-page { width:800px; min-width:800px; max-width:800px; background:var(--surface); padding:10px; margin:0; }

[data-ui-bg="brand"] { --ui-ink:var(--brand); background:var(--brand-soft); color:var(--brand); }
[data-ui-color="brand"] { color:var(--brand); }

[data-ui-bg="accent"] { --ui-ink:var(--accent); background:var(--accent-soft); color:var(--accent); }
[data-ui-color="accent"] { color:var(--accent); }

[data-ui-bg="success"] { --ui-ink:var(--success); background:var(--success-soft); color:var(--success); }
[data-ui-color="success"] { color:var(--success); }

[data-ui-bg="info"] { --ui-ink:var(--info); background:var(--info-soft); color:var(--info); }
[data-ui-color="info"] { color:var(--info); }

[data-ui-bg="warning"] { --ui-ink:var(--warning); background:var(--warning-soft); color:var(--warning); }
[data-ui-color="warning"] { color:var(--warning); }

[data-ui-bg="danger"] { --ui-ink:var(--danger); background:var(--danger-soft); color:var(--danger); }
[data-ui-color="danger"] { color:var(--danger); }

[data-ui-bg="lavender"] { --ui-ink:var(--lavender); background:var(--lavender-soft); color:var(--lavender); }
[data-ui-color="lavender"] { color:var(--lavender); }

[data-ui-bg="rose"] { --ui-ink:var(--rose); background:var(--rose-soft); color:var(--rose); }
[data-ui-color="rose"] { color:var(--rose); }

[data-ui-bg="muted"] { --ui-ink:var(--muted); background:var(--muted-soft); color:var(--muted); }
[data-ui-color="muted"] { color:var(--muted); }

[data-ui-bg=surface] { background:var(--surface); color:var(--ink); }
[data-ui-bg=ink] { background:var(--brand); color:var(--surface); }
[data-ui-bg=clear] { background:transparent; }
[data-ui-bg=overlay] { background:#20362bbb; }
[data-ui-color=ink] { color:var(--ink); }
[data-ui-color=surface] { color:inherit; }
button[data-ui-bg]:not([data-ui-bg=surface]):not([data-ui-bg=clear]):not([data-ui-bg=muted]),a.button-style[data-ui-bg] { background:var(--ui-ink,var(--brand)); color:var(--surface); }
[data-ui-opacity="0.7"],[data-ui-opacity="0.6"] { opacity:.7; }
[data-ui-cursor="not-allowed"] { cursor:not-allowed; }
[data-ui-align=center] { text-align:center; }
[data-ui-padding=compact] { padding:.6rem .5rem; }
[data-ui-margin-top=section] { margin-top:1.25rem; }
[data-ui~="accent-edge"] { border-left:3px solid var(--accent); }
[data-ui~="align-center"] { text-align:center; }
[data-ui~="align-left"] { text-align:left; }
[data-ui~="align-right"] { text-align:right; }
[data-ui~="auto-width"] { width:auto; }
[data-ui~="border-bottom"] { border-bottom:1px solid var(--line); }
[data-ui~="border-left"] { border-left:1px solid var(--line); }
[data-ui~="border-right"] { border-right:1px solid var(--line); }
[data-ui~="border-top"] { border-top:1px solid var(--line); }
[data-ui~="borderless"] { border:0; }
[data-ui~="cell-height"] { min-height:90px; }
[data-ui~="center-dialog"] { transform:translate(-50%,-50%); }
[data-ui~="centered"] { margin-inline:auto; }
[data-ui~="chart-height"] { height:300px;min-height:250px; }
[data-ui~="control-height"] { min-height:38px; }
[data-ui~="cursor-pointer"] { cursor:pointer; }
[data-ui~="dot"] { width:8px;height:8px;border-radius:50%; }
[data-ui~="fixed"] { position:fixed; }
[data-ui~="float-right"] { float:right; }
[data-ui~="flow-column"] { flex-direction:column; }
[data-ui~="full"] { width:100%;max-width:100%; }
[data-ui~="gap-lg"] { gap:1.5rem; }
[data-ui~="gap-md"] { gap:1rem; }
[data-ui~="gap-sm"] { gap:.5rem; }
[data-ui~="gap-xl"] { gap:2rem; }
[data-ui~="gap-xs"] { gap:.25rem; }
[data-ui~="grid-auto"] { grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr)); }
[data-ui~="grid-calendar"] { grid-template-columns:repeat(7,minmax(0,1fr));min-width:560px; }
[data-ui~="grid-four"] { grid-template-columns:repeat(4,minmax(0,1fr)); }
[data-ui~="grid-sidebar"] { grid-template-columns:minmax(200px,260px) minmax(0,1fr); }
[data-ui~="grid-three"] { grid-template-columns:repeat(3,minmax(0,1fr)); }
[data-ui~="grid-two"] { grid-template-columns:repeat(2,minmax(0,1fr)); }
[data-ui~="grid-wide"] { grid-template-columns:minmax(0,2fr) minmax(0,1fr); }
[data-ui~="grow"] { flex:1 1 180px;min-width:0; }
[data-ui~="height-100%"] { height:100%; }
[data-ui~="height-fit-content"] { height:fit-content; }
[data-ui~="italic"] { font-style:italic; }
[data-ui~="items-center"] { align-items:center; }
[data-ui~="items-flex-end"] { align-items:flex-end; }
[data-ui~="items-flex-start"] { align-items:flex-start; }
[data-ui~="justify-between"] { justify-content:space-between; }
[data-ui~="justify-center"] { justify-content:center; }
[data-ui~="justify-flex-end"] { justify-content:flex-end; }
[data-ui~="layer-overlay"] { z-index:1000; }
[data-ui~="layer-sticky"] { z-index:2; }
[data-ui~="left-0"] { left:0; }
[data-ui~="left-half"] { left:50%; }
[data-ui~="list-plain"] { list-style:none;padding-left:0; }
[data-ui~="m-0"] { margin:0; }
[data-ui~="m-lg"] { margin:1.5rem; }
[data-ui~="m-md"] { margin:1rem; }
[data-ui~="m-sm"] { margin:.5rem; }
[data-ui~="m-xl"] { margin:2rem; }
[data-ui~="m-xs"] { margin:.25rem; }
[data-ui~="mb-0"] { margin-bottom:0; }
[data-ui~="mb-lg"] { margin-bottom:1.5rem; }
[data-ui~="mb-md"] { margin-bottom:1rem; }
[data-ui~="mb-sm"] { margin-bottom:.5rem; }
[data-ui~="mb-xl"] { margin-bottom:2rem; }
[data-ui~="mb-xs"] { margin-bottom:.25rem; }
[data-ui~="ml-sm"] { margin-left:.5rem; }
[data-ui~="mr-sm"] { margin-right:.5rem; }
[data-ui~="mr-xs"] { margin-right:.25rem; }
[data-ui~="mt-0"] { margin-top:0; }
[data-ui~="mt-lg"] { margin-top:1.5rem; }
[data-ui~="mt-md"] { margin-top:1rem; }
[data-ui~="mt-sm"] { margin-top:.5rem; }
[data-ui~="mt-xl"] { margin-top:2rem; }
[data-ui~="mt-xs"] { margin-top:.25rem; }
[data-ui~="outlined"] { border:1px solid var(--line); }
[data-ui~="overflow-hidden"] { overflow:hidden; }
[data-ui~="overflow-x-auto"] { overflow-x:auto; }
[data-ui~="overflow-y-auto"] { overflow-y:auto; }
[data-ui~="p-0"] { padding:0; }
[data-ui~="p-lg"] { padding:1.5rem; }
[data-ui~="p-md"] { padding:1rem; }
[data-ui~="p-sm"] { padding:.5rem; }
[data-ui~="p-xl"] { padding:2rem; }
[data-ui~="p-xs"] { padding:.25rem; }
[data-ui~="pb-md"] { padding-bottom:1rem; }
[data-ui~="pb-sm"] { padding-bottom:.5rem; }
[data-ui~="pb-xs"] { padding-bottom:.25rem; }
[data-ui~="position-absolute"] { position:absolute; }
[data-ui~="position-relative"] { position:relative; }
[data-ui~="position-static"] { position:static; }
[data-ui~="position-sticky"] { position:sticky; }
[data-ui~="pt-lg"] { padding-top:1.5rem; }
[data-ui~="pt-md"] { padding-top:1rem; }
[data-ui~="reverse"] { animation-direction:reverse; }
[data-ui~="right-0"] { right:0; }
[data-ui~="scroll-panel"] { max-height:70vh;overflow-y:auto; }
[data-ui~="small"] { font-size:.78rem; }
[data-ui~="spacer"] { min-height:.5rem; }
[data-ui~="span-all"] { grid-column:1 / -1; }
[data-ui~="strong"] { font-weight:600; }
[data-ui~="subdued"] { opacity:.7; }
[data-ui~="table-fixed"] { table-layout:fixed; }
[data-ui~="top-0"] { top:0; }
[data-ui~="top-half"] { top:50%; }
[data-ui~="valign-middle"] { vertical-align:middle; }
[data-ui~="valign-top"] { vertical-align:top; }
[data-ui~="visibility-hidden"] { visibility:hidden; }
[data-ui~="white-nowrap"] { white-space:nowrap; }
[data-ui~="white-pre-line"] { white-space:pre-line; }
[data-ui~="white-pre-wrap"] { white-space:pre-wrap; }
[data-ui~="width-compact"] { width:8rem;max-width:100%; }
[data-ui~="width-dialog"] { width:100%;max-width:520px; }
[data-ui~="width-wide"] { width:100%;max-width:850px; }
[data-ui~="wrap-wrap"] { flex-wrap:wrap; }
/* Estados de apresentação consultados pelos controladores da aplicação. */
[data-ui-display=block] { display:block; }
[data-ui-display=flex] { display:flex; }
[data-ui-display=grid] { display:grid; }
[data-ui-display=inline] { display:inline; }
[data-ui-display=inline-block] { display:inline-block; }
[data-ui-display=inline-flex] { display:inline-flex; }
[hidden],[data-ui-display=none],.hidden { display:none !important; }
/* Adaptação a ecrãs pequenos e impressão. */
@media(min-width:1100px) { .tabs-nav { grid-template-columns:repeat(5,minmax(0,1fr)); } }
@media(max-width:1000px) {
 .header-content { padding-left:110px; gap:.75rem; }
 .header-content .main-menu { flex-basis:100%; }
 .header-content .session-controls { margin-left:auto; }
 .tabs-nav { grid-template-columns:repeat(3,minmax(0,1fr)); }
 [data-ui~="grid-sidebar"] { grid-template-columns:minmax(180px,220px) minmax(0,1fr); }
 [data-ui~="grid-four"] { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:700px) {
 body { font-size:14px; }
 .container,.container-rh { width:calc(100% - 1.5rem); margin:1rem auto; }
 .section,.card,.info-box { padding:1rem; }
 .header-content,.header-hero .header-content { padding:100px .8rem 1rem; width:100%; }
 #floating-logo { top:8px; left:calc(50% - 50px); height:80px; width:100px; }
 .header-content .session-controls { margin:auto; }
 .language-menu { margin:auto; }
 .main-menu { gap:.3rem .8rem; }
 .header-hero { min-height:420px; }
 .hero-body { padding:2.5rem 1rem; }
 .tabs-nav,.tabs-rh,.sub-tabs-nav,#menuAbas,#subTabsNav { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .tabs-nav>button,.tabs-rh>button { min-height:48px; }
 [data-ui~="grid-sidebar"],[data-ui~="grid-two"],[data-ui~="grid-wide"],[data-ui~="grid-three"] { grid-template-columns:minmax(0,1fr); }
 #lista-funcionarios-rh { grid-template-columns:repeat(2,minmax(0,1fr)); max-height:240px; }
 .main-hero-section,.service-row,.promo-item { grid-template-columns:1fr; gap:1rem; }
 .service-reverse .service-image,.promo-item.alternate .promo-img-wrapper { order:0; }
 .footer-top,.carrinho-content { flex-direction:column; align-items:start; }
 .footer-col.right { text-align:left; }
 .modal-box { padding:1rem; max-height:90vh; }
 .admin-header { align-items:start; }
 .admin-header h1 { font-size:1.75rem; }
 .filter-group { flex-basis:140px; }
 .chart-container { min-height:250px; }
 .table-filters[data-ui-display=flex] { flex-wrap:wrap; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
@media print { .header-main,footer,.tabs-nav,.sub-tabs-nav,.tabs-rh,button,.ui-notices { display:none !important; } body { background:white; } .container,.workspace { width:100%; max-width:none; margin:0; } table { font-size:10pt; } tr { break-inside:avoid; } }

[data-ui-display=grid] > * { min-width:0; }
[data-ui~=grid-sidebar]:has(> #coluna-conteudo-rh[data-ui-display=none])::after { content:"Selecione um funcionário para consultar a ficha, a escala e os históricos."; display:grid; place-items:center; text-align:center; padding:2rem; min-height:220px; border:1px dashed var(--line); border-radius:var(--radius); color:var(--muted); background:var(--surface); }

.auto-scroll-gallery .scroll-track { animation:gallery-scroll 90s linear infinite; }
.auto-scroll-gallery:hover .scroll-track,.auto-scroll-gallery:focus-within .scroll-track { animation-play-state:paused; }
@keyframes gallery-scroll { to { transform:translateX(calc(-50% - .5rem)); } }

/* V18: composição das páginas públicas e cores operacionais. */
.services-section-new,.map-section { width:calc(100% - 3rem); max-width:1180px; margin:2rem auto; }
.services-section-new>.section-title,.map-section .section-title,.assistant-question { text-align:center; }
.services-grid-new { grid-template-columns:repeat(4,minmax(0,1fr)); }
.s-item,.recepcao-card,.option-button-recepcao,.product-card-premium { text-align:center; }
.s-item :is(i,svg,img),.recepcao-card :is(i,svg,img) { margin-inline:auto; }
.product-controls-premium,.product-footer-premium { justify-content:center; }
.auto-scroll-gallery { overflow:hidden; }
.auto-scroll-gallery .scroll-track[data-ui~=reverse] { animation-direction:reverse; }
.room-selection { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.4rem .65rem; padding:.65rem; border:1px solid var(--line); border-radius:var(--radius); }
.room-selection label { display:flex; align-items:center; gap:.35rem; margin:0; white-space:nowrap; font-size:.8rem; }
.room-selection input { margin:0; flex-shrink:0; }
.form-group:has(>.room-selection) { flex:1 1 300px; }
.info-card.task-departures,.info-card.task-arrivals,.info-card.task-breakfast { flex:1 1 280px; min-width:0; border-radius:8px; box-shadow:0 2px 4px #0000000d; text-align:left; }
.info-card.task-departures { border-left:5px solid #d9534f; }
.info-card.task-arrivals { border-left:5px solid #5cb85c; }
.info-card:is(.task-departures,.task-arrivals,.task-breakfast) h4 { margin:0 0 .65rem; text-transform:uppercase; font-size:.9rem; }
.info-card li { gap:.4rem; flex-wrap:wrap; }
@media(max-width:900px) { .services-grid-new { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:700px) { .services-section-new,.map-section { width:calc(100% - 1.5rem); } }
@media(max-width:380px) { .services-grid-new { grid-template-columns:1fr; } }

.gallery-toggle { display:block; margin:0 auto .75rem; font-size:.8rem; }
.auto-scroll-gallery.is-paused .scroll-track { animation-play-state:paused !important; }
/* Reprodução pedida explicitamente; o botão mantém a pausa sempre acessível. */
@media(prefers-reduced-motion:reduce) {
 .auto-scroll-gallery .scroll-track { animation:gallery-scroll 90s linear infinite !important; }
 .auto-scroll-gallery .scroll-track[data-ui~=reverse] { animation-direction:reverse !important; }
 .auto-scroll-gallery:is(:hover,:focus-within,.is-paused) .scroll-track { animation-play-state:paused !important; }
}

/* V19: hierarquia e alinhamento dos serviços da receção. */
.assistant-dialogue>.assistant-header,.container-suporte-novo>.assistant-header {
 flex-direction:column; text-align:center; gap:.65rem;
}
.assistant-dialogue>.assistant-header>:is(h2,p),.container-suporte-novo>.assistant-header>:is(h2,p) { margin:0; }
.reservation-lookup { width:100%; max-width:680px; margin:0 auto; text-align:left; }
.reservation-lookup .button-center { margin-top:1rem; }
.reception-back { text-align:center; margin:2rem auto; }
.task-priorities { border-left:5px solid #b27b26; border-radius:8px; background:var(--warning-soft); box-shadow:0 2px 4px #0000000d; }
.task-priorities h4 { color:var(--warning); margin:0 0 .65rem; text-transform:uppercase; font-size:.9rem; }
#opcoes-container { grid-template-columns:repeat(3,minmax(0,1fr)); grid-auto-rows:1fr; max-width:1000px; margin:1.5rem auto; }
#opcoes-container>.option-button-recepcao { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }
@media(max-width:600px) { #opcoes-container { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:380px) { #opcoes-container { grid-template-columns:1fr; } }

.home-gallery .scroll-track { animation-duration:180s !important; }
.services-grid-new .s-item { transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background-color .2s ease; }
.services-grid-new .s-item:hover { transform:translateY(-4px); border-color:var(--brand); background:var(--brand-soft); box-shadow:0 8px 18px #36584a22; }

/* Opções do assistente: todas as filas centradas, incluindo as incompletas. */
#opcoes-container { display:flex; flex-wrap:wrap; justify-content:center; align-items:stretch; }
#opcoes-container>.option-button-recepcao { flex:0 0 calc((100% - 2rem)/3); width:auto; height:auto; min-height:70px; }
@media(max-width:600px) { #opcoes-container>.option-button-recepcao { flex-basis:calc((100% - 1rem)/2); } }
@media(max-width:380px) { #opcoes-container>.option-button-recepcao { flex-basis:100%; } }

/* V21: leitura, percurso por categorias e formulários compactos. */
.main-menu a { font-size:1rem; }
.header-content .session-controls { font-size:.94rem; }
.header-content .session-controls :is(button,.btn-privado) { font-size:.9rem; }
.checkin-container { max-width:760px; }
.checkin-lookup { max-width:360px; }
.lookup-divider { margin:1.5rem 0; border:0; border-top:1px solid var(--line); }
.login-panel { width:100%; max-width:460px; margin:2.5rem auto; }
.reservation-details { max-width:720px; margin-inline:auto; }
#painelAcoes { display:flex; flex-wrap:wrap; gap:.6rem; }
#painelAcoes>.aba-pedido { flex:0 1 auto; width:auto; min-width:130px; }
#menuAbas.category-menu { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); max-width:1000px; margin:2rem auto; gap:1rem; }
#menuAbas.category-menu>.aba-pedido { min-height:100px; font-size:.95rem; }
.category-heading { text-align:center; background:var(--brand-soft); border-radius:var(--radius); padding:1rem; margin:1.5rem 0; }
.category-heading h3 { margin:.75rem 0 0; }
#areaProdutos { display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; }
#areaProdutos>.product-card-premium { flex:0 1 calc((100% - 2rem)/3); min-width:0; }
.additional-services .service-box { transition:transform .2s,box-shadow .2s,background .2s; }
.additional-services .service-box:hover { transform:translateY(-4px); background:var(--brand-soft); box-shadow:0 8px 18px #36584a22; }
.promo-img-wrapper { overflow:hidden; border-radius:var(--radius); }
.promo-item .promo-img-wrapper img { transition:transform .4s; }
.promo-item:hover .promo-img-wrapper img { transform:scale(1.035); }
.promo-item .promo-category { transition:color .2s; }
.promo-item:hover .promo-category { color:var(--accent); }
.room-unavailable { text-align:center; background:#e1e3df; color:#505850; cursor:not-allowed; }
.editor-dialog { width:calc(100% - 2rem); max-width:1000px; max-height:90vh; border:1px solid var(--line); border-radius:var(--radius); padding:1.25rem; background:var(--surface); color:var(--ink); overflow:auto; }
.editor-dialog::backdrop { background:#182b2477; }
.editor-dialog>.editor-dialog-close { display:block; margin:0 0 .75rem auto; }
.editor-dialog>[id] { margin:0; max-width:100%; }
@media(max-width:700px) {
 #menuAbas.category-menu { grid-template-columns:repeat(2,minmax(0,1fr)); }
 #areaProdutos>.product-card-premium { flex-basis:calc((100% - 1rem)/2); }
}
@media(max-width:450px) { #areaProdutos>.product-card-premium { flex-basis:100%; } }

#subTabsNav { max-width:1000px; margin:1rem auto; grid-template-columns:repeat(3,minmax(0,1fr)); }
@media(max-width:700px) { #subTabsNav { grid-template-columns:repeat(2,minmax(0,1fr)); } }

#menuAbas.category-menu { background:transparent; border:0; padding:0; }
#menuAbas.category-menu>.aba-pedido { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:0 2px 8px #36584a0d; }
#menuAbas.category-menu>.aba-pedido:hover { background:var(--brand-soft); border-color:var(--brand); }

/* Pedido manual: apresentação coerente com o pedido do hóspede. */
#painelPedidoManual>.assistant-header { flex-direction:column; text-align:center; gap:.65rem; }
#painelPedidoManual>.assistant-header>:is(h2,p) { margin:0; }
#manual_menuAbas,#manual_subTabsNav,#manual_areaProdutos {
 display:flex; flex-wrap:wrap; justify-content:center; align-items:stretch; gap:1rem;
 width:100%; max-width:1000px; margin-inline:auto;
}
#manual_menuAbas { background:transparent; border:0; padding:0; margin-block:1.5rem; }
#manual_menuAbas>.aba-pedido,#manual_subTabsNav>.aba-pedido,#manual_areaProdutos>.product-card-premium {
 flex:0 0 calc((100% - 2rem)/3); width:auto; min-width:0; text-align:center;
}
#manual_menuAbas>.aba-pedido { min-height:80px; font-size:.95rem; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
#manual_menuAbas>.aba-pedido:hover { background:var(--brand-soft); border-color:var(--brand); }
#manual_menuAbas>.aba-pedido-ativa { background:var(--brand); color:var(--surface); border-color:var(--brand); }
#manual_menuAbas>.aba-pedido-ativa:hover { background:var(--brand-hover); }
#manual_areaProdutos .product-info-content { padding:1rem; text-align:center; }
#manual_areaProdutos .product-controls-premium { justify-content:center; }
#manual_resumo .carrinho-info { flex-direction:column; align-items:center; text-align:center; }
#manual_resumo .carrinho-total { text-align:center; }
@media(max-width:700px) {
 #manual_menuAbas>.aba-pedido,#manual_subTabsNav>.aba-pedido,#manual_areaProdutos>.product-card-premium { flex-basis:calc((100% - 1rem)/2); }
 #manual_resumo .carrinho-content { align-items:center; text-align:center; }
}
@media(max-width:450px) {
 #manual_menuAbas>.aba-pedido,#manual_subTabsNav>.aba-pedido,#manual_areaProdutos>.product-card-premium { flex-basis:100%; }
}

.editor-dialog>#painelPedidoManual>.button-cancelar { display:none; }

.services-grid-new { display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; }
.services-grid-new>.s-item { flex:0 0 calc((100% - 3rem)/4); min-width:0; }
.services-grid-new:not(:has(>:nth-child(7)))>.s-item { flex-basis:calc((100% - 2rem)/3); }
.services-grid-new:has(>:nth-child(4)):not(:has(>:nth-child(5)))>.s-item { flex-basis:calc((100% - 1rem)/2); }
.amenity-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin:1rem 0; }
.amenity-options label { display:flex; align-items:center; gap:.5rem; }
.allergen-note { font-size:.85rem; padding:.6rem; border-radius:8px; background:var(--warning-soft); color:var(--warning); overflow-wrap:anywhere; }
@media(max-width:700px) { .services-grid-new>.s-item,.services-grid-new:not(:has(>:nth-child(7)))>.s-item { flex-basis:calc((100% - 1rem)/2); } }
@media(max-width:450px) { .services-grid-new>.s-item,.services-grid-new:not(:has(>:nth-child(7)))>.s-item,.services-grid-new:has(>:nth-child(4)):not(:has(>:nth-child(5)))>.s-item { flex-basis:100%; } .amenity-options { grid-template-columns:1fr; } }

/* Identificação do hóspede. */
.guest-verification { width: min(30rem, calc(100% - 2rem)); max-height: 90vh; overflow: auto; border: 1px solid #cbd5cd; border-radius: 1rem; padding: 1.5rem; background: #fffefb; color: #36584a; }
.guest-verification::backdrop { background: rgb(0 0 0 / 45%); }
.guest-verification input { width: 100%; margin: .7rem 0 1rem; }
.guest-verification .ui-actions { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; }
/* Detalhes das acomodações e condições dos packs */
.pack-choices { display:flex; flex-wrap:wrap; justify-content:center; gap:.6rem 1rem; }
.pack-choices label { display:flex; align-items:center; gap:.35rem; }
.pack-choices input { width:auto; }
.pack-conditions { padding:1rem; border-radius:12px; background:var(--color-surface,#f4f3eb); margin-block:1rem; }
.room-details-dialog { width:min(92vw,640px); max-height:85vh; overflow:auto; border:0; border-radius:18px; padding:1.7rem; color:inherit; }
.room-details-dialog::backdrop { background:rgb(20 35 25 / 55%); }
.room-details-dialog form { text-align:center; }
.booking-search { display:flex; flex-wrap:wrap; align-items:end; justify-content:center; gap:1rem; }
.payment-dialog { width:min(94vw,760px); max-height:90vh; overflow:auto; border:0; border-radius:16px; padding:1.5rem; margin:auto; }
.payment-dialog::backdrop { background:rgb(20 35 27 / 62%); }
.payment-dialog-close { display:block; margin-left:auto; border:0; background:transparent; color:#4f8063; font-size:2rem; line-height:1; cursor:pointer; }
.payment-dialog [data-instructions] { display:flex; flex-direction:column; align-items:center; text-align:center; }
.payment-dialog .easypay-host { width:100%; max-width:620px; margin:auto; }
.payment-popup-content { width:min(94vw,760px); max-height:90vh; overflow:auto; border:0; border-radius:16px; padding:1.5rem; margin:auto; }
.payment-popup-content::backdrop { background:rgb(20 35 27 / 62%); }
.payment-popup-content .payment-dialog-close { display:block; margin-left:auto; border:0; background:transparent; color:#4f8063; font-size:2rem; cursor:pointer; }
.payment-popup-content [data-instructions] { display:flex; flex-direction:column; align-items:center; text-align:center; }
.payment-popup-content .easypay-host { width:100%; max-width:620px; margin:auto; }
.payment-popup-content > div:last-child { width:100%; max-width:640px; margin:0 auto; text-align:center; }
.booking-search label { flex:1 1 150px; max-width:230px; }
.booking-search input { width:100%; }
.booking-offers { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr)); gap:1rem; margin-top:1rem; }
.booking-results-panel { display:block; }
.booking-engine-close { display:none; margin:1rem auto .15rem; border:0 !important; background:transparent !important; color:#4f8063 !important; font-family:Arial,sans-serif; font-size:2.2rem !important; font-weight:300 !important; line-height:.8; padding:0 .35rem !important; cursor:pointer; opacity:.95; box-shadow:none !important; }
.booking-results-panel.is-visible .booking-engine-close { display:block; }
.booking-engine-close:hover,.booking-engine-close:focus-visible { color:var(--terracotta,#b86f52); opacity:1; }
.booking-tariff { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.6rem; padding-block:.8rem; border-bottom:1px solid #d8ded4; }
.booking-tariff span { flex-basis:100%; }
.booking-room-photo { width:100%; max-height:260px; object-fit:cover; border-radius:12px; }
.booking-offer-heading { display:flex; align-items:center; gap:.85rem; margin-bottom:.8rem; }
.booking-offer-heading h3 { margin:0; }
.booking-offer-thumb { width:74px; height:58px; border-radius:10px; object-fit:cover; flex:0 0 auto; }
.room-gallery { position:relative; width:100%; overflow:hidden; border-radius:12px; background:var(--brand-soft); }
.room-gallery > img { display:block; width:100%; height:clamp(220px,34vw,420px); object-fit:cover; }
.accommodation-gallery { max-width:760px; margin-inline:auto; }
.gallery-arrow { position:absolute; z-index:2; top:50%; transform:translateY(-50%); width:2.4rem; height:2.4rem; padding:0; border:0; border-radius:50%; background:rgb(255 255 255 / 82%); color:var(--brand); font-size:2rem; line-height:1; box-shadow:0 2px 10px rgb(0 0 0 / 18%); }
.gallery-prev { left:.65rem; }
.gallery-next { right:.65rem; }
.gallery-arrow:hover,.gallery-arrow:focus-visible { background:var(--cream); color:var(--terracotta); }
.booking-room-details + .booking-room-details { border-top:1px solid var(--line); margin-top:1.2rem; padding-top:1.2rem; }
.pdf-hidden { display:none !important; }
.pdf-export-root { display:block !important; position:relative; box-sizing:border-box; margin:0; padding:18px; background:#fffefb; color:#263a30; overflow:visible; }
.pdf-export-root.pdf-export-landscape { width:1040px; max-width:1040px; }
.pdf-export-root.pdf-export-portrait { width:720px; max-width:720px; }
.pdf-export-root * { box-sizing:border-box; }
.pdf-export-root [data-ui~="overflow-x-auto"],.pdf-export-root [data-ui~="overflow-y-auto"],.pdf-export-root [data-ui~="scroll-panel"] { overflow:visible; max-height:none; }
.pdf-export-root table { width:100% !important; table-layout:fixed; border-collapse:collapse; font-size:10px; }
.pdf-export-root th,.pdf-export-root td { padding:5px; overflow-wrap:anywhere; word-break:normal; }
.pdf-export-root tr,.pdf-export-root .card,.pdf-export-root .summary-card { break-inside:avoid; page-break-inside:avoid; }
.pdf-export-root .table-filters,.pdf-export-root .stats-filter-bar { display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:end; }
.pdf-export-root .finance-summary-grid,.pdf-export-root .stats-grid-row { display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)); }
.pdf-export-root .stats-main-grid { display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)); }
.pdf-control-value { display:block; min-height:30px; padding:6px 8px; border:1px solid #cfd8ce; border-radius:6px; background:#fff; overflow-wrap:anywhere; }
.pdf-chart { display:block; width:100%; max-height:310px; object-fit:contain; }
.booking-phone { display:grid; grid-template-columns:100px 1fr; gap:1rem; }

/* Estados do calendário: cor funcional, texto e padrão distinguem cada situação. */
.availability-legend { display:flex; flex-wrap:wrap; justify-content:center; gap:.65rem; margin:1rem auto; }
.availability-legend span { padding:.45rem .7rem; border:1px solid; border-radius:.45rem; font-size:.85rem; }
.availability-cell[data-availability="available"], .availability-legend [data-availability="available"] { background:#c4ecd0 !important; color:#173e25; border-color:#43835a; }
.availability-cell[data-availability="reserved"], .availability-legend [data-availability="reserved"] { background:#f7cecb !important; color:#722a27; border-color:#b95048; }
.availability-cell[data-availability="blocked"], .availability-legend [data-availability="blocked"] { background:repeating-linear-gradient(135deg,#d2d2d8,#d2d2d8 7px,#bcbcc6 7px,#bcbcc6 9px) !important; color:#282835; border-color:#60606d; }
.availability-cell[data-availability="unconfigured"], .availability-legend [data-availability="unconfigured"] { background:#fff0c8 !important; color:#614700; border-color:#b18b30; }
.availability-label { display:block; font-size:.72rem; font-weight:700; line-height:1.3; margin-bottom:.3rem; }
.easypay-host { width:100%; max-width:760px; margin:1rem auto; text-align:left; }
#booking-dialog:has(#booking-payment-popup) { width:min(96vw,820px); max-width:820px; padding:0; }
#booking-dialog:has(#booking-payment-popup) .payment-popup-content { width:100%; box-sizing:border-box; padding:1.5rem; text-align:center; }
#booking-dialog:has(#booking-payment-popup) #booking-payment-popup { width:100%; display:flex; justify-content:center; }
#booking-dialog:has(#booking-payment-popup) #booking-payment-popup .pack-conditions { width:100%; max-width:680px; margin:0 auto; }
#booking-dialog:has(#booking-payment-popup) .easypay-host,
#booking-dialog:has(#booking-payment-popup) .easypay-host > *,
#booking-dialog:has(#booking-payment-popup) [data-instructions] > * { margin-left:auto; margin-right:auto; }

/* Correio: mesma tipografia e controlos da área privada. */
.mail-toolbar,.mail-folders,.mail-addresses {display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;margin:1rem 0;}
.mail-toolbar label,.mail-addresses label {flex:1;min-width:180px;}
.mail-layout {display:grid;grid-template-columns:minmax(240px,32%) minmax(0,1fr);gap:1.25rem;align-items:start;}
.mail-row {display:flex;flex-direction:column;align-items:flex-start;text-align:left;width:100%;gap:.3rem;margin:.4rem 0;padding:.85rem;white-space:normal;overflow-wrap:anywhere;}
.mail-row span,.mail-row small {font-weight:400;}
.mail-unread {border-left:5px solid #52705a;}
#mail-message {padding:1rem;border:1px solid #ccd5c9;border-radius:12px;min-height:250px;overflow-wrap:anywhere;}
.mail-body {font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;padding:1rem;background:#fbf9f2;border-radius:8px;}
.mail-dialog {width:min(760px,94vw);max-height:90vh;overflow:auto;border:1px solid #a1b09e;border-radius:16px;padding:1.2rem;}
.mail-dialog::backdrop {background:rgba(30,40,30,.5);}
.mail-attachments>div {padding:.7rem;margin:.5rem 0;border:1px solid #ccd5c9;border-radius:8px;}
.mail-error,.mail-form-status {color:#8c3028;}
.mail-folders .active {background:#476950;color:white;}
#mail-models-list {overflow-x:auto;}
@media(max-width:760px){.mail-layout {grid-template-columns:1fr;}.mail-addresses {display:block;}}

/* Login com segundo fator e calendário fiscal. */
.login-help {max-width:32rem;margin:0 auto 1.25rem;text-align:center;line-height:1.6;}
.login-secondary-actions {display:flex;justify-content:center;flex-wrap:wrap;gap:.7rem;margin-top:1rem;}
.login-secondary-actions form {margin:0;}
.user-email-editor {display:flex;align-items:center;gap:.45rem;min-width:280px;}
.user-email-editor input {min-width:200px;}
.fiscal-heading,.fiscal-toolbar {display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;}
.fiscal-year {display:flex;align-items:center;gap:.6rem;}
.fiscal-year input {width:7rem;}
.fiscal-toolbar {justify-content:flex-start;margin:1rem 0;}
.fiscal-config {margin:1rem 0;padding:1rem;border:1px solid #ccd5c9;border-radius:12px;background:#fbf9f2;}
.fiscal-config summary {cursor:pointer;font-weight:700;color:#36584a;}
.fiscal-config-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:.65rem 1rem;margin-top:1rem;}
.fiscal-config-grid label {display:flex;align-items:center;gap:.55rem;}
.fiscal-config-grid input {width:auto;}
.fiscal-notice {padding:.85rem 1rem;border-left:4px solid #b98258;background:#fbf1e5;border-radius:8px;}
.fiscal-list {display:grid;gap:.8rem;margin-top:1.2rem;}
.fiscal-card {display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:1rem;align-items:center;padding:1rem;border:1px solid #ccd5c9;border-left:7px solid #b98258;border-radius:12px;background:#fff;}
.fiscal-card time {font-weight:700;color:#36584a;}
.fiscal-card h3,.fiscal-card p {margin:.2rem 0;}
.fiscal-concluida {border-left-color:#4f8063;background:#f3faf4;}
.fiscal-atrasada {border-left-color:#a9453d;background:#fff5f3;}
.fiscal-nao_aplicavel {border-left-color:#8b8b8b;background:#f3f3f3;}
.fiscal-state {display:inline-block;margin-top:.35rem;padding:.25rem .55rem;border-radius:999px;background:#e8ede6;font-size:.78rem;font-weight:700;}
.fiscal-notes,.fiscal-done {font-size:.88rem;color:#56635a;}
.fiscal-actions {display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.45rem;max-width:320px;}
.fiscal-dialog {width:min(620px,94vw);max-height:90vh;overflow:auto;border:1px solid #a1b09e;border-radius:16px;padding:1.25rem;}
.fiscal-dialog::backdrop {background:rgba(30,40,30,.5);}
.fiscal-dialog label {display:block;margin:.8rem 0;}
.fiscal-dialog input,.fiscal-dialog select,.fiscal-dialog textarea {display:block;width:100%;margin-top:.35rem;}
.dialog-actions {display:flex;justify-content:flex-end;gap:.65rem;margin-top:1rem;}
@media(max-width:760px){.fiscal-card{grid-template-columns:1fr}.fiscal-actions{justify-content:flex-start;max-width:none}.fiscal-heading{align-items:flex-start}}

/* Histórico das consultas aos feeds iCal pelas OTAs. */
.ical-sync-entry{display:flex;justify-content:center;margin:1rem 0 1.4rem;}
.ical-sync-dialog{width:min(1050px,95vw);max-height:90vh;overflow:auto;border:1px solid #a1b09e;border-radius:16px;padding:1.35rem;}
.ical-sync-dialog::backdrop{background:rgba(30,40,30,.55);}
.ical-sync-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.75rem;margin:1rem 0;}
.ical-sync-card{padding:.8rem;border:1px solid #ccd5c9;border-radius:10px;background:#fbf9f2;}
.ical-sync-card strong,.ical-sync-card span{display:block;}
.ical-sync-card time{font-size:.88rem;color:#56635a;}
.ical-sync-filters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) auto;gap:.75rem;align-items:end;margin:1rem 0;}
.ical-sync-filters label{display:flex;flex-direction:column;gap:.3rem;}
.ical-sync-table-wrap{overflow-x:auto;}
.ical-link-cell{display:flex;align-items:center;gap:.45rem;min-width:310px;}
.ical-link-cell code{overflow-wrap:anywhere;font-size:.78rem;}
@media(max-width:760px){.ical-sync-filters{grid-template-columns:1fr 1fr}.ical-sync-filters button{grid-column:1/-1}.ical-sync-dialog{padding:.9rem}}
/* V36: espaço deliberado para fotografias dos passeios ainda por adicionar. */
.tour-photo-placeholder{aspect-ratio:4/3;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.45rem;padding:1rem;text-align:center;background:linear-gradient(145deg,#edf3ec,#dce8da);color:#315d3c;border-bottom:1px solid #cad8c8}
.tour-photo-placeholder span{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;opacity:.72}
.tour-photo-placeholder strong{font-size:1.05rem}
