/* O novo /reservas (Sessão V), com o desenho da maquete aprovada (Sessão AB). Vem depois do menus.css e do reserva.css (os `_campos_*`
   partilhados que a v2 ainda inclui usam as classes deles) e só se carrega no esqueleto da v2: tudo escopado em `.v2-corpo`, os 8 passos
   ficam iguais. Sem estilos inline (CSP). Telemóvel primeiro: 390 px sem scroll horizontal, alvos de 44 px nos controlos.
   Cores da maquete (as do site): areia, papel, tinta, terracota, oliva e o vermelho do botão. O texto pequeno usa os tons escuros da Z
   (terra #9C4B28 e verde #5A5E43, 4,5:1 ou mais); a terracota e o oliva de sempre ficam nas barras, contornos e fundos. */
.v2-corpo{--areia:#EFE8DC;--areia2:#E3D9C8;--papel:#FBF8F2;--tinta:#1E1B17;--mudo:#6b6257;--linha:#d6ccba;--terra:#B5603B;
  --terra-txt:#9C4B28;--terra-suave:#F6E3D6;--oliva:#6E7355;--oliva-txt:#5A5E43;--oliva-suave:#E6E7DC;--cta:#C8372D;--cta2:#A72A21;
  --aviso:#7A4C0E;--aviso-suave:#F7E9CF;--r:10px;--f-titulo:Archivo,"Helvetica Neue",Arial,sans-serif;--f-texto:Inter,system-ui,-apple-system,sans-serif;
  background:var(--papel);color:var(--tinta);font:15px/1.5 var(--f-texto);display:flex;flex-direction:column;min-height:100vh}
html:has(.v2-corpo .v2-total){scroll-padding-bottom:var(--v2-barra-h,150px)}       /* o foco e as âncoras nunca ficam por baixo da barra */
.v2-corpo h1,.v2-corpo h2,.v2-corpo h3,.v2-corpo legend,.v2-corpo .n-nome,.v2-corpo .gama-nome,.v2-corpo .kicker,.v2-corpo .marca{text-transform:none;letter-spacing:0}
.v2-corpo h1,.v2-corpo h2,.v2-corpo h3{font-family:var(--f-titulo);font-weight:800;font-stretch:82%;line-height:1.08;text-wrap:balance}
.v2-corpo h1{font-size:clamp(28px,7.4vw,40px);margin:0}
.v2-corpo .v2-h2{font-size:21px;font-stretch:85%;margin:8px 0 4px}
.v2-corpo .v2-conteudo legend{text-transform:none;letter-spacing:0;font-family:var(--f-titulo);font-size:18px;font-weight:700;font-stretch:88%;color:var(--tinta);margin:0 0 8px;padding:0}
.v2-corpo .small,.v2-corpo small{color:var(--mudo)}
.v2-corpo a{color:var(--tinta)}
.v2-corpo .lead{color:var(--mudo);font-size:15px;margin:10px 0 0;max-width:60ch}
.v2-so-leitor{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* o topo: a marca, a ajuda e a barra de 5 segmentos */
.v2-cab{display:flex;justify-content:space-between;align-items:center;padding:12px 18px 10px;border-bottom:1px solid var(--linha);background:var(--papel)}
.v2-cab .marca{font:900 18px var(--f-titulo);font-stretch:75%;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--tinta);display:inline-flex;align-items:center;min-height:24px}
.v2-ajuda{font-size:14px;color:var(--mudo);text-decoration:none;display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
.v2-main{flex:1;display:flex;flex-direction:column}
.v2-topo,.v2-conteudo{width:100%;max-width:680px;margin:0 auto;padding:0 18px}
.v2-topo{padding-top:12px;padding-bottom:6px}
.v2-conteudo{padding-bottom:28px;display:grid;gap:18px}
.v2-conteudo>*,.v2-corpo form.passo>*,.v2-pedido>*{min-width:0}
.v2-barra{margin:0 0 14px}
.v2-barra-texto{font-size:12.5px;color:var(--mudo);margin:0 0 6px}
.v2-barra ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;list-style:none;margin:0;padding:0}
.v2-barra li a,.v2-barra li>span{display:flex;align-items:center;min-height:24px;text-decoration:none}
.v2-barra li a::before,.v2-barra li>span::before{content:"";display:block;width:100%;height:5px;border-radius:3px;background:var(--areia2)}
.v2-barra li.feito a::before,.v2-barra li.feito>span::before{background:var(--oliva)}
.v2-barra li.actual a::before,.v2-barra li.actual>span::before{background:var(--terra)}
.v2-barra .v2-seg-nome{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.v2-conhecido{margin:10px 0 0;font-size:15px}
.v2-conhecido a{margin-left:4px;color:var(--terra-txt);display:inline-flex;align-items:center;min-height:24px}
/* os contactos: a foto, as garantias e o formulário */
.v2-hero{margin:0 0 16px;border-radius:var(--r);overflow:hidden;aspect-ratio:16/10;background:var(--areia2)}
.v2-hero img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.v2-garantias{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:14px 0 4px;padding:0}
.v2-garantias li{font-size:13px;background:var(--oliva-suave);color:var(--tinta);padding:4px 10px;border-radius:999px}
.v2-corpo .caixa{background:none;border:0;padding:0;box-shadow:none}
.v2-corpo .campos{display:grid;gap:14px;margin:0}
.v2-corpo form.passo{display:grid;gap:18px}
.v2-corpo form.passo>p,.v2-corpo form.passo>.acoes{margin:0}
.v2-corpo label{font-size:14px;font-weight:600;color:var(--tinta)}
.v2-corpo label small{font-weight:400}
.v2-corpo input[type=text],.v2-corpo input[type=email],.v2-corpo input[type=tel],.v2-corpo input[type=number],.v2-corpo input[type=date],.v2-corpo textarea,.v2-corpo label select{background-color:#fff;border:1px solid var(--linha);border-radius:8px;font-weight:400;color:var(--tinta)}
.v2-corpo label select.hora{border-radius:8px;background-color:#fff}
.v2-corpo input[type=checkbox],.v2-corpo input[type=radio]{accent-color:var(--terra-txt)}
/* Sessão AD: um `summary` com `display:flex` perde o triângulo; leva a seta do `.v2-seccao`, para se ver que abre (também a pergunta do
   cliente final nos contactos, que parecia um título sem resposta) */
.v2-cliente-final summary,.v2-condicoes summary,.v2-garrafas summary,.v2-comparar summary{cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center;gap:10px;list-style:none}
.v2-cliente-final summary::-webkit-details-marker,.v2-condicoes summary::-webkit-details-marker,.v2-garrafas summary::-webkit-details-marker,.v2-comparar summary::-webkit-details-marker{display:none}
.v2-cliente-final summary::after,.v2-condicoes summary::after,.v2-garrafas summary::after,.v2-comparar summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--mudo);border-bottom:2px solid var(--mudo);transform:rotate(45deg);margin:0 4px 4px auto;flex:none}
.v2-cliente-final[open] summary::after,.v2-condicoes[open] summary::after,.v2-garrafas[open] summary::after,.v2-comparar[open] summary::after{transform:rotate(-135deg);margin:4px 4px 0 auto}
.v2-contactos .rgpd{margin-top:14px}
.v2-fim-escrever{margin:14px 0 0;font-size:14px}
/* os botões: o principal no vermelho da maquete (#C8372D com branco: 5,2:1) */
.v2-cta{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 20px;border:0;border-radius:8px;background:var(--cta);color:#fff;font:700 15px var(--f-texto);letter-spacing:0;text-transform:none;text-decoration:none;cursor:pointer;white-space:nowrap}
.v2-cta:hover{background:var(--cta2)}
.v2-cta-largo{width:100%}
.v2-cta-sec{background:#fff;color:var(--tinta);border:1px solid var(--tinta)}
.v2-cta-sec:hover{background:var(--areia)}
.v2-cta[hidden]{display:none}
.v2-link{background:none;border:0;padding:0;font:inherit;color:var(--terra-txt);text-decoration:underline;cursor:pointer;min-height:24px}
.v2-acoes{margin-top:18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.v2-corpo .voltar{color:var(--mudo);font-size:14px;text-decoration:underline}
/* a escolha (Sessão AF): o "Montar o evento" que vende (a foto, os 5 tipos com o "desde" e o botão vermelho) e, mais discreta, a caixa
   "Descrever por palavras" (a cópia v2, sem o caixa.css). No telemóvel um por baixo do outro; no computador lado a lado (bloco AD). */
.v2-escolha{display:grid;gap:18px;align-items:start}
.v2-escolha>.v2-confirmar{grid-column:1 / -1;margin:0;max-width:460px}
.v2-montar,.v2-descrever{display:grid;gap:12px;align-content:start;border:1px solid var(--linha);border-radius:var(--r);padding:16px;background:var(--papel);min-width:0}
.v2-montar{border:2px solid var(--terra);background:var(--terra-suave)}
.v2-montar .v2-h2,.v2-descrever .v2-h2{margin:0}
.v2-montar-txt .small,.v2-descrever>.small{margin:4px 0 0}
.v2-montar-foto{position:relative;margin:-16px -16px 0;border-radius:calc(var(--r) - 2px) calc(var(--r) - 2px) 0 0;overflow:hidden;aspect-ratio:16/9;background:var(--areia2)}
.v2-montar-foto img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 45%}
.v2-tipos-escolha{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.v2-tipo-escolha{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-items:center;width:100%;min-height:56px;padding:6px 12px 6px 6px;border:1px solid var(--linha);border-radius:8px;background:var(--papel);color:var(--tinta);font:inherit;text-align:left;text-decoration:none;cursor:pointer}
.v2-tipo-escolha:hover{border-color:var(--terra)}
.v2-tipo-escolha:focus-visible{outline:2px solid var(--terra-txt);outline-offset:2px}
.v2-tipo-escolha .v2-mini{width:56px;height:56px;border-radius:6px;object-fit:cover;display:block}
.v2-tipo-escolha:not(:has(img)){grid-template-columns:minmax(0,1fr);padding-left:12px}
.v2-tipo-escolha .v2-cartao-nome{font-size:16px}
.v2-montar-nota{margin:0}
.v2-montar>.v2-cta,.v2-descrever .v2-cta{margin-top:2px}
.v2-corpo a.v2-cta:not(.v2-cta-sec){color:#fff}                 /* um link com o desenho do botão (o "Montar o evento" com pedido) */
.v2-montar .aviso-grupo{margin:0}
/* a caixa v2 (só os `data-*` contam para o caixa.js: o contador, o envio único e o aviso de espera) */
.v2-cx-form{display:grid;gap:10px}
.v2-cx-ajuda{margin:0}
.v2-cx-form textarea{width:100%;min-height:132px;padding:12px 14px;border:1px solid var(--linha);border-radius:8px;background:#fff;color:var(--tinta);font:15px/1.5 var(--f-texto);resize:vertical}
.v2-cx-form textarea:focus-visible{outline:2px solid var(--terra-txt);outline-offset:1px}
.v2-cx-sob{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.v2-cx-sob [hidden],.v2-cx-a-pensar[hidden]{display:none}
.v2-cx-aviso{margin:0;padding-left:12px;border-left:3px solid var(--oliva)}
.v2-cx-aviso a,.v2-descrever .cx-visita a{color:var(--tinta)}
.v2-cx-a-pensar,.v2-descrever .cx-visita{margin:0}
.v2-cx-form.a-enviar button[type=submit]{opacity:.7}
#descrever{scroll-margin-top:16px}
#descrever:target{box-shadow:0 0 0 3px var(--terra-suave)}
.v2-confirmar{margin:0 0 6px}
/* os cartões (tipos, comida, níveis, bar, extras): o `label` de um rádio ou caixa escondidos, mas focáveis */
.v2-corpo .v2-cartao{font-weight:400}
.v2-cartao{position:relative;display:grid;grid-template-columns:88px minmax(0,1fr);gap:12px;align-items:center;border:1px solid var(--linha);border-radius:var(--r);padding:8px 36px 8px 8px;background:var(--papel);cursor:pointer;color:var(--tinta);font-weight:400;min-height:44px;margin:0}
.v2-cartao.v2-opcao-txt{grid-template-columns:minmax(0,1fr);padding:12px 40px 12px 14px}
.v2-escondido{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.v2-cartao::after{content:"";position:absolute;top:12px;right:12px;width:18px;height:18px;border-radius:50%;border:2px solid var(--linha);background:#fff;box-sizing:border-box}
.v2-cartao:has(input[type=checkbox])::after{border-radius:4px}
.v2-cartao.on,.v2-cartao:has(.v2-escondido:checked){border-color:var(--terra);box-shadow:inset 0 0 0 1px var(--terra);background:var(--terra-suave)}
.v2-cartao.on::after,.v2-cartao:has(.v2-escondido:checked)::after{border-color:var(--terra-txt);background:var(--terra-txt);box-shadow:inset 0 0 0 3px #fff}
.v2-cartao:has(.v2-escondido:not(:checked)).on{border-color:var(--linha);box-shadow:none;background:var(--papel)}
.v2-cartao:has(.v2-escondido:not(:checked)).on::after{border-color:var(--linha);background:#fff;box-shadow:none}
.v2-cartao:focus-within{outline:2px solid var(--terra-txt);outline-offset:2px}
@supports selector(:has(*)){.v2-cartao:focus-within{outline:0}.v2-cartao:has(:focus-visible){outline:2px solid var(--terra-txt);outline-offset:2px}}
.v2-mini{width:88px;height:88px;object-fit:cover;border-radius:7px;display:block}
.v2-foto{display:block;min-width:0}                                /* Sessão AD: a foto média no computador (`picture`) */
.v2-cartao-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.v2-cartao-nome{font:700 17px var(--f-titulo);font-stretch:90%;line-height:1.2}
.v2-cartao-desc{font-size:13px;color:var(--mudo);line-height:1.35}
.v2-cartao-preco{font-size:13px;margin-top:3px;color:var(--tinta)}
.v2-cartao-preco b{font:700 16px var(--f-titulo)}
.v2-chip{display:inline-block;font:700 10.5px var(--f-texto);letter-spacing:.06em;text-transform:uppercase;background:var(--terra-txt);color:#fff;padding:2px 7px;border-radius:3px;vertical-align:2px;margin-left:4px}
.v2-chip-oliva{background:var(--oliva-txt)}
.v2-nivel-linha{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.v2-nivel-preco{font-size:13px;color:var(--mudo);white-space:nowrap}
.v2-nivel-preco b{font:700 17px var(--f-titulo);color:var(--tinta)}
.v2-corpo .formatos-lista,.v2-corpo .comidas,.v2-corpo .niveis,.v2-corpo .bar-pacotes,.v2-corpo .amb-extras{display:grid;gap:10px;border:0;padding:0;margin:0}
.v2-corpo .formatos-lista>.small,.v2-corpo .niveis>.small{margin:0}
/* o evento: o contador, a data e a hora lado a lado, o aviso do exclusivo em caixa amarela */
.v2-contador.com-js{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;border:1px solid var(--linha);border-radius:8px;overflow:hidden;background:#fff}
.v2-contador.com-js input{border:0;border-radius:0;text-align:center;font:700 20px var(--f-titulo);-moz-appearance:textfield;appearance:textfield}
.v2-contador.com-js input::-webkit-inner-spin-button,.v2-contador.com-js input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.v2-contador button{border:0;background:var(--areia);font:400 24px var(--f-texto);color:var(--tinta);cursor:pointer;min-height:48px}
.v2-contador button:hover{background:var(--areia2)}
.v2-contador button:focus-visible{outline:2px solid var(--terra-txt);outline-offset:-2px}
.v2-contador:has([aria-invalid=true]){border-color:#B3261E;box-shadow:0 0 0 1px #B3261E}
.v2-corpo .datas{border:0;padding:0;margin:0;display:grid;gap:10px}
.v2-corpo .data-linha{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:end}
.v2-corpo .data-linha input,.v2-corpo .data-linha select{height:48px;min-height:48px}
.v2-corpo .data-linha .disp{grid-column:1 / -1;margin:-4px 0 0;color:var(--oliva-txt)}
.v2-corpo .data-linha .disp:empty{display:none}
.v2-corpo .aviso-grupo{background:var(--aviso-suave);color:var(--aviso);border:0;border-radius:8px;padding:10px 12px;margin:0;font-size:14px}
.v2-corpo .aviso-grupo a{color:var(--aviso)}
.v2-corpo .aviso-grupo p:last-child{margin-bottom:0}
.v2-corpo .v2-sem-data{font-weight:400}
/* o menu: a tabela do que muda, o "Escolha por mim" e as secções dobráveis */
.v2-comparar{border:1px solid var(--linha);border-radius:var(--r);padding:4px 14px;background:var(--papel)}
.v2-tabela-rolo{overflow-x:auto;max-width:100%}
.v2-comparar table{border-collapse:collapse;width:100%;font-size:13.5px;margin:4px 0 8px}
.v2-comparar th,.v2-comparar td{text-align:left;padding:6px 5px;border-bottom:1px solid var(--linha);vertical-align:top}
.v2-comparar th small{display:block;font-weight:400;color:var(--mudo);font-size:12px}
.v2-sugerir{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.v2-corpo .v2-sugerir .cta{min-height:44px;border:1px dashed var(--terra-txt);background:transparent;color:var(--terra-txt);border-radius:8px;font:600 15px var(--f-texto);letter-spacing:0;text-transform:none;padding:10px 14px}
.v2-seccoes{display:grid;gap:10px}
.v2-seccao{border:1px solid var(--linha);border-radius:var(--r);background:var(--papel)}
.v2-seccao summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;min-height:48px;cursor:pointer}
.v2-seccao summary::-webkit-details-marker{display:none}
.v2-seccao summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--mudo);border-bottom:2px solid var(--mudo);transform:rotate(45deg);margin:0 4px 4px 0;flex:none}
.v2-seccao[open] summary::after{transform:rotate(-135deg);margin:4px 4px 0 0}
.v2-seccao-nome{font:700 17px var(--f-titulo);font-stretch:90%;margin-right:auto}
.v2-conta-sec{font-size:13px;color:var(--mudo);white-space:nowrap}
.v2-conta-sec.ok{color:var(--oliva-txt);font-weight:700}
.v2-seccao .seccao{border:0;margin:0;padding:0 6px 8px}
.v2-seccao .regra{margin:0 8px 6px;font-size:13px}
.v2-seccao ul{list-style:none;margin:0;padding:0}
.v2-corpo .v2-seccao .artigo{display:flex;flex-direction:row;align-items:center;gap:10px;background:none;border-top:1px solid var(--linha);padding:9px 8px;min-height:44px;font-weight:400}
.v2-seccao .artigo input{width:20px;height:20px;flex:none;margin:0}
.v2-seccao .artigo b{font-weight:400}
.v2-seccao .artigo small{display:block}
.v2-corpo .v2-veg{margin-left:auto;font:700 10.5px var(--f-texto);font-style:normal;letter-spacing:.04em;color:var(--oliva-txt);border:0;padding:0;align-self:center}
/* bebidas e extras */
.v2-banda{margin:0 0 4px;border-radius:var(--r);overflow:hidden;aspect-ratio:16/7;background:var(--areia2)}
.v2-banda img{display:block;width:100%;height:100%;object-fit:cover}
.v2-horas{max-width:240px}
.v2-garrafas{border:1px solid var(--linha);border-radius:var(--r);padding:2px 14px}
.v2-corpo .v2-garrafas summary{border:0;background:none;padding:0;color:var(--tinta);font:600 15px var(--f-texto);letter-spacing:0;text-transform:none;min-height:44px;display:flex;align-items:center;cursor:pointer}
.v2-garrafas .garrafa{display:grid;grid-template-columns:minmax(0,1fr) 90px;align-items:center;gap:4px 10px;font-weight:400}
/* a sala e o espaço: os mesmos campos dos 8 passos, com a letra e os cartões da maquete */
.v2-sala .amb-onde,.v2-sala .amb-gama,.v2-sala .espaco-opcoes{border:0;padding:0;margin:0 0 6px;display:grid;gap:10px}
.v2-sala .nivel,.v2-sala .gama,.v2-sala label.opcao{border:1px solid var(--linha);border-radius:var(--r);background:var(--papel);padding:12px 14px;color:var(--tinta);font-weight:400}
.v2-sala .nivel.on,.v2-sala .gama.on,.v2-sala label.opcao.on,.v2-sala .nivel:has(input:checked),.v2-sala .gama:has(input:checked),.v2-sala label.opcao:has(input:checked){border-color:var(--terra);box-shadow:inset 0 0 0 1px var(--terra);background:var(--terra-suave)}
.v2-sala .n-nome,.v2-sala .gama-nome,.v2-sala label.opcao b{font:700 17px var(--f-titulo);font-stretch:90%}
.v2-sala .g-foto{border-radius:7px}
.v2-sala .amb-inclui{border:1px solid var(--linha);border-radius:var(--r);padding:2px 14px}
.v2-sala .amb-inclui summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600}
.v2-sala .amb-inclui ul{font-size:14px;margin:2px 0 8px;padding-left:18px;columns:2 140px;column-gap:24px}   /* Sessão AF: a letra dos cartões */
.v2-sala .v2-procura{margin:0;color:var(--oliva-txt);font-weight:600}
/* o pedido */
.v2-pedido{display:grid;gap:14px}
.v2-contas-bloco{display:grid;gap:14px;min-width:0}                /* Sessão AD: no telemóvel igual (o mesmo espaçamento do pedido) */
.v2-corpo .aviso-reserva{background:var(--oliva-suave);border:0;border-radius:8px;margin:0}
.v2-blocos{border:1px solid var(--linha);border-radius:var(--r);background:var(--papel)}
.v2-corpo .v2-blocos .bloco-resumo{margin:0;padding:12px 14px;border-bottom:1px solid var(--linha)}
.v2-corpo .v2-blocos .bloco-resumo:last-child{border-bottom:0}
.v2-corpo .bloco-resumo h3{font-size:13px;font-family:var(--f-texto);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mudo);margin:0 0 4px}
.v2-corpo .bloco-resumo .alterar{font-size:14px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--terra-txt);display:inline-flex;align-items:center;min-height:24px}
.v2-corpo .r-linha{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:2px 0}
.v2-corpo .r-val{white-space:nowrap}
.v2-contas{width:100%;border-collapse:collapse;font-size:14px}
.v2-contas td{padding:7px 0;border-top:1px solid var(--linha);vertical-align:top}
.v2-contas td:last-child{text-align:right;white-space:nowrap;padding-left:10px}
.v2-contas tr.total td{font:700 17px var(--f-titulo);border-top:2px solid var(--tinta)}
.v2-contas tr.com-iva td{color:var(--mudo)}
.v2-corpo .v2-com-iva{margin:-6px 0 0}
.v2-corpo .r-total{display:flex;justify-content:space-between;align-items:baseline;font:800 22px var(--f-titulo);font-stretch:85%;border-top:2px solid var(--tinta);padding-top:8px}
.v2-corpo .r-total small{font:400 13px var(--f-texto)}
.v2-submeter{display:grid;gap:14px;margin:0}
.v2-submeter .notas{display:flex;flex-direction:column;gap:6px}
ol.v2-seguir{list-style:none;counter-reset:passo;margin:0;padding:0;display:grid;gap:4px}
ol.v2-seguir li{counter-increment:passo;display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;padding:6px 0;font-size:14px}
ol.v2-seguir li::before{content:counter(passo);width:24px;height:24px;border-radius:50%;background:var(--oliva-suave);color:var(--oliva-txt);font:700 12px var(--f-titulo);display:grid;place-items:center}
.v2-condicoes{border-top:1px solid var(--linha);padding-top:4px}
.v2-condicoes ul{margin:8px 0;padding-left:18px;display:grid;gap:6px;font-size:14px}
.v2-partilhar{display:grid;gap:6px}
.v2-partilhar-linha{display:flex;gap:8px;flex-wrap:wrap}
.v2-partilhar-linha input{flex:1 1 220px;min-width:0;font-size:14px}
/* as ferramentas: claras abaixo de 50 pessoas, o bloco escuro da maquete a partir daí */
.v2-corpo .ferramentas{margin:8px 0 0}
.v2-corpo .ferramenta{background:var(--papel);border-radius:var(--r)}
.v2-destaque .ferramentas{background:var(--tinta);color:var(--areia);border-radius:var(--r);padding:18px}
.v2-destaque .ferramentas h2,.v2-destaque .ferramentas h3{color:var(--areia)}
.v2-corpo .v2-destaque .ferramentas .kicker,.v2-corpo .v2-destaque .ferramenta-linha{color:#F2B08A}
.v2-destaque .ferramentas .small{color:#D9D0C1}
.v2-destaque .ferramenta{background:transparent;border:0;border-top:1px solid rgba(239,232,220,.25);border-radius:0;padding:12px 0 0}
.v2-destaque .ferramenta a{color:var(--areia)}
.v2-corpo .ferramenta a{display:inline-flex;align-items:center;min-height:24px}
/* no fim de cada ecrã: escrever e visitar */
.v2-fim{border-top:1px solid var(--linha);padding-top:14px;display:grid;gap:6px;font-size:14px;color:var(--mudo)}
.v2-fim p{margin:0}
.v2-fim a{color:var(--terra-txt);display:inline-flex;align-items:center;min-height:24px}
.v2-corpo .guardar{margin:0}
.v2-rodape{width:100%;max-width:680px;margin:0 auto;padding-left:18px;padding-right:18px}
/* a barra fixa: o total grande + IVA, o preço por pessoa, "ver contas" e o botão do ecrã. Sticky no fim do conteúdo (nunca a meio) */
.v2-corpo .v2-total{position:sticky;bottom:0;z-index:10;margin-top:auto;background:var(--papel);color:var(--tinta);border-top:1px solid var(--linha);box-shadow:0 -8px 20px -14px rgba(30,27,23,.35);padding:10px 18px calc(12px + env(safe-area-inset-bottom,0px))}
.v2-total-dentro{max-width:680px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}
.v2-total-txt{min-width:0}
.v2-total-txt p{margin:0}
.v2-corpo .v2-total .total-valor{font:800 24px var(--f-titulo);font-stretch:85%;color:var(--tinta)}
.v2-corpo .v2-total.a-calcular .total-valor{color:var(--mudo);opacity:1}
.v2-corpo .v2-total .total-iva{font-size:11px;font-weight:700;color:var(--mudo)}
.v2-total-linha2{font-size:12.5px;color:var(--mudo)}
.v2-corpo .v2-total .total-pp{flex-basis:auto}
.v2-corpo .v2-total .total-nota{font-size:12.5px;color:var(--mudo);margin-top:2px}
.v2-ver-contas{color:var(--terra-txt)!important;display:inline-flex;align-items:center;min-height:24px}
.v2-folha{display:none;position:fixed;inset:0;z-index:30;background:rgba(30,27,23,.45);align-items:flex-end;justify-content:center}
.v2-folha:target,.v2-folha.aberta{display:flex}
.v2-folha.fechada{display:none}                                   /* Sessão AD: fechada pelo JS, mesmo com o `:target` */
.v2-folha-dentro{background:var(--papel);color:var(--tinta);width:100%;max-width:680px;max-height:82vh;overflow-y:auto;border-radius:16px 16px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom,0px));display:grid;gap:10px}
.v2-folha-cab{display:flex;justify-content:space-between;align-items:center;gap:12px}
.v2-folha-cab h2{font-size:22px;margin:0}
.v2-fechar{color:var(--terra-txt);display:inline-flex;align-items:center;min-height:44px;padding:0 6px}
.v2-corpo .v2-folha .total-espaco{color:var(--mudo);flex-basis:auto}
@media(min-width:900px){.v2-corpo{font-size:16px}.v2-hero{aspect-ratio:21/9}}
/* X2-05 (Sessão Z): acessibilidade. Contraste de pelo menos 4,5:1 no texto pequeno (WCAG 1.4.3) nos campos partilhados que a v2 ainda
   usa (a sala), foco visível em tudo, também nas datas, e alvos de 24 px (WCAG 2.5.8). */
.v2-corpo .amb-gama legend,.v2-corpo .amb-onde legend,.v2-corpo .espaco-opcoes legend{color:var(--tinta)}
.v2-corpo .kicker,.v2-corpo .ferramenta-linha{color:#9C4B28}
.artigo .v{color:#5A5E43;border-color:#5A5E43}
.g-foto,.n-bar,.formato .inclui{color:#5A5E43}
.foto-ilustrativa .ilustrativa{background:rgba(30,27,23,.88)}
input[type=date]:focus,input[type=date]:focus-within,input[type=date]:focus-visible{outline:2px solid #9C4B28;outline-offset:2px}
.reserva a:focus-visible,.reserva button:focus-visible,.reserva select:focus-visible,.reserva summary:focus-visible,.reserva input:focus-visible,.reserva textarea:focus-visible{outline:2px solid #9C4B28;outline-offset:2px}
.rodape a,.v2-corpo p.small a{display:inline-flex;align-items:center;min-height:24px}
.bar-pacotes select,label select{min-height:44px;height:44px}       /* o WebKit só respeita a altura com `height` */
/* o que a app acertou sozinha noutro ecrã (o bar que já não cabe, os pratos do tipo antigo): uma nota, não um erro */
.v2-nota{background:var(--oliva-suave);border-left:3px solid #5A5E43;border-radius:0 8px 8px 0;padding:8px 12px;margin:0;color:var(--tinta);font-size:14px}
/* o erro ligado ao campo (aria-describedby): o campo assinala-se também sem cor */
.reserva [aria-invalid=true]{border-color:#B3261E;box-shadow:0 0 0 1px #B3261E}
.v2-corpo .erro{color:#9C2A1E;font-weight:600}
.v2-corpo .erros li{border-radius:8px}
/* Sessão AD: a ajuda, numa folha como a das contas (abre por `:target` sem JS) */
.v2-ajuda-bloco{display:grid;gap:6px}
.v2-ajuda-bloco h3{font-size:17px;margin:6px 0 0}
.v2-ajuda-bloco p{margin:0;font-size:14px}
.v2-folha-ajuda a{color:var(--terra-txt)}
.v2-folha-ajuda .v2-cta-sec{color:var(--tinta);text-decoration:none}
.v2-pergunta p{margin:0 0 10px;font-size:14px;color:var(--tinta)}

/* a página do pedido depois de pedir (Sessão AF, `reserva_v2/estado.html`): os blocos e as contas do ecrã do pedido, sem o "Alterar";
   o aceitar e o sinal (partilhados com os 8 passos, só com proposta) com os cartões e o botão da v2 */
.v2-numero{margin:6px 0 0}
.v2-pedido-feito{display:grid;gap:18px}
.v2-pedido-feito .v2-blocos .r-rot{display:block}            /* "Pratos: …" numa linha só */
.v2-estado-acoes{display:grid;gap:10px;justify-items:start}
.v2-estado-acoes form{margin:0}
.v2-e-estado .caixa.passo.aceitar,.v2-e-estado .caixa.passo.sinal-dados{background:var(--papel);border:1px solid var(--linha);border-radius:var(--r);padding:16px;margin:0}
.v2-e-estado .caixa .cta{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 20px;border:0;border-radius:8px;background:var(--cta);color:#fff;font:700 15px var(--f-texto);letter-spacing:0;text-transform:none}
.v2-e-estado .caixa .cta:hover{background:var(--cta2)}

/* AD desktop. Sessão AD: o computador (a partir de 1024 px), sem mudar o telemóvel: tudo o que vem abaixo vive neste bloco. A ordem do
   HTML é a ordem visual (o teclado segue-a): o topo e o conteúdo à esquerda, o cartão do total à direita (o mesmo `aside#total-barra`,
   que o `reserva-calculo.js` procura pelo id: nunca duplicado). Nada de transform, filter, contain nem will-change nos antepassados das
   folhas (são `position:fixed`). Padrão da maquete e dos concorrentes do estudo Q: o ecrã e o resumo fixo lado a lado. */
@media (min-width: 1024px){
  .v2-corpo{--larg:1200px;--gutter:32px;font-size:16px}
  .v2-cab{padding:12px max(var(--gutter),calc((100vw - var(--larg)) / 2 + var(--gutter))) 10px}
  .v2-main{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;column-gap:48px;width:100%;max-width:var(--larg);margin:0 auto;padding:0 var(--gutter)}
  .v2-topo,.v2-conteudo{max-width:none;padding-left:0;padding-right:0}
  .v2-rodape{max-width:var(--larg);padding-left:var(--gutter);padding-right:var(--gutter)}
  .v2-corpo h1{font-size:44px}
  .v2-corpo .lead{font-size:16px}
  /* a escolha (Sessão AF): o "Montar" maior à esquerda e a caixa à direita, alinhados em cima, nenhum esticado; os 5 tipos numa
     grelha de 6 colunas (os 3 primeiros com 2, os 2 últimos com 3: sem buracos) */
  .v2-e-escolha .v2-main{max-width:1120px}
  .v2-escolha{grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:24px;align-items:start}
  .v2-montar,.v2-descrever{padding:20px}
  .v2-montar-foto{margin:-20px -20px 0;aspect-ratio:4/1}
  .v2-tipos-escolha{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
  .v2-tipos-escolha>li{grid-column:span 2}
  .v2-tipos-escolha>li:nth-child(n+4):nth-last-child(-n+2){grid-column:span 3}
  /* menos tipos (os que servem para as pessoas): 4 e 2 em metades, 1 a toda a largura; 3 ficam em terços */
  .v2-tipos-escolha>li:first-child:nth-last-child(4),.v2-tipos-escolha>li:first-child:nth-last-child(4)~li,
  .v2-tipos-escolha>li:first-child:nth-last-child(2),.v2-tipos-escolha>li:first-child:nth-last-child(2)~li{grid-column:span 3}
  .v2-tipos-escolha>li:only-child{grid-column:1 / -1}
  .v2-tipo-escolha{height:100%;grid-template-columns:minmax(0,1fr);align-content:start;gap:8px;padding:0 0 10px;overflow:hidden}
  .v2-tipo-escolha .v2-mini{width:100%;height:96px;border-radius:0}
  .v2-tipo-escolha .v2-cartao-txt{padding:0 12px}
  .v2-tipo-escolha:not(:has(img)){padding:10px 12px}
  .v2-montar>.v2-cta{justify-self:start;width:auto;min-width:280px}
  /* os contactos: a foto, o título e as garantias à esquerda; o formulário à direita, tudo à vista a 1366x800 */
  .v2-e-contactos .v2-main{grid-template-columns:minmax(0,1fr) minmax(0,460px);grid-template-areas:"topo corpo";column-gap:56px;padding-top:18px}
  .v2-e-contactos .v2-topo{grid-area:topo;padding-top:0;align-self:start}
  .v2-e-contactos .v2-conteudo{grid-area:corpo;padding-top:0;padding-bottom:24px;gap:14px}
  .v2-e-contactos .v2-hero{aspect-ratio:4/3;margin-bottom:20px}
  .v2-e-contactos .v2-garantias{margin-top:16px}
  .v2-contactos .v2-h2{margin-top:0}
  .v2-contactos .campos{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
  .v2-contactos .rgpd{margin-top:10px}
  .v2-contactos .v2-acoes{margin-top:14px}
  .v2-fim-escrever{margin-top:10px}
  /* os ecrãs com preço: o conteúdo à esquerda e o cartão do total à direita, fixo enquanto se desce */
  .v2-com-total .v2-main{grid-template-columns:minmax(0,1fr) 340px;grid-template-areas:"topo total" "corpo total"}
  .v2-com-total .v2-topo{grid-area:topo}
  .v2-com-total .v2-conteudo{grid-area:corpo;padding-bottom:40px}
  html:has(.v2-corpo .v2-total){scroll-padding-bottom:0}
  .v2-corpo .v2-total{grid-area:total;align-self:start;position:sticky;top:16px;bottom:auto;margin:16px 0 40px;padding:20px;border:1px solid var(--linha);border-radius:14px;box-shadow:0 10px 30px -18px rgba(30,27,23,.45)}
  .v2-total-dentro{max-width:none;grid-template-columns:minmax(0,1fr);gap:16px}
  .v2-corpo .v2-total .total-valor{font-size:34px}
  .v2-corpo .v2-total .total-iva{font-size:12px}
  .v2-total-linha2{font-size:14px;margin-top:4px}
  .v2-total-linha2 .total-pp:not([hidden]){display:block}            /* com `hidden` (sem preço por pessoa) continua escondida */
  .v2-total-sep{display:none}
  .v2-corpo .v2-total .total-nota{font-size:13px;margin-top:8px}
  .v2-total .v2-cta{width:100%}
  /* as folhas (as contas e a ajuda): ao centro, como um diálogo */
  .v2-folha{align-items:center;padding:24px}
  .v2-folha-dentro{max-width:600px;border-radius:16px;max-height:86vh;padding:24px}
  /* os tipos, a comida, os níveis, o bar e os extras em grelha, com a foto maior no topo do cartão */
  .v2-corpo .formatos-lista,.v2-corpo .comidas,.v2-corpo .bar-pacotes,.v2-corpo .amb-extras{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
  .v2-corpo .niveis{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .v2-corpo .formatos-lista>:not(label),.v2-corpo .comidas>:not(label),.v2-corpo .niveis>:not(label),.v2-corpo .bar-pacotes>:not(label),
  .v2-corpo .amb-extras>:not(label),.v2-corpo .bar-pacotes>.v2-horas{grid-column:1 / -1}
  .v2-corpo .bar-pacotes>.v2-horas{max-width:240px}
  .v2-cartao{align-items:start}
  .v2-cartao:not(.v2-opcao-txt){grid-template-columns:minmax(0,1fr);padding:0 0 14px;overflow:hidden;gap:10px}
  .v2-cartao:not(.v2-opcao-txt) .v2-mini{width:100%;height:auto;aspect-ratio:3/2;border-radius:0}
  .v2-cartao:not(.v2-opcao-txt) .v2-cartao-txt{padding:0 14px}
  .v2-cartao:not(.v2-opcao-txt)::after{top:10px;right:10px;box-shadow:0 0 0 2px rgba(255,255,255,.9)}
  .v2-cartao.v2-opcao-txt{height:100%}
  .v2-nivel-linha{flex-direction:column;align-items:flex-start;gap:2px}
  /* o menu: os pratos de cada secção em 2 colunas, por linhas (a ordem do HTML). As secções ficam a toda a largura: em 2 colunas, abrir
     e fechar uma deixava buracos ao lado da outra */
  .v2-seccao ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:18px}
  /* a sala: as opções em grelha */
  .v2-sala .amb-onde,.v2-sala .amb-gama,.v2-sala .espaco-opcoes{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
  .v2-sala .amb-onde>:not(label),.v2-sala .amb-gama>:not(label),.v2-sala .espaco-opcoes>:not(label){grid-column:1 / -1}
  /* o pedido: o telefone e as notas lado a lado */
  .v2-submeter{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .v2-submeter>.v2-acoes{grid-column:1 / -1}
}
/* o pedido, com espaço: o resumo e as contas lado a lado (a partir de 1280 px a coluna do conteúdo tem mais de 760 px) */
@media (min-width: 1280px){
  .v2-pedido{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;align-items:start}
  .v2-pedido>*{grid-column:1 / -1}
  .v2-pedido>.v2-blocos{grid-column:1}
  .v2-pedido>.v2-contas-bloco{grid-column:2}
  .v2-corpo .niveis{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* ADR-011: vários menus no mesmo pedido (a lista «Os seus menus», «Juntar outro menu» e o ecrã de um menu extra) */
.v2-botao-padrao{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}   /* o botão que o Enter carrega: o «Continuar» */
.v2-programa,.v2-juntar{display:grid;gap:10px;margin-top:20px;min-width:0}
.v2-juntar .aviso{margin:0}
.v2-menus{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.v2-menu-linha{display:grid;gap:4px;min-width:0;border:1px solid var(--linha);border-radius:var(--r);background:var(--papel);padding:12px 14px}
.v2-menu-linha p{margin:0}
.v2-menu-topo{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.v2-menu-acoes{display:flex;align-items:center;gap:4px 16px;flex-wrap:wrap;margin-top:6px}
.v2-cta-txt{min-height:44px;padding:0 4px;border:0;background:none;color:var(--terra-txt);font:600 15px var(--f-texto);text-decoration:underline;cursor:pointer}
.v2-juntar-lista{display:grid;gap:8px}
.v2-juntar-lista .v2-cta{justify-content:flex-start;text-align:left}
.v2-juntar-maximo{margin-top:16px}
.v2-momento{border:0;padding:0;margin:0 0 8px;display:grid;gap:8px;min-width:0}
.v2-momento-campos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end;margin-top:6px}
.v2-momento-campos label{display:grid;gap:4px;font-size:14px;min-width:0}
.v2-momento-campos select,.v2-momento-campos input{width:100%;height:48px;min-height:48px}
.v2-momento-pax{grid-column:1 / -1}
.v2-tirar{margin:8px 0 0}
@media (min-width:600px){
  .v2-juntar-lista{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v2-momento-pax{grid-column:auto}
  .v2-momento-campos{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* 30-10: o ajuste escrito pelo cliente de um pedido só da equipa */
.pedir-ajuste { display: grid; gap: 8px; margin: 0 0 12px; }
.pedir-ajuste textarea { width: 100%; box-sizing: border-box; font: inherit; min-height: 6em; }
