/* =====================================================================
   Caisse Restaurant — UI tactile (tablette), thème sombre chaud
   Cibles ≥ 48px · chiffres tabulaires · icônes SVG · feedback à l'appui
   ===================================================================== */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
[hidden]{display:none !important;}   /* l'attribut hidden prime sur tout display: (nav-item, chips, cartes…) */
:root{
  /* surfaces */
  --bg:#14161c; --panel:#1c2029; --panel-2:#242a35; --panel-3:#2e3542; --line:#333b48;
  /* texte */
  --txt:#f3f6fb; --muted:#9aa6b8; --soft:#b6c0cf; --dim:#6b7686;
  /* couleurs sémantiques */
  --primary:#ef4d63; --on-primary:#fff; --primary-weak:rgba(239,77,99,.14);
  --gold:#e0a25b; --gold-weak:rgba(224,162,91,.16);
  --green:#27c08a; --green-d:#1fa676; --green-ink:#06231a;
  --danger:#ef4d63;
  /* formes */
  --r:18px; --r-sm:13px; --r-xs:10px;
  --shadow:0 14px 40px rgba(0,0,0,.42);
  --tap:52px;            /* hauteur cible tactile confortable */
  --sb:212px;
  --t:.18s cubic-bezier(.4,0,.2,1);
  font-size:16px;
}
html,body{height:100%;}
body{
  font-family:"Inter",system-ui,sans-serif;background:var(--bg);color:var(--txt);
  overflow:hidden;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;
}
h1,h2,h3,strong,b,.brand-txt strong{font-family:"Poppins",sans-serif;}
button{font-family:inherit;cursor:pointer;border:none;color:inherit;background:none;touch-action:manipulation;}
input{font-family:inherit;}
.num,.price,.lt,.total-row strong,.s-total,.h-total,.pr,.ta{font-variant-numeric:tabular-nums;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:10px;}

/* icônes SVG */
[data-icon],.ic,.svgw{display:inline-flex;align-items:center;justify-content:center;}
svg{width:24px;height:24px;flex:0 0 auto;}
.ic-sm svg{width:20px;height:20px;}
.ic-lg svg{width:28px;height:28px;}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;}}

/* Focus clavier : anneau net pour l'accessibilité, masqué au tactile/souris */
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px;}
button:focus:not(:focus-visible),input:focus:not(:focus-visible),[tabindex]:focus:not(:focus-visible){outline:none;}

/* ===================== LAYOUT ===================== */
#app{display:flex;height:100dvh;}
.stage{flex:1;min-width:0;min-height:0;display:flex;}
.view{display:none;flex:1;min-width:0;min-height:0;}
#app.view-pos     .view[data-view="pos"]{display:flex;flex-direction:row;}
#app.view-orders  .view[data-view="orders"]{display:flex;flex-direction:column;}
#app.view-history .view[data-view="history"]{display:flex;flex-direction:column;}
#app.view-compta  .view[data-view="compta"]{display:flex;flex-direction:column;}
#app.view-carte   .view[data-view="carte"]{display:flex;flex-direction:column;}
#app.view-params  .view[data-view="params"]{display:flex;flex-direction:column;}
#app:not(.view-pos) .cats-wrap{display:none;}

/* ---- Sidebar ---- */
.sidebar{flex:0 0 var(--sb);background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 12px;}
.brand{display:flex;align-items:center;gap:11px;padding:8px 8px 16px;}
.brand-mark{width:42px;height:42px;border-radius:12px;background:var(--primary-weak);color:var(--primary);}
.brand-mark svg{width:24px;height:24px;}
.brand-txt strong{font-size:17px;display:block;line-height:1.1;}
.brand-txt small{color:var(--muted);font-size:11px;letter-spacing:.6px;text-transform:uppercase;}

.mainnav{display:flex;flex-direction:column;gap:6px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:12px;}
.nav-item{display:flex;align-items:center;gap:13px;min-height:var(--tap);padding:0 14px;border-radius:var(--r-sm);color:var(--soft);font-weight:600;font-size:15.5px;transition:var(--t);position:relative;}
.nav-item:active{transform:scale(.97);}
.nav-item:hover{background:var(--panel-2);color:var(--txt);}
.nav-item.active{background:var(--primary);color:var(--on-primary);}
.nav-item .ic{color:inherit;}
.nbadge{margin-left:auto;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--green);color:var(--green-ink);font-size:12px;font-weight:700;display:none;align-items:center;justify-content:center;}
.nbadge.show{display:inline-flex;}
.nav-item.active .nbadge{background:#fff;color:var(--primary);}

.cats-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden;}
.cats-title{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--dim);padding:6px 10px 8px;}
.cats{display:flex;flex-direction:column;gap:5px;overflow-y:auto;flex:1;}
.cat{display:flex;align-items:center;gap:12px;min-height:48px;padding:0 14px;border-radius:var(--r-sm);color:var(--soft);font-weight:500;font-size:15px;transition:var(--t);text-align:left;width:100%;border:1px solid transparent;}
.cat .dot{width:12px;height:12px;border-radius:50%;background:var(--c,var(--primary));flex:0 0 auto;}
.cat:active{transform:scale(.98);}
.cat:hover{background:var(--panel-2);color:var(--txt);}
.cat.active{background:var(--panel-2);color:#fff;border-color:var(--c,var(--primary));}
.sync-chip{margin-top:10px;display:flex;align-items:center;gap:13px;min-height:46px;padding:0 14px;border-radius:var(--r-sm);color:var(--dim);font-size:13.5px;font-weight:600;transition:var(--t);}
.sync-chip svg{width:20px;height:20px;}
.sync-chip:hover{background:var(--panel-2);}
.sync-chip:active{transform:scale(.97);}
.sync-chip.s-ok{color:var(--green);}
.sync-chip.s-sync{color:var(--blue);}
.sync-chip.s-err{color:var(--primary);}
.sync-chip.s-offline,.sync-chip.s-off,.sync-chip.s-idle{color:var(--dim);}
.settings-btn{margin-top:4px;display:flex;align-items:center;gap:13px;min-height:var(--tap);padding:0 14px;border-radius:var(--r-sm);color:var(--muted);font-size:14.5px;font-weight:500;transition:var(--t);}
.settings-btn:hover{background:var(--panel-2);color:var(--txt);}
.settings-btn:active{transform:scale(.97);}
/* Pied de sidebar repliable (compte / en ligne / réglages derrière un bouton avatar) */
.side-foot{margin-top:auto;}
.side-foot:not(.open) .side-extra{display:none;}
.side-extra{display:flex;flex-direction:column;margin-bottom:6px;}
.side-extra .sync-chip:first-child,.side-extra .user-chip{margin-top:0;}
.side-toggle{display:flex;align-items:center;gap:11px;width:100%;min-height:50px;padding:0 12px 0 8px;border-radius:var(--r-sm);color:var(--soft);font-size:14.5px;font-weight:600;transition:var(--t);}
.side-toggle:hover{background:var(--panel-2);}
.side-toggle:active{transform:scale(.98);}
.st-av{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-family:"Poppins";font-weight:700;font-size:13px;color:#fff;flex:0 0 auto;}
.st-name{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.st-chev{transition:transform .2s;color:var(--dim);}
.side-foot.open .st-chev{transform:rotate(180deg);}
.set-action{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:52px;margin-top:6px;border-radius:12px;background:var(--primary-weak);color:var(--primary);border:1px solid rgba(239,77,99,.35);font-weight:600;font-size:15px;transition:var(--t);}
.set-action .ic svg{width:20px;height:20px;}
.set-action:hover{background:rgba(239,77,99,.2);color:#fff;}
.set-action:active{transform:scale(.98);}
.set-action:disabled{opacity:.55;cursor:default;}
.set-row2{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:8px;}
.set-action.alt{background:var(--panel-2);color:var(--soft);border-color:var(--line);font-size:13.5px;min-height:48px;}
.set-action.alt:hover{background:var(--line);color:#fff;}
@media (max-width:520px){ .set-row2{grid-template-columns:1fr;} }

/* ===================== VUE CAISSE ===================== */
.catalog{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:20px 22px;}
.catalog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;}
.catalog-head h2{font-size:23px;}
.ch-left{display:flex;align-items:center;gap:12px;min-width:0;}
.ch-left h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.head-right{display:flex;align-items:center;gap:14px;}
/* tuiles catégories (prise de commande) */
.cat-tile{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;min-height:124px;display:flex;flex-direction:column;gap:8px;text-align:left;transition:transform .1s var(--t),border-color var(--t),background var(--t);overflow:hidden;}
.cat-tile::before{content:"";position:absolute;top:0;left:0;width:100%;height:5px;background:var(--c,var(--primary));}
.cat-tile:hover{background:var(--panel-2);border-color:var(--c,var(--primary));}
.cat-tile:active{transform:scale(.96);}
.ct-dot{width:18px;height:18px;border-radius:50%;background:var(--c,var(--primary));}
.ct-name{font-family:"Poppins";font-weight:600;font-size:18px;line-height:1.2;flex:1;}
.ct-count{font-size:12px;color:var(--muted);}
.clock{font-family:"Poppins";font-weight:600;font-size:15px;color:var(--soft);background:var(--panel);border:1px solid var(--line);border-radius:30px;padding:9px 16px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.search-wrap{position:relative;display:flex;align-items:center;}
.search-wrap .ic{position:absolute;left:14px;color:var(--muted);pointer-events:none;}
#search{background:var(--panel);border:1px solid var(--line);color:var(--txt);height:50px;padding:0 16px 0 44px;border-radius:30px;width:260px;font-size:15px;outline:none;transition:var(--t);}
#search:focus{border-color:var(--primary);}
#search::placeholder{color:var(--muted);}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:14px;overflow-y:auto;align-content:start;padding-right:6px;padding-bottom:24px;}
.card{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;text-align:left;min-height:130px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .1s var(--t),border-color var(--t),background var(--t);overflow:hidden;}
.card::before{content:"";position:absolute;top:0;left:0;width:100%;height:5px;background:var(--c,var(--primary));}
.card:hover{background:var(--panel-2);border-color:var(--c,var(--primary));}
.card:active{transform:scale(.95);}
.card .nm{font-weight:600;font-size:16px;line-height:1.25;margin-bottom:6px;}
.card .ds{font-size:12px;color:var(--muted);line-height:1.4;flex:1;}
.card .pr{font-family:"Poppins";font-weight:600;font-size:18px;margin-top:10px;color:#fff;}
.card .supp-flag{position:absolute;top:10px;right:12px;font-size:10px;color:var(--gold);background:var(--gold-weak);padding:3px 8px;border-radius:20px;font-weight:700;letter-spacing:.3px;z-index:2;}
.card-main{position:absolute;inset:0;z-index:1;background:transparent;border-radius:inherit;cursor:pointer;}
.card-body,.card .pr{position:relative;z-index:0;pointer-events:none;}
.card-step{position:absolute;top:8px;left:8px;z-index:3;display:flex;align-items:center;gap:5px;background:var(--green);color:var(--green-ink);border-radius:20px;padding:3px 11px 3px 3px;box-shadow:0 2px 8px rgba(0,0,0,.3);}
.cs-dec{width:27px;height:27px;border-radius:50%;background:rgba(0,0,0,.18);display:grid;place-items:center;color:inherit;transition:var(--t);}
.cs-dec:active{transform:scale(.88);}
.cs-dec svg{width:16px;height:16px;}
.card-step b{font-family:"Poppins";font-weight:700;font-size:14px;min-width:12px;text-align:center;}
.card.in-cart{border-color:var(--green);}
.grid{-webkit-overflow-scrolling:touch;}

/* ---- Ticket ---- */
.ticket{flex:0 0 392px;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;}
.ctx-bar{display:flex;gap:8px;overflow-x:auto;padding:14px 16px 12px;border-bottom:1px solid var(--line);scrollbar-width:none;}
.ctx-bar::-webkit-scrollbar{display:none;}
.ctx-chip{flex:0 0 auto;min-height:44px;padding:0 16px;border-radius:30px;font-size:13.5px;font-weight:600;background:var(--panel-2);color:var(--soft);white-space:nowrap;border:1.5px solid transparent;transition:var(--t);display:inline-flex;align-items:center;}
.ctx-chip:active{transform:scale(.96);}
.ctx-chip.active{background:var(--primary);color:#fff;}
.ctx-chip .badge{display:inline-flex;align-items:center;justify-content:center;margin-left:8px;background:rgba(255,255,255,.22);min-width:22px;height:22px;padding:0 6px;border-radius:11px;font-size:12px;font-weight:700;}
.ctx-chip.busy:not(.active){border-color:var(--green);color:#fff;}
.ctx-chip.busy:not(.active) .badge{background:var(--green);color:var(--green-ink);}

.ticket-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px 6px;}
.th-id{text-align:left;display:flex;flex-direction:column;gap:1px;padding:4px 8px;border-radius:10px;transition:var(--t);flex:1 1 auto;min-width:0;}
.th-id:hover{background:var(--panel-2);}
.th-id:active{transform:scale(.98);}
.th-id h3{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ctx-meta{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.th-actions{display:flex;gap:6px;flex:0 0 auto;}
.iconbtn{display:inline-flex;align-items:center;gap:7px;min-width:48px;height:48px;padding:0 13px;border-radius:12px;background:var(--panel-2);color:var(--soft);font-weight:700;font-size:14px;transition:var(--t);}
.iconbtn:hover{background:var(--line);color:#fff;}
.iconbtn:active{transform:scale(.94);}
.iconbtn.primary{background:var(--primary);color:#fff;}
.iconbtn.primary:hover{background:#e23a52;color:#fff;}
.ctx-chip.new-chip{background:var(--primary-weak);color:var(--primary);border-color:transparent;font-weight:700;min-width:44px;padding:0 14px;}
.ctx-chip.new-chip:active{transform:scale(.94);}

.lines{flex:1;overflow-y:auto;padding:8px 12px;}
.empty{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;color:var(--muted);text-align:center;font-size:15px;gap:8px;padding:20px;}
.empty .ic{color:var(--dim);margin-bottom:4px;}
.empty span:not(.ic){color:var(--dim);font-size:13.5px;}
.grid-empty{grid-column:1/-1;min-height:46vh;}
.empty .ic{color:var(--dim);}
.empty span{font-size:13px;color:var(--dim);}
/* Ligne de commande compacte : 2 rangées (nom+total / quantité+actions) */
.line{background:var(--panel-2);border-radius:var(--r-sm);padding:9px 12px;margin-bottom:7px;display:flex;flex-direction:column;gap:5px;animation:pop .18s ease;}
@keyframes pop{from{opacity:0;transform:translateY(-5px);}to{opacity:1;transform:none;}}
.ln-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px;}
.ln-top .nm{font-weight:600;font-size:15px;min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.25;}
.ln-top .lt{font-family:"Poppins";font-weight:700;font-size:16px;flex:0 0 auto;white-space:nowrap;}
.line .sub{font-size:12px;color:var(--gold);}
.ln-bot{display:flex;align-items:center;gap:10px;}
.ln-bot .line-actions{margin-left:auto;}
.ln-unit{font-size:11.5px;color:var(--dim);white-space:nowrap;}
.ln-unit s{color:var(--dim);margin-right:3px;}
.qty-ctrl{display:flex;align-items:center;background:var(--panel);border-radius:11px;overflow:hidden;}
.qty-ctrl button{width:44px;height:44px;display:grid;place-items:center;color:var(--soft);transition:var(--t);}
.qty-ctrl button:active{background:var(--primary);color:#fff;}
.qty-ctrl button:hover{background:var(--line);color:#fff;}
.qty-ctrl b{min-width:30px;text-align:center;font-size:15px;}
.qty-ctrl.big button{width:56px;height:56px;}
.qty-ctrl.big b{min-width:48px;font-size:19px;}
.ln-bot .qty-ctrl button{width:40px;height:40px;}
.line-actions{display:flex;gap:6px;}
.line-act{width:38px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--panel);color:var(--dim);transition:var(--t);}
.line-act svg{width:17px;height:17px;}
.line-act:hover{color:var(--primary);background:var(--line);}
.line-act:active{transform:scale(.92);}
.line-act.on{background:var(--gold-weak);color:var(--gold);}
.line.offert{border:1px solid rgba(224,162,91,.4);background:rgba(224,162,91,.07);}
.line.offert .lt{color:var(--gold);font-size:14px;}
.offert-tag{display:inline-block;margin-left:7px;font-size:10px;font-weight:700;color:var(--gold);background:var(--gold-weak);padding:2px 7px;border-radius:20px;vertical-align:middle;text-transform:uppercase;letter-spacing:.3px;}
.iconbtn.on{background:var(--gold-weak);color:var(--gold);}
.tk-lines .tl em{color:var(--gold);font-style:normal;font-size:12px;}

.totals{padding:14px 18px 6px;border-top:1px solid var(--line);}
.sub-row,.disc-row{display:flex;justify-content:space-between;font-size:14px;color:var(--soft);margin-bottom:5px;}
.disc-row{color:var(--gold);}
.total-row{display:flex;justify-content:space-between;align-items:baseline;margin-top:3px;}
.total-row span{font-size:15px;color:var(--soft);}
.total-row strong{font-family:"Poppins";font-size:30px;}
.count-row{font-size:12.5px;color:var(--muted);margin-top:4px;}
.link-btn{color:var(--gold);font-weight:600;font-size:12.5px;padding:4px;text-decoration:underline;text-underline-offset:2px;}

.ticket-actions{display:flex;gap:11px;padding:12px 18px 18px;}
.btn-clear{flex:0 0 104px;min-height:60px;background:var(--panel-2);color:var(--soft);border-radius:14px;font-weight:600;font-size:15px;transition:var(--t);}
.btn-clear:hover{background:var(--line);color:#fff;}
.btn-clear:active{transform:scale(.97);}
.btn-clear:disabled{opacity:.4;}
.btn-pay{flex:1;min-height:60px;background:var(--green);color:var(--green-ink);border-radius:14px;font-weight:700;font-size:17px;transition:var(--t);display:inline-flex;align-items:center;justify-content:center;gap:8px;}
.btn-pay:hover{background:var(--green-d);}
.btn-pay:active{transform:scale(.98);}
.btn-pay:disabled{opacity:.4;cursor:not-allowed;}

/* ===================== VUES PLEINE LARGEUR ===================== */
.view-head{display:flex;align-items:center;justify-content:space-between;padding:22px 26px 14px;flex-wrap:wrap;gap:14px;}
.view-head h2{font-size:25px;}
.head-tools{display:flex;align-items:center;gap:12px;}
.view-stats{display:flex;gap:12px;flex-wrap:wrap;}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 18px;min-width:120px;}
.stat .lab{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);}
.stat .val{font-family:"Poppins";font-size:22px;font-weight:600;margin-top:3px;}
.stat .val.green{color:var(--green);}
.stat .val.gold{color:var(--gold);}

/* Commandes */
.orders-grid{flex:1;overflow-y:auto;padding:8px 26px 26px;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:15px;align-content:start;}
.new-order-card{background:var(--primary-weak);border:2px dashed rgba(239,77,99,.5);border-radius:var(--r);min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--primary);font-family:"Poppins";font-weight:600;font-size:17px;transition:var(--t);}
.new-order-card .ic svg{width:34px;height:34px;}
.new-order-card:hover{background:rgba(239,77,99,.2);border-style:solid;}
.new-order-card:active{transform:scale(.97);}
.orders-cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:11px;margin-top:8px;}
.ocell{min-height:78px;border-radius:14px;background:var(--panel-2);border:2px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-weight:600;transition:var(--t);padding:8px;text-align:center;}
.ocell:active{transform:scale(.95);}
.ocell:hover{border-color:var(--primary);}
.ocell .on{font-size:14px;}
.ocell .oa{font-size:11.5px;color:var(--green);font-weight:700;}
.ocell.busy{background:rgba(39,192,138,.13);border-color:var(--green);}
.ocell.special{background:var(--primary-weak);}
.ocell.newcell{background:var(--primary-weak);color:var(--primary);border:2px dashed rgba(239,77,99,.5);}
.scard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;text-align:left;display:flex;flex-direction:column;gap:10px;min-height:150px;transition:transform .1s var(--t),border-color var(--t);position:relative;overflow:hidden;}
.scard:active{transform:scale(.97);}
.scard.busy{border-color:var(--green);}
.scard.busy::before{content:"";position:absolute;top:0;left:0;width:100%;height:5px;background:var(--green);}
.scard.free{opacity:.6;border-style:dashed;}
.scard:hover{opacity:1;border-color:var(--primary);}
.s-top{display:flex;align-items:center;justify-content:space-between;}
.s-name{font-family:"Poppins";font-weight:600;font-size:18px;}
.s-ico{color:var(--muted);}
.scard.busy .s-ico{color:var(--green);}
.s-mid{flex:1;}
.s-total{font-family:"Poppins";font-size:28px;font-weight:700;}
.s-info{font-size:12.5px;color:var(--muted);margin-top:4px;}
.s-open{font-size:13px;color:var(--muted);}
.s-cta{margin-top:auto;font-size:13px;font-weight:700;color:var(--primary);}
.scard.busy .s-cta{color:var(--green);}

/* Historique */
.seg{display:flex;background:var(--panel);border:1px solid var(--line);border-radius:30px;padding:4px;}
.seg button{min-height:42px;padding:0 18px;border-radius:24px;font-weight:600;font-size:14px;color:var(--soft);transition:var(--t);}
.seg button:active{transform:scale(.96);}
.seg button.on{background:var(--primary);color:#fff;}
.btn-z{min-height:50px;padding:0 20px;border-radius:14px;background:var(--gold-weak);color:var(--gold);font-weight:700;font-size:14.5px;display:inline-flex;align-items:center;gap:9px;border:1px solid rgba(224,162,91,.35);transition:var(--t);}
.btn-z:hover{background:rgba(224,162,91,.26);}
.btn-z:active{transform:scale(.97);}
.view-stats.wide{padding:0 26px 14px;}
.history-list{flex:1;overflow-y:auto;padding:4px 26px 26px;display:flex;flex-direction:column;gap:10px;}
.hrow{display:flex;align-items:center;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:0 18px;min-height:68px;transition:var(--t);text-align:left;width:100%;}
.hrow:hover{border-color:var(--primary);background:var(--panel-2);}
.hrow:active{transform:scale(.99);}
.hrow.void{opacity:.5;}
.hrow.void .h-label{text-decoration:line-through;}
.h-no{font-family:"Poppins";font-weight:700;color:var(--dim);font-size:14px;min-width:56px;}
.h-main{flex:1;min-width:0;}
.h-label{font-weight:600;font-size:15.5px;}
.h-sub{font-size:12.5px;color:var(--muted);margin-top:3px;}
.h-pay{font-size:12px;font-weight:600;padding:6px 12px;border-radius:20px;background:var(--panel-3);color:var(--soft);white-space:nowrap;}
.h-void-tag{font-size:11px;font-weight:700;color:var(--danger);background:var(--primary-weak);padding:5px 10px;border-radius:20px;}
.h-total{font-family:"Poppins";font-weight:700;font-size:18px;min-width:92px;text-align:right;}
.hist-empty{text-align:center;color:var(--muted);padding:70px 20px;font-size:15px;}

/* Comptabilité */
.compta-list{flex:1;overflow-y:auto;padding:4px 26px 26px;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:13px;align-content:start;}
.day-card{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:16px 18px;text-align:left;display:flex;flex-direction:column;gap:9px;transition:var(--t);}
.day-card:hover{border-color:var(--primary);background:var(--panel-2);}
.day-card:active{transform:scale(.99);}
.day-card.current{border-color:var(--green);}
.day-card.current .dc-date::before{content:"● ";color:var(--green);font-size:11px;vertical-align:middle;}
.dc-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;}
.dc-date{font-family:"Poppins";font-weight:600;font-size:15.5px;text-transform:capitalize;}
.dc-ca{font-family:"Poppins";font-weight:700;font-size:19px;color:var(--green);}
.dc-sub{font-size:12.5px;color:var(--muted);}
.dc-methods{display:flex;flex-wrap:wrap;gap:7px;}
.dc-m{font-size:12px;font-weight:600;background:var(--panel-3);color:var(--soft);padding:5px 11px;border-radius:20px;}
/* Statistiques */
.compta-list.stats-mode{display:block;}   /* sort de la grille des cartes (sinon le sélecteur s'étire) */
.stats-period{display:inline-flex;margin-bottom:14px;flex-wrap:wrap;}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;}
.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;}
.stat-card h4{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:14px;font-family:"Inter";font-weight:600;}
.stat-card h4 small{text-transform:none;letter-spacing:0;color:var(--dim);font-weight:400;}
.chart{display:flex;flex-direction:column;gap:9px;}
.chart-row{display:grid;grid-template-columns:96px 1fr auto;align-items:center;gap:10px;}
.cr-label{font-size:12.5px;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cr-bar{height:10px;background:var(--panel-3);border-radius:6px;overflow:hidden;}
.cr-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:6px;}
.cr-val{font-family:"Poppins";font-weight:600;font-size:12.5px;white-space:nowrap;}
.day-tk-title{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--dim);margin:14px 0 10px;}
.history-list.embedded{padding:0;max-height:42vh;overflow-y:auto;gap:8px;}

/* Carte (édition) */
.carte-list{flex:1;overflow-y:auto;padding:6px 26px 26px;display:flex;flex-direction:column;gap:16px;}
.carte-cat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);}
.cc-head{display:flex;align-items:center;gap:11px;padding:13px 16px;border-bottom:1px solid var(--line);}
.cc-dot{width:13px;height:13px;border-radius:50%;background:var(--c,var(--primary));flex:0 0 auto;}
.cc-name{font-family:"Poppins";font-weight:600;font-size:16px;flex:1;}
.cc-count{font-size:12px;color:var(--muted);background:var(--panel-3);padding:3px 10px;border-radius:20px;}
.cc-btn{width:40px;height:40px;display:grid;place-items:center;border-radius:10px;color:var(--soft);background:var(--panel-2);transition:var(--t);}
.cc-btn svg{width:18px;height:18px;}
.cc-btn:hover{background:var(--line);color:#fff;}
.cc-btn:active{transform:scale(.93);}
.cc-prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:9px;padding:13px 16px;align-items:stretch;}
.cc-prod{display:flex;align-items:stretch;gap:7px;}
.ccp-main{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--panel-2);border:1px solid transparent;border-radius:11px;padding:12px 14px;text-align:left;transition:var(--t);min-height:54px;}
.ccp-main:hover{border-color:var(--primary);}
.ccp-main:active{transform:scale(.98);}
.ccp-move{display:flex;flex-direction:column;gap:4px;flex:0 0 auto;}
.ccp-mv{width:36px;flex:1;min-height:24px;display:grid;place-items:center;border-radius:8px;background:var(--panel-2);color:var(--muted);transition:var(--t);}
.ccp-mv svg{width:16px;height:16px;}
.ccp-mv:hover:not(:disabled){background:var(--line);color:#fff;}
.ccp-mv:active:not(:disabled){transform:scale(.9);}
.ccp-mv:disabled,.cc-btn:disabled{opacity:.3;}
.ccp-nm{font-weight:600;font-size:14px;flex:1;min-width:0;line-height:1.3;overflow-wrap:anywhere;}
.ccp-nm em{color:var(--gold);font-style:normal;font-size:11px;white-space:nowrap;}
.ccp-pr{font-family:"Poppins";font-weight:600;font-size:14px;white-space:nowrap;flex:0 0 auto;align-self:center;}
.cc-empty{color:var(--muted);font-size:13px;padding:4px;}
.swatches{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;}
.swatch{width:38px;height:38px;border-radius:50%;border:3px solid transparent;transition:var(--t);}
.swatch.on{border-color:#fff;transform:scale(1.08);}
.prod-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.prod-grid .field{margin-bottom:16px;}
#prodCat,#prodPrice{width:100%;margin-top:7px;background:var(--panel-2);border:1px solid var(--line);border-radius:11px;min-height:50px;padding:0 14px;font-size:15px;color:#fff;outline:none;}
#prodCat:focus,#prodPrice:focus{border-color:var(--primary);}
.supp-toggles{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.supp-toggle{padding:11px 15px;border-radius:11px;background:var(--panel-2);border:2px solid transparent;font-weight:600;font-size:13.5px;color:var(--soft);transition:var(--t);}
.supp-toggle.on{border-color:var(--green);background:rgba(39,192,138,.12);color:#fff;}

/* Paramètres (vue) */
.params-wrap{flex:1;overflow-y:auto;padding:6px 26px 30px;display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px;align-content:start;}
.pcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;}
.pcard h3{font-size:17px;margin-bottom:14px;}
.pcard-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;}
.pcard-head h3{margin:0;}
.pcard-sub{font-size:12.5px;color:var(--muted);line-height:1.45;margin:0 0 12px;}
.pcard .field{margin-bottom:14px;}
.pcard .field:last-child{margin-bottom:0;}
.pcard .check-field{margin-bottom:0;}
.users-list{display:flex;flex-direction:column;gap:9px;margin-bottom:14px;}
.user-row{display:flex;align-items:center;gap:12px;background:var(--panel-2);border:1px solid transparent;border-radius:12px;padding:11px 14px;text-align:left;transition:var(--t);}
.user-row:hover{border-color:var(--primary);}
.user-row:active{transform:scale(.99);}
.user-av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-family:"Poppins";font-weight:700;font-size:15px;color:#fff;flex:0 0 auto;}
.user-row .un{flex:1;font-weight:600;font-size:14.5px;}
.role-badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:20px;text-transform:uppercase;letter-spacing:.3px;}
.role-admin{background:var(--primary-weak);color:var(--primary);}
.role-serveur{background:var(--panel-3);color:var(--soft);}
.users-empty{color:var(--muted);font-size:13px;padding:6px 2px 12px;}
#userRole{margin-top:8px;}
#userRole button{flex:1;}
#userPin,#userName{}
/* pastille utilisateur (sidebar) */
.user-chip.s-on{color:var(--gold);}
.user-chip .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* connexion / écran de verrouillage */
.login-modal{width:480px;}
.login-brand{display:flex;align-items:center;gap:9px;margin-bottom:14px;color:var(--gold);}
.login-brand .ic{width:26px;height:26px;}
.login-brand strong{font-family:"Poppins";font-weight:700;font-size:18px;letter-spacing:.3px;}
.login-users{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;margin:6px 0 10px;}
.login-user{display:flex;flex-direction:column;align-items:center;gap:9px;background:var(--panel-2);border:2px solid transparent;border-radius:16px;padding:18px 12px;font-weight:600;font-size:15px;transition:var(--t);}
.login-user:hover{border-color:var(--primary);}
.login-user:active{transform:scale(.96);}
.login-user .user-av{width:56px;height:56px;font-size:21px;box-shadow:0 4px 14px rgba(0,0,0,.3);}
.login-user .lu-name{font-size:15.5px;}
.login-user .role-badge{font-size:10.5px;}
.lock-foot{width:100%;margin-bottom:6px;}
.login-pin{display:flex;flex-direction:column;}
#loginPinInput{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;font-size:24px;letter-spacing:8px;color:#fff;text-align:center;font-family:"Poppins";outline:none;margin-bottom:10px;caret-color:transparent;}
#loginKeypad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;}
#loginKeypad button{min-height:54px;border-radius:13px;background:var(--panel);font-family:"Poppins";font-weight:600;font-size:22px;color:var(--txt);transition:var(--t);display:flex;align-items:center;justify-content:center;}
#loginKeypad button:active{background:var(--primary);color:#fff;transform:scale(.95);}
#loginKeypad .kp-ok{background:var(--green);color:var(--green-ink);}
#loginKeypad .kp-back svg,#loginKeypad .kp-ok svg{width:24px;height:24px;}
@media (max-width:520px){ .params-wrap{grid-template-columns:1fr;} }

/* ===================== MODALES ===================== */
.overlay{position:fixed;inset:0;background:rgba(6,8,12,.62);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:var(--t);z-index:40;}
.overlay.show{opacity:1;pointer-events:auto;}
.overlay.gate{background:rgba(6,8,12,.86);backdrop-filter:blur(7px);}
.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-46%) scale(.97);background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:24px;width:440px;max-width:93vw;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:var(--t);z-index:50;}
.modal.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1);}
.modal-wide{width:580px;}
.modal h3{font-size:21px;margin-bottom:6px;}
.modal-sub{color:var(--muted);font-size:13.5px;margin-bottom:16px;line-height:1.45;}
.modal-actions{display:flex;gap:10px;margin-top:22px;}
.modal-actions>button{min-height:var(--tap);}
.modal-actions .ghost{flex:0 0 auto;padding:0 22px;border-radius:13px;}
.modal-actions .btn-pay{flex:1;}
.ghost{background:var(--panel-2);min-height:46px;padding:0 16px;border-radius:11px;font-size:14px;font-weight:600;color:var(--soft);transition:var(--t);display:inline-flex;align-items:center;justify-content:center;gap:7px;}
.ghost:hover{background:var(--line);color:#fff;}
.ghost:active{transform:scale(.97);}

.supp-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px;}
.supp-item{display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:0 16px;border-radius:13px;background:var(--panel-2);border:2px solid transparent;font-size:15.5px;font-weight:500;transition:var(--t);}
.supp-item:active{transform:scale(.99);}
.supp-item.on{border-color:var(--green);background:rgba(39,192,138,.12);}
.supp-item .pr{color:var(--gold);font-weight:600;}
.supp-item .check{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;color:#fff;}
.supp-item .check svg{width:15px;height:15px;opacity:0;}
.supp-item.on .check{background:var(--green);border-color:var(--green);}
.supp-item.on .check svg{opacity:1;}
.qty-picker{display:flex;align-items:center;justify-content:space-between;padding:8px 2px;}
.qty-picker span{color:var(--soft);font-size:16px;}
.qty-picker .qty-ctrl{background:var(--panel-2);}

.tables-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:11px;margin-top:8px;}
.table-cell{aspect-ratio:1;border-radius:15px;background:var(--panel-2);border:2px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-weight:600;transition:var(--t);min-height:84px;}
.table-cell:active{transform:scale(.95);}
.table-cell:hover{border-color:var(--primary);}
.table-cell .tn{font-size:19px;}
.table-cell .tc{color:var(--soft);}
.table-cell .ta{font-size:11.5px;color:var(--green);font-weight:700;}
.table-cell.busy{background:rgba(39,192,138,.13);border-color:var(--green);}
.table-cell.special{background:var(--primary-weak);}

.pay-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;}
.ps-cell{background:var(--panel-2);padding:14px 18px;border-radius:14px;display:flex;flex-direction:column;gap:3px;}
.ps-cell span{color:var(--soft);font-size:13px;}
.ps-cell strong{font-family:"Poppins";font-size:24px;}
.ps-cell.rest strong{color:var(--gold);}
.ps-cell.rest.done strong{color:var(--green);}
.pay-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;}
.pay-entry>label,.pay-side>label{font-size:13px;color:var(--soft);display:block;margin-bottom:9px;}
.pay-entry>label small{color:var(--muted);font-weight:400;}
.pay-methods{display:flex;flex-direction:column;gap:9px;margin-bottom:12px;}
.pay-methods button{display:flex;align-items:center;gap:11px;min-height:58px;padding:0 16px;border-radius:13px;background:var(--panel-2);font-weight:600;font-size:15px;border:2px solid transparent;transition:var(--t);}
.pay-methods button:active{transform:scale(.97);}
.pay-methods button:hover{border-color:var(--line);}
.pay-methods button.on{border-color:var(--green);background:rgba(39,192,138,.16);color:#fff;}
.pay-methods button.on .ic{color:var(--green);}
.pay-methods button.on::after{content:"";margin-left:auto;width:8px;height:14px;border:solid var(--green);border-width:0 3px 3px 0;transform:rotate(45deg);margin-bottom:4px;}
.tenders{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;}
.tender{display:flex;align-items:center;gap:10px;background:rgba(39,192,138,.1);border:1px solid rgba(39,192,138,.4);border-radius:11px;padding:10px 12px;font-size:14px;}
.tender .tn-m{flex:1;font-weight:600;}
.tender .tn-a{font-family:"Poppins";font-weight:600;}
.tender button{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;color:var(--muted);transition:var(--t);}
.tender button:hover{background:var(--line);color:#fff;}
.tender button svg{width:16px;height:16px;}
.tip-box{margin-bottom:14px;}
.tip-box label{font-size:13px;color:var(--soft);display:block;margin-bottom:9px;}
.divide-box{background:var(--panel-2);border-radius:13px;padding:11px 14px;margin-bottom:13px;}
.db-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.db-row>span{font-size:14.5px;color:var(--soft);font-weight:500;}
.divide-box .qty-ctrl{background:var(--panel);}
.divide-box .qty-ctrl button{width:42px;height:42px;}
.divide-box .qty-ctrl b{min-width:34px;}
.db-info{margin-top:10px;font-size:13.5px;color:var(--gold);font-weight:600;}
.tip-box #tipShown{color:var(--gold);font-weight:600;margin-left:4px;}
.cash-box{background:var(--panel-2);border-radius:15px;padding:16px;margin-bottom:6px;}
.cash-box label{font-size:13px;color:var(--soft);display:block;margin-bottom:10px;}
.cash-quick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;}
.cash-quick button{background:var(--panel);min-height:46px;padding:0 16px;border-radius:11px;font-weight:600;font-size:14px;color:var(--soft);transition:var(--t);}
.cash-quick button:active{background:var(--primary);color:#fff;}
.cash-quick button:hover{background:var(--line);color:#fff;}
.cash-quick button.on{background:var(--primary);color:#fff;}
#cashGiven,#discValue{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:15px;font-size:24px;color:#fff;text-align:right;font-family:"Poppins";outline:none;}
#cashGiven{caret-color:transparent;cursor:default;margin-bottom:12px;}
#cashGiven:focus,#discValue:focus{border-color:var(--primary);}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:12px 0 4px;}
.keypad button{min-height:56px;border-radius:13px;background:var(--panel);font-family:"Poppins";font-weight:600;font-size:22px;color:var(--txt);transition:var(--t);display:flex;align-items:center;justify-content:center;}
.keypad button:hover{background:var(--line);}
.keypad button:active{background:var(--primary);color:#fff;transform:scale(.95);}
.keypad .kp-back{color:var(--soft);}
.keypad .kp-back svg{width:26px;height:26px;}
.change-row{display:flex;justify-content:space-between;align-items:center;margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);}
.change-row span{color:var(--soft);}
.change-row strong{font-family:"Poppins";font-size:23px;color:var(--gold);}
#discType{margin-bottom:14px;}
#discType button{flex:1;}
#discPresets{margin-bottom:14px;}

/* Détail ticket / Z */
.tk-lines{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.tk-lines .tl{display:flex;justify-content:space-between;gap:10px;font-size:14.5px;padding:11px 13px;background:var(--panel-2);border-radius:11px;}
.tk-lines .tl small{display:block;color:var(--gold);font-size:12px;margin-top:2px;}
.tk-foot{border-top:1px dashed var(--line);padding-top:14px;display:flex;flex-direction:column;gap:8px;}
.tk-foot .r{display:flex;justify-content:space-between;font-size:14.5px;color:var(--soft);}
.tk-foot .r.big{font-family:"Poppins";font-size:21px;font-weight:700;color:var(--txt);}
.tk-foot .r.gold{color:var(--gold);}

.field{display:block;font-size:13px;color:var(--soft);margin-bottom:16px;}
.field input{width:100%;margin-top:8px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;min-height:50px;padding:0 14px;font-size:15px;color:#fff;outline:none;}
.field input:focus{border-color:var(--primary);}
.check-field{display:flex;align-items:center;gap:12px;font-size:14.5px;color:var(--soft);margin-bottom:16px;cursor:pointer;min-height:46px;}
.check-field input{width:24px;height:24px;accent-color:var(--primary);}
.set-danger{margin-top:6px;}
.btn-danger{width:100%;min-height:50px;background:var(--primary-weak);color:var(--danger);border:1px solid rgba(239,77,99,.4);border-radius:12px;font-weight:600;font-size:14.5px;transition:var(--t);}
.btn-danger:hover{background:rgba(239,77,99,.22);}
.btn-danger:active{transform:scale(.98);}
.btn-danger.thin{flex:0 0 auto;width:auto;padding:0 16px;font-size:13.5px;}

/* ===================== TOAST ===================== */
#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(24px);background:#0c1014;color:#fff;padding:15px 26px;border-radius:30px;font-weight:600;font-size:15px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:var(--t);z-index:60;border:1px solid var(--line);display:flex;align-items:center;gap:10px;}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
#toast.ok{border-color:var(--green);}
#toast .ic{color:var(--green);}

/* Confirmation animée (encaissement validé) */
#flash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:70;opacity:0;transition:var(--t);}
#flash.show{opacity:1;}
.flash-card{background:var(--panel);border:1px solid var(--green);border-radius:22px;padding:30px 46px;text-align:center;box-shadow:var(--shadow);transform:scale(.82);transition:.28s cubic-bezier(.2,1.35,.4,1);}
#flash.show .flash-card{transform:scale(1);}
.flash-ic{width:74px;height:74px;margin:0 auto 14px;border-radius:50%;background:var(--green);display:grid;place-items:center;color:var(--green-ink);}
.flash-ic svg{width:42px;height:42px;stroke-width:2.6;}
.flash-msg{font-family:"Poppins";font-weight:700;font-size:24px;}
.flash-sub{color:var(--soft);font-size:15px;margin-top:4px;font-variant-numeric:tabular-nums;}
@media (prefers-reduced-motion:reduce){.flash-card{transition:opacity .15s;}}

/* ===================== PRINT ===================== */
#printArea{display:none;}
/* Aperçu reçu à l'écran (carte blanche façon ticket 80 mm) */
.receipt{background:#fff;color:#16130f;width:300px;max-width:100%;margin:0 auto;padding:18px 20px;border-radius:10px;font-variant-numeric:tabular-nums;box-shadow:0 6px 20px rgba(0,0,0,.25);}
.receipt .r-head{text-align:center;margin-bottom:8px;}
.receipt .r-name{font-family:"Poppins";font-weight:700;font-size:19px;}
.receipt .r-meta{font-size:11.5px;color:#666;line-height:1.5;}
.receipt .r-sep{border-top:1px dashed #b3ada5;margin:9px 0;}
.receipt .r-item{display:grid;grid-template-columns:26px 1fr auto;gap:6px;font-size:13px;margin:5px 0;align-items:baseline;}
.receipt .r-q{color:#555;font-weight:600;}
.receipt .r-n small{display:block;color:#777;font-size:11px;}
.receipt .r-n em{font-style:normal;color:#b8642f;font-weight:600;}
.receipt .r-p{font-weight:600;white-space:nowrap;}
.receipt .r-line{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin:3px 0;color:#333;}
.receipt .r-total{display:flex;justify-content:space-between;gap:10px;font-weight:700;font-size:16px;margin:6px 0;}
.receipt .r-foot{text-align:center;font-size:11.5px;color:#666;margin-top:14px;}

@media print{
  body *{visibility:hidden;}
  #printArea,#printArea *{visibility:visible;}
  #printArea{display:block;position:absolute;left:0;top:0;width:var(--paper,80mm);padding:4mm;color:#000;font-family:"Inter",ui-monospace,monospace;font-size:12px;}
  #printArea .r-head{text-align:center;margin-bottom:6px;}
  #printArea .r-name{font-weight:bold;font-size:16px;}
  #printArea .r-meta{font-size:10px;}
  #printArea .r-sep{border-top:1px dashed #000;margin:6px 0;}
  #printArea .r-items .r-item{display:grid;grid-template-columns:22px 1fr auto;gap:4px;margin:2px 0;}
  #printArea .r-n small{display:block;}
  #printArea .r-n em{font-style:normal;}
  #printArea .r-line{display:flex;justify-content:space-between;margin:2px 0;}
  #printArea .r-total{display:flex;justify-content:space-between;font-weight:bold;font-size:14px;}
  #printArea .r-foot{text-align:center;margin-top:10px;font-size:10px;}
}

/* Tarifs programmés : Happy Hour (promo, doré) / Tarif de nuit (majoration, bleu) */
:root{--night:#7c9cf5;--night-weak:rgba(124,156,245,.16);}
.hh-banner{display:inline-flex;align-items:center;gap:6px;background:var(--gold-weak);color:var(--gold);font-weight:700;font-size:12.5px;padding:7px 13px;border-radius:20px;border:1px solid rgba(224,162,91,.4);white-space:nowrap;}
.hh-banner.night{background:var(--night-weak);color:var(--night);border-color:rgba(124,156,245,.4);}
.alt-tag{display:inline-block;margin-left:7px;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:10px;vertical-align:middle;}
.alt-tag.hh{background:var(--gold-weak);color:var(--gold);}
.alt-tag.night{background:var(--night-weak);color:var(--night);}
.price s{color:var(--dim);margin-right:5px;}
input[type=time],input[type=number]{color-scheme:dark;}
.hh-state{font-size:11.5px;font-weight:700;padding:3px 11px;border-radius:20px;background:var(--panel-3);color:var(--dim);}
.hh-state.on{background:var(--gold-weak);color:var(--gold);}
/* bloc tarif programmé dans l'éditeur de produit */
.hh-prod{margin:14px 0;padding:14px;border:1px dashed var(--line);border-radius:14px;background:var(--panel-2);}
.hh-prod-head{display:flex;align-items:center;gap:7px;color:var(--soft);font-weight:700;font-size:14px;margin-bottom:8px;}
.hh-prod .field{margin-top:0;}
.hh-prod .pcard-sub{color:var(--soft);font-size:12px;line-height:1.45;}
.alt-preview{font-weight:700;font-size:13px;}
.alt-preview.hh{color:var(--gold);}
.alt-preview.night{color:var(--night);}
.ccp-alt{display:inline-block;margin-left:6px;font-size:11px;font-weight:700;padding:1px 7px;border-radius:9px;font-style:normal;}
.ccp-alt.hh{background:var(--gold-weak);color:var(--gold);}
.ccp-alt.night{background:var(--night-weak);color:var(--night);}

.params-hint{grid-column:1/-1;background:var(--gold-weak);color:var(--gold);border:1px solid rgba(224,162,91,.35);border-radius:12px;padding:12px 16px;font-size:14px;font-weight:600;}

/* Moyens de paiement configurables */
.pay-methods-edit{display:flex;flex-wrap:wrap;gap:8px;}
.pm-chip{display:inline-flex;align-items:center;gap:7px;background:var(--panel-2);border-radius:20px;padding:7px 8px 7px 13px;font-size:14px;font-weight:600;color:var(--soft);}
.pm-chip .ic{color:var(--soft);}
.pm-chip em{font-size:10.5px;color:var(--dim);font-style:normal;}
.pm-del{width:24px;height:24px;border-radius:50%;background:var(--panel-3);display:grid;place-items:center;color:var(--soft);}
.pm-del svg{width:14px;height:14px;}
.pm-del:active{transform:scale(.9);}

/* Actions du détail ticket : 2 rangées, jamais de débordement */
.tk-actions{display:flex;flex-direction:column;gap:9px;margin-top:20px;}
.tk-manage{display:flex;flex-wrap:wrap;gap:8px;}
.tk-manage button{flex:1 1 auto;min-width:120px;min-height:46px;border-radius:12px;}
.tk-manage:empty{display:none;}
.tk-main{display:flex;gap:10px;}
.tk-main .ghost{flex:0 0 auto;padding:0 24px;min-height:50px;}
.tk-main .btn-pay{flex:1;min-height:50px;}

/* Édition d'une vente (admin) */
#editTicketModal,#editZModal{z-index:70;}
.et-lines{display:flex;flex-direction:column;gap:6px;margin:10px 0;max-height:34vh;overflow-y:auto;}
.et-line{display:flex;align-items:center;gap:10px;background:var(--panel-2);border-radius:12px;padding:8px 12px;}
.et-line .et-n{flex:1;font-size:14px;font-weight:600;}
.et-line .et-lt{min-width:70px;text-align:right;font-variant-numeric:tabular-nums;}
.et-line .qty-ctrl{display:flex;align-items:center;gap:8px;}
.et-line .qty-ctrl button{width:34px;height:34px;border-radius:9px;background:var(--panel-3);display:grid;place-items:center;}
.et-line .qty-ctrl svg{width:16px;height:16px;}
.et-line .qty-ctrl b{min-width:18px;text-align:center;}

/* Suppléments configurables */
.supp-edit{display:flex;flex-direction:column;gap:8px;}
.supp-row{display:flex;align-items:center;gap:8px;}
.supp-row .se-name{flex:1;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;min-height:44px;padding:0 12px;font-size:14px;color:#fff;outline:none;}
.supp-row .se-name:focus{border-color:var(--primary);}
.supp-row .se-price{width:74px;text-align:center;margin-top:0;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;min-height:44px;padding:0 8px;font-size:14px;color:#fff;outline:none;}
.supp-row .se-price:focus{border-color:var(--primary);}

/* TVA */
.hh-pct{display:inline-flex;align-items:center;gap:7px;color:var(--soft);}
.hh-pct input{width:78px;text-align:center;margin-top:0;}
.vat-cats{display:flex;flex-direction:column;gap:8px;}
.vat-cat{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.vat-cat>span:first-child{font-size:14px;color:var(--soft);}

/* Ouverture de caisse */
.caisse-status{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--green);background:rgba(39,192,138,.12);border:1px solid rgba(39,192,138,.3);border-radius:20px;padding:6px 12px;white-space:nowrap;}
.btn-z.open-z{background:var(--green);color:var(--green-ink);}
.btn-z.open-z:hover{background:var(--green-d);}
.btn-z:disabled{opacity:.4;pointer-events:none;}

/* Rapport X / Z — sections lisibles */
.z-headline{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:2px;}
.z-headline span{font-size:15px;color:var(--soft);font-weight:600;}
.z-headline strong{font-family:"Poppins";font-weight:700;font-size:26px;}
.z-meta{color:var(--muted);font-size:12.5px;margin-bottom:6px;}
.z-sec{margin:14px 0 5px;font-size:11.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line);padding-bottom:4px;}
.z-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:4px 0;font-size:14.5px;}
.z-line small{color:var(--dim);font-size:11.5px;font-weight:500;}
.z-line.gold,.z-line .gold{color:var(--gold);}
.z-line.z-total{margin-top:4px;padding-top:8px;border-top:1px dashed var(--line);font-family:"Poppins";font-weight:700;font-size:16px;}
.z-line.z-total span:last-child{color:var(--green);}

/* Clôture : comptage des espèces / écart de caisse */
.z-cash{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
.zc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;}
.zc-row label{font-size:14px;color:var(--soft);font-weight:600;}
.zc-in{display:inline-flex;align-items:center;gap:6px;color:var(--soft);}
.zc-in input{width:120px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:16px;color:#fff;text-align:right;font-family:"Poppins";outline:none;}
.zc-in input:focus{border-color:var(--primary);}
.zc-calc .r{display:flex;justify-content:space-between;padding:3px 0;}
.zc-diff{font-weight:700;}
.zc-diff.ok span:last-child{color:var(--green);}
.zc-diff.pos span:last-child{color:var(--gold);}
.zc-diff.neg span:last-child{color:var(--primary);}
.zc-hint{font-size:12px;color:var(--dim);margin-top:2px;}
.ghost-z{background:var(--panel-2)!important;color:var(--soft)!important;}

/* Note générale de commande (bandeau sous l'en-tête du ticket) */
.order-note{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:var(--gold-weak);color:var(--gold);font-size:13.5px;font-weight:600;padding:9px 16px;line-height:1.35;border-bottom:1px solid var(--line);}
.order-note .ic{flex:0 0 auto;color:var(--gold);}
.th-actions .iconbtn.on{color:var(--gold);background:var(--gold-weak);}

/* Note sur une ligne de commande */
.line-note{font-size:12.5px;color:var(--gold);background:var(--gold-weak);border-radius:8px;padding:3px 9px;margin:4px 0 2px;display:inline-block;max-width:100%;word-break:break-word;}
.tl-note{display:block;color:var(--gold);font-style:normal;margin-top:2px;}

/* Modale de saisie de texte (au-dessus des autres modales) */
#promptModal{z-index:80;width:420px;}
#promptModal input{width:100%;margin:6px 0 4px;padding:14px 16px;font-size:16px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--ink);}
#promptModal input:focus{outline:none;border-color:var(--primary);}

/* Modale de confirmation (au-dessus des autres modales) */
#confirmModal{z-index:80;width:400px;}
#confirmModal .modal-sub{font-size:14.5px;color:var(--soft);line-height:1.5;white-space:pre-line;}
.btn-pay.danger{background:var(--primary);color:#fff;}
.btn-pay.danger:hover{background:#e23a52;}

/* Éléments réservés au mobile (cachés par défaut) */
.ticket-close{display:none;}
#cartPill{display:none;}

/* ===================== RESPONSIVE ===================== */
/* Tablettes paysage / petits laptops : on GARDE les libellés, on resserre */
@media (max-width:1200px){
  :root{--sb:192px;}
  .ticket{flex-basis:360px;}
  .clock{display:none;}
  .lbl-new{display:none;}                 /* "+ Commande" → icône seule */
  .grid{grid-template-columns:repeat(auto-fill,minmax(152px,1fr));}
  .sidebar{padding:14px 10px;}
}
@media (max-width:1000px){
  :root{--sb:176px;}
  .ticket{flex-basis:338px;}
  .catalog{padding:16px;}
  .catalog-head h2{font-size:20px;}
  .nav-item,.cat{font-size:14.5px;}
  .cat{min-height:46px;}
  .grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:11px;}
  .card{min-height:118px;padding:14px;}
}
/* Téléphones / petites tablettes portrait : barre du haut + ticket en bas */
@media (max-width:820px){
  :root{--sb:100%;}
  #app{flex-direction:column;}
  /* En-tête fin : marque à gauche, utilisateur / sync / réglages à droite */
  .sidebar{flex:0 0 auto;flex-direction:row;border-right:none;border-bottom:1px solid var(--line);padding:7px 10px;align-items:center;gap:8px;min-height:54px;}
  .brand{display:flex;padding:0;gap:9px;}
  .brand-mark{width:34px;height:34px;}.brand-mark svg{width:20px;height:20px;}
  .brand-txt{display:block;}.brand-txt strong{font-size:15px;}.brand-txt small{display:none;}
  .cats-wrap{display:none !important;}
  .side-foot{order:1;margin-left:auto;margin-top:0;position:relative;}
  .side-toggle{min-height:40px;padding:0 10px 0 6px;gap:8px;}
  .st-av{width:30px;height:30px;font-size:12px;}
  .st-name{max-width:82px;}
  .side-extra{position:absolute;top:calc(100% + 8px);right:0;margin:0;flex-direction:column;gap:6px;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow);z-index:45;min-width:190px;}
  .side-extra .sync-chip,.side-extra .settings-btn,.side-extra .user-chip{margin:0;width:100%;min-height:44px;}
  .side-extra .lbl{display:inline !important;max-width:none;}
  /* Navigation principale = barre d'onglets en bas */
  .mainnav{position:fixed;left:0;right:0;bottom:0;z-index:30;flex-direction:row;justify-content:space-around;gap:0;margin:0;padding:5px 4px max(5px,env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line);border-bottom:none;}
  .nav-item{flex:1;flex-direction:column;gap:3px;min-height:52px;padding:5px 2px;border-radius:10px;font-size:11px;font-weight:600;position:relative;}
  .nav-item .ic svg{width:23px;height:23px;}
  .nav-item .lbl{display:inline;font-size:11px;}
  .nav-item.active{background:transparent;color:var(--primary);}
  .nbadge{position:absolute;top:2px;right:22%;min-width:18px;height:18px;font-size:10px;}
  /* Catalogue : remplit jusqu'à la barre du bas ; la marge basse n'est que du défilement */
  .catalog{padding:12px 12px 0;}
  .grid{padding-bottom:calc(74px + env(safe-area-inset-bottom));}
  body.has-cart .grid{padding-bottom:calc(134px + env(safe-area-inset-bottom));}
  .orders-grid,.history-list,.compta-list,.carte-list,.params-wrap{padding-bottom:calc(80px + env(safe-area-inset-bottom));}
  .view-head{padding:16px 16px 12px;}
  .view-head h2{font-size:20px;}
  .catalog-head{flex-wrap:wrap;gap:10px;}
  .head-right{flex:1;min-width:160px;}
  .search-wrap{flex:1;}
  #search{width:100%;}
  .grid{grid-template-columns:repeat(auto-fill,minmax(46%,1fr));}
  /* Commande = panneau coulissant plein écran (au-dessus des onglets, sous les modales) */
  #app.view-pos .view[data-view="pos"]{position:relative;}
  .ctx-bar{display:none;}
  .ticket{position:fixed;inset:0;height:100dvh;border:0;border-radius:0;transform:translateY(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);z-index:35;flex-basis:auto;background:var(--panel);box-shadow:none;}
  .ticket.open{transform:translateY(0);}
  .ticket-close{display:inline-flex !important;}
  .ticket-head{padding-top:max(10px,env(safe-area-inset-top));}
  .ticket .lines{padding:8px 14px;}
  .totals{padding:14px 18px 4px;}
  .ticket-actions{padding:12px 16px max(16px,env(safe-area-inset-bottom));gap:10px;}
  .ticket-actions .btn-pay{min-height:62px;font-size:18px;}
  .btn-clear{flex:0 0 92px;min-height:62px;}
  /* Bouton panier flottant */
  #cartPill{display:flex;position:fixed;left:12px;right:12px;bottom:64px;z-index:32;align-items:center;gap:11px;min-height:54px;padding:0 18px;border-radius:14px;background:var(--green);color:var(--green-ink);font-weight:700;font-size:15.5px;box-shadow:0 8px 24px rgba(0,0,0,.4);transition:var(--t);}
  #cartPill.empty{display:none;}
  #cartPill b{background:rgba(0,0,0,.16);padding:2px 11px;border-radius:20px;}
  #cartPill .cp-go{margin-left:auto;}
  #cartPill:active{transform:scale(.98);}

  /* ===== Modales plein écran, tout visible, actions ancrées en bas ===== */
  .overlay{backdrop-filter:none;}
  .modal{
    top:0;left:0;right:0;bottom:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;
    border-radius:0;border:0;display:flex;flex-direction:column;
    padding:14px 14px max(14px,env(safe-area-inset-bottom));overflow-y:auto;
  }
  .modal.show{transform:none;}
  .modal-wide{width:100vw;}
  .modal h3{font-size:19px;margin-bottom:4px;}
  .modal-sub{margin-bottom:10px;}
  .modal-actions{margin-top:auto;padding-top:12px;}
  .modal-actions>button{min-height:54px;}
  /* listes longues : scroll interne discret plutôt que pousser la modale */
  .supp-list,.tk-lines,.tables-grid,.orders-cells{overflow-y:auto;}

  /* ----- Encaissement compact : 2 colonnes conservées (pavé | moyens) ----- */
  .pay-summary{margin-bottom:10px;gap:8px;}
  .ps-cell{padding:11px 13px;}
  .ps-cell strong{font-size:21px;}
  .tip-box{margin-bottom:9px;}
  .tip-box label{margin-bottom:6px;}
  .pay-cols{grid-template-columns:1.05fr .95fr;gap:10px;}
  .pay-entry>label,.pay-side>label{margin-bottom:6px;}
  #cashGiven{padding:11px;font-size:20px;margin-bottom:9px;}
  .cash-quick{margin-bottom:8px;gap:6px;}
  .cash-quick button{min-height:42px;padding:0 12px;}
  .keypad{gap:7px;margin:0;}
  .keypad button{min-height:0;height:46px;font-size:19px;}
  .pay-methods{gap:8px;margin-bottom:9px;}
  .pay-methods button{min-height:50px;}
  .tenders{margin-bottom:6px;}
}

/* Écrans courts (paysage, petites tablettes) : on comprime encore le pavé */
@media (max-height:620px){
  .keypad button{height:40px;font-size:17px;}
  .pay-methods button{min-height:46px;}
  .ps-cell strong{font-size:19px;}
  .modal-actions>button{min-height:48px;}
}

/* iPad & tablettes paysage : encaissement sans scroll vertical */
@media (min-width:821px) and (max-height:920px){
  #payModal{max-height:96dvh;}
  #payModal .pay-summary{margin-bottom:10px;}
  #payModal .ps-cell{padding:11px 14px;}
  #payModal .ps-cell strong{font-size:21px;}
  #payModal .tip-box{margin-bottom:9px;}
  #payModal .tip-box label{margin-bottom:6px;}
  #payModal .pay-entry>label,#payModal .pay-side>label{margin-bottom:6px;}
  #payModal #cashGiven{padding:11px;font-size:20px;margin-bottom:9px;}
  #payModal .cash-quick{margin-bottom:8px;gap:7px;}
  #payModal .cash-quick button{min-height:42px;}
  #payModal .keypad{gap:8px;}
  #payModal .keypad button{height:50px;min-height:0;font-size:20px;}
  #payModal .pay-methods button{min-height:52px;}
  #payModal .modal-actions{margin-top:14px;}
}
@media (min-width:821px) and (max-height:760px){
  #payModal .keypad button{height:44px;font-size:18px;}
  #payModal .ps-cell strong{font-size:19px;}
  #payModal .cash-quick button{min-height:38px;}
  #payModal .pay-methods button{min-height:48px;}
}
