:root{
  --bg:#050505;
  --bg2:#0b0b0b;
  --panel:#0f0f0f;
  --panel2:#171717;
  --line:#3e3420;
  --line-soft:#2a2417;
  --text:#f7f2e8;
  --muted:#c6bba4;
  --gold:#cfa85c;
  --gold-strong:#e0bf7e;
  --gold-soft:#8d7441;
  --ok:#d5f1dc;
  --bad:#ffd0d0;
  --radius:22px;
}
*{box-sizing:border-box}
html{color-scheme:dark}
body{margin:0;background:#050505;color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh;overflow-x:hidden}
a{color:inherit}.shell{width:min(1050px,92vw);margin:auto;padding:28px 0 70px}.shell.narrow{width:min(650px,92vw)}
.brand{margin:8px auto 34px;text-align:center;width:100%}.brand img{display:block;width:min(420px,82vw);max-width:100%;height:auto;margin:0 auto}.brand.compact img{width:min(280px,68vw)}.brand-sub{margin-top:10px;color:var(--muted);font-size:11px;letter-spacing:.38em;text-transform:uppercase}
.hero{padding:8px 0 28px}.eyebrow{text-transform:uppercase;letter-spacing:.3em;font-size:11px;color:var(--gold-strong)}.hero h1{font:500 clamp(52px,9vw,104px)/.84 Georgia,serif;letter-spacing:-.045em;margin:0 0 10px}.hero h1 em{display:block;color:var(--gold);font-weight:500}.hero p{font:500 clamp(20px,3vw,30px)/1.2 Georgia,serif;max-width:720px;color:#f5ead7}.eventdate{text-transform:uppercase;letter-spacing:.22em;font-size:12px;color:var(--muted)}
.prices{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:28px 0}.price,.zonebox{border:1px solid var(--line);background:linear-gradient(180deg,#17130c,#0d0d0d);border-radius:16px;padding:19px 12px;text-align:center;box-shadow:0 12px 32px rgba(0,0,0,.25)}.price b{display:block;font-size:13px;color:#f2e8d7}.price strong{display:block;font:500 29px Georgia,serif;color:var(--gold-strong);margin-top:7px}
.panel{background:linear-gradient(180deg,#131313,#0b0b0b);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(20px,4vw,38px);box-shadow:0 25px 75px rgba(0,0,0,.5);margin-bottom:18px}.panel h1,.panel h2{font-family:Georgia,serif;font-weight:500;margin-top:0}.panel h1{text-align:center;font-size:38px;color:#fff7ea}.muted{color:var(--muted);line-height:1.6}.center{text-align:center}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.full{grid-column:1/-1}label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.13em;color:var(--gold-strong);margin:0 0 7px 4px}
input,select,textarea{width:100%;border:1px solid var(--line);background:#0d0d0d;color:#fff;border-radius:13px;padding:14px 15px;font:500 15px Inter,system-ui,sans-serif;outline:0;margin-bottom:13px}input:focus,select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(207,168,92,.18)}textarea{min-height:100px;resize:vertical}
.zones{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:14px}.zone{position:relative}.zone input{position:absolute;opacity:0}.zone span{display:flex;min-height:84px;flex-direction:column;justify-content:center;text-align:center;border:1px solid var(--line);background:#111111;border-radius:13px;cursor:pointer}.zone span b{font-size:12px;color:#f2e8d7}.zone span em{font:500 22px Georgia,serif;color:var(--gold-strong);font-style:normal;margin-top:6px}.zone input:checked+span{border-color:var(--gold);background:#1a1610;box-shadow:0 0 0 3px rgba(207,168,92,.16)}
.consent{display:flex;align-items:flex-start;gap:9px;text-transform:none;letter-spacing:0;color:#d2c7b4;font-size:12px;line-height:1.45;margin:4px 0 16px}.consent input{width:18px;height:18px;margin:1px 0 0;flex:0 0 auto}
.button,button{display:inline-block;border:0;border-radius:13px;padding:14px 18px;background:linear-gradient(90deg,var(--gold),var(--gold-strong));color:#17120a;font-weight:800;text-decoration:none;cursor:pointer;box-shadow:0 10px 22px rgba(207,168,92,.18)}.button.secondary{background:#191919;color:#f1e7d6;border:1px solid var(--line)}.button.danger{background:#462327;color:#ffd6d6}.button.small{padding:9px 11px;font-size:12px}.wide{width:100%;text-align:center}
.notice{padding:13px 15px;border-radius:12px;margin:12px 0}.notice.ok{background:rgba(207,168,92,.09);color:#f5e5bf;border:1px solid #735a2a}.notice.error{background:#59282d55;color:var(--bad);border:1px solid #784049}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}.bank{background:#0b0b0b;border:1px solid var(--line);border-radius:14px;padding:18px;line-height:1.8}
.big-status{text-align:center;padding:18px;border-radius:14px;font-weight:800;letter-spacing:.04em;margin:14px 0}.big-status.confirmed{background:rgba(43,92,58,.36);color:#d7f2df}.big-status.pending{background:rgba(116,89,33,.34);color:#f2ddb0}.big-status.cancelled{background:#5d282d59;color:#ffd0d0}
.adminbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:15px 0 22px}.stat{background:#101010;border:1px solid var(--line);border-radius:14px;padding:14px}.stat b{font-size:24px;color:#fff2d5}.stat span{display:block;color:var(--muted);font-size:11px;margin-top:4px}
.rescard{background:#0d0d0d;border:1px solid var(--line);border-radius:17px;padding:18px;margin:12px 0}.reshead{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.reshead h3{margin:0;font-size:18px}.pill{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;border-radius:999px;padding:7px 9px;background:#1b1710;color:#f0dfb9;border:1px solid var(--line)}.meta{display:flex;gap:8px 18px;flex-wrap:wrap;color:#d0c1a6;font-size:12px;margin:10px 0 14px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.actions form{display:flex;gap:7px;align-items:end;flex-wrap:wrap;margin:0}.actions input{width:145px;margin:0;padding:9px 10px}
.search{display:flex;gap:8px}.search input{margin:0;min-width:240px}.qrwrap{background:#fff;border-radius:18px;padding:18px;width:fit-content;margin:20px auto}.qrwrap canvas,.qrwrap img{display:block}
.tablehero{text-align:center;font:600 clamp(48px,13vw,98px)/1 Georgia,serif;color:var(--gold-strong);margin:10px 0}.details{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detail{background:#090909;border:1px solid var(--line-soft);border-radius:12px;padding:13px}.detail span{display:block;color:#b59b6a;font-size:10px;text-transform:uppercase;letter-spacing:.13em;margin-bottom:5px}.detail b{font-size:16px;color:#fff6e5}.footer{text-align:center;color:#a79572;font-size:10px;letter-spacing:.18em;text-transform:uppercase;padding:25px}.loginbox{max-width:460px;margin:70px auto}.checkhero{text-align:center}.checkhero h1{font-size:42px}.checktime{font-size:28px;color:var(--ok);font-weight:800}
@media(max-width:760px){.shell{width:min(92vw,650px)}.prices,.zones{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.full{grid-column:auto}.stats{grid-template-columns:1fr 1fr}.details{grid-template-columns:1fr}.search{width:100%}.search input{min-width:0;flex:1}.reshead{flex-direction:column}.brand{margin-bottom:26px}.brand img{width:min(300px,78vw);max-width:100%}.brand.compact img{width:min(220px,64vw);max-width:100%}}


/* Rentrée hero — identidade Plateau */
.hero-centered{text-align:center;padding:8px 0 34px}
.hero-centered h1{margin:8px 0 18px;font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:clamp(64px,12vw,132px);line-height:.9;letter-spacing:.055em;color:#f4e2b6;text-shadow:0 0 28px rgba(207,168,92,.14)}
.hero-tagline{margin:0 auto 20px!important;max-width:720px!important;font-family:Inter,system-ui,sans-serif!important;font-size:clamp(15px,2.5vw,22px)!important;font-weight:500!important;line-height:1.45!important;letter-spacing:.13em;text-transform:uppercase;color:#e5d4ad!important}
.hero-date{font-family:Georgia,"Times New Roman",serif;font-size:clamp(28px,5vw,48px);letter-spacing:.12em;color:var(--gold-strong);margin-top:8px}
.hero-time{font-size:13px;letter-spacing:.28em;text-transform:uppercase;color:#f4ead7;margin-top:7px}
.hero-reserve{margin:34px auto 6px;font-family:Georgia,"Times New Roman",serif;font-size:clamp(22px,3.8vw,34px);line-height:1.2;color:#fff7ea;max-width:720px}
.table-note{text-align:center;color:#d2c4a8;font-size:13px;letter-spacing:.03em;margin:0 auto 4px}
@media(max-width:760px){
  .hero-centered h1{font-size:clamp(54px,17vw,84px);letter-spacing:.035em}
  .hero-tagline{font-size:13px!important;letter-spacing:.10em}
  .hero-date{font-size:31px}
  .hero-reserve{margin-top:28px;font-size:25px}
  .table-note{font-size:12px;line-height:1.45;max-width:330px}
}

/* Correção de layout e cache — Rentrée */
.shell{max-width:1050px;width:92vw;margin-left:auto;margin-right:auto}
.hero,.panel{width:100%}
.hero-centered{max-width:900px;margin:0 auto;text-align:center}
.hero-centered .prices{width:100%}
@media(max-width:760px){
  .shell{width:92vw;max-width:650px;padding-top:22px}
  .hero-centered{width:100%}
  .hero-centered h1{font-size:clamp(48px,16vw,74px)}
  .prices,.zones{width:100%}
  .panel{width:100%;padding:22px 18px}
}


/* =====================================================================
   RESERVAS PERMANENTES — calendário, croqui de mesas e guest list
   ===================================================================== */

/* navegação da equipa */
.adminnav{display:flex;gap:6px;flex-wrap:wrap}
.navlink{display:inline-block;padding:9px 13px;border:1px solid var(--line);border-radius:12px;background:#121212;color:#e9ddc6;font-size:12px;text-decoration:none;letter-spacing:.04em}
.navlink.active{background:linear-gradient(90deg,var(--gold),var(--gold-strong));color:#17120a;font-weight:800;border-color:transparent}
.navlink:hover{border-color:var(--gold)}

/* filtros e chips */
.filters{display:flex;gap:7px;flex-wrap:wrap}
.chip{display:inline-block;padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:#101010;color:#e4d7bd;font-size:12px;text-decoration:none}
.chip.active{background:#1d1709;border-color:var(--gold);color:#ffeec4;font-weight:700}
.chip:hover{border-color:var(--gold-soft)}
.tag{color:#9f8d6c;font-size:11px;letter-spacing:.06em;text-transform:uppercase}
.metadate{color:#ffeec4;font-weight:700}

/* datas rápidas */
.quickdates{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.quickdate{display:flex;flex-direction:column;gap:3px;background:#101010;border:1px solid var(--line);border-radius:14px;padding:12px 8px;color:#f0e4cc;box-shadow:none;cursor:pointer}
.quickdate b{font-size:12px}
.quickdate span{font-size:11px;color:var(--muted)}
.quickdate.active{border-color:var(--gold);background:#1a1509}

/* calendário */
.calendar{background:#0b0b0b;border:1px solid var(--line);border-radius:18px;padding:16px;margin:0 auto 14px;max-width:560px}
.calhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.calmonth{font:500 19px Georgia,serif;color:#fff3dd;text-align:center;flex:1}
.calnav{background:#161616;border:1px solid var(--line);color:#f0e2c6;border-radius:10px;width:40px;height:40px;padding:0;font-size:20px;box-shadow:none;cursor:pointer}
.calnav:disabled{opacity:.3;cursor:default}
.calweek,.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.calweek span{text-align:center;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#9c8a68;padding-bottom:4px}
.cal-day,.cal-empty{display:flex;align-items:center;justify-content:center;height:46px;border-radius:12px;font-size:15px;border:1px solid transparent}
.cal-empty{background:transparent}
.cal-available{background:#17130a;border-color:var(--gold-soft);color:#ffe9bd;font-weight:700;cursor:pointer;box-shadow:none}
.cal-available:hover{border-color:var(--gold);background:#221b0c}
.cal-available.selected{background:linear-gradient(90deg,var(--gold),var(--gold-strong));color:#17120a;border-color:transparent}
.cal-full{background:#1b1113;color:#c79a9a;text-decoration:line-through}
.cal-closed{background:#161616;color:#8e8e8e;text-decoration:line-through}
.cal-off,.cal-past,.cal-invalid{background:#0e0e0e;color:#4f4a40}
.callegend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:14px;font-size:11px;color:var(--muted)}
.callegend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}
.callegend .dot.ok{background:var(--gold)}
.callegend .dot.full{background:#7d4a4a}
.callegend .dot.off{background:#3a382f}

/* zonas esgotadas no formulário */
.zone span i.zonefree{display:block;font-style:normal;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#9f8d6c;margin-top:5px;min-height:12px}
.zone.soldout span,.zone span.soldout{opacity:.42}
.zone input:disabled+span{cursor:not-allowed}

/* passos "como funciona" */
.steps{color:var(--muted);line-height:1.75;padding-left:20px;margin:0 0 14px}
.steps li{margin-bottom:6px}
.steps b{color:#f3e4c6}

/* croqui de mesas — planta da sala.
   Zonas reserváveis: Atrás do DJ, VIP, Privado e Mesas Altas / Pista.
   Elementos físicos (cabine, bares, entrada, pilares, escadas) são só
   referências e nunca recebem reservas. */
.croqui{display:grid;grid-template-columns:1fr 1.3fr 1.3fr 1fr;
  grid-template-areas:
    "zdj zdj zdj zdj"
    "djb djb djb djb"
    "zvip pista pista zpriv"
    "bar2 pista pista bar3"
    "zaltas zaltas zaltas zaltas"
    ". wc entrada bar1";
  gap:10px;background:#0a0a0a;border:1px solid var(--line);border-radius:20px;padding:16px;margin-top:20px}
.croqui-zone{background:#0e0e0e;border:1px solid var(--line-soft);border-radius:16px;padding:14px}
.croqui-zone.zdj{grid-area:zdj}
.croqui-zone.zvip{grid-area:zvip}
.croqui-zone.zpriv{grid-area:zpriv}
.croqui-zone.zaltas{grid-area:zaltas}
.croqui-zone.cz-extra{grid-column:1/-1}
.croqui-zonehead{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px}
.croqui-zonehead b{font-size:13px;color:#f3e6cc;letter-spacing:.04em}
.croqui-zonehead span{font-size:11px;color:var(--muted)}
.croqui-tables{display:flex;gap:8px;flex-wrap:wrap}
.croqui-table{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:62px;min-height:58px;padding:7px 6px;border-radius:12px;border:1px solid var(--line);background:#141414;text-align:center}
.croqui-table b{font:600 17px Georgia,serif;color:#fff3dd}
.croqui-table span{font-size:9px;line-height:1.2;color:#cdbfa4;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t-free{border-color:#2f4a35;background:#101a12}
.t-free b{color:#cfe8d4}
.t-pending{border-color:#6d5a2a;background:#1d1708}
.t-awaiting{border-color:#8a6a24;background:#241a07}
.t-confirmed{border-color:var(--gold);background:#2a2008}
.t-checked{border-color:#4f7f5e;background:#132118}
.t-off{border-color:#303030;background:#0d0d0d;opacity:.5}

/* elementos físicos — tracejado, sem mesas, não reserváveis */
.croqui-landmark{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;padding:10px 8px;border:1px dashed #413a2a;border-radius:13px;background:#0c0c0c;text-align:center}
.croqui-landmark b{font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:#9b8d72}
.croqui-landmark small{font-size:10px;color:#6f6757;letter-spacing:.02em}
.lm-dj{grid-area:djb;border-color:var(--gold-soft);background:linear-gradient(180deg,#1d1709,#0f0c06)}
.lm-dj b{color:var(--gold-strong);letter-spacing:.3em}
.lm-bar1{grid-area:bar1}
.lm-bar2{grid-area:bar2}
.lm-bar3{grid-area:bar3}
.lm-entrada{grid-area:entrada}
.lm-wc{grid-area:wc}

/* pista central */
.croqui-pista{grid-area:pista;position:relative;display:flex;align-items:center;justify-content:center;min-height:120px;border:1px dashed #332d20;border-radius:16px;background:radial-gradient(circle at 50% 50%,#17130c 0%,#0b0b0b 72%)}
.pista-label{font:500 13px Inter,system-ui,sans-serif;letter-spacing:.34em;text-transform:uppercase;color:#8d8370}
.pilar{position:absolute;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:4px;background:#2b2b2b;border:1px solid #454034}
.croqui-pista .pilar:nth-of-type(1){left:28%}
.croqui-pista .pilar:nth-of-type(2){right:28%}

.croquilegend{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;font-size:11px;color:var(--muted)}
.croquilegend .sq{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:middle;border:1px solid var(--line)}
.croquilegend .sq-landmark{border:1px dashed #413a2a;background:#0c0c0c}

/* atribuição de mesas */
.assignform{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}
.tablepick{display:flex;gap:6px;flex-wrap:wrap}
.tablechip{position:relative;margin:0}
.tablechip input{position:absolute;opacity:0;width:0;height:0}
.tablechip span{display:flex;align-items:center;justify-content:center;min-width:42px;height:42px;border:1px solid var(--line);border-radius:11px;background:#121212;color:#efe2c8;font-weight:700;cursor:pointer}
.tablechip input:checked+span{background:linear-gradient(90deg,var(--gold),var(--gold-strong));color:#17120a;border-color:transparent}
.tablechip.disabled span{opacity:.3;cursor:not-allowed;text-decoration:line-through}

/* listas de mesas e datas especiais */
.tablelist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.tablerow{display:flex;align-items:center;gap:10px;background:#0d0d0d;border:1px solid var(--line-soft);border-radius:12px;padding:10px 12px;margin:0 0 8px}
.tablerow form{margin:0}
.tablerow-num{font:600 17px Georgia,serif;color:var(--gold-strong);min-width:34px}
.tablerow-num.off{color:#6d6d6d;text-decoration:line-through}
.tablerow-zone{font-size:12px;color:#e3d6bd;flex:1}

/* guest list */
.guestdate{text-align:center;font:500 clamp(22px,5vw,34px)/1.2 Georgia,serif;color:var(--gold-strong);margin:0 0 14px}
.guestlist{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.guestrow{display:flex;align-items:center;gap:10px;background:#0d0d0d;border:1px solid var(--line-soft);border-radius:13px;padding:11px 13px;flex-wrap:wrap}
.guestrow.arrived{border-color:#3f6b4c;background:#0f1711}
.guestrow form{margin:0}
.guestnum{font:600 14px Georgia,serif;color:#a8966f;min-width:22px}
.guestname{flex:1;min-width:150px;display:flex;flex-direction:column;gap:2px}
.guestname b{font-size:15px;color:#fff4e2}
.guestname em{font-style:normal;color:var(--gold-strong);font-size:13px}
.guestname small{color:#9c8d73;font-size:11px}
.linkrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
.linkrow form{margin:0}
.linkfield{flex:1;min-width:220px;margin:0;font-size:12px;padding:11px 12px;color:#d8cbb2}
.hiddenarea{position:absolute;left:-9999px;top:0;width:1px;height:1px;opacity:0}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}

@media(max-width:760px){
  .quickdates{grid-template-columns:1fr 1fr}
  .croqui{grid-template-columns:1fr;grid-template-areas:"zdj" "djb" "zvip" "pista" "zpriv" "bar2" "bar3" "zaltas" "bar1" "entrada" "wc"}
  .adminnav{width:100%}
  .navlink{flex:1;text-align:center}
  .cal-day,.cal-empty{height:40px;font-size:14px;border-radius:10px}
  .calweek,.calgrid{gap:4px}
  .assignform{align-items:flex-start}
}

/* dias de abertura nas definições */
.daypick{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-bottom:12px}
.daychip{position:relative;margin:0}
.daychip input{position:absolute;opacity:0;width:0;height:0}
.daychip span{display:flex;align-items:center;justify-content:center;min-height:46px;padding:6px 4px;border:1px solid var(--line);border-radius:12px;background:#111;color:#e6d9c0;font-size:12px;text-align:center;cursor:pointer}
.daychip input:checked+span{background:linear-gradient(90deg,var(--gold),var(--gold-strong));color:#17120a;font-weight:800;border-color:transparent}
@media(max-width:760px){.daypick{grid-template-columns:repeat(4,1fr)}}


/* =====================================================================
   O ESPAÇO — exploração pública das zonas
   Nunca mostra o número real de mesas: só Disponível / Últimas mesas /
   Esgotado. A contagem real vive só na área da equipa (mesas.php).
   ===================================================================== */

.nightpick{margin-bottom:22px}
.nightpick .filters{justify-content:center}

.planta{display:grid;grid-template-columns:1fr 1.25fr 1.25fr 1fr;
  grid-template-areas:
    "zdj zdj zdj zdj"
    "djb djb djb djb"
    "zvip pista pista zpriv"
    "bar2 pista pista bar3"
    "zaltas zaltas zaltas zaltas"
    ". wc entrada bar1";
  gap:12px;background:radial-gradient(circle at 50% 30%,#121009 0%,#070707 70%);border:1px solid var(--line);border-radius:22px;padding:18px}

.planta-zona{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0 0 14px;border:1px solid var(--line);border-radius:18px;background:#0e0e0e;color:var(--text);text-align:left;overflow:hidden;cursor:pointer;box-shadow:none;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.planta-zona.zdj{grid-area:zdj}
.planta-zona.zvip{grid-area:zvip}
.planta-zona.zpriv{grid-area:zpriv}
.planta-zona.zaltas{grid-area:zaltas}
.planta-zona.cz-extra{grid-column:1/-1}
.planta-zona:hover,.planta-zona:focus-visible{transform:translateY(-3px);border-color:var(--gold);box-shadow:0 16px 34px rgba(0,0,0,.5)}
.planta-zona.active{border-color:var(--gold);box-shadow:0 0 0 2px rgba(207,168,92,.22)}

.pz-foto{display:flex;align-items:center;justify-content:center;width:100%;height:96px;margin-bottom:10px;background-size:cover;background-position:center;background-color:#141108;background-image:linear-gradient(135deg,#1d1810 0%,#0d0d0d 100%)}
.pz-foto i{font:400 40px Georgia,serif;font-style:normal;color:rgba(207,168,92,.34)}
.planta-zona .pz-nome{padding:0 14px;font:500 17px Georgia,serif;color:#fff5e4;letter-spacing:.01em}
.planta-zona .pz-preco{padding:0 14px;font:500 15px Georgia,serif;color:var(--gold-strong)}
.planta-zona .pz-preco em{font-style:normal;font-size:11px;color:var(--muted);letter-spacing:.06em}
.pz-estado{margin:6px 14px 0;padding:5px 10px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}

.e-ok{background:rgba(72,122,88,.22);color:#cfe8d4;border:1px solid #395a43}
.e-last{background:rgba(207,168,92,.14);color:#f3dfb2;border:1px solid var(--gold-soft)}
.e-full{background:rgba(120,64,73,.3);color:#ffd0d0;border:1px solid #784049}
.e-closed{background:#161616;color:#9b9b9b;border:1px solid #333}

.planta-zona.st-full .pz-foto,.planta-zona.st-closed .pz-foto{filter:grayscale(1) brightness(.6)}
.planta-zona.st-full .pz-nome,.planta-zona.st-closed .pz-nome{color:#bdb2a0}

.planta-dj{grid-area:djb;display:flex;align-items:center;justify-content:center;min-height:46px;border:1px dashed var(--gold-soft);border-radius:14px;background:linear-gradient(180deg,#1d1709,#0f0c06)}
.planta-dj b{font-size:10px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-strong)}
.planta-pista{grid-area:pista;position:relative;display:flex;align-items:center;justify-content:center;min-height:120px;border:1px dashed #332d20;border-radius:16px;background:radial-gradient(circle at 50% 50%,#17130c 0%,#0b0b0b 72%)}
.planta-pista span{font:500 12px Inter,system-ui,sans-serif;letter-spacing:.34em;text-transform:uppercase;color:#8d8370}
.planta-pista .pilar{position:absolute;top:50%;width:12px;height:12px;margin-top:-6px;border-radius:4px;background:#2b2b2b;border:1px solid #454034}
.planta-pista .pilar:nth-of-type(1){left:28%}
.planta-pista .pilar:nth-of-type(2){right:28%}
.planta-marca{display:flex;align-items:center;justify-content:center;min-height:40px;padding:8px;border:1px dashed #332d20;border-radius:12px;background:#0b0b0b;font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:#7d7362;text-align:center}
.pm-bar1{grid-area:bar1}
.pm-bar2{grid-area:bar2}
.pm-bar3{grid-area:bar3}
.pm-entrada{grid-area:entrada}
.pm-wc{grid-area:wc}

/* detalhe de cada zona */
.js .zona-detalhe{display:none}
.js .zona-detalhe.open{display:block;animation:zdfade .28s ease}
@keyframes zdfade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.zd-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:center}
.zd-foto{display:flex;align-items:center;justify-content:center;min-height:280px;border-radius:16px;background-size:cover;background-position:center;background-color:#111;background-image:linear-gradient(135deg,#1d1810 0%,#0c0c0c 100%);border:1px solid var(--line-soft)}
.zd-foto-vazia{font:400 clamp(20px,3vw,28px) Georgia,serif;color:rgba(207,168,92,.3);text-align:center;padding:20px}
.zd-texto h2{margin:12px 0 10px;font-size:clamp(26px,4vw,36px)}
.zd-estado{display:inline-block;padding:6px 12px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.zd-preco{margin:18px 0 6px;font:500 30px Georgia,serif;color:var(--gold-strong)}
.zd-preco em{font-style:normal;font-size:12px;color:var(--muted);letter-spacing:.05em}
.zd-texto .button{margin-top:18px}
.button.disabled{background:#1a1a1a;color:#8e8577;border:1px solid var(--line);cursor:not-allowed;box-shadow:none;display:block}

@media(max-width:760px){
  .planta{grid-template-columns:1fr;grid-template-areas:"zdj" "djb" "zvip" "pista" "zpriv" "bar2" "bar3" "zaltas" "bar1" "entrada" "wc";padding:12px;gap:10px}
  .pz-foto{height:120px}
  .zd-grid{grid-template-columns:1fr;gap:16px}
  .zd-foto{min-height:200px}
}

/* fotografia geral da sala no topo de "O Espaço" (fotos/sala.jpg) */
.hero-foto{background-size:cover;background-position:center;border-radius:22px;padding:48px 20px 42px;border:1px solid var(--line-soft)}
@media(max-width:760px){.hero-foto{padding:34px 14px 30px}}

/* ===================== aluguer de espaço / orçamentos ===================== */

/* campo-armadilha anti-robô: fora do ecrã, nunca visível ao cliente */
.hpot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

label.sub{text-transform:none;letter-spacing:.02em;font-size:11px;color:var(--muted);margin-bottom:5px}

.datelist{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}

.scopepick{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.scope{position:relative;margin:0}
.scope input{position:absolute;opacity:0}
.scope span{display:flex;flex-direction:column;justify-content:center;gap:4px;min-height:74px;padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:#111111;cursor:pointer}
.scope span b{font-size:13px;color:#f2e8d7}
.scope span em{font-style:normal;font-size:11px;color:var(--muted);line-height:1.4}
.scope input:checked+span{border-color:var(--gold);background:#1a1610;box-shadow:0 0 0 3px rgba(207,168,92,.16)}

.checks{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.check{position:relative;margin:0}
.check input{position:absolute;opacity:0}
.check span{display:flex;align-items:center;min-height:46px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:#111111;color:#e7dcc8;font-size:13px;text-transform:none;letter-spacing:0;cursor:pointer}
.check input:checked+span{border-color:var(--gold);background:#1a1610;color:#fff3dd;box-shadow:0 0 0 3px rgba(207,168,92,.16)}
.check input:focus-visible+span{border-color:var(--gold-soft)}

/* datas pedidas, dentro de cada cartão na área da equipa */
.qdates{margin:14px 0 10px}
.qdate{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:9px 12px;margin-bottom:7px;border:1px solid var(--line);border-left:3px solid #2e2a22;border-radius:11px;background:#0f0f0f}
.qdate b{font-size:13px;color:#f1e6d2;font-weight:600}
.qdate.chosen{border-left-color:var(--gold);background:#17130a}
.qtag{display:inline-block;padding:3px 9px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:#161616;color:#9b9b9b;border:1px solid #333}
.qtag.ok{background:rgba(72,122,88,.22);color:#cfe8d4;border-color:#395a43}
.qtag.warn{background:rgba(120,64,73,.3);color:#ffd0d0;border-color:#784049}

.confirmbox{margin-top:14px;padding:16px;border:1px dashed var(--gold-soft);border-radius:14px;background:#120f08}
.qpick{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:14px}

.blocklist{margin:14px 0 0;padding-left:18px;color:#d6cab5;font-size:13px;line-height:1.7}
.blocklist b{color:#f3e8d4}

@media(max-width:760px){
  .datelist,.scopepick,.checks,.qpick{grid-template-columns:1fr}
}

/* ======================================================================
   REFINAMENTO VISUAL — títulos mais discretos, dourado mais subtil.
   Vem no fim do ficheiro de propósito: sobrepõe-se ao que está acima
   sem apagar nada, por isso é fácil de retirar se não agradar.
   ====================================================================== */

/* --- títulos principais: menos escala, menos peso, sem brilho --- */
.hero-centered h1{
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;
  font-size:clamp(34px,5.4vw,62px);
  line-height:1.08;
  letter-spacing:.005em;
  text-transform:none;
  color:#efe3cc;
  text-shadow:none;
  margin:4px 0 14px;
}

/* --- subtítulo: deixa de ser faixa em caixa alta --- */
.hero-tagline{
  font-family:Georgia,"Times New Roman",serif!important;
  font-size:clamp(14px,1.9vw,18px)!important;
  font-weight:400!important;
  line-height:1.5!important;
  letter-spacing:.012em!important;
  text-transform:none!important;
  color:#b9ab92!important;
  max-width:560px!important;
  margin:0 auto 16px!important;
}

/* --- linha de contexto: pequena, discreta, é só metadado --- */
.hero-time{
  font-family:Inter,system-ui,sans-serif;
  font-size:10px;
  font-weight:500;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:#8a7f6c;
  margin-top:14px;
}

.hero-centered{padding:4px 0 26px}
.hero-foto{padding:40px 20px 36px}
@media(max-width:760px){
  .hero-centered h1{font-size:clamp(30px,8vw,42px)}
  .hero-foto{padding:30px 14px 26px}
}

/* --- títulos dentro dos painéis, na mesma escala sóbria --- */
.panel h1{font-size:clamp(24px,3.4vw,30px);font-weight:400;letter-spacing:.005em;color:#f0e5d2}
.panel h2{font-size:19px;font-weight:400;letter-spacing:.005em;color:#ece0ca}

/* --- dourado mais subtil: tirar o glow, suavizar os cheios --- */
.button,button{
  font-weight:600;
  letter-spacing:.015em;
  background:linear-gradient(90deg,#c19f5c,#d4b47c);
  box-shadow:none;
}
.button:hover,button:hover{background:linear-gradient(90deg,#cba968,#dcbe87)}
.button.secondary{background:#161616;border-color:var(--line-soft)}
.button.secondary:hover{border-color:var(--gold-soft)}
input:focus,select:focus,textarea:focus{box-shadow:0 0 0 2px rgba(207,168,92,.10)}
.zone input:checked+span,.scope input:checked+span,.check input:checked+span{box-shadow:0 0 0 2px rgba(207,168,92,.10)}
.navlink.active{background:#b99a5c;color:#15110a;font-weight:600}
.cal-available.selected{background:#c19f5c;color:#17120a}
.price,.zonebox{box-shadow:none}
.price strong{font-weight:400;color:#d2b683}
.zone span em{font-weight:400;color:#d2b683}
.tablehero{font-weight:400}
.brand-sub{letter-spacing:.26em;color:#8a7f6c}

/* --- zona sem fotografia: fundo escuro sóbrio, sem a inicial gigante --- */
.pz-foto{background-image:linear-gradient(160deg,#15110a 0%,#0c0c0c 100%)}
.pz-foto i{display:none}
.zd-foto{background-color:#0d0d0d;background-image:linear-gradient(160deg,#15110a 0%,#0b0b0b 100%)}
.zd-foto-vazia{
  font-family:Georgia,"Times New Roman",serif;
  font-size:17px;
  font-weight:400;
  letter-spacing:.02em;
  color:#6f6657;
  text-transform:none;
}

/* ======================================================================
   "O ESPAÇO" — planta uniforme, sem referências físicas, com o aluguer
   de espaço privado como destaque logo a seguir ao croqui.
   ====================================================================== */

/* Quatro zonas com exactamente o mesmo peso. A cabine do DJ e a pista
   ficam como faixas finas, só para dar noção da sala. */
.planta{
  grid-template-columns:repeat(4,1fr);
  grid-template-areas:
    "djb   djb  djb  djb"
    "pista pista pista pista"
    "zaltas zvip zdj  zpriv";
  gap:12px;
}
.planta-zona.zaltas,.planta-zona.zvip,.planta-zona.zdj,.planta-zona.zpriv{grid-column:auto;grid-row:auto}
.planta-zona.zaltas{grid-area:zaltas}
.planta-zona.zvip{grid-area:zvip}
.planta-zona.zdj{grid-area:zdj}
.planta-zona.zpriv{grid-area:zpriv}
.planta-zona{height:100%}
.pz-foto{height:112px}

/* faixas de referência, discretas */
.planta-dj{min-height:34px;border-style:solid;border-color:var(--line-soft);background:#0d0b07}
.planta-dj b{font-size:9px;letter-spacing:.26em;color:#8a7f6c}
.planta-pista{min-height:56px;border-color:#262117;background:radial-gradient(circle at 50% 50%,#131009 0%,#0a0a0a 76%)}
.planta-pista span{font-size:10px;letter-spacing:.28em;color:#6f6757}
.planta-pista .pilar{width:9px;height:9px;margin-top:-4px}

@media(max-width:760px){
  .planta{grid-template-columns:1fr;grid-template-areas:"djb" "pista" "zaltas" "zvip" "zdj" "zpriv";padding:12px;gap:10px}
  .pz-foto{height:120px}
}

/* --- bloco de eventos privados: o destaque da página --- */
.privado-cta{
  text-align:center;
  background:linear-gradient(180deg,#17130b 0%,#0c0b08 100%);
  border-color:var(--gold-soft);
}
.privado-cta .pc-eyebrow{
  display:block;
  font-family:Inter,system-ui,sans-serif;
  font-size:10px;
  font-weight:500;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:#9c8859;
  margin-bottom:12px;
}
.privado-cta h2{
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(21px,3vw,28px);
  font-weight:400;
  letter-spacing:.005em;
  color:#f0e4cd;
  margin:0 0 12px;
}
.privado-cta p{
  max-width:560px;
  margin:0 auto 20px;
  color:var(--muted);
  line-height:1.65;
  font-size:14px;
}
.privado-cta .button{padding:14px 30px}

/* --- voltar atrás, discreto mas sempre visível no topo --- */
.backlink{margin:0 0 14px;font-size:12px;letter-spacing:.04em}
.backlink a{
  display:inline-block;
  padding:7px 0;
  color:#9a8e79;
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color .16s ease,border-color .16s ease;
}
.backlink a:hover{color:var(--gold-strong);border-bottom-color:var(--gold-soft)}
@media(max-width:760px){
  .backlink{margin-bottom:10px;font-size:13px}
  .backlink a{padding:9px 0}
}

/* ======================================================================
   ÁREA DO CLIENTE — páginas privadas por link (pedido, reserva,
   orçamento, guest list). Mesma linguagem visual em todas.
   ====================================================================== */

/* estado: substitui as faixas em caixa alta por uma etiqueta sóbria */
.statusline{
  display:block;
  width:fit-content;
  max-width:100%;
  margin:0 auto 20px;
  padding:8px 18px;
  border-radius:999px;
  font-family:Inter,system-ui,sans-serif;
  font-size:11px;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  text-align:center;
}
.statusline.st-on{background:rgba(207,168,92,.10);color:#e8d3a6;border:1px solid var(--gold-soft)}
.statusline.st-ok{background:rgba(72,122,88,.18);color:#cfe8d4;border:1px solid #3a5b44}
.statusline.st-off{background:#151515;color:#9b9b9b;border:1px solid #333}

.clienth2{text-align:center;font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:clamp(19px,2.8vw,24px);color:#efe3cc;margin:0 0 12px}
.panel .pc-eyebrow{display:block;text-align:center;font-family:Inter,system-ui,sans-serif;font-size:10px;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:#9c8859;margin-bottom:10px}

/* percurso do pedido de aluguer */
.timeline{list-style:none;margin:22px 0 0;padding:0}
.timeline li{position:relative;display:flex;gap:14px;padding:0 0 22px 0}
.timeline li:last-child{padding-bottom:0}
.timeline li::before{content:"";position:absolute;left:6px;top:16px;bottom:-4px;width:1px;background:#2a2417}
.timeline li:last-child::before{display:none}
.tl-dot{flex:0 0 auto;width:13px;height:13px;margin-top:3px;border-radius:50%;border:1px solid #3e3420;background:#0d0d0d}
.timeline li div{min-width:0}
.timeline b{display:block;font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:15px;color:#8d8371;letter-spacing:.005em}
.timeline em{display:block;margin-top:3px;font-style:normal;font-size:12.5px;line-height:1.55;color:#6b6456}
.timeline li.tl-done .tl-dot{background:var(--gold-soft);border-color:var(--gold-soft)}
.timeline li.tl-done b{color:#b3a68d}
.timeline li.tl-now .tl-dot{background:var(--gold);border-color:var(--gold);box-shadow:0 0 0 4px rgba(207,168,92,.14)}
.timeline li.tl-now b{color:#f2e4c6;font-size:16px}
.timeline li.tl-now em{color:var(--muted)}

/* proposta que o cliente consulta */
.proposta{border-color:var(--gold-soft);background:linear-gradient(180deg,#17130b 0%,#0c0b08 100%)}
.proposta h2{text-align:center}
.proposta-valor{text-align:center;font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:clamp(34px,6vw,52px);color:var(--gold-strong);margin:6px 0 16px;letter-spacing:.01em}
.proposta-texto{color:#ddd2bd;line-height:1.7;font-size:14px;white-space:normal}

/* caixa de redacção da proposta, na área da equipa */
.propostabox{margin-top:14px;padding:16px;border:1px solid var(--line-soft);border-radius:14px;background:#0c0c0c}
.propostabox textarea{min-height:110px}

/* blocos de detalhe mais calmos */
.detail span{color:#8f8471}
.tablehero{font-size:clamp(34px,8vw,58px);color:var(--gold-strong)}

/* menu da equipa agrupado por módulo */
.navgroup{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 0;border-right:1px solid #262117;margin-right:4px}
.navgroup:last-of-type,.navgroup-end{border-right:0;margin-right:0;padding-right:0}
.navgroup-label{font-size:9px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#6f6757;margin-right:2px}
.navlink-out{color:#9a8e79;border-color:#262117}
@media(max-width:760px){
  .navgroup{border-right:0;padding-right:0;margin-right:0;flex-wrap:wrap}
  .navgroup-label{width:100%;margin:6px 0 2px}
}

/* ======================================================================
   CAMPANHAS / EVENTOS ESPECIAIS — etiqueta nas reservas e gestão das
   noites. Só área da equipa; o site público não muda.
   ====================================================================== */

.camptag{
  display:inline-block;
  padding:3px 10px;
  border-radius:999px;
  background:rgba(207,168,92,.10);
  border:1px solid var(--gold-soft);
  color:#e8d3a6;
  font-size:11px;
  font-weight:600;
  letter-spacing:.04em;
  white-space:nowrap;
}

.chip-n{
  display:inline-block;
  min-width:17px;
  margin-left:5px;
  padding:1px 5px;
  border-radius:999px;
  background:rgba(207,168,92,.16);
  color:#e8d3a6;
  font-size:10px;
  font-weight:700;
  text-align:center;
}
.chip.active .chip-n{background:rgba(0,0,0,.22);color:#17120a}

.campbox{margin-top:14px;padding:16px;border:1px solid var(--line-soft);border-radius:14px;background:#0c0c0c}
.campbox.off{opacity:.6}
.campbox h3{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:17px;color:#f0e4cd}

.campdates{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.campdate{display:inline-flex;align-items:center;gap:8px;margin:0;padding:6px 8px 6px 12px;border:1px solid var(--line);border-radius:999px;background:#111}
.campdate span{font-size:12px;color:#e4d7bd}
.campdate-x{padding:0;width:20px;height:20px;line-height:1;border-radius:50%;background:#1d1a14;color:#a2957c;font-size:14px;font-weight:400;border:1px solid #2f2920;box-shadow:none}
.campdate-x:hover{background:#462327;color:#ffd6d6;border-color:#784049}

.campadd{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0}
.campadd input[type="date"]{width:auto;min-width:170px;margin-bottom:0}

@media(max-width:760px){
  .campadd{width:100%}
  .campadd input[type="date"]{flex:1;min-width:0}
}

/* noite de campanha que ainda não aceita reservas */
.campdate-wrap{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.campdate.warn{border-color:#784049}
.campopen{display:inline-flex;align-items:center;gap:8px;margin:0}
.campopen .button{padding:7px 12px;font-size:11px}

/* ======================================================================
   CONTEXTO SAZONAL — faixa discreta no topo da página privada da
   reserva. Nome do evento numa noite de campanha, referência genérica
   nas noites normais de dezembro. Só apresentação.
   ====================================================================== */

.seasonal{
  display:flex;
  align-items:center;
  gap:14px;
  margin:0 0 20px;
}
.seasonal::before,
.seasonal::after{
  content:"";
  flex:1;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(207,168,92,.28),transparent);
}
.seasonal span{
  flex:0 0 auto;
  font-family:Georgia,"Times New Roman",serif;
  font-size:13px;
  font-weight:400;
  font-style:italic;
  letter-spacing:.04em;
  color:#c3ab7c;
  white-space:nowrap;
}
@media(max-width:760px){
  .seasonal{gap:10px;margin-bottom:16px}
  .seasonal span{font-size:12px;white-space:normal;text-align:center}
}

/* ======================================================================
   EVENTOS E NOITES ESPECIAIS — regras por zona, aviso ao cliente e
   destaque do nome do evento nas datas.
   ====================================================================== */

/* aviso do evento, no site */
.eventnotice{
  background:rgba(207,168,92,.07);
  border:1px solid var(--gold-soft);
  color:#e3d3b2;
  font-size:13px;
  line-height:1.6;
}

/* data que é um evento, nos atalhos do site */
.quickdate.is-event{border-color:var(--gold-soft);background:#17130b}
.quickdate.is-event b{color:#f0dcae}
.chip.is-event{border-color:var(--gold-soft);background:#17130b;color:#f0dcae}
.chip.is-event.active{background:#1d1709;border-color:var(--gold)}

/* dia de evento no calendário */
.cal-day.cal-available[title]:not([title=""]){position:relative}

/* opções e zonas do evento, nas Definições */
.campopts,.campzones{margin-top:14px;padding:14px;border:1px solid var(--line-soft);border-radius:12px;background:#0a0a0a}
.campopts .consent{margin:0 0 12px}
.campopts textarea{min-height:60px;margin-bottom:10px}

.czrow{display:grid;grid-template-columns:1fr 110px 110px;gap:10px;align-items:center;margin-bottom:8px}
.czname{font-size:13px;color:#e4d7bd}
.czrow input[type="number"]{margin-bottom:0}
.czoff{display:flex;align-items:center;gap:7px;margin:0;font-size:11px;text-transform:none;letter-spacing:0;color:var(--muted)}
.czoff input{width:16px;height:16px;margin:0;flex:0 0 auto}
.czoff span{white-space:nowrap}

@media(max-width:760px){
  .czrow{grid-template-columns:1fr 1fr;gap:8px}
  .czname{grid-column:1/-1}
}

/* ======================================================================
   CROQUI DA EQUIPA — planta segundo o percurso de quem entra:
   entrada (baixo, à direita) > mesas 1-6 em frente > Bar 3 ao fundo >
   VIP atrás do Bar 3 > à esquerda do Bar 3 a cabine do DJ > Privado >
   Bar 2 > mesas 7 e 8 > WC feminino > WC masculino > Bar 1 > entrada.
   Vem no fim do ficheiro para substituir a grelha antiga.
   ====================================================================== */

.croqui{
  grid-template-columns:0.95fr 0.95fr 1fr 1fr 0.95fr;
  grid-template-areas:
    "zvip   zvip  zvip  zvip  zvip"
    "bar3   bar3  bar3  bar3  bar3"
    "djb    zdj   pista pista zaltas"
    "zpriv  pista pista pista zaltas"
    "bar2   pista pista pista bar1"
    "zaltas78 wcf  wcm   .     entrada";
  gap:10px;
}

.croqui-zone.zvip{grid-area:zvip}
.croqui-zone.zdj{grid-area:zdj}
.croqui-zone.zpriv{grid-area:zpriv}
.croqui-zone.zaltas{grid-area:zaltas}
.croqui-zone.zaltas78{grid-area:zaltas78}
.lm-wcf{grid-area:wcf}
.lm-wcm{grid-area:wcm}

/* bloco pequeno das mesas 7 e 8 */
.croqui-sat{background:#0c0c0c;border-style:dashed}
.croqui-sat .croqui-zonehead b{font-size:10px;letter-spacing:.06em}

@media(max-width:760px){
  .croqui{
    grid-template-columns:1fr;
    grid-template-areas:
      "entrada" "bar1" "zaltas" "bar3" "zvip" "djb" "zdj"
      "pista" "zpriv" "bar2" "zaltas78" "wcf" "wcm";
  }
}

/* ======================================================================
   CROQUI — disposição final confirmada pela casa (22/10/2026).
   Banda do fundo, da esquerda para a direita:
       Privado 15-18 | Atrás do DJ 12-14 | VIP 9-11
   VIP por trás do Bar 3; cabine do DJ à esquerda do Bar 3.
   Mesas 1-6 em frente à entrada; mesas 7 e 8 junto ao Bar 2.
   Não alterar sem nova indicação.
   ====================================================================== */

.croqui{
  grid-template-columns:1fr 1fr 1fr 1fr 1fr;
  grid-template-areas:
    "zpriv    zpriv  zdj    zvip   zvip"
    "djb      djb    bar3   bar3   bar3"
    "bar2     pista  pista  pista  zaltas"
    "zaltas78 pista  pista  pista  zaltas"
    "wcf      pista  pista  pista  bar1"
    "wcm      .      .      .      entrada";
  gap:10px;
}

@media(max-width:760px){
  .croqui{
    grid-template-columns:1fr;
    grid-template-areas:
      "entrada" "bar1" "zaltas" "bar3" "zvip" "zdj" "zpriv"
      "djb" "pista" "bar2" "zaltas78" "wcf" "wcm";
  }
}

/* estado do link de guest list */
.pill-on{background:rgba(72,122,88,.20);color:#cfe8d4;border:1px solid #3a5b44}
.pill-off{background:#151515;color:#9b9b9b;border:1px solid #333}

/* flyer do evento, no site e na area da equipa */
.eventflyer{margin:14px 0;text-align:center}
.eventflyer img{display:block;max-width:100%;width:auto;max-height:420px;margin:0 auto;border:1px solid var(--line);border-radius:14px}
.flyerbox{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;margin-top:12px;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:#0a0a0a}
.flyerbox img{max-width:180px;max-height:180px;border:1px solid var(--line);border-radius:10px}
.campopts input[type="file"]{width:100%;padding:10px;font-size:13px;background:#0d0d0d;border:1px solid var(--line);border-radius:12px;color:#d9cdb6;margin-bottom:12px}

/* ======================================================================
   RONDA VISUAL — correcções feitas com a página à frente.
   ====================================================================== */

/* 1. Os botões herdavam a serifa de .hero p e saíam a negrito pesado.
      Passam a ter tipo próprio, sans e mais leve. */
.button,button,.chip,.navlink,.quickdate{
  font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
}
.button,button{font-weight:600;letter-spacing:.01em}
.button.secondary{font-weight:500}

/* 2. A nota do hero fica em serifa de propósito, não por herança. */
/* .hero p e mais especifico, por isso o selector tem de o igualar */
.hero p.table-note,.table-note{
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(13px,1.7vw,16px);
  font-weight:400;
  color:#b9ab92;
  letter-spacing:.01em;
}

/* 3. O calendário era muito mais estreito do que o resto do painel e
      deixava duas faixas vazias dos lados. Passa a acompanhar. */
.calendar{max-width:none;width:100%}
.calgrid{gap:7px}
.cal-day,.cal-empty{min-height:42px}

/* 4. Zona sem fotografia: em vez de um rectângulo escuro vazio, que
      parece imagem em falta, o cartão fica só com o texto, centrado. */
.planta-zona .pz-foto:not([style]){
  background:none;
  border-bottom:1px solid rgba(207,168,92,.10);
  margin-bottom:12px;
}
/* texto de todos os cartões alinhado em baixo, com ou sem foto */
.planta-zona{justify-content:flex-end}

/* 5. Os dois atalhos do hero numa linha, com a mesma largura. */
.heroctas{display:flex;justify-content:center;gap:12px;margin-top:24px;flex-wrap:wrap}
.heroctas .button{min-width:210px;text-align:center}
@media(max-width:560px){
  .heroctas{flex-direction:column;align-items:stretch;gap:9px}
  .heroctas .button{min-width:0}
}

/* ======================================================================
   GUEST LIST POR APROVAÇÃO — bloco de pendentes na área da equipa.
   ====================================================================== */

.aprovacao{
  margin:0 0 20px;
  padding:16px;
  border:1px solid var(--gold-soft);
  border-radius:14px;
  background:linear-gradient(180deg,#17130b 0%,#0c0b08 100%);
}
.aprovacao h3{
  display:flex;align-items:center;gap:9px;
  margin:0 0 4px;
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;font-size:17px;color:#f0e4cd;
}
.guestrow.pendente{border-left:3px solid var(--gold-soft);background:#120f08}
.guestrow.pendente .guestname i{display:block;font-style:normal;font-size:11px;color:var(--muted);margin-top:2px}
.guestactions{display:flex;gap:8px;flex-wrap:wrap}
.guestactions form{margin:0}
.stat-alerta{border-color:var(--gold-soft)}
.stat-alerta b{color:var(--gold-strong)}

@media(max-width:760px){
  .guestrow.pendente{flex-direction:column;align-items:flex-start;gap:10px}
  .guestactions{width:100%}
  .guestactions form{flex:1}
  .guestactions .button{width:100%}
}

/* ======================================================================
   ARQUIVO, CONSENTIMENTO E CONTACTOS
   ====================================================================== */

/* caixa opcional de marketing: distinta da obrigatória, nunca marcada */
.consent.optin{
  padding:11px 13px;
  border:1px dashed var(--line);
  border-radius:12px;
  background:#0c0c0c;
  margin-bottom:14px;
}
.consent.optin span{color:#c4b79f}

/* nota de privacidade dos formulários públicos */
.privacynote{
  margin:0 0 16px;
  font-size:11.5px;
  line-height:1.6;
  color:#8a8072;
  letter-spacing:.01em;
}
.privacynote a{color:#a5926a;text-decoration:underline}
.privacynote a:hover{color:var(--gold-strong)}

/* registo arquivado ou contacto sem consentimento */
.rescard.revogado{opacity:.6}

/* ======================================================================
   QR CODE DA GUEST LIST — página do convidado e check-in à porta.
   ====================================================================== */

/* à porta, a equipa tem de ver num relance de que tipo de QR se trata */
.tipoentrada{
  max-width:none;
  margin:0 0 14px;
  padding:12px;
  border-radius:14px;
  text-align:center;
  font-family:Inter,system-ui,sans-serif;
  font-size:12px;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
}
.tipo-reserva{background:rgba(207,168,92,.12);color:#e8d3a6;border:1px solid var(--gold-soft)}
.tipo-guest{background:rgba(72,122,88,.18);color:#cfe8d4;border:1px solid #3a5b44}

/* nome do convidado, o equivalente ao número da mesa nas reservas */
.guesthero{
  text-align:center;
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;
  font-size:clamp(26px,6vw,42px);
  line-height:1.15;
  color:var(--gold-strong);
  margin:10px 0 18px;
}

/* botão grande, para usar com uma mão à entrada */
.botaoporta{font-size:18px;padding:18px;letter-spacing:.02em}

@media(max-width:760px){
  .tipoentrada{font-size:11px;letter-spacing:.18em;padding:10px}
  .botaoporta{font-size:17px;padding:16px}
}

/* ======================================================================
   BASE DE CLIENTES
   ====================================================================== */

.mktline{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:16px}

.histh{
  display:flex;align-items:center;gap:9px;
  margin:22px 0 10px;
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;font-size:16px;color:#e8dcc5;
}
.histh:first-of-type{margin-top:8px}

.histrow{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:10px;
  padding:11px 14px;margin-bottom:7px;
  border:1px solid var(--line-soft);border-radius:11px;background:#0d0d0d;
  font-size:13px;color:#d6cab5;
}
.histrow b{color:#f1e6d2;font-weight:600}

.rescard h3 a,.guestname a{color:inherit;text-decoration:none;border-bottom:1px solid var(--line)}
.rescard h3 a:hover,.guestname a:hover{border-bottom-color:var(--gold)}

@media(max-width:760px){
  .histrow{flex-direction:column;align-items:flex-start}
}

/* ======================================================================
   ELIMINAR LINK DA GUEST LIST — confirmação em dois passos, dentro do
   próprio cartão. Sem janelas do browser, para poder ter os botões
   "Cancelar" e "Sim, eliminar" com estes nomes.
   ====================================================================== */

.rescard.aapagar{border-color:#784049;box-shadow:0 0 0 2px rgba(120,64,73,.18)}

.apagarlink{
  margin:0 0 14px;
  padding:16px;
  border:1px solid #784049;
  border-radius:13px;
  background:linear-gradient(180deg,#1a1012,#0d0b0b);
}
.apagarlink > b{
  display:block;
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;
  font-size:15px;
  line-height:1.5;
  color:#ffd9d9;
}
.avisoforte{
  margin:10px 0 0;
  padding:10px 12px;
  border-radius:10px;
  background:rgba(120,64,73,.22);
  color:#ffd0d0;
  font-size:13px;
  line-height:1.55;
}
.avisoforte b{color:#fff}

/* ======================================================================
   CONFIRMAÇÃO ENVIADA AO CONVIDADO
   ====================================================================== */

.guestblock{margin-bottom:10px}
.guestblock .guestrow{margin-bottom:0}

.confirmacao{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:10px;
  margin:0 0 0 34px;
  padding:9px 14px;
  border:1px solid var(--line-soft);
  border-top:0;
  border-radius:0 0 11px 11px;
  background:#0b0b0b;
}
.confirmacao.feita{border-color:#2f4a36;background:#0a0f0b}

.confstatus{font-size:12px;color:#9b9081;letter-spacing:.01em}
.confirmacao.feita .confstatus{color:#a9c7b0}
.confstatus i{font-style:normal;color:#6f6757}

.confacoes{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.confacoes form{margin:0}
.confacoes .button.small{padding:7px 11px;font-size:11px}

@media(max-width:760px){
  .confirmacao{margin-left:0;border-top:1px solid var(--line-soft);border-radius:11px;margin-top:6px}
  .confacoes{width:100%}
}

/* 2026-10-28 · Reserva Especial por link privado
   Pagina do convite (especial.php), area da equipa (especiais.php)
   e a linha "Disponivel por convite" no site. */
.overline{color:#b59b6a;font-size:10px;text-transform:uppercase;letter-spacing:.18em;margin:0 0 6px}
.especial-h1{font:600 26px Georgia,serif;color:#fff6e5;margin:0 0 8px}
.notatiny{font-size:12px}
.especial-card{margin:18px 0 0}
.especial-card .detail:nth-child(odd):last-child{grid-column:1/-1}
.detail.destaque{border-color:var(--gold);background:#1a1610}
.detail.destaque b{color:var(--gold-strong)}
.condbox{margin:16px 0 0;background:#090909;border:1px solid var(--line-soft);border-radius:12px;padding:14px 15px}
.condbox p{margin:0;color:#d2c7b4;font-size:13px;line-height:1.6}
.especial-modos{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 16px}
.modo-op{display:flex;align-items:flex-start;gap:9px;border:1px solid var(--line);background:#111111;border-radius:13px;padding:13px 14px;cursor:pointer;text-transform:none;letter-spacing:0;color:#d2c7b4;font-size:12px;line-height:1.5;margin:0}
.modo-op input{width:17px;height:17px;margin:1px 0 0;flex:0 0 auto}
.modo-op b{color:#f2e8d7;font-size:13px}
.modo-op i{color:#9b8f7d;font-style:normal;font-size:11px}
/* Nota discreta, ao nivel da linha das garrafas. Nao pode competir
   com os precos das zonas: e informacao, nao e a chamada da pagina.
   Leva .hero a frente porque .hero p impoe uma fonte grande. */
.hero .convitenote,.convitenote{display:flex;flex-direction:column;align-items:center;gap:2px;margin:6px auto 0;max-width:330px;font:500 12px/1.45 Inter,system-ui,sans-serif;letter-spacing:.03em;color:#d2c4a8}
.hero .convitenote b,.convitenote b{font-size:12px;font-weight:600;color:#c9b182}
.hero .convitenote span,.convitenote span{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:#9b8f7d}
.camptag.convitetag{background:#1a1610;border-color:var(--gold);color:var(--gold-strong)}
@media(max-width:760px){.especial-modos{grid-template-columns:1fr}}

/* 2026-10-30 · Contactos e envio de confirmacoes
   Bloco igual nas reservas e na guest list: estado do ultimo envio,
   escolha de canal e destino, contacto alternativo e canal preferido. */
.contactos{margin:12px 0 0;padding:13px 14px;background:#0a0a0a;border:1px solid var(--line-soft);border-radius:13px}
.contactos-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 8px}
.contactos-head b{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:#b59b6a}
.canalpref{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#9b8f7d;border:1px solid var(--line);border-radius:999px;padding:3px 9px}

.envioestado{margin:0 0 9px;font-size:12px;line-height:1.5;color:#9b8f7d}
.envioestado.feito{color:#d2c4a8}
.envioestado i{color:#9b8f7d;font-style:normal}
.enviohist{margin:-4px 0 9px}
.enviohist summary{cursor:pointer;font-size:11px;color:#9b8f7d;letter-spacing:.04em}
.enviohist ul{margin:7px 0 0;padding-left:17px}
.enviohist li{font-size:11px;color:#9b8f7d;line-height:1.7}

.enviolinha{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.enviolinha select{width:auto;min-width:112px;flex:0 1 auto;margin:0;padding:9px 11px;font-size:12px}
.enviolinha .edest{flex:0 1 290px;min-width:150px;max-width:290px}
.enviomanual{margin:9px 0 0}
.enviomanual input{margin:0;font-size:13px}
.enviodica,.smsnota{margin:8px 0 0;font-size:11px;line-height:1.5}
.smsnota{color:#b59b6a}
.eabrir.desligado{opacity:.4;pointer-events:none}

.contactoseditar{margin:11px 0 0;border-top:1px solid var(--line-soft);padding-top:10px}
.contactoseditar summary{cursor:pointer;font-size:11px;text-transform:uppercase;letter-spacing:.13em;color:#b59b6a}
.contactoseditar form{margin-top:11px}
.contactoprinc{margin:0 0 11px;font-size:12px}
.contactoprinc b{color:#e8dcc4}
.contactoprinc i{color:#7d7366;font-style:normal}
.contactonota{margin:2px 0 11px;font-size:11px;line-height:1.5}

/* Mesa, entradas e total, lado a lado e desencostados. */
.totais{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;margin:10px 0 2px;font-size:.92rem}
.totais b{color:var(--gold,#c9a86a)}
.extrasform .enviolinha{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;margin:8px 0}
.extrasform input[type=number]{max-width:110px}

/* Partilhar com Staff: o resumo e os botoes. */
.staffshare .stexto{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.55}
.staffshare .scanvas{max-width:280px;height:auto;margin-top:10px;border:1px solid rgba(201,168,106,.3);border-radius:4px}
