:root{
  --paper:#ffffff; --ink:#1e2a2c; --muted:#56676a; --teal:#1d5a5f; --teal-deep:#163f43;
  --wood:#b07a3c; --sage:#eef3ef; --sun:#e5ad2a; --line:#dbe3df; --danger:#b3261e; --ok:#2e7d4f;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Newsreader",Georgia,serif;font-size:1.08rem;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3,.sans{font-family:"Josefin Sans","Avenir Next","Segoe UI",sans-serif}
h1,h2,h3{margin:0;line-height:1.1}
a{color:var(--teal)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--sun);outline-offset:2px;border-radius:6px}

/* ---------- guest booking ---------- */
.book{max-width:640px;margin:0 auto;padding:28px 20px 36px}
.book.embed{padding:24px 22px 28px}
.book-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.book-head img{height:40px;width:auto}
.book-head .lang{font:600 .9rem "Josefin Sans",sans-serif;text-decoration:none;border:1.5px solid var(--line);border-radius:999px;padding:.3em .8em .2em}
.book h1{font-size:1.65rem;margin:14px 0 4px}
.book .sub{color:var(--muted);margin:0 0 18px;font-size:1rem}

.summary{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.summary button{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:.35em .9em .3em;font:600 .92rem "Josefin Sans",sans-serif;cursor:pointer}
.summary button[hidden]{display:none}
.summary button::after{content:"✎";font-size:.8rem;color:var(--muted)}

.step{border-top:1px solid var(--line);padding-top:16px}
.step h2{font-size:1.15rem;margin-bottom:12px;display:flex;align-items:baseline;gap:10px}
.step h2 .n{font-size:.85rem;color:var(--wood);font-weight:700}

.chips{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.chip{border:1.5px solid var(--line);background:var(--paper);border-radius:12px;padding:12px 0 9px;font:600 1.1rem "Josefin Sans",sans-serif;cursor:pointer;text-align:center;transition:border-color .15s,background .15s}
.chip:hover{border-color:var(--teal)}
.chip[aria-pressed="true"]{background:var(--teal);border-color:var(--teal);color:#fff}
.chip:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.hint{font-size:.95rem;color:var(--muted);margin:12px 0 0}
.bigparty{margin-top:12px}
.bigparty .row{display:flex;gap:8px}
.bigparty input{max-width:120px}
.pending-card{border-color:var(--sun);box-shadow:inset 4px 0 0 var(--sun)}

.days{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.day{flex:0 0 74px;scroll-snap-align:start;border:1.5px solid var(--line);background:var(--paper);border-radius:14px;padding:8px 4px 6px;text-align:center;cursor:pointer;font-family:"Josefin Sans",sans-serif}
.day .dw{display:block;font-size:.78rem;color:var(--muted);text-transform:capitalize}
.day .dn{display:block;font-size:1.45rem;font-weight:700;line-height:1.15}
.day .dm{display:block;font-size:.78rem;color:var(--muted)}
.day:hover{border-color:var(--teal)}
.day[aria-pressed="true"]{background:var(--teal);border-color:var(--teal);color:#fff}
.day[aria-pressed="true"] .dw,.day[aria-pressed="true"] .dm{color:#e6f0ee}
.day:disabled{opacity:.35;cursor:not-allowed}
.days-nav{display:flex;justify-content:space-between;align-items:center;margin-top:2px}
.days-nav button{border:0;background:none;font:600 .92rem "Josefin Sans",sans-serif;color:var(--teal);cursor:pointer;padding:4px 0}

.times{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.svc-label{font:600 .95rem "Josefin Sans",sans-serif;color:var(--muted);margin:4px 0 8px}

.form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form .full{grid-column:1/-1}
label.f{display:block;font:600 .9rem "Josefin Sans",sans-serif;margin-bottom:5px}
label.f span{font-weight:500;color:var(--muted)}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=date],input[type=time],input[type=number],select,textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:.62em .75em;background:var(--paper)}
input:focus,select:focus,textarea:focus{border-color:var(--teal);outline:none}
textarea{min-height:76px;resize:vertical}
.check{display:flex;gap:10px;align-items:flex-start;font-size:.97rem}
.check input{margin-top:.3em;width:18px;height:18px;flex:none;accent-color:var(--teal)}
.legal{font-size:.86rem;color:var(--muted);margin:2px 0 0}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;font:600 1.02rem "Josefin Sans",sans-serif;text-decoration:none;padding:.85em 1.4em .72em;border-radius:999px;border:2px solid var(--teal);background:var(--teal);color:#fff;cursor:pointer}
.btn:hover{background:var(--teal-deep);border-color:var(--teal-deep)}
.btn.line{background:transparent;color:var(--teal)}
.btn.line:hover{background:var(--teal);color:#fff}
.btn.small{font-size:.88rem;padding:.5em .95em .42em}
.btn.danger{background:transparent;color:var(--danger);border-color:var(--danger)}
.btn.danger:hover{background:var(--danger);color:#fff}
.btn:disabled{opacity:.6;cursor:wait}
.btn.block{width:100%}

.alert{border-radius:12px;padding:.8em 1em;margin:12px 0;font-size:.98rem}
.alert.error{background:#fdecea;color:var(--danger)}
.alert.ok{background:#e8f4ec;color:var(--ok)}
.note{background:var(--sage);border-radius:12px;padding:.7em 1em;font-size:.95rem;margin:0 0 16px}
.svc-info p{margin:0}
.closed-note{background:#fff4dc;color:#5a3d00}
.svc-info p+p{margin-top:.3em}
.svc-label{color:var(--ink);font-family:"Newsreader",Georgia,serif;font-weight:400;margin:18px 0 8px}
.svc-label:first-child{margin-top:4px}
.svc-label b{font-family:"Josefin Sans",sans-serif;font-weight:600}
.svc-label span{color:var(--muted)}
.btn[hidden]{display:none}

.done{text-align:center;padding:10px 0}
.done .tick{width:64px;height:64px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;margin:6px auto 14px;font-size:2rem}
.done dl{display:inline-grid;grid-template-columns:auto auto;gap:4px 14px;text-align:left;margin:14px auto;font-size:1.02rem}
.done dt{font:600 .92rem "Josefin Sans",sans-serif;color:var(--muted)}
.done dd{margin:0}
.loading{color:var(--muted);font-size:.95rem}

@media (max-width:520px){
  .chips{grid-template-columns:repeat(5,1fr);gap:6px}
  .times{grid-template-columns:repeat(3,1fr)}
  .form{grid-template-columns:1fr}
  .book h1{font-size:1.45rem}
}

/* ---------- admin ---------- */
.admin{background:#f6f8f7;min-height:100vh}
.topbar{background:var(--teal-deep);color:#fff}
.topbar .in{max-width:1180px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.topbar b{font:700 1.05rem "Josefin Sans",sans-serif;margin-right:auto}
.topbar a{color:#dfecea;text-decoration:none;font:600 .95rem "Josefin Sans",sans-serif;padding:6px 0;border-bottom:2px solid transparent}
.topbar a.on,.topbar a:hover{color:#fff;border-color:var(--sun)}
.wrapa{max-width:1180px;margin:0 auto;padding:22px 20px 60px}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:18px}
.card h2{font-size:1.2rem;margin-bottom:12px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.daynav{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.daynav h1{font-size:1.5rem;margin-right:auto}
.daynav input[type=date]{width:auto}
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:18px}
.week a{display:block;background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:8px;text-align:center;text-decoration:none;color:var(--ink);font-family:"Josefin Sans",sans-serif}
.week a.on{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.week a.closed{background:#f1f1f1;color:#999}
.week small{display:block;color:var(--muted);font-size:.8rem}
.week b{font-size:1.2rem}
.svc-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.svc-head h2{margin:0}
.meter{flex:1;min-width:140px;height:8px;background:var(--sage);border-radius:99px;overflow:hidden}
.meter i{display:block;height:100%;background:var(--teal)}
table.list{width:100%;border-collapse:collapse;font-size:.98rem}
table.list th{text-align:left;font:600 .82rem "Josefin Sans",sans-serif;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:6px 8px;border-bottom:1px solid var(--line)}
table.list td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
table.list tr.cancelled td,table.list tr.noshow td{color:#999;text-decoration:line-through}
table.list tr.seated td:first-child{box-shadow:inset 4px 0 0 var(--ok)}
.t{font:700 1.05rem "Josefin Sans",sans-serif}
.cv{font:700 1.15rem "Josefin Sans",sans-serif;color:var(--teal)}
.rem{display:inline-block;margin-top:4px;background:#fff4dc;color:#6b4700;border-radius:8px;padding:.1em .55em;font-size:.95rem}
.badge{display:inline-block;font:600 .75rem "Josefin Sans",sans-serif;border-radius:99px;padding:.15em .6em .1em;background:var(--sage);color:var(--muted)}
.badge.phone{background:#fff4dc;color:#8a5a00}
.badge.optin{background:#e8f4ec;color:var(--ok)}
.acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.acts form{margin:0}
.muted{color:var(--muted)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.stat b{display:block;font:700 1.6rem "Josefin Sans",sans-serif;color:var(--teal)}
.stat span{font-size:.92rem;color:var(--muted)}
.daysel{display:flex;gap:6px;flex-wrap:wrap}
.daysel label{border:1.5px solid var(--line);border-radius:99px;padding:.25em .75em;font:600 .88rem "Josefin Sans",sans-serif;cursor:pointer}
.daysel input{accent-color:var(--teal)}
details.add summary{cursor:pointer;font:600 1rem "Josefin Sans",sans-serif;color:var(--teal);list-style:none}
details.add summary::-webkit-details-marker{display:none}
.login{max-width:380px;margin:12vh auto;padding:0 20px}
@media (max-width:820px){
  .grid2,.grid4{grid-template-columns:1fr 1fr}
  .week{grid-template-columns:repeat(7,minmax(42px,1fr));gap:4px}
  .week a{padding:6px 2px}
  /* liste en cartes sur téléphone : tout reste visible (téléphone cliquable, remarques) */
  table.list thead{display:none}
  table.list,table.list tbody{display:block}
  table.list tr{display:grid;grid-template-columns:auto auto 1fr;gap:6px 14px;padding:12px 0;border-bottom:1px solid var(--line)}
  table.list td{display:block;padding:0;border:0}
  table.list td:nth-child(n+4){grid-column:1/-1}
  table.list td:empty{display:none}
  table.list .acts{justify-content:flex-start}
  table.list .acts .btn.small{padding:.6em 1.1em .5em;font-size:.95rem}
  table.list tr.cancelled td,table.list tr.noshow td{text-decoration:none}
  table.list tr.cancelled,table.list tr.noshow{opacity:.55}
}
@media (max-width:520px){.grid2,.grid4{grid-template-columns:1fr}}
@media print{.topbar,.noprint{display:none!important}.admin{background:#fff}.card{border:0;padding:0}}
