:root{
  --cream:#FBF6EA; --sand:#F0E4C5; --sand-deep:#E0CFA0; --blue:#CDE7F5; --blue-deep:#2C7FB8;
  --yellow-light:#FDECB4; --yellow:#E3A72E; --yellow-deep:#C88F1E;
  --green:#DCF2E1; --green-deep:#2E9B63;
  --ink:#2C3A4C; --ink-soft:rgba(44,58,76,.62); --ink-faint:rgba(44,58,76,.42);
  --white:#FFFFFF; --line:rgba(44,58,76,.12);
  --danger:#E24C4C; --danger-bg:#FCE4E4;
}
*{ box-sizing:border-box; margin:0; padding:0; }
body{ font-family:'Inter',sans-serif; color:var(--ink); background:var(--cream); -webkit-font-smoothing:antialiased; }
h1,h2,h3{ font-family:'Fraunces',serif; }
em{ font-style:italic; color:var(--yellow-deep); }
button{ font-family:'Inter'; cursor:pointer; }
.btn{
  display:inline-flex; align-items:center; gap:8px; font-weight:700; font-size:14px;
  padding:14px 26px; border-radius:100px; border:none; transition:transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0) scale(.98); }
.btn:disabled{ opacity:.4; cursor:not-allowed; transform:none; }
.btn-yellow{ background:var(--yellow); color:#fff; box-shadow:0 10px 24px -10px rgba(240,105,58,.6); }
.btn-yellow:hover:not(:disabled){ background:var(--yellow-deep); }
.btn-ghost{ background:var(--white); color:var(--ink); box-shadow:0 1px 3px rgba(44,58,76,.08); }
.btn-text{ background:transparent; color:var(--ink-soft); padding:10px 6px; font-size:13px; }

/* ---------- nav ---------- */
header{ position:absolute; top:0; left:0; right:0; z-index:20; }
nav{ display:flex; justify-content:space-between; align-items:center; padding:22px 28px; max-width:1200px; margin:0 auto; }
.logo{ font-family:'Fraunces',serif; font-weight:700; font-size:18px; color:#fff; display:flex; align-items:center; gap:7px; }
.logo .dot{ width:8px; height:8px; border-radius:50%; background:var(--yellow); }

/* ---------- hero full page ---------- */
.hero{
  height:100svh; min-height:560px; position:relative; display:flex; align-items:center; justify-content:center;
  text-align:center; overflow:hidden;
  background: repeating-linear-gradient(135deg, #F7E4CE, #F7E4CE 12px, var(--sand) 12px, var(--sand) 24px);
}
.hero::before{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(44,58,76,.15) 0%, rgba(44,58,76,.55) 100%);
}
.hero-ph-note{
  position:absolute; top:16px; left:50%; transform:translateX(-50%); z-index:2;
  background:rgba(255,255,255,.9); color:#B4835A; font-size:11px; font-weight:700; padding:6px 12px; border-radius:100px;
}
.hero-content{ position:relative; z-index:2; color:#fff; padding:0 20px; max-width:640px; }
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.3);
  padding:7px 14px; border-radius:100px; margin-bottom:20px; backdrop-filter:blur(4px);
}
.hero h1{ font-size:52px; font-weight:600; line-height:1.05; margin-bottom:14px; text-shadow:0 4px 24px rgba(0,0,0,.15); }
.hero p{ font-size:15.5px; color:rgba(255,255,255,.88); margin-bottom:34px; }
#openFlow{ font-size:16px; padding:17px 34px; }
.hero-sub-link{ display:block; margin-top:18px; font-size:12.5px; color:rgba(255,255,255,.75); text-decoration:underline; text-underline-offset:3px; }
.sun-float{ position:absolute; font-size:70px; opacity:.9; animation:bob 5s ease-in-out infinite; z-index:1; filter:drop-shadow(0 10px 20px rgba(0,0,0,.2)); }
.sun-float.s1{ top:14%; left:10%; animation-delay:0s; }
.sun-float.s2{ bottom:16%; right:9%; font-size:46px; animation-delay:1.4s; }
@keyframes bob{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(-16px);} }

/* ---------- minimal footer ---------- */
footer{ padding:18px 28px; display:flex; justify-content:space-between; align-items:center; font-size:11.5px; color:var(--ink-faint); flex-wrap:wrap; gap:8px; }
footer a{ color:var(--ink-soft); text-decoration:none; font-weight:600; }
footer a:hover{ color:var(--yellow-deep); }

/* ================= BOOKING FLOW MODAL ================= */
.flow-overlay{
  position:fixed; inset:0; background:rgba(44,58,76,.5); backdrop-filter:blur(4px); z-index:100;
  display:flex; align-items:center; justify-content:center; padding:16px;
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}
.flow-overlay.open{ opacity:1; pointer-events:auto; }
.flow-modal{
  background:var(--cream); border-radius:28px; width:100%; max-width:880px; max-height:88vh;
  display:flex; flex-direction:column; overflow:hidden;
  transform:scale(.94) translateY(14px); transition:transform .32s cubic-bezier(.2,.9,.3,1.2);
  box-shadow:0 50px 90px -24px rgba(44,58,76,.4);
}
.flow-overlay.open .flow-modal{ transform:scale(1) translateY(0); }

.flow-head{ display:flex; align-items:center; justify-content:space-between; padding:20px 26px 16px; border-bottom:1px solid var(--line); flex-shrink:0; }
.progress{ display:flex; align-items:center; gap:8px; }
.p-step{ display:flex; align-items:center; gap:8px; font-size:11.5px; font-weight:700; color:var(--ink-faint); }
.p-dot{ width:22px; height:22px; border-radius:50%; background:var(--white); box-shadow:inset 0 0 0 1.5px var(--line); display:flex; align-items:center; justify-content:center; font-size:10.5px; color:var(--ink-faint); }
.p-step.active .p-dot{ background:var(--yellow); color:#fff; box-shadow:none; }
.p-step.done .p-dot{ background:var(--green-deep); color:#fff; box-shadow:none; }
.p-step.active{ color:var(--ink); }
.p-line{ width:16px; height:1px; background:var(--line); }
.flow-close{ width:32px; height:32px; border-radius:50%; background:var(--white); border:none; box-shadow:0 1px 3px rgba(44,58,76,.1); font-size:14px; flex-shrink:0; }

.flow-body{ flex:1; overflow-y:auto; padding:22px 26px; }
.flow-foot{ display:flex; justify-content:space-between; align-items:center; padding:16px 26px 22px; border-top:1px solid var(--line); flex-shrink:0; gap:12px; }

.step{ display:none; }
.step.active{ display:block; animation:fadein .35s ease; }
@keyframes fadein{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:translateY(0);} }

.step-title{ font-size:21px; font-weight:600; margin-bottom:4px; }
.step-caption{ font-size:12.5px; color:var(--ink-soft); margin-bottom:18px; }

.error-banner{
  background:var(--danger-bg); color:var(--danger); font-size:12px; font-weight:700; padding:10px 14px;
  border-radius:10px; margin-bottom:14px; display:none;
}
.error-banner.show{ display:block; }
.loading-note{ font-size:12px; color:var(--ink-faint); text-align:center; padding:24px; }

/* -- step 1: search -- */
.search-row{ display:flex; gap:10px; margin-bottom:16px; }
.search-input{
  flex:1; background:var(--white); border:1.5px solid var(--line); border-radius:12px; padding:11px 14px;
  font-size:13px; font-family:'Inter'; color:var(--ink); outline:none;
}
.search-input:focus{ border-color:var(--yellow); }
select.country-select{
  background:var(--white); border:1.5px solid var(--line); border-radius:12px; padding:11px 14px;
  font-size:13px; font-family:'Inter'; color:var(--ink); outline:none; font-weight:600;
}
.search-split{ display:grid; grid-template-columns:1.05fr .95fr; gap:16px; }
.venue-list{ display:flex; flex-direction:column; gap:10px; max-height:380px; overflow-y:auto; padding-right:4px; }
.venue-card{
  display:flex; gap:12px; align-items:center; background:var(--white); border-radius:16px; padding:10px; cursor:pointer;
  border:2px solid transparent; transition:border-color .15s ease, transform .15s ease;
}
.venue-card:hover{ transform:translateX(2px); }
.venue-card.selected{ border-color:var(--yellow); background:#FFF3EC; }
.venue-thumb{ width:56px; height:56px; border-radius:12px; flex-shrink:0; background:linear-gradient(135deg,#4FA9D8,#125E82); }
.venue-info{ flex:1; min-width:0; }
.venue-info .n{ font-size:13.5px; font-weight:700; margin-bottom:2px; }
.venue-info .m{ font-size:11px; color:var(--ink-soft); }
.venue-price{ text-align:right; flex-shrink:0; }
.venue-price .p{ font-size:13px; font-weight:800; }
.venue-price .r{ font-size:10.5px; color:var(--green-deep); font-weight:700; }

.map-box{ background:linear-gradient(160deg,#CDEAF6,#AEDDF0); border-radius:18px; position:relative; overflow:hidden; min-height:380px; }
.map-blob{ position:absolute; background:rgba(255,255,255,.35); border-radius:50%; filter:blur(2px); }
.map-note{
  position:absolute; top:10px; left:10px; background:rgba(255,255,255,.9); font-size:10px; font-weight:700;
  color:var(--blue-deep); padding:5px 10px; border-radius:100px; z-index:3;
}
.pin{ position:absolute; transform:translate(-50%,-100%); text-align:center; z-index:2; cursor:pointer; }
.pin .mk{ width:26px; height:26px; border-radius:50% 50% 50% 0; background:var(--yellow); transform:rotate(-45deg); box-shadow:0 3px 8px rgba(0,0,0,.2); }
.pin .lb{ position:absolute; top:-26px; left:50%; transform:translateX(-50%); background:#fff; font-size:9.5px; font-weight:700; padding:3px 7px; border-radius:6px; white-space:nowrap; box-shadow:0 1px 3px rgba(0,0,0,.12); }
.pin.me .mk{ background:var(--blue-deep); }
.pin.me{ animation:pulse 2.2s ease-in-out infinite; cursor:default; }
@keyframes pulse{ 0%,100%{ filter:drop-shadow(0 0 0 rgba(95,163,201,.5));} 50%{ filter:drop-shadow(0 0 8px rgba(95,163,201,.6));} }
.geo-badge{
  position:absolute; bottom:10px; left:10px; right:10px; background:rgba(255,255,255,.95); border-radius:12px;
  padding:9px 12px; font-size:11px; font-weight:600; color:var(--ink-soft); z-index:3;
}

/* -- step 2: calendar -- */
.selected-recap{ display:flex; align-items:center; gap:10px; background:var(--white); border-radius:14px; padding:10px 14px; margin-bottom:18px; }
.selected-recap .th{ width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#4FA9D8,#125E82); flex-shrink:0; }
.selected-recap .n{ font-size:13px; font-weight:700; }
.selected-recap .m{ font-size:11px; color:var(--ink-soft); }
.cal{ background:var(--white); border-radius:18px; padding:18px; max-width:380px; margin:0 auto; }
.cal-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; font-weight:700; font-size:14px; }
.cal-nav{ display:flex; gap:6px; }
.cal-nav button{ width:26px; height:26px; border-radius:8px; border:none; background:var(--sand); font-size:12px; }
.cal-nav button:disabled{ opacity:.3; cursor:not-allowed; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.cal-dow{ text-align:center; font-size:10px; font-weight:700; color:var(--ink-faint); padding-bottom:4px; }
.cal-day{
  aspect-ratio:1; display:flex; align-items:center; justify-content:center; border-radius:10px; font-size:12.5px;
  font-weight:600; cursor:pointer; color:var(--ink);
}
.cal-day:hover:not(.disabled){ background:var(--sand); }
.cal-day.disabled{ color:var(--ink-faint); opacity:.3; cursor:default; }
.cal-day.selected{ background:var(--yellow); color:#fff; }
.cal-day.empty{ visibility:hidden; }

/* -- step 3: sunbeds -- */
.beach-plan{ background:var(--white); border-radius:18px; padding:18px; max-width:460px; margin:0 auto; }
.plan-row-head{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px; }
.row-label{ font-size:11.5px; font-weight:700; color:var(--ink); }
.row-type{ font-size:10.5px; color:var(--ink-soft); background:var(--sand); padding:2px 8px; border-radius:100px; }
.row-opt-tag{ font-size:10px; color:var(--blue-deep); background:var(--blue); padding:2px 8px; border-radius:100px; font-weight:600; }
.plan-row{ display:flex; align-items:center; gap:8px; margin-bottom:14px; }
.sunbed{
  width:32px; height:32px; border-radius:9px; background:var(--sand-deep); display:flex; align-items:center;
  justify-content:center; font-size:14px; cursor:pointer; transition:all .15s ease; border:1.5px solid transparent;
}
.sunbed.taken{ background:#E4DCCB; opacity:.4; cursor:not-allowed; }
.sunbed.selected{ background:var(--yellow); box-shadow:0 3px 8px rgba(240,105,58,.35); }
.sunbeds-row{ display:flex; gap:7px; }
.beach-total{ display:flex; justify-content:space-between; align-items:center; margin-top:16px; padding-top:14px; border-top:1px dashed var(--line); }
.beach-total .lbl{ font-size:12px; color:var(--ink-soft); }
.beach-total .val{ font-size:19px; font-weight:800; font-family:'Fraunces',serif; }

/* -- step 4: payment -- */
.summary{ background:var(--white); border-radius:16px; padding:16px 18px; margin-bottom:18px; max-width:420px; margin-left:auto; margin-right:auto; }
.summary-row{ display:flex; justify-content:space-between; font-size:12.5px; padding:6px 0; color:var(--ink-soft); }
.summary-row.total{ border-top:1px dashed var(--line); margin-top:6px; padding-top:12px; font-weight:800; color:var(--ink); font-size:15px; }
.paymethods{ max-width:420px; margin:0 auto 14px; display:flex; flex-direction:column; gap:9px; }
.paymethod{ display:flex; align-items:center; gap:10px; background:var(--white); border-radius:12px; padding:12px 14px; font-size:12.5px; font-weight:600; border:1.5px solid transparent; }
.paymethod.active{ border-color:var(--yellow); background:#FFF3EC; }
.radio{ width:16px; height:16px; border-radius:50%; border:2px solid var(--yellow); position:relative; }
.paymethod.active .radio::after{ content:''; position:absolute; inset:2.5px; background:var(--yellow); border-radius:50%; }
.email-field{ max-width:420px; margin:0 auto; }
.email-field input{
  width:100%; border:1.5px solid var(--line); background:var(--white); border-radius:12px; padding:11px 14px;
  font-size:13px; font-family:'Inter'; color:var(--ink); outline:none;
}
.email-field input:focus{ border-color:var(--yellow); }
.email-field label{ display:block; font-size:11px; font-weight:700; color:var(--ink-soft); margin-bottom:6px; }

/* -- success -- */
.success{ text-align:center; padding:30px 10px; }
.success .ico{ width:64px; height:64px; border-radius:50%; background:var(--green-deep); color:#fff; font-size:28px; display:flex; align-items:center; justify-content:center; margin:0 auto 18px; }
.success h3{ font-size:22px; margin-bottom:8px; }
.success p{ font-size:13px; color:var(--ink-soft); margin-bottom:20px; }
.ticket{ max-width:360px; margin:0 auto; background:var(--white); border-radius:16px; padding:18px; text-align:left; }
.ticket .l{ display:flex; justify-content:space-between; font-size:12px; padding:5px 0; color:var(--ink-soft); }

@media (max-width:700px){
  .hero h1{ font-size:36px; }
  .search-split{ grid-template-columns:1fr; }
  .map-box{ min-height:220px; }
}

/* ---------- fiche établissement popup ---------- */
.fiche-overlay{
  position:fixed; inset:0; background:rgba(44,58,76,.55); backdrop-filter:blur(4px); z-index:120;
  display:flex; align-items:center; justify-content:center; padding:16px;
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}
.fiche-overlay.open{ opacity:1; pointer-events:auto; }
.fiche-modal{
  background:var(--cream); border-radius:26px; width:100%; max-width:420px; overflow:hidden;
  transform:scale(.94) translateY(14px); transition:transform .3s cubic-bezier(.2,.9,.3,1.2);
  box-shadow:0 50px 90px -24px rgba(44,58,76,.4); max-height:88vh; display:flex; flex-direction:column;
}
.fiche-overlay.open .fiche-modal{ transform:scale(1) translateY(0); }
.fiche-photo{
  height:180px; flex-shrink:0; position:relative;
  background:repeating-linear-gradient(135deg, #F7E4CE, #F7E4CE 12px, var(--sand) 12px, var(--sand) 24px);
}
.fiche-body{ padding:20px 22px; overflow-y:auto; }
.fiche-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:4px; }
.fiche-top h3{ font-size:20px; font-weight:600; }
.fiche-rating{ font-size:12.5px; font-weight:700; color:var(--green-deep); flex-shrink:0; padding-top:4px; }
.fiche-loc{ font-size:12.5px; color:var(--ink-soft); margin-bottom:14px; }
.fiche-amenities{ display:flex; gap:7px; flex-wrap:wrap; margin-bottom:14px; }
.fiche-amenities .amenity{ font-size:11px; font-weight:600; background:var(--blue); color:var(--blue-deep); padding:6px 10px; border-radius:100px; }
.fiche-desc{ font-size:12.5px; color:var(--ink-soft); line-height:1.6; margin-bottom:10px; }
.fiche-reviews{ font-size:11px; color:var(--ink-faint); background:var(--sand); display:inline-block; padding:6px 10px; border-radius:100px; }
.fiche-foot{ padding:16px 22px 20px; border-top:1px solid var(--line); flex-shrink:0; }
.fiche-gallery-strip{ display:flex; gap:6px; padding:10px 22px 0; overflow-x:auto; }
.fiche-thumb{ width:52px; height:52px; border-radius:10px; overflow:hidden; flex-shrink:0; cursor:pointer; position:relative; box-shadow:0 0 0 1.5px var(--line); }
.fiche-thumb img, .fiche-thumb video{ width:100%; height:100%; object-fit:cover; }
.fiche-thumb .mini-video{ position:absolute; bottom:2px; right:2px; font-size:9px; }

/* ================= STANDALONE PAGES (confirmation, compte, pro) ================= */
.page-header{ background:var(--white); border-bottom:1px solid var(--line); padding:0; }
.page-nav{ display:flex; justify-content:space-between; align-items:center; padding:18px 28px; max-width:1200px; margin:0 auto; }
.page-nav .logo{ color:var(--ink); }
.page-nav-links{ display:flex; align-items:center; gap:22px; font-size:13px; font-weight:600; }
.page-nav-links a{ color:var(--ink-soft); text-decoration:none; }
.page-nav-links a:hover{ color:var(--yellow-deep); }

.page-wrap{ max-width:640px; margin:0 auto; padding:56px 24px 80px; }
.page-wrap.wide{ max-width:1100px; }
.page-eyebrow{
  display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; background:var(--green); color:var(--green-deep); padding:7px 14px; border-radius:100px; margin-bottom:18px;
}
.page-wrap h1{ font-size:32px; font-weight:600; margin-bottom:10px; }
.page-lead{ font-size:14px; color:var(--ink-soft); margin-bottom:30px; line-height:1.6; }

.lookup-form{ display:flex; gap:10px; margin-bottom:30px; }
.lookup-form input{
  flex:1; background:var(--white); border:1.5px solid var(--line); border-radius:12px; padding:12px 16px;
  font-size:13.5px; font-family:'Inter'; color:var(--ink); outline:none;
}
.lookup-form input:focus{ border-color:var(--yellow); }

.booking-card{
  background:var(--white); border-radius:18px; padding:18px 20px; margin-bottom:14px;
  display:flex; align-items:center; gap:14px; box-shadow:0 2px 8px rgba(44,58,76,.05);
}
.booking-card .thumb{ width:50px; height:50px; border-radius:12px; background:linear-gradient(135deg,#4FA9D8,#125E82); flex-shrink:0; }
.booking-card .info{ flex:1; min-width:0; }
.booking-card .info .n{ font-size:14px; font-weight:700; margin-bottom:2px; }
.booking-card .info .m{ font-size:12px; color:var(--ink-soft); }
.booking-card .amount{ text-align:right; flex-shrink:0; }
.booking-card .amount .v{ font-size:15px; font-weight:800; font-family:'Fraunces',serif; }
.booking-card .amount .status{ font-size:10.5px; font-weight:700; color:var(--green-deep); }
.empty-note{ text-align:center; padding:40px 20px; color:var(--ink-faint); font-size:13px; background:var(--white); border-radius:18px; }

.confirm-hero{ text-align:center; padding:20px 0 34px; }
.confirm-hero .ico{ width:64px; height:64px; border-radius:50%; background:var(--green-deep); color:#fff; font-size:28px; display:flex; align-items:center; justify-content:center; margin:0 auto 18px; }
.confirm-ticket{ background:var(--white); border-radius:20px; padding:24px; }
.confirm-ticket .l{ display:flex; justify-content:space-between; font-size:13px; padding:8px 0; color:var(--ink-soft); border-bottom:1px dashed var(--line); }
.confirm-ticket .l:last-child{ border-bottom:none; font-weight:800; color:var(--ink); }

/* ---------- pro landing ---------- */
.pro-hero{ background:linear-gradient(160deg, var(--yellow-light), var(--sand)); padding:70px 0 60px; }
.pro-hero-inner{ max-width:640px; margin:0 auto; padding:0 24px; text-align:center; }
.pro-hero h1{ font-size:34px; font-weight:600; margin-bottom:12px; }
.pro-hero p{ font-size:14.5px; color:var(--ink-soft); margin-bottom:0; }
.pro-form-card{
  max-width:460px; margin:-34px auto 0; background:var(--white); border-radius:22px; padding:28px 26px;
  box-shadow:0 30px 60px -24px rgba(44,58,76,.25); position:relative; z-index:2;
}
.pro-form-card h3{ font-size:17px; font-weight:600; margin-bottom:16px; }
.pro-field{ margin-bottom:14px; }
.pro-field label{ display:block; font-size:11.5px; font-weight:700; color:var(--ink-soft); margin-bottom:6px; }
.pro-field input, .pro-field select, .pro-field textarea{
  width:100%; border:1.5px solid var(--line); background:var(--sand); border-radius:12px; padding:11px 13px;
  font-family:'Inter'; font-size:13px; color:var(--ink); outline:none;
}
.pro-field input:focus, .pro-field select:focus, .pro-field textarea:focus{ border-color:var(--yellow); }
.pro-lookup{ text-align:center; margin-top:24px; font-size:12.5px; color:var(--ink-soft); }
.pro-lookup a{ color:var(--yellow-deep); font-weight:700; text-decoration:none; }
.pro-success{ text-align:center; padding:10px 0; }
.pro-success .ico{ font-size:40px; margin-bottom:12px; }

/* ---------- pro dashboard ---------- */
.dash-shell{ display:flex; min-height:100vh; }
.dash-sidebar{ width:210px; background:var(--ink); color:#fff; flex-shrink:0; padding:24px 16px; }
.dash-sidebar .logo{ color:#fff; margin-bottom:30px; padding:0 6px; }
.dash-item{
  display:flex; align-items:center; gap:10px; font-size:13px; font-weight:600; color:rgba(255,255,255,.55);
  padding:11px 12px; border-radius:10px; margin-bottom:3px; cursor:pointer; text-decoration:none;
}
.dash-item.active, .dash-item:hover{ background:rgba(255,255,255,.10); color:#fff; }
.dash-item .ico{ font-size:15px; width:18px; text-align:center; }
.dash-main{ flex:1; padding:30px 36px; overflow-y:auto; }
.dash-top{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:22px; flex-wrap:wrap; gap:12px; }
.dash-top h2{ font-size:22px; font-weight:600; margin-bottom:3px; }
.dash-top .sub{ font-size:12.5px; color:var(--ink-soft); }
.dash-section{ display:none; }
.dash-section.active{ display:block; animation:fadein .3s ease; }

.kpi-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:20px; }
.kpi{ background:var(--white); border-radius:16px; padding:16px 18px; box-shadow:0 1px 3px rgba(44,58,76,.05); }
.kpi .lbl{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint); margin-bottom:6px; }
.kpi .val{ font-family:'Fraunces',serif; font-size:23px; font-weight:600; }

.dash-panel{ background:var(--white); border-radius:16px; padding:18px 20px; box-shadow:0 1px 3px rgba(44,58,76,.05); margin-bottom:16px; }
.dash-panel h3{ font-size:15px; font-weight:600; margin-bottom:14px; font-family:'Fraunces',serif; }
.dash-table{ width:100%; border-collapse:collapse; font-size:12.5px; }
.dash-table th{ text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); padding:0 8px 10px; font-weight:700; }
.dash-table td{ padding:10px 8px; border-top:1px solid var(--line); color:var(--ink-soft); }
.dash-pill{ font-size:10px; font-weight:700; padding:4px 10px; border-radius:100px; display:inline-block; background:var(--green-light,var(--green)); color:var(--green-deep); }

.dash-save{ margin-top:16px; }

.editor-toolbar{ display:flex; gap:8px; margin-bottom:16px; flex-wrap:wrap; }
.editor-toolbar button{ font-size:11.5px; font-weight:600; background:var(--white); padding:9px 14px; border-radius:9px; box-shadow:0 1px 2px rgba(44,58,76,.06); border:none; color:var(--ink); }
.editor-row{ display:flex; flex-direction:column; gap:10px; padding:16px; background:var(--sand); border-radius:14px; margin-bottom:14px; }
.editor-row-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.editor-row .rl{ font-size:11px; font-weight:700; color:var(--ink-faint); }
.editor-row .price-input{ width:70px; border:1.5px solid var(--line); border-radius:8px; padding:6px 8px; font-size:12px; text-align:center; }
.editor-seats{ display:flex; gap:7px; flex-wrap:wrap; }
.editor-seat{
  width:32px; height:32px; border-radius:9px; background:var(--sand-deep); display:flex; align-items:center;
  justify-content:center; font-size:13px; cursor:pointer; position:relative;
}
.editor-seat:hover::after{
  content:'✕'; position:absolute; inset:0; background:rgba(224,76,76,.85); color:#fff; border-radius:9px;
  display:flex; align-items:center; justify-content:center; font-size:12px;
}
.editor-add-seat{ width:32px; height:32px; border-radius:9px; border:1.5px dashed rgba(44,58,76,.3); display:flex; align-items:center; justify-content:center; color:var(--ink-faint); font-size:14px; }
.editor-remove-row{ font-size:11px; color:var(--danger); font-weight:700; cursor:pointer; margin-left:4px; }

.chart{ display:flex; align-items:flex-end; gap:10px; height:120px; padding-top:20px; }
.bar{ flex:1; background:linear-gradient(180deg,#4FA9D8,var(--azure,var(--blue-deep))); border-radius:6px 6px 2px 2px; position:relative; min-height:2px; }
.bar .v{ position:absolute; top:-18px; left:0; right:0; text-align:center; font-size:10px; font-weight:700; color:var(--ink-soft); }
.chart-labels{ display:flex; gap:10px; margin-top:8px; }
.chart-labels span{ flex:1; text-align:center; font-size:10px; color:var(--ink-faint); }

@media (max-width:860px){
  .dash-shell{ flex-direction:column; }
  .dash-sidebar{ width:100%; display:flex; overflow-x:auto; gap:4px; padding:12px; }
  .dash-sidebar .logo{ display:none; }
  .kpi-grid{ grid-template-columns:1fr 1fr; }
}

/* ---------- gallery (dashboard "Ma fiche") ---------- */
.gallery-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.gallery-slot{
  aspect-ratio:1; border-radius:14px; overflow:hidden; position:relative; background:var(--sand);
  display:flex; align-items:center; justify-content:center;
}
.gallery-slot img, .gallery-slot video{ width:100%; height:100%; object-fit:cover; display:block; }
.gallery-slot .video-badge{ position:absolute; top:6px; left:6px; background:rgba(0,0,0,.55); color:#fff; font-size:9px; font-weight:700; padding:2px 7px; border-radius:100px; }
.gallery-slot .remove{
  position:absolute; top:6px; right:6px; width:22px; height:22px; border-radius:50%; background:rgba(44,58,76,.75);
  color:#fff; border:none; font-size:11px; display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.gallery-slot.add{
  border:1.5px dashed rgba(44,58,76,.25); cursor:pointer; flex-direction:column; gap:6px; color:var(--ink-faint); font-size:11px; font-weight:600;
}
.gallery-slot.add:hover{ border-color:var(--yellow); color:var(--yellow-deep); }
.gallery-slot.add .plus{ font-size:22px; }
.gallery-slot.disabled{ opacity:.3; cursor:not-allowed; }

/* ---------- row options (parasol, serviette...) ---------- */
.opt-checks{ display:flex; gap:14px; flex-wrap:wrap; align-items:center; }
.opt-check{ display:flex; align-items:center; gap:6px; font-size:12px; color:var(--ink-soft); }
.opt-check input{ width:15px; height:15px; }
.opt-custom-input{
  border:1.5px solid var(--line); border-radius:8px; padding:6px 9px; font-size:11.5px; width:130px;
}
.row-type-select{
  border:1.5px solid var(--line); border-radius:8px; padding:7px 9px; font-size:11.5px; font-family:'Inter'; background:var(--white);
}
.row-name-input{
  border:1.5px solid var(--line); border-radius:8px; padding:7px 9px; font-size:12px; font-family:'Inter'; width:130px;
}
