/* Odette, direction « le passe » (2026-10-10).
   Le passe, c'est le comptoir où la cuisine accroche les tickets. L'outil reste calme et précis ;
   un seul élément porte le caractère : le ticket (commandes en cours et caisse).
   Titres et chiffres en Bricolage Grotesque (--title), texte en Instrument Sans (--font).
   Le style choisi par le restaurant (--display) habille son propre nom, pas l'outil. */

:root{
  --bg:#f5f5f0; --surface:#fff; --sunken:#eff0ea; --ink:#14211d; --muted:#5c6964; --faint:#8b958f; --line:#e2e5de;
  --brand-soft:color-mix(in srgb,var(--brand) 8%,#fff);
  --brand-tint:color-mix(in srgb,var(--brand) 18%,#fff);
  --brand-line:color-mix(in srgb,var(--brand) 26%,#e2e5de);
  --copper:#c58b57;
  --radius:14px; --shadow:none;
  --ticket-edge:radial-gradient(circle at 6px 0,transparent 4.5px,var(--surface) 5px) 0 0/12px 6px repeat-x;
}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;letter-spacing:0;font-feature-settings:"ss01" 1}
.stat-value,.cashbox strong,.cashbox b,.order-foot strong,.cart-total strong,.pay-total,td,.tile b,.kpi b{font-variant-numeric:tabular-nums}

/* ---------- Titres ---------- */
h1,.page-head h1{font:650 30px/1.12 var(--title);letter-spacing:-.025em;color:var(--ink);font-variation-settings:"opsz" 48}
body[data-style="moderne"] h1{font-weight:650;letter-spacing:-.025em}
.subtitle{color:var(--muted);font-size:14.5px;line-height:1.55;margin-top:8px;max-width:62ch}
.page-head{margin-bottom:28px;align-items:flex-end}
.card-head h2,.board-col h2,.section-title,h2{font-family:var(--title);font-weight:600;letter-spacing:-.01em}
.card-head h2{font-size:16.5px}
.section-title{font-size:19px;color:var(--ink)}
.modal-head h2{font:650 22px/1.2 var(--title);letter-spacing:-.02em;color:var(--ink)}

/* ---------- Barre latérale : discrète, l'élément actif marqué par un filet ---------- */
.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:22px 12px 16px}
.brand{padding:0 8px 20px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.brand strong{font-family:var(--display);color:var(--ink)}
.brand-mark{width:40px;height:40px;border-radius:11px}
nav{gap:18px}
.nav-label{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500;color:var(--faint);padding:0 12px;margin-bottom:2px}
nav button{position:relative;padding:8px 12px;border-radius:9px;font-size:13.5px;font-weight:500;color:var(--muted)}
nav button:hover{background:var(--sunken);color:var(--ink)}
nav button .ico{color:var(--faint)}
nav button.active{background:var(--brand-soft);color:var(--brand-ink);box-shadow:none;font-weight:600}
nav button.active::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
nav button.active .ico{color:var(--brand)}
.nav-badge{background:var(--copper);color:#fff}
nav button.active .nav-badge{background:var(--brand);color:var(--on-brand)}
.profile{border-radius:12px;background:var(--bg);border-color:var(--line)}

/* ---------- En-tête de page ---------- */
main>header{height:64px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.breadcrumb{font-size:13px}
#date{font-size:13px;color:var(--muted)}
#content{padding-top:34px}

/* ---------- Boutons, champs, sélecteurs ---------- */
.btn{border-radius:10px;min-height:40px;padding:9px 16px;font-weight:600;font-size:13.5px;box-shadow:none;border:1px solid var(--line);background:var(--surface);color:var(--ink)}
.btn:hover{background:var(--sunken);border-color:color-mix(in srgb,var(--ink) 18%,var(--line))}
.btn.primary,.btn.primary:hover{background:var(--brand);border-color:var(--brand);color:var(--on-brand);box-shadow:none}
.btn.primary:hover{background:color-mix(in srgb,var(--brand) 88%,#000)}
.btn:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
input:not([type=checkbox]):not([type=radio]),select,textarea{border-radius:10px;background:var(--surface);border:1px solid var(--line);min-height:42px}
input:not([type=checkbox]):not([type=radio]):hover,select:hover{border-color:color-mix(in srgb,var(--ink) 20%,var(--line))}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.field{font-size:12.5px;font-weight:550;color:var(--ink)}
.segmented{background:var(--sunken);border-radius:10px;padding:3px;gap:2px}
.segmented span{border-radius:8px;font-size:13.5px;font-weight:500;padding:7px 14px}
.segmented input:checked+span{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #14211d14,0 0 0 1px var(--line)}
.text-link{font-weight:600;color:var(--brand-ink)}

/* ---------- Surfaces : bordure fine, pas d'ombre (l'élévation est réservée aux fenêtres) ---------- */
.card,.stat,.cashbox>div,.order,.tile{box-shadow:none}
.card{border-radius:var(--radius);border-color:var(--line)}
.card-head{padding:20px 22px}
.card-head p{font-size:13px;color:var(--muted)}
.pill{border-radius:6px;font-size:12px;font-weight:550;padding:3px 8px}

/* Tableaux : en-têtes en minuscules, filet fin, chiffres alignés */
thead th{text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:550;color:var(--muted);background:transparent;border-bottom:1px solid var(--line);padding-top:12px;padding-bottom:12px}
.table-wrap th:first-child{background:var(--surface)}
tbody td{border-top:1px solid var(--line)}
tbody tr:hover td{background:color-mix(in srgb,var(--brand) 3%,#fff)}

/* ---------- Indicateurs : une seule bande, séparée par des filets ---------- */
.stats{gap:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.stat,.stat:first-child{background:transparent;border:0;border-radius:0;color:var(--ink);padding:20px 22px;box-shadow:none;border-left:1px solid var(--line);margin-left:-1px}
.stat:first-child .stat-top,.stat:first-child .stat-note{color:inherit;opacity:1}
.stat-top{color:var(--muted);font-size:13px;font-weight:500}
.stat-top .stat-icon,.stat-icon{display:none}
.stat-value{font:650 30px/1.1 var(--title);letter-spacing:-.025em;margin:12px 0 6px;color:var(--ink)}
.stat:first-child .stat-value{color:var(--brand-ink)}
.stat-note{color:var(--muted);font-size:12.5px}

/* Caisse du jour : un seul panneau, total en tête, moyens de paiement à la suite */
.cashbox{gap:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;margin-bottom:22px}
.cashbox>div,.cashbox>div:first-child{background:transparent;border:0;border-left:1px solid var(--line);border-radius:0;color:var(--ink);padding:14px 18px;margin-left:-1px;min-width:120px}
.cashbox>div:first-child{min-width:200px}
.cashbox>div:first-child small,.cashbox>div:first-child span{color:var(--muted);opacity:1}
.cashbox small{display:block;font-size:12.5px;color:var(--muted)}
.cashbox strong{font:650 26px/1.15 var(--title);letter-spacing:-.02em;color:var(--brand-ink);margin:4px 0 2px}
.cashbox b{font:600 17px/1.3 var(--title);margin-top:4px}
.cashbox .platform{background:var(--bg)}
.cashbox.empty-box{border-style:dashed;padding:14px 18px}

/* Graphique : la meilleure journée en cuivre */
.bars{background:linear-gradient(var(--line) 1px,transparent 1px) 0 8px/100% 40px}
.bar{background:var(--brand-tint);border-radius:4px 4px 1px 1px}
.bar.top{background:var(--copper)}
.bar-col:hover .bar{background:var(--brand)}

/* Encarts de conseil : ton neutre, liseré de couleur */
.insight-banner{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:var(--radius)}
.insight-banner.warn-banner{border-left-color:var(--warn)}
.insight-banner h3{color:var(--ink);font-family:var(--title);font-weight:600}
.insight-banner p{color:var(--muted)}
.onboarding{border-color:var(--line)}

/* ---------- Le ticket : commandes en cours ---------- */
.board{gap:16px}
.board-col{background:transparent;padding:0;min-height:0}
.board-col header{padding:0 2px 12px;border-bottom:2px solid var(--ink);margin-bottom:14px}
.board-col h2{font-size:15px}
.board-col .count{background:var(--sunken);color:var(--ink);font-weight:650}
.board-col[data-status=nouvelle] .count{background:var(--copper);color:#fff}
.board-empty{border:1px dashed var(--line);border-radius:10px;padding:22px 0;background:transparent}
.order{position:relative;border:0;border-radius:0 0 8px 8px;padding:16px 16px 14px;margin:6px 0 16px;background:var(--surface);
  box-shadow:0 1px 0 var(--line),0 6px 16px -10px #14211d40;filter:drop-shadow(0 0 .5px #14211d26)}
.order::before{content:"";position:absolute;left:0;right:0;top:-6px;height:6px;background:var(--ticket-edge)}
.order.online{border-left:0}
.order.online::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ok)}
.order-top{gap:8px}
.order-top b{font:700 22px/1 var(--title);letter-spacing:-.02em}
.order-who{font-size:14px;margin:10px 0 3px}
.order ul{border-top:1px dashed color-mix(in srgb,var(--ink) 22%,transparent);border-bottom:1px dashed color-mix(in srgb,var(--ink) 22%,transparent);padding:10px 0;margin:10px 0;font-size:14px;gap:5px}
.order ul b{font-family:var(--title);font-weight:650}
.order-foot{flex-wrap:wrap}
.order-foot strong{font:650 17px/1.2 var(--title);white-space:nowrap}
.order-foot .btn{min-height:34px;font-size:13px}

/* ---------- Caisse : produits à gauche, ticket à droite ---------- */
dialog.wide{width:min(1120px,96vw)}
.pos{display:grid;gap:18px}
.pos-pick,.pos-ticket{display:grid;gap:14px;align-content:start;min-width:0}
.tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;max-height:none;padding:2px}
.tile{min-height:92px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.tile span{font-weight:600;font-size:14px;line-height:1.3}
.tile b{font:600 15px var(--title);color:var(--ink)}
.tile:hover{border-color:var(--brand-line);background:var(--brand-soft)}
.tile.in{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand)}
.tile i{background:var(--brand);color:var(--on-brand);font-family:var(--title)}
.cart{position:relative;background:var(--surface);border:0;border-radius:0 0 8px 8px;padding:16px;margin-top:6px;filter:drop-shadow(0 0 .5px #14211d40);box-shadow:0 6px 16px -10px #14211d40}
.cart::before{content:"";position:absolute;left:0;right:0;top:-6px;height:6px;background:var(--ticket-edge)}
.cart-line{border-bottom:1px dashed color-mix(in srgb,var(--ink) 18%,transparent);padding:8px 0;font-size:14px}
.cart-total{border-top:2px solid var(--ink);margin-top:6px;padding-top:12px}
.cart-total strong{font:700 26px/1 var(--title);letter-spacing:-.02em}
.cart-empty{color:var(--muted);text-align:center;padding:18px 0;margin:0}
.pay-total{font:700 40px/1 var(--title);letter-spacing:-.03em}
@media (min-width:980px){
  .pos{grid-template-columns:minmax(0,1.55fr) minmax(320px,1fr);gap:26px;align-items:start}
  .pos-ticket{position:sticky;top:0}
  .pos-pick .tiles{max-height:min(62vh,560px);overflow:auto}
  .pos-ticket .form-grid{grid-template-columns:1fr 1fr}
}

/* ---------- Fenêtres ---------- */
dialog{border-radius:18px;border:1px solid var(--line);box-shadow:0 30px 80px -20px #14211d55}
dialog::backdrop{background:#14211d59;backdrop-filter:blur(2px)}

/* ---------- Connexion et inscription ---------- */
.auth-card h1{font:650 34px/1.1 var(--title);letter-spacing:-.03em;color:var(--ink)}
.auth-showcase{background:var(--brand)}
.auth-showcase::before{opacity:.5}
.auth-showcase .eyebrow{text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:#e7c9a4}
.auth-showcase h2{font:650 clamp(34px,3.4vw,50px)/1.05 var(--title);letter-spacing:-.035em}
.auth-tabs{border-radius:12px}

/* ---------- Téléphone ---------- */
@media (max-width:860px){
  h1,.page-head h1{font-size:26px}
  .stats{grid-template-columns:1fr 1fr}
  .stat,.stat:first-child{padding:14px 16px;border-top:1px solid var(--line);margin-top:-1px}
  .stat-value{font-size:22px}
  .cashbox>div{flex:1 1 45%;border-top:1px solid var(--line);margin-top:-1px}
  .cashbox>div:first-child{flex-basis:100%}
  .board-col header{border-bottom-width:2px}
  .tiles{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
  .tile{min-height:80px}
  nav button.active::before{left:-12px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Retouches après revue des captures ---------- */
.pos-ticket{background:var(--bg);border-radius:14px;padding:18px 16px 16px;border:1px solid var(--line)}
.pos-ticket .cart{margin-top:8px}
.cashbox>div{flex:1 1 0}
.cashbox>div:first-child{flex:1.6 1 0}
.table-wrap td:not(:first-child),.card>table td:not(:first-child){white-space:nowrap}
.auth-showcase h2{letter-spacing:-.028em;line-height:1.07}
nav{gap:14px}
nav button{padding:7px 12px}
.brand{padding-bottom:16px;margin-bottom:10px}
.pos-ticket .sticky-submit{background:linear-gradient(transparent,var(--bg) 30%)}
@media (max-width:860px),(pointer:coarse){#visitor-currency{font-size:16px}}

/* ---------- Tableau de bord « Décisions » ---------- */
.kpi-band{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}
.kpi-cell{position:relative;display:grid;gap:4px;align-content:start;padding:18px 22px 16px;border-left:1px solid var(--line);margin-left:-1px;min-width:0}
.kpi-label{font-size:13px;font-weight:500;color:var(--muted)}
.kpi-cell strong{font:650 30px/1.1 var(--title);letter-spacing:-.025em;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:6px}
.kpi-cell:first-child strong{color:var(--brand-ink)}
.kpi-delta{justify-self:start;font-size:12.5px;font-weight:650;padding:2px 7px;border-radius:6px;font-variant-numeric:tabular-nums}
.kpi-delta.up{background:var(--ok-bg);color:var(--ok)}
.kpi-delta.down{background:var(--bad-bg);color:var(--bad)}
.kpi-delta.flat{background:var(--sunken);color:var(--muted);font-weight:550}
.kpi-note{font-size:12.5px;color:var(--muted);padding-right:92px}
.spark{position:absolute;right:20px;bottom:16px;width:84px;height:26px;overflow:visible}
.spark polyline{fill:none;stroke:var(--brand);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round;opacity:.75}
.spark circle{fill:var(--brand)}
.kpi-compare{font-size:12.5px;color:var(--faint);margin:8px 2px 22px}

.actions-card .card-head{padding-bottom:6px}
.actions{list-style:none;margin:0;padding:0 22px 8px}
.action{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:14px 0 14px 16px;border-top:1px solid var(--line);position:relative}
.action:first-child{border-top:0}
.action::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:var(--faint)}
.action.bad::before{background:var(--bad)}.action.warn::before{background:var(--copper)}.action.info::before{background:var(--brand)}
.action h3{font:600 15px/1.3 var(--title);margin:0 0 3px}
.action p{margin:0;font-size:13.5px;color:var(--muted);line-height:1.5}
.action p b{color:var(--ink);font-weight:600}
.action-impact{text-align:right;white-space:nowrap}
.action-impact strong{display:block;font:650 17px/1.2 var(--title);font-variant-numeric:tabular-nums}
.action-impact small{font-size:12px;color:var(--muted)}
.action .btn{min-height:36px;font-size:13px}
.actions-more{padding:0 0 10px}
.actions-more summary{cursor:pointer;padding:8px 22px 12px;font-weight:600;color:var(--brand-ink);font-size:13.5px}
.actions-empty{padding:4px 22px 22px;margin:0;color:var(--muted)}

.matrix-wrap{padding:0 14px 6px}
.matrix{width:100%;height:auto;display:block}
.matrix .axis{stroke:var(--line);stroke-width:1}
.matrix .threshold{stroke:var(--faint);stroke-dasharray:4 4}
.matrix .q-star{fill:var(--brand-soft)}
.matrix .axis-title{font:500 11px var(--font);fill:var(--muted)}
.matrix .dot circle{stroke:#fff;stroke-width:2}
.matrix .dot text{font:500 11px var(--font);fill:var(--ink)}
.matrix .star circle{fill:var(--brand)}.matrix .plow circle{fill:var(--copper)}.matrix .puzzle circle{fill:#4f7d9a}.matrix .dog circle{fill:#b8bfba}
.quads{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.quad{padding:16px 22px;border-left:1px solid var(--line);border-top:1px solid var(--line);margin:-1px 0 0 -1px}
.quad h3{display:flex;align-items:center;gap:8px;font:600 15px var(--title);margin:0 0 4px}
.quad h3::before{content:"";width:10px;height:10px;border-radius:50%;background:#b8bfba}
.quad.star h3::before{background:var(--brand)}.quad.plow h3::before{background:var(--copper)}.quad.puzzle h3::before{background:#4f7d9a}
.quad h3 span{margin-left:auto;font:600 12px var(--font);color:var(--muted)}
.quad p{margin:0 0 10px;font-size:12.5px;color:var(--muted);line-height:1.5}
.quad ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.quad li{display:flex;justify-content:space-between;gap:10px;font-size:13.5px}
.quad li small{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.quad li.none{color:var(--faint)}
@media (max-width:860px){
  .kpi-band{grid-template-columns:1fr 1fr}
  .kpi-cell{padding:14px 16px 46px;border-top:1px solid var(--line);margin-top:-1px}
  .kpi-cell strong{font-size:22px}
  .kpi-note{padding-right:0}
  .spark{left:16px;right:auto;bottom:12px;width:72px}
  .actions{padding:0 16px 6px}
  .action{grid-template-columns:minmax(0,1fr) auto;gap:10px 14px}
  .action .btn{grid-column:1/-1;justify-self:start}
  .quads{grid-template-columns:1fr}
  .quad{padding:14px 16px}
}
.matrix-note{margin:0;padding:0 22px 14px;font-size:12.5px;color:var(--muted)}
.action{grid-template-columns:minmax(0,1fr) 150px 170px}.action .btn{justify-self:end}@media (max-width:860px){.action{grid-template-columns:minmax(0,1fr) auto}.action .btn{justify-self:start}.action-impact:empty{display:none}}

/* ---------- Filtres croisés, carte de chaleur, seuil de rentabilité ---------- */
.dec-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin:0 0 14px}
.dec-filters label{display:grid;gap:5px;font-size:12.5px;font-weight:550;color:var(--muted)}
.dec-filters select{width:auto;min-width:150px;min-height:38px}
.dec-chip{border:1px solid var(--brand);background:var(--brand-soft);color:var(--brand-ink);border-radius:8px;padding:8px 12px;font:600 13px var(--font);cursor:pointer}
.dec-hint{font-size:12.5px;color:var(--faint);padding-bottom:10px}
.dec-filters .text-link{padding-bottom:10px}
[data-dec-channel],[data-dec-product],[data-dec-day]{cursor:pointer}
.channel.sel{background:var(--brand-soft);margin:0 -12px;padding-left:12px;padding-right:12px;border-radius:8px}
.bar-col.sel .bar{background:var(--brand)}
.matrix .dot.sel circle{r:9;stroke:var(--ink)}
.matrix .dot:hover circle{stroke:var(--ink)}
.quad li{border-radius:6px;padding:2px 4px;margin:0 -4px}
.quad li:hover,.quad li.sel{background:var(--brand-soft)}
.heat-wrap{overflow-x:auto;padding:0 22px 6px}
.heat{border-collapse:separate;border-spacing:3px;width:100%;font-variant-numeric:tabular-nums}
.heat th{font:500 11.5px var(--font);color:var(--muted);padding:2px 4px;text-align:center;background:none;border:0}
.heat tbody th{text-align:left;padding-right:8px;white-space:nowrap}
.heat td{min-width:30px;height:30px;border-radius:5px;text-align:center;font-size:11px;font-weight:600;border:0;
  background:color-mix(in srgb,var(--brand) calc(var(--a) * 100%),var(--sunken));color:var(--ink)}
.heat td[style*="--a:0."]{color:var(--ink)}
.heat td[style*="--a:0.6"],.heat td[style*="--a:0.7"],.heat td[style*="--a:0.8"],.heat td[style*="--a:0.9"],.heat td[style*="--a:1"]{color:var(--on-brand)}
tbody tr:hover .heat td{background:inherit}
.heat-note{margin:6px 22px 18px;font-size:13.5px;line-height:1.55}
.heat-note small{color:var(--muted);font-size:12px}
.heat-empty{margin:0;padding:4px 22px 22px;color:var(--muted)}
.be-body{padding:0 22px 20px;display:grid;gap:10px}
.be-big{margin:0;display:grid;gap:2px}
.be-big strong{font:650 30px/1.1 var(--title);letter-spacing:-.025em;color:var(--brand-ink);font-variant-numeric:tabular-nums}
.be-big span{font-size:13.5px;color:var(--muted)}
.be-bar{position:relative;height:10px;border-radius:99px;background:var(--sunken);margin:6px 0 4px}
.be-bar span{position:absolute;inset:0 auto 0 0;border-radius:99px;background:var(--brand)}
.be-bar i{position:absolute;top:-4px;bottom:-4px;width:3px;margin-left:-1.5px;border-radius:2px;background:var(--copper)}
.be-line{display:flex;justify-content:space-between;gap:10px;font-size:13.5px;color:var(--muted)}
.be-line strong{color:var(--ink);font-variant-numeric:tabular-nums}
.be-line.total{border-top:1px solid var(--line);padding-top:8px;font-weight:600;color:var(--ink)}
.be.ok .be-line.total strong{color:var(--ok)}
.be.short .be-line.total strong{color:var(--bad)}
.be-text{margin:0;font-size:13.5px;line-height:1.5}
.be-note{color:var(--faint);font-size:12px;line-height:1.5}
@media (max-width:860px){.dec-filters label{flex:1 1 40%}.dec-filters select{min-width:0;width:100%}.heat-wrap{padding:0 12px 6px}.heat td{min-width:26px;height:26px}.be-body{padding:0 16px 16px}}

/* Commande : champs selon le type (sur place, à emporter, livraison) */
.order-form [data-show]{display:none}
.order-form[data-kind=dine] [data-show~=dine],.order-form[data-kind=away] [data-show~=away],.order-form[data-kind=delivery] [data-show~=delivery]{display:block}
.order-form [data-show] .field{margin:0}
.table-tag{font:700 15px var(--title);color:var(--ink)}
.server-tag{display:inline-block;font-size:12.5px;font-weight:600;color:var(--brand-ink);background:var(--brand-soft);border-radius:6px;padding:2px 7px;margin-right:4px}

/* Ventes par serveur */
#server-report tfoot td{font-weight:650;border-top:2px solid var(--ink);padding-top:12px;padding-bottom:12px}
#server-report .muted-row td{color:var(--muted)}
.share{display:inline-block;vertical-align:middle;width:54px;height:6px;border-radius:9px;background:var(--sunken);margin-right:8px;overflow:hidden}
.share i{display:block;height:100%;background:var(--brand)}

/* Notes rapides de commande */
.note-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:-4px}
.chip-btn{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:5px 11px;font:500 12.5px var(--font);color:var(--ink);cursor:pointer}
.chip-btn:hover{border-color:var(--brand);background:var(--brand-soft)}

/* Formules : encart « inclus dans la formule » et modules verrouillés */
.card.upsell{border-style:dashed;background:color-mix(in srgb,var(--brand) 3%,var(--surface))}
.card.upsell .card-head{flex-wrap:wrap}
.module.locked{opacity:.7}
.module.locked small a{white-space:nowrap}

/* Accès du gérant */
.access-card .card-head{flex-wrap:wrap;gap:14px 24px}
.access-toggle{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:550;max-width:420px;cursor:pointer}

/* ---------- Finances ---------- */
.fin-period{margin:-6px 0 16px;color:var(--muted);font-size:13.5px}
.waterfall-wrap{padding:0 14px 4px;overflow-x:auto}
.waterfall{width:100%;min-width:560px;height:auto;display:block}
.waterfall .zero{stroke:var(--line);stroke-width:1}
.waterfall .link{stroke:var(--faint);stroke-dasharray:3 3}
.waterfall .step rect{fill:var(--copper)}
.waterfall .step.total rect{fill:var(--brand)}
.waterfall .step.result rect{fill:var(--ok)}
.waterfall .step.loss rect{fill:var(--bad)}
.waterfall .amount{font:650 11px var(--title);fill:var(--ink)}
.waterfall .label{font:500 10px var(--font);fill:var(--muted)}
.fin-pos,.fin-row.fin-pos strong{color:var(--ok)}
.fin-neg,.fin-row.fin-neg strong{color:var(--bad)}
.fin-note{margin:0;padding:0 22px 18px;font-size:12px;color:var(--faint);line-height:1.5}
.fin-body .fin-note{padding:10px 0 0}
.fin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.fin-body{padding:0 22px 20px}
.fin-body h3{font:600 13.5px var(--title);color:var(--muted);margin:10px 0 4px}
.fin-row{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px dashed color-mix(in srgb,var(--ink) 14%,transparent);font-size:14px}
.fin-row strong{font-variant-numeric:tabular-nums;white-space:nowrap}
.fin-row.sum{border-bottom:0;border-top:2px solid var(--ink);margin-top:4px;padding-top:9px;font-weight:650}
.fin-row.due{color:var(--muted)}
.fin-empty{color:var(--muted);margin:4px 0}
.ratio{padding:12px 0;border-bottom:1px solid var(--line);display:grid;gap:5px}
.ratio:last-child{border-bottom:0}
.ratio-label{font-size:13px;color:var(--muted);font-weight:550}
.ratio strong{font:650 26px/1.1 var(--title);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.ratio.ok strong{color:var(--ok)}.ratio.warn strong{color:var(--warn)}.ratio.bad strong{color:var(--bad)}
.ratio-bar{position:relative;height:6px;border-radius:9px;background:var(--sunken)}
.ratio-bar span{position:absolute;inset:0 auto 0 0;border-radius:9px;background:currentColor;opacity:.7}
.ratio.ok .ratio-bar{color:var(--ok)}.ratio.warn .ratio-bar{color:var(--warn)}.ratio.bad .ratio-bar{color:var(--bad)}
.ratio-bar i{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.5}
.ratio small{font-size:12.5px;color:var(--muted);line-height:1.45}
.fin-table td:not(:first-child),.fin-table th:not(:first-child){text-align:right}
@media (max-width:860px){.fin-grid{grid-template-columns:1fr;gap:0}.fin-body{padding:0 16px 16px}}

/* Charges à reprendre */
.carry{border:1px dashed var(--copper);background:color-mix(in srgb,var(--copper) 7%,var(--surface));border-radius:12px;padding:14px 16px;margin:6px 0 16px;display:grid;gap:10px;justify-items:start}
.carry p{margin:0;font-size:14px;line-height:1.5}
.carry small{color:var(--muted);font-size:12.5px}
/* Rapport imprimable (« Télécharger le rapport ») */
#print-report{display:none}
@media print{
  body.printing{background:#fff!important}
  body.printing>*:not(#print-report){display:none!important}
  body.printing #print-report{display:block;color:#111;font:12pt/1.45 var(--font);padding:0 4mm}
  #print-report .report-head{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #111;padding-bottom:8px;margin-bottom:14px}
  #print-report h1{font:700 20pt var(--title);margin:0;color:#111}
  #print-report .report-head p{margin:2px 0 0;font-size:10pt;color:#444;text-align:right}
  #print-report h2{font:650 13pt var(--title);margin:16px 0 6px}
  #print-report table{width:100%;border-collapse:collapse}
  #print-report td{padding:5px 0;border-bottom:1px solid #ddd}
  #print-report td:last-child{text-align:right;font-variant-numeric:tabular-nums}
  #print-report tr.strong td{font-weight:700}
  #print-report tr.total td{border-top:2px solid #111;border-bottom:0}
  #print-report .report-note{margin-top:14px;font-size:9pt;color:#555}
  @page{margin:14mm}
}

/* ---------- Poste partagé du restaurant : verrou à code et barre de la personne ---------- */
#post-lock{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:var(--bg);overflow:auto}
.pl-card{width:min(380px,100%);text-align:center;display:grid;gap:14px}
.pl-place{color:var(--muted);font-size:14px}
.pl-clock{font:650 44px/1 var(--title);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}
.pl-card h2{font:600 18px/1.3 var(--title);margin:4px 0 0}
.pl-dots{display:flex;justify-content:center;gap:14px;margin:4px 0 6px}
.pl-dots span{width:14px;height:14px;border-radius:50%;border:2px solid var(--brand-line)}
.pl-dots span.on{background:var(--brand);border-color:var(--brand)}
.pl-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pl-pad button{height:64px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font:600 24px var(--title);color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;touch-action:manipulation}
.pl-pad button:active{background:var(--brand-soft);border-color:var(--brand-line)}
.pl-pad .ico{width:20px;height:20px}
.pl-actions{display:grid;gap:10px;margin-top:4px}
.pl-actions .btn{min-height:52px;justify-content:center;font-size:15.5px}
.pl-clockin{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pl-message{min-height:22px;font-size:14.5px;color:#a33a2b}
.pl-message.good{color:var(--brand-ink,var(--brand));font-weight:600}
.pl-leave{justify-self:center;font-size:13px;color:var(--faint)}
body.post-locked{overflow:hidden}
#post-bar:empty{display:none}
#post-bar{position:fixed;right:16px;bottom:16px;z-index:40;display:flex;align-items:center;gap:12px;padding:8px 8px 8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line)}
#post-bar span{display:flex;align-items:center;gap:8px;font-size:14px}
#post-bar .btn{min-height:38px;border-radius:999px}
body.post-mode .sidebar [data-logout]{display:none}
.staff-card .muted-row td{color:var(--faint)}
.staff-card td small{display:block;color:var(--faint)}
.staff-card td .text-link+.text-link{margin-left:12px}

/* ---------- Remise ou offert (encaissement) ---------- */
.discount{border:1px dashed var(--brand-line);border-radius:12px;padding:0 12px;margin:10px 0}
.discount summary{cursor:pointer;display:flex;align-items:center;gap:8px;padding:10px 0;font-weight:600;color:var(--brand-ink,var(--brand));list-style:none}
.discount summary::-webkit-details-marker{display:none}
.discount[open] summary{border-bottom:1px solid var(--line);margin-bottom:10px}
.discount-body{display:grid;gap:10px;padding-bottom:12px}
.d-items{display:grid;gap:6px}
.d-items .check{display:flex;align-items:center;gap:8px}
.d-items .check span{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--muted)}
.d-result{font-weight:600;font-variant-numeric:tabular-nums}

/* ---------- Caisse ---------- */
.cash-open{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.cash-open .field{flex:1 1 220px;margin:0}
.cash-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cash-tiles div{background:var(--surface);padding:14px 18px;display:grid;gap:4px}
.cash-tiles small{color:var(--muted);font-size:12.5px}
.cash-tiles b{font:650 22px/1.1 var(--title);font-variant-numeric:tabular-nums}
.cash-tiles div:last-child b{color:var(--brand-ink,var(--brand))}
.cash-other{padding:12px 20px 0;color:var(--muted)}
.cash-other b{color:var(--ink);font-variant-numeric:tabular-nums}
.cash-open-card .table-wrap{margin-top:12px}
td small{display:block;color:var(--faint)}
.bill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin:12px 0}
.bill-grid label{display:grid;gap:4px;font-size:12.5px;color:var(--muted)}
.bill-grid input{font-size:16px}
.cash-result{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
.cash-result div{display:grid;gap:6px;padding:14px;border:1px solid var(--line);border-radius:12px}
.cash-result small{color:var(--muted)}
.cash-result b{font:650 20px var(--title);font-variant-numeric:tabular-nums}
@media (max-width:560px){.cash-result{grid-template-columns:1fr}}
td .pill{white-space:nowrap}

/* ---------- Planning & temps ---------- */
.plan-tabs{max-width:320px}
.plan-grid th[scope=row]{white-space:nowrap;font-weight:600;text-align:left}
.plan-grid td{vertical-align:top;min-width:118px;padding:8px}
.plan-grid td.today,.plan-grid th.today{background:var(--brand-soft)}
.shift{display:grid;gap:2px;width:100%;text-align:left;padding:6px 8px;margin-bottom:6px;border-radius:9px;border:1px solid var(--line);background:var(--surface);font:inherit;cursor:pointer}
.shift b{font-size:13px;font-variant-numeric:tabular-nums}
.shift small{font-size:11.5px;color:var(--muted)}
.shift.green{border-color:#bfe0cb;background:#f1faf4}
.shift.orange{border-color:#efd3a6;background:#fdf6ea}
.shift.red{border-color:#efc0b8;background:#fdf1ef}
.shift.muted,.shift.extra{cursor:default;background:var(--sunken)}
.add-shift{width:100%;border:1px dashed var(--line);border-radius:9px;background:none;color:var(--faint);font-size:16px;line-height:1;padding:4px;cursor:pointer}
.add-shift:hover{border-color:var(--brand-line);color:var(--brand)}
.day-pick label{cursor:pointer}
.day-pick input{position:absolute;opacity:0}
.day-pick span{display:inline-block;padding:6px 10px;border:1px solid var(--line);border-radius:999px}
.day-pick input:checked+span{background:var(--brand);border-color:var(--brand);color:#fff}
.absence-form{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.absence-form h3{font:600 15px var(--title);margin-bottom:8px}
.month-pick{font-size:16px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
tfoot th{text-align:left}
.plan-grid th[scope=row]{text-transform:none;letter-spacing:0;font-size:14px;color:var(--ink)}
.sheet td,.sheet th{padding-left:12px;padding-right:12px}
.sheet td small{white-space:nowrap}
.sheet td.stack .pill{display:block;width:max-content;margin-bottom:4px}
.sheet tfoot th{text-transform:none;letter-spacing:0;font-size:14px;color:var(--ink)}

/* ---------- Pourboires ---------- */
.tip-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:8px 0}
.tip-row .field{flex:1 1 160px;margin:0}
.tip-row [data-keep-change]{flex:1 1 220px;min-height:44px}
.tips-settings{display:grid;gap:12px;margin-bottom:14px}
.tips-tiles{margin:0 -20px 12px}

/* ---------- Poste : mon planning ---------- */
#post-bar [data-my-schedule]{min-height:38px;border-radius:999px}
.my-schedule h3{font:600 15px var(--title);margin:16px 0 6px}
.my-today{padding:12px 14px;border-radius:12px;background:var(--brand-soft);font-size:15px}
.my-shifts{list-style:none;margin:0;padding:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.my-shifts li{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface)}
.my-shifts li span:first-child{flex:1}
.my-shifts li b{font-variant-numeric:tabular-nums}
.my-shifts li small{color:var(--muted)}
.my-shifts li.today{background:var(--brand-soft)}

/* Poste : écran de code dans les deux langues quand l'équipe est mixte */
.pl-alt{display:block;font-size:.78em;font-weight:500;color:var(--muted);margin-top:2px}
.btn .pl-alt{color:inherit;opacity:.75}
.pl-actions .btn{flex-direction:column;gap:0}

[data-create-restaurant]{display:flex;align-items:center;gap:6px;margin:6px 0 2px}
[data-create-restaurant] .ico{width:15px;height:15px}
/* Plusieurs établissements sur téléphone : le sélecteur se raccourcit, « Nouvelle commande » passe en icône */
@media (max-width:640px){
  .header-actions{min-width:0}
  .header-actions #active-tenant{min-width:0;max-width:42vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .header-actions:has(#active-tenant) .btn.primary span{display:none}
}

.square-card{border-color:var(--brand-line)}

/* ---------- Tickets imprimés (58 / 80 mm) ---------- */
#print-ticket{display:none}
.print-actions{margin-right:auto}
@media print{
  body.printing-ticket>*:not(#print-ticket){display:none!important}
  body.printing-ticket #print-ticket{display:block}
  body.printing-ticket{background:#fff!important}
}
.tk{width:72mm;padding:2mm 3mm;font:12px/1.35 "Courier New",ui-monospace,monospace;color:#000;background:#fff}
.tk-58{width:48mm;padding:1mm 2mm;font-size:10.5px}
.tk-c{text-align:center}
.tk-name{font-size:1.3em;display:block}
.tk-sep{border-top:1px dashed #000;margin:5px 0}
.tk-row{display:flex;justify-content:space-between;gap:8px}
.tk-row span:last-child{text-align:right;white-space:nowrap}
.tk-small{font-size:.85em}
.tk-indent{padding-left:1.2em}
.tk-total{font-weight:700;font-size:1.2em;margin:3px 0}
.tk-big{font-size:2em}
.tk-kitchen .tk-item{font-size:1.25em;margin:3px 0}
.tk-note{font-weight:700;border:1px solid #000;padding:3px}

/* ---------- Taxes ---------- */
.cart-tax{display:flex;justify-content:space-between;color:var(--muted);font-size:13.5px;padding:6px 0 0}
.pay-tax{text-align:center;color:var(--muted);font-size:13px;margin:-6px 0 12px}
.tax-row{display:grid;grid-template-columns:1fr 1fr 1.6fr;gap:10px}
.tax-row .field{margin:0 0 8px}
.tax-presets{margin-bottom:12px}
@media (max-width:560px){.tax-row{grid-template-columns:1fr 1fr}.tax-row .field:last-child{grid-column:1/-1}}

/* ---------- Options des plats ---------- */
.cart-opts,.order-opts{display:block;font-size:12px;color:var(--muted);font-weight:500}
.options-dialog{border:0;border-radius:var(--radius);padding:20px;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 32px)}
.options-dialog::backdrop{background:rgba(20,33,29,.35)}
.options-dialog .modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.opt-group{margin-bottom:14px}
.opt-group legend{display:flex;align-items:center;gap:8px;font-weight:600}
.opt-choices{display:grid;gap:6px}
.opt-choices label{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;min-height:44px}
.opt-choices label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
.opt-choices small{color:var(--muted);margin-left:4px}
.opt-add{width:100%;min-height:48px;justify-content:center}
.opt-edit{width:100%;justify-content:center;margin:6px 0 12px}
.opt-edit-group{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px}

/* ---------- Écran cuisine (sombre, lisible de loin) ---------- */
.kds-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px}
.kds-bar .segmented{max-width:100%}
.kds-bar [data-kds-full]{margin-left:auto}
.kds{background:#14211d;border-radius:var(--radius);padding:14px;min-height:60vh;color:#f2f4ef}
.kds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.kds-card{background:#1f2f2a;border:2px solid #2f4540;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px}
.kds-card.started{border-color:#4f7e6f}
.kds-card.warn{border-color:#d9a441}
.kds-card.late{border-color:#e0604f;box-shadow:0 0 0 2px rgba(224,96,79,.35)}
.kds-card header{display:flex;justify-content:space-between;align-items:baseline}
.kds-card header b{font:700 26px var(--title)}
.kds-timer{font:600 20px var(--title);font-variant-numeric:tabular-nums}
.kds-card.warn .kds-timer{color:#f0c060}
.kds-card.late .kds-timer{color:#ff8a78}
.kds-where{margin:0;color:#b9c5bf;font-size:14px}
.kds-card ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.kds-card li{font-size:19px;line-height:1.25}
.kds-card li small{display:block;font-size:14px;color:#f0c060}
.kds-note{margin:0;padding:6px 8px;border-radius:8px;background:#3a2f1c;color:#ffd98a;font-weight:600}
.kds-done{margin:0;color:#8fd0b0;font-size:13px}
.kds-card footer{display:flex;gap:8px;margin-top:auto}
.kds-card footer .btn{flex:1;min-height:52px;justify-content:center;font-size:17px}
.kds-start{background:#2f4540;color:#fff;border-color:#2f4540}
.kds-empty{text-align:center;color:#8fa39b;font-size:18px;padding:60px 0}
.kds-ready-list{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding-top:12px;border-top:1px solid #2f4540;color:#b9c5bf}
.kds-ready-list b{background:#2c5a47;color:#fff;border-radius:8px;padding:4px 10px}
body.kds-full .sidebar,body.kds-full main>header,body.kds-full .page-head{display:none!important}
body.kds-full main{margin:0!important;padding:10px!important;max-width:none!important}
body.kds-full .kds{min-height:calc(100vh - 80px)}
.tk-station{text-align:center;font-weight:700;font-size:1.4em;border:2px solid #000;margin-bottom:4px}
@media print{.tk-break{break-after:page;page-break-after:always}}

/* ---------- Plan de salle ---------- */
.floor-sum{margin:0;color:var(--muted)}
.floor-sum b{color:var(--ink);font-size:18px}
.floor-zone{margin-bottom:22px}
.floor-zone h2{font:600 16px var(--title);margin:0 0 10px}
.floor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}
.table-tile{position:relative;display:grid;align-content:start;gap:4px;min-height:110px;padding:14px;border-radius:16px;border:2px solid var(--line);background:var(--surface);text-align:left;font:inherit;cursor:pointer;color:var(--ink)}
.table-tile b{font:700 24px var(--title)}
.table-tile .tt-amount{font-weight:650;font-variant-numeric:tabular-nums}
.table-tile .tt-meta{font-size:12.5px;color:var(--muted)}
.table-tile.free{border-style:dashed}
.table-tile.busy{border-color:var(--brand);background:var(--brand-soft)}
.table-tile.ready{border-color:#d9a441;background:#fdf6ea}
.tt-flag{position:absolute;top:10px;right:10px;font-size:11.5px;font-weight:650;background:#d9a441;color:#fff;border-radius:999px;padding:2px 8px}
.floor-legend{display:flex;gap:16px;align-items:center;color:var(--muted);font-size:13px}
.floor-legend .lg{display:inline-block;width:14px;height:14px;border-radius:4px;border:2px solid var(--line);margin-right:4px;vertical-align:-2px}
.floor-legend .lg.free{border-style:dashed}.floor-legend .lg.busy{border-color:var(--brand);background:var(--brand-soft)}.floor-legend .lg.ready{border-color:#d9a441;background:#fdf6ea}
.floor-edit-zone{display:grid;grid-template-columns:1fr 2fr 120px auto;gap:10px;align-items:end;margin-bottom:8px}
.floor-edit-zone .field{margin:0}
@media (max-width:640px){.floor-edit-zone{grid-template-columns:1fr 1fr}}
.table-sheet{display:grid;gap:12px}
.ts-order{border:1px solid var(--line);border-radius:12px;padding:12px}
.ts-order header{display:flex;align-items:center;gap:10px}
.ts-order header strong{margin-left:auto}
.ts-order ul{margin:8px 0;padding-left:18px}
.ts-order ul small{color:var(--muted)}
.ts-order footer{display:flex;gap:8px;flex-wrap:wrap}
.ts-total{display:flex;justify-content:space-between;font-size:18px;padding:6px 2px}
.ts-share{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.ts-share .field{margin:0;max-width:200px}
.ts-share p{margin:0 0 10px;font-weight:600}
.split-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.split-row input{width:80px;font-size:16px}
.split-row small{color:var(--muted)}
.split-total{font-weight:650;margin:12px 0}

/* ---------- Abonnement ---------- */
.bill-state{border-left:4px solid var(--brand)}
.bill-state.warn{border-left-color:#d9a441;background:#fdf6ea}
.bill-state.bad{border-left-color:#e0604f;background:#fdf1ef}
.bill-state.info{border-left-color:#4f7e6f}
.bill-state h2{margin:0 0 4px;font:650 20px var(--title)}
.bill-state p{margin:0;color:var(--muted)}
.bill-due{border-color:var(--brand)}
.plan-picks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:0 20px 20px}
.plan-pick{border:1px solid var(--line);border-radius:14px;padding:18px;display:grid;gap:8px;align-content:start}
.plan-pick.mid{border-color:var(--brand)}
.plan-pick.current{background:var(--brand-soft)}
.plan-pick h3{font:650 18px var(--title);margin:0}
.plan-pick .pp-price b{font:700 26px var(--title);font-variant-numeric:tabular-nums}
.plan-pick .pp-price span,.plan-pick .pp-team{color:var(--muted);font-size:13.5px}
.plan-pick .pp-save{margin:0;color:var(--ok,#2c7a55);font-size:13px;font-weight:600}
.plan-pick .btn{justify-content:center;margin-top:6px}
@media (max-width:860px){.plan-picks{grid-template-columns:1fr}}
.bill-how{display:grid;gap:10px}
.bill-amount{font:700 30px var(--title);margin:0;font-variant-numeric:tabular-nums}
.bill-ref{margin:0}
.bill-instructions{white-space:pre-wrap;font:inherit;background:var(--sunken);border-radius:12px;padding:14px;margin:0}

.pp-tax{margin:-4px 0 0;color:var(--muted);font-size:13px}
.bill-lines{display:grid;gap:4px;padding:10px 12px;border-radius:12px;background:var(--sunken);font-variant-numeric:tabular-nums}
.bill-lines div{display:flex;justify-content:space-between;gap:12px}
.bill-lines .total{font-weight:700;border-top:1px dashed color-mix(in srgb,var(--ink) 25%,transparent);padding-top:6px;margin-top:2px}
.tax-line{display:grid;grid-template-columns:90px 70px 1fr;gap:6px;margin-bottom:6px}

/* Paiements par carte (Stripe) */
.card-pay h3{margin:22px 0 8px;font-size:15px}
.reader-list{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.reader-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.reader-form{display:grid;gap:10px;max-width:460px}
.card-wait{text-align:center;padding:8px 0 4px}
.card-wait .pay-total{font-size:34px;margin:6px 0 10px}
.card-wait .card-msg{color:var(--muted);margin:0 0 18px}
.card-wait .actions{justify-content:center}

/* Touches personnalisées : le style « Enseigne » habille le nom de l'établissement (comme Classique et Moderne), pas l'outil */
body[data-style=enseigne]{--display:'Bricolage Grotesque','Instrument Sans',sans-serif}
body[data-style=enseigne] .brand strong,body[data-style=enseigne] .preview-main h3{font-stretch:75%;font-weight:800;letter-spacing:-.01em}
.tk-logo{display:block;margin:0 auto 2mm;max-width:60%;max-height:20mm;filter:grayscale(1) contrast(1.5)}
.pl-logo{max-height:64px;max-width:60%;margin:0 auto;display:block;object-fit:contain}
textarea{font-family:inherit}

/* Écran de connexion : même univers que la page d'accueil (Bricolage Grotesque pour les titres, Instrument Sans pour le reste) */
.auth-showcase{background:#ffc61a;color:#14160f}
.auth-showcase::after{display:none}
.auth-showcase .eyebrow{color:#14160fb3}
.auth-showcase h2{font:800 clamp(40px,4.4vw,68px)/1 'Bricolage Grotesque','Instrument Sans',sans-serif;font-stretch:75%;letter-spacing:-.015em;margin:12px 0 26px}
.benefits li,.benefits li span{color:#14160f}.benefits b{color:#14160f}.benefits .ico{background:#14160f;color:#ffc61a;border-radius:6px}
.mock{border:2px solid #14160f;border-radius:4px;box-shadow:6px 6px 0 #14160f;transform:rotate(-.8deg)}
.auth-card h1{font:800 clamp(34px,3.6vw,48px)/1 'Bricolage Grotesque','Instrument Sans',sans-serif;font-stretch:75%;letter-spacing:-.015em}
.auth-card form .btn.primary{background:#14160f;border-color:#14160f;color:#fff;border-radius:6px;box-shadow:3px 3px 0 #d63a24}

/* Écrans tactiles : cibles de 44 px minimum (la densité de la version ordinateur ne change pas) */
@media (pointer:coarse){.btn,.auth-tabs button,.segmented span,#nav button,select,input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]):not([type=range]){min-height:44px}}

/* Tableau de bord resserré */
.dash-alerts{display:grid;gap:12px;margin:0 0 18px}
.more-card .more-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;padding:0 22px 22px}
.more-link{display:grid;gap:4px;text-align:left;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);cursor:pointer;min-height:44px}
.more-link:hover{border-color:var(--brand);background:var(--brand-soft)}
.more-link span{font-size:13px;color:var(--muted);line-height:1.4}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Plan de salle visuel : tables dessinées avec leurs chaises, état en un coup d'œil */
.floor-bar{align-items:center;gap:12px}
.floor-sum{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0;color:var(--muted);font-size:14px}
.floor-sum .fs b{font:700 20px var(--title);margin-right:4px;color:var(--ink)}
.fs-busy b{color:var(--brand)}.fs-res b{color:#b8741a}
.floor-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.res-today{position:sticky;top:84px}
.res-mini{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}
.res-mini li{display:grid;grid-template-columns:48px 1fr auto;gap:8px;align-items:center;font-size:14px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.res-mini li b{font-variant-numeric:tabular-nums}.res-mini li.arrivée{opacity:.7}
.floor-canvas{position:relative;container-type:inline-size;aspect-ratio:16/10;background:var(--surface);border:2px solid var(--ink);border-radius:14px;
  background-image:linear-gradient(#14160f0d 1px,transparent 1px),linear-gradient(90deg,#14160f0d 1px,transparent 1px);background-size:5% 8%;box-shadow:4px 4px 0 #14160f22;margin-bottom:6px}
.ft{position:absolute;display:block;padding:0;border:0;background:none;font:inherit;color:var(--ink);cursor:pointer;--c:clamp(8px,1.5cqw,15px);transition:filter .15s}
.ft:hover{filter:brightness(.97)}
.ft-body{position:absolute;inset:0;display:grid;place-content:center;gap:1px;text-align:center;line-height:1.1;background:#fff;border:2px solid #14160f66;border-radius:8%;overflow:hidden;padding:2px;box-shadow:0 2px 0 #14160f22}
.shape-round .ft-body{border-radius:50%}.shape-rect .ft-body{border-radius:6px}
.ft-body b{font:700 clamp(11px,2cqw,20px) var(--title)}
.ft-line{font-size:clamp(9px,1.35cqw,13px);font-weight:650;font-variant-numeric:tabular-nums}
.ft-sub{font-size:clamp(8px,1.15cqw,11.5px);color:var(--muted)}
.ft-flag{font-size:clamp(8px,1.1cqw,11px);font-weight:700;color:#8a5a00}
.chair{position:absolute;width:calc(var(--c)*1.7);height:var(--c);border-radius:var(--c) var(--c) 3px 3px;background:#e7e5dc;border:1.5px solid #14160f55;transform:translate(-50%,-50%) rotate(var(--r));pointer-events:none}
.ft.free .ft-body{border-style:dashed;background:#fffefb}
.ft.busy .ft-body{border-color:var(--brand);background:var(--brand-soft)}.ft.busy .chair{background:var(--brand);border-color:var(--brand)}
.ft.ready .ft-body{border-color:#d9a441;background:#fdf1d8}.ft.ready .chair{background:#e0a637;border-color:#b8791a}
.ft.reserved .ft-body{border:2px dashed #c9741a;background:#fff3e2}.ft.reserved .chair{background:#f1b774;border-color:#c9741a}
.ft:focus-visible .ft-body,.ft.sel .ft-body{outline:3px solid var(--stamp,#d63a24);outline-offset:2px}
.fd{position:absolute;display:grid;place-content:center;font-size:clamp(9px,1.3cqw,13px);font-weight:700;color:#14160f;overflow:hidden}
.fd-bar{background:#d9c7a3;border:2px solid #14160f77;border-radius:6px}
.fd-wall{background:#14160f}
.fd-door{background:#fff;border:2px solid #14160f;border-top:6px solid #14160f}
.fd-plant{background:#9ccb92;border:2px solid #2f6b3a;border-radius:50%}
.fd-text{color:var(--muted);font-weight:600;font-size:clamp(10px,1.6cqw,16px)}
.floor-canvas.editing .ft,.floor-canvas.editing .fd.editable{touch-action:none;cursor:grab}
.fd.editable.sel{outline:3px solid var(--stamp,#d63a24);outline-offset:2px}
.floor-legend .lg.reserved{border:2px dashed #c9741a;background:#fff3e2}
.floor-editor .fe-zones{display:flex;flex-wrap:wrap;gap:14px;align-items:end;justify-content:space-between;margin-bottom:12px}
.fe-tabs,.fe-tools,.fe-zone-name{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fe-tools{margin-bottom:12px;font-size:14px;color:var(--muted)}.fe-sep{width:1px;height:24px;background:var(--line);margin:0 4px}
.fe-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;align-items:start}
.fe-inspector{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--surface);display:grid;gap:12px}
.fe-inspector h3{margin:0;font:700 17px var(--title)}
.ins-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.stepper{display:flex;align-items:center;gap:8px}.stepper button{width:44px;height:44px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font-size:20px;cursor:pointer}
.stepper b{min-width:24px;text-align:center}
.ts-state{display:grid;gap:8px;padding:12px 14px;border-radius:12px;margin-bottom:14px;border:1px solid var(--line)}
.ts-state.busy{background:var(--brand-soft);border-color:var(--brand)}
.ts-seat{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.ts-seat .field{margin:0}
.ts-res{margin:0 0 14px}.ts-res h3{margin:0 0 8px;font:650 15px var(--title)}
.ts-res-row{display:grid;grid-template-columns:48px 1fr auto auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.table-tile.reserved{border:2px dashed #c9741a;background:#fff3e2}
/* Réservations */
.res-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.res-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin:6px 0 14px}
.res-chip{display:grid;gap:2px;min-width:72px;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;text-align:center}
.res-chip b{font-size:13px}.res-chip span{font:700 16px var(--title)}.res-chip.on{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}
.res-list{display:grid;gap:10px}
.res-card{display:grid;grid-template-columns:72px 1fr auto;gap:14px;align-items:center;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:14px}
.res-card.arrivée{border-color:var(--brand);background:var(--brand-soft)}.res-card.annulée,.res-card.absente,.res-card.terminée{opacity:.65}
.res-time{text-align:center}.res-time b{font:700 22px var(--title)}.res-time small{display:block;color:var(--muted)}
.res-info{display:grid;gap:3px}.res-info small{color:var(--muted)}
.res-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.res-tables{display:flex;flex-wrap:wrap;gap:8px}
.rt{cursor:pointer}.rt input{position:absolute;opacity:0}.rt span{display:grid;gap:0;text-align:center;min-width:56px;min-height:44px;padding:6px 10px;border:2px solid var(--line);border-radius:10px;background:var(--surface)}
.rt input:checked+span{border-color:var(--brand);background:var(--brand-soft)}.rt.taken span{opacity:.45;text-decoration:line-through}
.rt input:focus-visible+span{outline:3px solid var(--stamp,#d63a24);outline-offset:2px}
.rt small{font-size:11px;color:var(--muted)}
.res-hours .rh-row{display:flex;gap:10px;align-items:center;margin-bottom:6px;flex-wrap:wrap}.res-hours .rh-row .check{min-width:130px}
@media (max-width:1100px){.floor-layout{grid-template-columns:1fr}.res-today{position:static}.fe-layout{grid-template-columns:1fr}}
@media (max-width:700px){.res-card{grid-template-columns:60px 1fr}.res-actions{grid-column:1/-1;justify-content:flex-start}}
.floor-legend{flex-wrap:wrap}.segmented label input{min-height:0}

/* ---------- Plan de salle : finition premium (traits fins, ombres douces, échelle sobre) ---------- */
.floor-canvas{max-width:980px;border:1px solid #14160f24;border-radius:18px;margin-bottom:10px;
  background:linear-gradient(180deg,#fbfaf6,#f4f1ea);background-image:radial-gradient(#14160f1a 1px,transparent 1.2px),linear-gradient(180deg,#fbfaf6,#f4f1ea);background-size:24px 24px,100% 100%;
  box-shadow:inset 0 1px 0 #fff,0 1px 2px #14160f0f,0 22px 44px -30px #14160f66}
.floor-canvas.editing{background-image:linear-gradient(#14160f0f 1px,transparent 1px),linear-gradient(90deg,#14160f0f 1px,transparent 1px),linear-gradient(180deg,#fbfaf6,#f4f1ea);background-size:5% 8%,5% 8%,100% 100%}
.ft{--c:clamp(5px,.95cqw,10px)}
.ft-body{background:linear-gradient(180deg,#fff,#f8f6f1);border:1px solid #14160f33;border-radius:12%;gap:0;
  box-shadow:0 1px 1px #14160f14,0 8px 16px -10px #14160f73}
.shape-round .ft-body{border-radius:50%}.shape-rect .ft-body{border-radius:7px}
.ft-body b{font:600 clamp(9px,1.35cqw,14px)/1.1 var(--title);letter-spacing:-.01em}
.ft-line{font-size:clamp(7px,.95cqw,10.5px);font-weight:600;letter-spacing:0}
.ft-sub{font-size:clamp(6.5px,.85cqw,9.5px);letter-spacing:0}
.ft-flag{font-size:clamp(6.5px,.85cqw,9.5px)}
.chair{width:calc(var(--c)*1.9);height:var(--c);border-radius:var(--c) var(--c) 2px 2px;background:#f0ede5;border:1px solid #14160f3d;box-shadow:0 1px 0 #14160f12}
.ft.free .ft-body{border-style:solid;background:linear-gradient(180deg,#fff,#f8f6f1)}
.ft.busy .ft-body{background:linear-gradient(180deg,#1d7059,#0f5a47);border-color:#0a4537;box-shadow:0 1px 1px #0a453740,0 10px 18px -10px #0a4537aa}
.ft.busy b,.ft.busy .ft-line{color:#fff}.ft.busy .ft-sub{color:#ffffffb8}
.ft.busy .chair{background:#2f8a71;border-color:#0a4537}
.ft.ready .ft-body{background:linear-gradient(180deg,#fdf0d2,#f8e2b0);border-color:#c98a1a}.ft.ready .chair{background:#e9b85a;border-color:#b8791a}
.ft.reserved .ft-body{border:1.5px dashed #c9741a;background:linear-gradient(180deg,#fffaf2,#fff0dc)}.ft.reserved .chair{background:#f6cc9a;border-color:#c9741a}
.ft:focus-visible .ft-body,.ft.sel .ft-body{outline:2px solid #14160f;outline-offset:3px}
.fd{font-size:clamp(7px,1cqw,11px);font-weight:600;letter-spacing:.02em}
.fd-bar{background:linear-gradient(180deg,#e4d5b8,#d6c39d);border:1px solid #14160f3d;border-radius:8px;box-shadow:0 8px 14px -10px #14160f80}
.fd-wall{background:#2a2c26;border-radius:2px}
.fd-door{background:#f8f6f1;border:1px solid #14160f66;border-top:4px solid #2a2c26;border-radius:2px}
.fd-plant{background:radial-gradient(circle at 35% 30%,#b8dcae,#79b36c);border:1px solid #3f7d49;border-radius:50%}
.fd.editable.sel{outline:2px solid #14160f;outline-offset:3px}
/* barre de comptage et commandes : plus fines */
.floor-sum{gap:8px}
.floor-sum .fs{display:inline-flex;align-items:baseline;gap:6px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:13px;color:var(--muted)}
.floor-sum .fs b{font:600 16px var(--title);margin:0}
.floor-bar .btn,.floor-bar .segmented span{min-height:38px;font-size:13.5px}
.floor-layout{grid-template-columns:minmax(0,1fr) 270px;gap:20px}
.floor-zone{margin-bottom:18px}.floor-zone h2{font:600 14px var(--title);letter-spacing:.01em;color:var(--muted);margin:0 0 8px}
.floor-legend{font-size:12.5px;gap:14px;margin-top:6px}
.floor-legend .lg{width:12px;height:12px;border-width:1px;border-radius:4px;margin-right:6px}
.floor-legend .lg.busy{background:#0f5a47;border-color:#0a4537}
.res-today{border-radius:16px}.res-today .card-head{padding:16px 18px 6px}.res-today h2{font:600 16px var(--title)}.res-today .card-head p{font-size:12.5px}
.res-today .card-body{padding:6px 18px 16px}
.res-mini{gap:6px}.res-mini li{font-size:13px;grid-template-columns:44px 1fr auto}
.res-mini li b{font-weight:600}
/* éditeur : barres d'outils discrètes */
.floor-editor .card-head h2{font:600 18px var(--title)}
.fe-tools{gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);margin-bottom:14px}
.fe-tools .btn,.fe-tabs .btn,.fe-zone-name .btn{min-height:34px;padding:0 12px;font-size:13px;border-radius:9px}
.fe-tools>span:first-child{font-size:12.5px;padding:0 6px}
.fe-layout{grid-template-columns:minmax(0,1fr) 230px;gap:18px}
.fe-inspector{border-radius:14px;padding:14px 16px;box-shadow:0 1px 2px #14160f0d}
.fe-inspector h3{font:600 15px var(--title)}
.stepper button{width:40px;height:40px;border-radius:10px;font-size:18px}
.floor-canvas.editing .ft:hover .ft-body,.floor-canvas.editing .fd.editable:hover{outline:1px solid #14160f66;outline-offset:3px}
@container (max-width:520px){.ft-line,.ft-sub,.ft-flag{display:none}.ft-body b{font-size:9px}}
/* réservations : cartes légères */
.res-card{padding:12px 16px;border-radius:14px;gap:16px;box-shadow:0 1px 2px #14160f0a}
.res-time b{font:600 19px var(--title)}.res-time small{font-size:11.5px}
.res-info strong{font-weight:600}
.res-chip{min-height:40px;min-width:64px;padding:6px 10px;border-radius:999px}.res-chip b{font-weight:600;font-size:12px}.res-chip span{font:600 14px var(--title)}
.rt span{border-width:1px;border-radius:10px;min-height:44px}.rt input:checked+span{border-width:2px}
.ts-state{border-radius:14px}.ts-res h3{font:600 14px var(--title)}
.table-tile{border-radius:14px}

.ft-body b{font-size:clamp(10px,1.5cqw,15px)}
.ft-line{font-size:clamp(8px,1.05cqw,11.5px)}.ft-sub{font-size:clamp(7.5px,.95cqw,10.5px)}.ft-flag{font-size:clamp(7.5px,.95cqw,10.5px)}

.fe-layout{grid-template-columns:minmax(0,1fr) minmax(210px,250px)}
.fe-inspector{min-width:0;overflow:hidden}
.fe-inspector .segmented{flex-wrap:wrap;width:100%}.fe-inspector .segmented span{font-size:12.5px;padding:0 10px}
.fe-inspector input{min-width:0;width:100%}
.ins-row{gap:8px}
@media (max-width:1100px){.floor-layout{grid-template-columns:1fr}.fe-layout{grid-template-columns:1fr}.res-today{position:static}}
.res-hours .rh-row{display:grid;grid-template-columns:minmax(120px,160px) 120px 20px 120px;gap:10px;align-items:center;margin-bottom:6px}
.res-hours .rh-row input[type=time]{width:120px;min-width:0}.res-hours .rh-row .check{min-width:0}
.res-hours h3{margin:0 0 10px;font:600 15px var(--title)}.res-hours .form-grid{margin:14px 0}
@media (max-width:560px){.res-hours .rh-row{grid-template-columns:1fr 1fr 16px 1fr}.res-hours .rh-row .check{grid-column:1/-1}}

.btn.wa.sm{min-height:34px;padding:0 10px;font-size:12.5px}
.res-remind{margin-bottom:16px}.res-remind .card-head{padding:14px 18px 4px}.res-remind .card-body{padding:6px 18px 14px}
.res-hours textarea{width:100%}

/* Table occupée = rouge (le vert se lisait comme « libre ») ; libre = bord vert discret */
.ft.busy .ft-body{background:linear-gradient(180deg,#d8503f,#b83a2b);border-color:#8f2a1e;box-shadow:0 1px 1px #8f2a1e40,0 10px 18px -10px #8f2a1eaa}
.ft.busy .chair{background:#e07a6c;border-color:#8f2a1e}
.ft.free .ft-body{border-color:#9bc3b3}.ft.free .chair{background:#e3f0ea;border-color:#9bc3b3}
.table-tile.busy{border-color:#b83a2b;background:#fdecea}
.ts-state.busy{background:#fdecea;border-color:#b83a2b}
.fs-busy b{color:#b83a2b}
.floor-legend .lg.busy{background:#c8442f;border-color:#8f2a1e}
.floor-legend .lg.free{background:#fff;border:1px solid #9bc3b3}

/* Fidélité */
.loyalty{border:1px dashed var(--brand-line);border-radius:12px;padding:0 12px;margin:10px 0}
.loyalty summary{cursor:pointer;display:flex;align-items:center;gap:8px;padding:10px 0;font-weight:600;color:var(--brand-ink,var(--brand));list-style:none}
.loyalty summary::-webkit-details-marker{display:none}
.loyalty[open] summary{border-bottom:1px solid var(--line);margin-bottom:10px}
.loy-body{display:grid;gap:10px;padding-bottom:12px}.loy-info{margin:0;font-size:14px}.loy-hint{color:var(--muted,#5b5f55)}
.loy-form{display:grid;gap:12px;max-width:760px}
.loy-search{max-width:360px;margin-bottom:12px}
.loy-best,.loy-log{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.loy-best li{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--line)}.loy-best li span:nth-child(2){color:var(--muted,#5b5f55);flex:1}
.loy-log li{display:grid;grid-template-columns:130px 1fr 2fr 56px;gap:10px;align-items:center;font-size:14px;padding:6px 0;border-bottom:1px solid var(--line)}
.loy-log .pos{color:var(--brand)}.loy-log .neg{color:#b83a2b}.loy-log b:last-child{text-align:right}
@media(max-width:640px){.loy-log li{grid-template-columns:1fr auto;}.loy-log li span:first-child{grid-column:1/-1;color:var(--muted,#5b5f55)}}

.loy-acts{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}

/* ---------- Finition premium (2026-10-30) ---------- */
#prefs{display:flex;align-items:center;gap:8px}
.link-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:99px;font-size:12px;font-weight:600;background:var(--sunken);color:var(--muted);white-space:nowrap}
.link-chip i{width:8px;height:8px;border-radius:50%;background:#2f9e6b;box-shadow:0 0 0 3px #2f9e6b26}
.link-chip.off{background:#fdeede;color:#8a4b0c}.link-chip.off i{background:#e8871e;box-shadow:0 0 0 3px #e8871e2e}
.link-chip.sync i{background:#3b82c4;box-shadow:0 0 0 3px #3b82c42e;animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
#prefs .icon-button{font-size:15px;line-height:1}
.install-chip{background:var(--brand)!important;color:var(--on-brand)!important;border-color:var(--brand)!important}
.install-steps{margin:0;padding-left:20px;display:grid;gap:12px;line-height:1.55}
.recap-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 18px;margin-bottom:18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.recap-bar strong{display:block;font-family:var(--title)}.recap-bar span{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.recap-bar .btn{display:inline-flex;align-items:center;gap:8px}.recap-bar .btn svg{width:18px;height:18px}

/* Message de confirmation */
#toast{animation:toastIn .28s cubic-bezier(.2,.8,.3,1);box-shadow:0 12px 34px #0003;font-weight:500}
#toast::before{content:"✓";display:inline-grid;place-items:center;width:20px;height:20px;margin-right:10px;border-radius:50%;background:#2f9e6b;color:#fff;font-size:12px;font-weight:700;vertical-align:1px}
#toast.bad::before{content:"!";background:#d9532b}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,12px)}}

/* Boutons en cours d'envoi */
button[type=submit]:disabled,.btn[disabled]{position:relative;color:transparent!important;pointer-events:none}
button[type=submit]:disabled::after,.btn[disabled]::after{content:"";position:absolute;inset:0;margin:auto;width:18px;height:18px;border-radius:50%;border:2.5px solid color-mix(in srgb,var(--ink) 25%,transparent);border-top-color:var(--ink);animation:spin .7s linear infinite}
.btn.primary[disabled]::after,.btn.primary[type=submit]:disabled::after{border-color:#ffffff55;border-top-color:#fff}
@keyframes spin{to{transform:rotate(360deg)}}

/* Chargement : la forme de la page apparaît tout de suite */
body.booting #content::before{content:"";display:block;height:520px;border-radius:16px;animation:shimmer 1.3s ease-in-out infinite;
  background:
    linear-gradient(var(--sunken),var(--sunken)) 0 0/42% 34px no-repeat,
    linear-gradient(var(--sunken),var(--sunken)) 0 52px/60% 14px no-repeat,
    linear-gradient(var(--sunken),var(--sunken)) 0 120px/31% 130px no-repeat,
    linear-gradient(var(--sunken),var(--sunken)) 50% 120px/31% 130px no-repeat,
    linear-gradient(var(--sunken),var(--sunken)) 100% 120px/31% 130px no-repeat,
    linear-gradient(var(--sunken),var(--sunken)) 0 290px/100% 200px no-repeat}
@keyframes shimmer{50%{opacity:.45}}

/* Barre d'onglets du téléphone */
#tabbar{display:none}
@media (max-width:860px){
  #tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:14;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(14px);border-top:1px solid var(--line)}
  #tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;border:0;background:none;color:var(--muted);font:600 11px var(--font);border-radius:12px;min-height:50px}
  #tabbar button svg{width:22px;height:22px}
  #tabbar button.active{color:var(--brand-ink);background:var(--brand-soft)}
  body.has-tabbar #content{padding-bottom:96px}
  body.has-tabbar #toast{bottom:84px}
  body.has-tabbar footer{padding-bottom:70px}
  .link-chip span{display:none}.link-chip{padding:7px}
  .install-chip{display:none}
}
@media (display-mode:standalone){.install-chip{display:none}}

/* ---------- Thème sombre ---------- */
:root[data-theme=dark]{color-scheme:dark;
  --bg:#0e1411;--surface:#161e1a;--sunken:#1d2823;--ink:#e9f0eb;--muted:#a1b2a9;--faint:#7f9187;--line:#2a3731;
  --brand-soft:color-mix(in srgb,var(--brand) 22%,#161e1a);--brand-tint:color-mix(in srgb,var(--brand) 32%,#161e1a);--brand-line:color-mix(in srgb,var(--brand) 40%,#2a3731);
  --brand-ink:#86d6ba;--shadow:none}
:root[data-theme=dark] body{background:var(--bg);color:var(--ink)}
:root[data-theme=dark] .sidebar{background:var(--surface);border-right-color:var(--line)}
:root[data-theme=dark] main>header{background:color-mix(in srgb,var(--bg) 90%,transparent);border-bottom-color:var(--line)}
:root[data-theme=dark] input:not([type=checkbox]):not([type=radio]),:root[data-theme=dark] select,:root[data-theme=dark] textarea{background:var(--sunken);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] input:focus,:root[data-theme=dark] select:focus,:root[data-theme=dark] textarea:focus{background:var(--surface)}
:root[data-theme=dark] thead th{background:var(--sunken);color:var(--muted)}
:root[data-theme=dark] tbody td{border-color:var(--line)}
:root[data-theme=dark] tbody tr:hover td{background:var(--sunken)}
:root[data-theme=dark] .card,:root[data-theme=dark] .stat,:root[data-theme=dark] dialog,:root[data-theme=dark] .profile,:root[data-theme=dark] .recap-bar{background:var(--surface);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] .stat:first-child{background:linear-gradient(145deg,var(--brand),color-mix(in srgb,var(--brand) 70%,#000));color:var(--on-brand)}
:root[data-theme=dark] .btn:not(.primary){background:var(--sunken);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] .btn:not(.primary):hover{background:color-mix(in srgb,var(--sunken) 70%,var(--ink))}
:root[data-theme=dark] .pill{background:var(--sunken);color:var(--muted)}
:root[data-theme=dark] .icon-button{background:var(--sunken);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] nav button:hover{background:var(--sunken)}
:root[data-theme=dark] .link-chip.off{background:#3a2a17;color:#f2b36b}
:root[data-theme=dark] #toast{background:#e9f0eb;color:#14211d}
:root[data-theme=dark] .footer-logo{filter:brightness(1.6) saturate(.8)}
:root[data-theme=dark] dialog::backdrop{background:#000a}
@media (max-width:1280px){main>header #date,.breadcrumb #page-group,.breadcrumb>b{display:none}}
@media (max-width:1100px){.link-chip span{display:none}.link-chip{padding:7px}}
.breadcrumb{min-width:0;white-space:nowrap}
:root[data-theme=dark] nav button.active,:root[data-theme=dark] #tabbar button.active{color:#9be3c8}
:root[data-theme=dark] nav button.active .ico{color:#9be3c8}
.loy-offer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0;padding:12px 14px;border-radius:12px;background:var(--brand-soft);border:1px solid var(--brand-line);font-weight:600;font-size:13.5px}
.loy-offer[hidden]{display:none}.loy-offer.applied{background:#e6f4ec;border-color:#b6dcc6}
:root[data-theme=dark] .loy-offer.applied{background:#1a3a2c;border-color:#2c5a45}
.loy-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;background:var(--brand-soft);color:var(--brand-ink);font-size:11.5px;font-weight:700;margin-right:auto}
.loy-badge svg{width:14px;height:14px}
#loy-alerts{position:fixed;top:14px;right:14px;z-index:60;display:grid;gap:10px;max-width:min(420px,calc(100vw - 28px))}
#loy-alerts:empty{display:none}
.loy-alert{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--brand-line);border-left:5px solid var(--copper);box-shadow:0 14px 40px #0003;animation:alertIn .3s}
@keyframes alertIn{from{opacity:0;transform:translateY(-10px)}}
.loy-alert>div{flex:1 1 180px;min-width:0}.loy-alert strong{display:block;font-family:var(--title)}.loy-alert>div span{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.loy-alert-ico{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--brand-soft);color:var(--brand-ink)}.loy-alert-ico svg{width:20px;height:20px}
.pw-match{margin:-4px 0 4px;font-size:12.5px;font-weight:600;min-height:0}.pw-match:empty{display:none}
.pw-match.ok{color:#2f8a5e}.pw-match.ok::before{content:"✓ "}.pw-match.bad{color:#c4462a}
.join-kind{margin-bottom:18px}.join-kind button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0002}
.field[hidden],.pw-match[hidden]{display:none}

/* ---------- Tableau de bord : « Aujourd'hui » en tête (2026-10-31) ---------- */
.today-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:22px;padding:26px 28px;border-radius:20px;color:var(--on-brand);
  background:linear-gradient(140deg,var(--brand),color-mix(in srgb,var(--brand) 72%,#000))}
.today-main{min-width:0}
.today-greet{display:block;font-size:13.5px;opacity:.85;text-transform:none}
.today-greet::first-letter{text-transform:uppercase}
.today-total{display:block;font:700 clamp(34px,6vw,52px)/1.05 var(--title);letter-spacing:-.03em;margin:8px 0 6px;font-variant-numeric:tabular-nums}
.today-sub{display:block;font-size:14px;opacity:.9}
.today-sub b{font-weight:700;padding:1px 7px;border-radius:99px;background:#ffffff26}
.today-sub b.down{background:#00000030}
.today-split{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:14px;font-size:13px;opacity:.9}
.today-split b{font-weight:700;margin-left:4px}
.today-acts{display:flex;gap:10px;flex-wrap:wrap}
.today-hero .btn{display:inline-flex;align-items:center;gap:8px;background:#ffffff1f;border:1px solid #ffffff40;color:var(--on-brand)}
.today-hero .btn:hover{background:#ffffff33}
.today-hero .btn svg{width:18px;height:18px}
.today-hero .today-open{background:var(--on-brand);color:var(--brand);border-color:transparent;font-weight:700}
:root[data-theme=dark] .today-hero .btn:not(.today-open){background:#ffffff1f;color:var(--on-brand);border-color:#ffffff40}
.filters-fold{margin-bottom:20px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.filters-fold>summary{display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;list-style:none;font-size:13.5px;color:var(--muted)}
.filters-fold>summary::-webkit-details-marker{display:none}
.filters-fold>summary svg{width:18px;height:18px;color:var(--faint)}
.filters-fold>summary b{color:var(--ink)}
.filters-fold>summary em{margin-left:auto;font-style:normal;font-weight:600;color:var(--brand-ink)}
.filters-fold[open]>summary em{visibility:hidden}
.filters-fold>.toolbar,.filters-fold>:not(summary){margin:0 16px 14px}
.onboarding.is-collapsed ol{display:none}
.onb-toggle{margin-left:auto;margin-right:14px;white-space:nowrap}
@media (max-width:640px){.today-hero{padding:22px 20px}.today-acts{width:100%}.today-acts .btn{flex:1;justify-content:center}.onboarding .card-head{flex-wrap:wrap}.onb-toggle{margin-left:0}}

/* Prise de commande : panier visible pendant le choix des produits (téléphone et tablette) */
.cart-peek{display:none}
@media (max-width:979px){
  .cart-peek{position:sticky;bottom:8px;z-index:3;display:flex;align-items:center;gap:12px;width:100%;margin-top:14px;padding:13px 16px;border:0;border-radius:14px;background:var(--brand);color:var(--on-brand);font:600 14px var(--font);box-shadow:0 10px 26px #0003;cursor:pointer}
  .cart-peek[hidden]{display:none}
  .cart-peek strong{margin-left:auto;font-variant-numeric:tabular-nums}
  .cart-peek em{font-style:normal;opacity:.85;font-size:12.5px}
  .cart-peek em::after{content:" ›"}
}
#tabbar button.active::before{display:none}
@media (max-width:640px){.page-head:has(+ .today-hero){display:none}#content .today-hero{margin-top:-8px}}

/* Réglages son et affichage (2026-10-31) */
#prefs{position:relative}
.prefs-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:40;width:min(330px,calc(100vw - 24px));padding:8px;border-radius:16px;background:var(--surface);border:1px solid var(--line);box-shadow:0 18px 50px #0003;animation:alertIn .18s}
.prefs-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px}
.prefs-row+.prefs-row{border-top:1px solid var(--line)}
.prefs-row.col{flex-direction:column;align-items:stretch;gap:10px}
.prefs-row strong{display:block;font-size:13.5px;color:var(--ink)}.prefs-row small{display:block;font-size:12px;color:var(--muted);margin-top:2px;line-height:1.4}
.pref-toggle{flex:none;width:46px;height:28px;border-radius:99px;border:0;background:var(--line);position:relative;cursor:pointer;transition:background .2s}
.pref-toggle i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s}
.pref-toggle.on{background:var(--brand)}.pref-toggle.on i{transform:translateX(18px)}
.prefs-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;border-radius:12px;background:var(--sunken)}
.prefs-seg button{border:0;background:none;padding:8px 4px;border-radius:9px;font:600 12.5px var(--font);color:var(--muted);cursor:pointer}
.prefs-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0002}
#prefs [data-pref=menu] svg{width:18px;height:18px}
.tile.has-photo{justify-content:flex-start;min-height:auto}   /* hauteur selon le contenu : sinon la grille, de hauteur limitée, écrase les tuiles et la photo recouvre le nom */
.tile-photo{display:block;width:calc(100% + 28px);max-width:none;margin:-12px -14px 4px;aspect-ratio:4/3;object-fit:cover;border-radius:11px 11px 0 0;background:var(--sunken)}
.photo-pick{display:flex;gap:14px;align-items:center;margin:4px 0 16px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.photo-pick.busy{opacity:.55;pointer-events:none}
.photo-frame{flex:none;width:84px;height:84px;border-radius:12px;overflow:hidden;background:var(--sunken);display:grid;place-items:center;font-size:11px;color:var(--faint);text-align:center}
.photo-frame img{width:100%;height:100%;object-fit:cover}
.photo-pick strong{display:block;font-size:13px}.photo-pick small{display:block;font-size:12px;color:var(--muted);margin:2px 0 8px;line-height:1.4}
.photo-acts{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.photo-acts .btn{cursor:pointer;min-height:36px;padding:7px 14px}
.staff-hero .today-total{font-size:clamp(28px,5vw,40px)}
.prefs-menu{position:fixed;top:64px;right:12px}
#content:has(.staff-hero) .board-tools>[data-new-order],#content:has(.staff-hero) .board-tools>[data-quick-sale]{display:none}
.loy-alert.welcome{border-left-color:#25a35a}
.loy-alert.welcome .loy-alert-ico{background:#e3f5ea;color:#1c7a45}
:root[data-theme=dark] .loy-alert.welcome .loy-alert-ico{background:#1a3a2c;color:#8fe0b3}
.tile-ph{display:grid!important;place-items:center;font:700 22px var(--title);letter-spacing:.02em;color:var(--brand-ink);background:var(--brand-soft)!important}

/* Mobile money sans intermédiaire (2026-10-31) */
.momo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 14px}
.momo-qr{display:flex;gap:14px;align-items:center;margin:6px 0 16px;padding:12px;border:1px solid var(--line);border-radius:14px}
.momo-qr-frame{flex:none;width:96px;height:96px;border-radius:12px;overflow:hidden;background:var(--sunken);display:grid;place-items:center;font-size:11px;color:var(--faint);text-align:center}
.momo-qr-frame img{width:100%;height:100%;object-fit:contain;background:#fff}
.momo-qr strong{display:block;font-size:13px}.momo-qr small{display:block;font-size:12px;color:var(--muted);margin:2px 0 8px;line-height:1.4}
.momo-box{display:flex;gap:16px;align-items:center;margin:4px 0 14px;padding:14px;border-radius:14px;background:var(--brand-soft);border:1px solid var(--brand-line)}
.momo-box img{flex:none;width:150px;height:150px;object-fit:contain;background:#fff;border-radius:10px;padding:6px}
.momo-box small{display:block;color:var(--muted);font-size:12.5px}
.momo-box strong{display:block;font:700 26px var(--title);margin:2px 0;font-variant-numeric:tabular-nums}
.momo-box span{display:block;font-size:15px}.momo-box em{display:block;font-style:normal;font-size:12.5px;color:var(--muted);margin-top:4px}
.momo-box p{margin:8px 0 0;font-size:12.5px;font-weight:600;color:var(--brand-ink)}
@media (max-width:520px){.momo-box{flex-direction:column;align-items:flex-start}.momo-box img{width:100%;height:auto;max-width:240px;align-self:center}}
.momo-badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:99px;background:#fff4e0;color:#8a5300;font-size:11.5px;font-weight:700;margin-right:auto}
.momo-badge.done{background:#e6f4ec;color:#1c7a45}
:root[data-theme=dark] .momo-badge{background:#3a2a17;color:#f2b36b}:root[data-theme=dark] .momo-badge.done{background:#1a3a2c;color:#8fe0b3}

/* Photothèque : photos d'exemple des plats phares (page Produits, fiche produit) */
.photo-frame img.is-preview{opacity:.7;filter:saturate(.85)}
.photo-pick small.photo-credit{margin:8px 0 0;font-size:11px}.photo-credit a{color:var(--faint);text-decoration:none}.photo-credit a:hover{text-decoration:underline}
.photo-offer{display:flex;align-items:center;gap:18px;padding:16px 18px;margin-bottom:16px}
.photo-offer h2{margin:0 0 4px;font-size:16px}.photo-offer p{margin:0;font-size:13px;color:var(--muted);line-height:1.45}
.photo-offer>div:nth-child(2){flex:1;min-width:0}
.photo-offer-pics{display:flex;flex:none}
.photo-offer-pics img{width:56px;height:56px;border-radius:12px;object-fit:cover;border:3px solid var(--surface);margin-left:-14px;box-shadow:0 2px 8px #0002}
.photo-offer-pics img:first-child{margin-left:0}
@media (max-width:640px){.photo-offer{flex-wrap:wrap}.photo-offer .btn{width:100%}}

/* Fin de vente (2026-11-01) : montant, monnaie à rendre, reçu et vente suivante à portée de doigt. */
.sale-done{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:4px 0 2px;min-width:min(340px,80vw)}
.sale-done-mark{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink)}
.sale-done-mark svg{width:30px;height:30px;stroke-width:2.4}
.sale-done-total{font:700 40px/1 var(--title);letter-spacing:-.03em;margin:8px 0 0;font-variant-numeric:tabular-nums}
.sale-done-sub{color:var(--muted);margin:0}
.sale-done-change{margin:6px 0 0;padding:8px 16px;border-radius:12px;background:var(--sunken);font-size:18px}
.sale-done-change b{font-variant-numeric:tabular-nums}
.sale-done-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:14px}
.sale-done-acts .btn{min-height:52px;justify-content:center;font-size:16px}
.sale-done-auto{margin-top:10px;font-size:14px;color:var(--muted);text-align:left}
#tabbar button.tab-sell{color:var(--on-brand);background:var(--brand);margin:0 2px}
#tabbar button.tab-sell svg{stroke:currentColor}
@media (max-width:420px){.sale-done-acts{grid-template-columns:1fr}}

/* Poste : on touche son nom, puis on tape son code (2026-11-01). */
.pl-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:10px;max-height:52vh;overflow:auto;padding:2px}
.pl-people button{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 15px/1.2 var(--font);min-height:104px}
.pl-people button:active,.pl-people button:focus-visible{background:var(--brand-soft);border-color:var(--brand-line)}
.pl-avatar{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--brand);color:var(--on-brand);font:700 17px var(--title);flex:none}
.pl-who{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.pl-who .pl-avatar{width:40px;height:40px;font-size:15px}
.pl-who b{font:600 18px var(--title)}
/* Boutons du poste en attente des 4 chiffres : grisés, sans la roue de chargement des envois en cours. */
.pl-actions .btn[disabled]{color:inherit!important;opacity:.45}
.pl-actions .btn.primary[disabled]{color:var(--on-brand)!important}
.pl-actions .btn[disabled]::after{content:none}
.post-lock-row{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding-top:0}
.post-lock-row .field{margin:0;min-width:200px}
.post-lock-row small{color:var(--muted);padding-bottom:10px}

/* Fidélité (2026-11-01) : QR de la carte sur le reçu, recherche du client, carte, scanner. */
.tk-qr svg{width:26mm;height:26mm;display:block;margin:2mm auto 1mm}
.loy-find{display:flex;gap:8px;align-items:flex-end}
.loy-find .field{flex:1;margin:0}
.loy-find .btn{flex:none;min-height:44px}
.loy-matches{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.loy-matches:empty{display:none}
.loy-matches button{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center;text-align:left;padding:8px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;min-width:150px}
.loy-matches button b{grid-row:span 2;font-variant-numeric:tabular-nums}
.loy-matches button small{color:var(--muted)}
.loy-matches button:hover,.loy-matches button:focus-visible{border-color:var(--brand);background:var(--brand-soft)}
.loy-none{color:var(--muted);font-size:14px;margin:0}
.loy-card-view{text-align:center;display:grid;gap:8px;justify-items:center}
.loy-card-qr svg{width:min(240px,60vw);height:auto;display:block}
.loy-scan{position:fixed;inset:0;z-index:60;background:#000d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:16px;color:#fff;text-align:center}
.loy-scan video{width:min(420px,100%);border-radius:16px;background:#000}

/* Coûts hors matières (2026-11-01) : lignes libres d'une recette, coût détaillé d'un produit. */
.custom-cost{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:10px;align-items:end;margin:0 0 8px}
.custom-cost .icon-button{height:44px;width:44px}
@media (max-width:640px){.custom-cost{grid-template-columns:1fr 1fr}.custom-cost .field:first-child{grid-column:1/-1}}
.cost-fields [data-cost-total]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.cost-fields [data-cost-total] input{max-width:200px}
.cost-fields .cost-sum{grid-column:1/-1;margin:0;font-weight:600}
h4{margin:14px 0 6px;font-size:15px}

/* Aide & support (2026-11-01) */
.help-search{max-width:520px}
.help-list{display:grid;gap:8px;margin-top:12px}
.help-article{border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.help-article summary{cursor:pointer;padding:14px 16px;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:12px}
.help-article summary::-webkit-details-marker{display:none}
.help-article summary::after{content:'+';color:var(--muted);font-weight:400}
.help-article[open] summary::after{content:'−'}
.help-body{padding:0 16px 14px;color:var(--ink);line-height:1.55}
.help-body ol,.help-body ul{padding-left:20px;margin:6px 0}
.help-body li{margin:4px 0}
.help-body p{margin:8px 0}
.support-card .card-body{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.support-card h2{margin:0 0 4px}
.support-card p{margin:0;color:var(--muted);max-width:60ch}
@media (max-width:640px){.support-card .btn{width:100%;justify-content:center}}

/* Plusieurs commerces (2026-11-01) */
.pf-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:14px}
.pf-total{display:grid;gap:4px;padding:18px 20px;border-radius:var(--radius);background:var(--brand);color:var(--on-brand)}
.pf-total span{font-size:13px;opacity:.85}
.pf-total strong{font:700 30px/1.1 var(--title);font-variant-numeric:tabular-nums}
.pf-total small,.pf-total span,.pf-total b{color:var(--on-brand)}
.pf-total small{opacity:.9;font-size:13px}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.pf-card{display:grid;gap:12px;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.pf-card.current{border-color:var(--brand)}
.pf-card header{display:flex;justify-content:space-between;align-items:center;gap:8px}
.pf-card h2{margin:0;font-size:18px}
.pf-figures{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pf-figures div{display:grid;gap:2px}
.pf-figures small{color:var(--muted);font-size:12px}
.pf-figures b{font:700 18px var(--title);font-variant-numeric:tabular-nums}
.pf-top{margin:0;color:var(--muted);font-size:14px}
.pf-card .btn{justify-self:start}
.copy-catalogue .card-body{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.copy-catalogue h2{margin:0 0 4px;font-size:17px}
.copy-catalogue p{margin:0;color:var(--muted);max-width:60ch}
.pp-discount{color:var(--brand-ink);font-weight:600}
