﻿  :root{
    --paper:#F7F1E6; --paper-dark:#EDE4D3;
    --bordeaux:#7A2E2E; --bordeaux-dark:#5C2222;
    --charcoal:#1B1B18; --charcoal-2:#242420;
    --ember:#E8823D; --ember-dim:#B9611F;
    --sage:#6B7A5E; --slate:#4A5568; --ink:#2A2620; --danger:#A23B2E; --gold:#B8923F;
  }
  *{box-sizing:border-box;}
  body{margin:0;background:var(--paper);color:var(--ink);font-family:'Inter',sans-serif;}
  .display{font-family:'Fraunces',serif;}
  .mono{font-family:'IBM Plex Mono',monospace;}
  button{font-family:inherit;}

  .topbar{background:var(--bordeaux);color:var(--paper);padding:12px 20px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 10px rgba(0,0,0,.15);position:sticky;top:0;z-index:50;flex-wrap:wrap;gap:10px;}
  .brand{display:flex;align-items:center;gap:10px;}
  .brand .mark{width:34px;height:34px;border-radius:8px;background:var(--ember);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--charcoal);}
  .brand h1{font-size:16px;margin:0;font-weight:600;}
  .brand small{display:block;font-size:10px;opacity:.75;letter-spacing:.6px;text-transform:uppercase;}
  .tabs{display:flex;gap:4px;background:rgba(0,0,0,.18);padding:4px;border-radius:10px;flex-wrap:wrap;}
  .tab-btn{background:transparent;border:none;color:var(--paper);opacity:.7;padding:7px 12px;border-radius:7px;font-size:12.5px;font-weight:600;cursor:pointer;}
  .tab-btn.active{background:var(--paper);color:var(--bordeaux);opacity:1;}
  .top-actions{display:flex;align-items:center;gap:8px;}
  .top-select{background:rgba(255,255,255,.15);color:var(--paper);border:1px solid rgba(255,255,255,.3);border-radius:6px;padding:5px 8px;font-size:11.5px;}
  .top-select option{color:#000;}
  .account-btn{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:var(--paper);border-radius:999px;padding:6px 12px;font-size:11.5px;font-weight:600;cursor:pointer;}

  .view{display:none;max-width:1200px;margin:0 auto;padding:22px 18px 70px;}
  .view.active{display:block;}

  select, input[type=text], input[type=number], input[type=time], input[type=email], input[type=password], input[type=url], textarea{font-family:'Inter',sans-serif;border:1px solid #d8cbb2;background:#fff;border-radius:8px;padding:8px 10px;font-size:13px;}
  label{font-size:12.5px;}

  .client-header{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:14px;margin-bottom:14px;}
  .client-header h2{font-size:26px;margin:0 0 4px;}
  .period-badge{font-size:11px;background:var(--paper-dark);color:var(--bordeaux);padding:4px 10px;border-radius:999px;font-weight:700;display:inline-block;margin-top:4px;}
  .cats{display:flex;gap:8px;margin:14px 0 18px;flex-wrap:wrap;}
  .cat-btn{padding:7px 14px;border-radius:999px;border:1px solid var(--bordeaux);background:transparent;color:var(--bordeaux);font-weight:600;font-size:12.5px;cursor:pointer;}
  .cat-btn.active{background:var(--bordeaux);color:var(--paper);}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;}
  .pcard{background:#fff;border-radius:12px;padding:16px;border:1px solid #e8ddc7;position:relative;transition:transform .15s;}
  .pcard:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.06);}
  .pcard.unavailable{opacity:.55;}
  .pcard .emoji{font-size:28px;}
  .pcard h3{font-size:16px;margin:8px 0 4px;font-family:'Fraunces',serif;font-weight:600;}
  .pcard p{font-size:12.5px;color:var(--slate);margin:0 0 10px;line-height:1.4;min-height:34px;}
  .pcard .allerg{font-size:10.5px;color:#a17b2e;margin-bottom:8px;}
  .price-row{display:flex;justify-content:space-between;align-items:center;}
  .price{font-weight:700;color:var(--bordeaux);}
  .addbtn{background:var(--charcoal);color:var(--paper);border:none;border-radius:7px;padding:7px 12px;font-size:12px;font-weight:600;cursor:pointer;}
  .addbtn:disabled{opacity:.4;cursor:not-allowed;}
  .fav-heart{position:absolute;top:12px;right:12px;background:none;border:none;font-size:17px;cursor:pointer;filter:grayscale(1);opacity:.5;}
  .fav-heart.active{filter:none;opacity:1;}
  .unavail-tag{position:absolute;top:10px;left:10px;background:var(--danger);color:#fff;font-size:9.5px;font-weight:700;padding:3px 8px;border-radius:5px;}

  .cart-fab{position:fixed;bottom:20px;right:20px;background:var(--bordeaux);color:var(--paper);border-radius:999px;padding:14px 20px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.25);cursor:pointer;z-index:40;display:flex;gap:8px;align-items:center;}
  .cart-badge{background:var(--ember);color:var(--charcoal);border-radius:999px;padding:2px 8px;font-size:12px;}

  .drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:60;display:none;}
  .drawer-overlay.open{display:block;}
  /* Tout le panier défile d'un bloc (au lieu de juste .drawer-body) — sinon,
     un contenu de panier long (code promo + pourboire + moyens de paiement +
     champ carte) pousse le bouton "Commander" plus bas que la hauteur de
     l'écran, SANS aucun moyen d'y faire défiler : le bouton devient
     invisible et impossible à cliquer. drawer-head reste épinglé en haut
     via position:sticky pendant que le reste défile derrière lui. */
  .drawer{position:fixed;top:0;right:0;height:100%;width:100%;max-width:440px;background:var(--paper);box-shadow:-8px 0 30px rgba(0,0,0,.2);z-index:61;transform:translateX(100%);transition:transform .25s ease;display:flex;flex-direction:column;overflow-y:auto;}
  .drawer.open{transform:translateX(0);}
  .drawer-head{padding:16px 18px;border-bottom:1px solid #e2d5ba;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--paper);z-index:1;}
  .drawer-body{padding:14px 18px;}
  .drawer-foot{padding:14px 18px;border-top:1px solid #e2d5ba;background:var(--paper-dark);}
  .cart-line{display:flex;justify-content:space-between;gap:8px;padding:10px 0;border-bottom:1px dashed #d8cbb2;}
  .cart-line .opts{font-size:11px;color:var(--slate);margin-top:2px;}
  .remove-x{background:none;border:none;color:var(--danger);cursor:pointer;font-size:15px;}
  .totals-row{display:flex;justify-content:space-between;font-size:13px;margin-bottom:4px;}
  .totals-row.total{font-weight:700;font-size:16px;margin-top:8px;padding-top:8px;border-top:1px solid #d8cbb2;}
  .totals-row.discount{color:var(--sage);}
  .primary-btn{width:100%;background:var(--bordeaux);color:var(--paper);border:none;padding:12px;border-radius:9px;font-weight:700;font-size:14px;cursor:pointer;margin-top:10px;}
  .primary-btn:disabled{opacity:.5;cursor:not-allowed;}
  .ghost-btn{background:transparent;border:1px solid var(--bordeaux);color:var(--bordeaux);padding:10px;border-radius:9px;font-weight:600;font-size:13px;cursor:pointer;width:100%;}
  .ghost-btn.danger{border-color:var(--danger);color:var(--danger);}
  .section-block{margin:14px 0;padding-top:12px;border-top:1px dashed #d8cbb2;}
  .section-block strong{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--slate);display:block;margin-bottom:8px;}
  .chip-row{display:flex;gap:6px;flex-wrap:wrap;}
  .chip{border:1px solid var(--bordeaux);color:var(--bordeaux);background:#fff;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;}
  .chip.active{background:var(--bordeaux);color:#fff;}
  .pay-method{display:flex;align-items:center;gap:8px;border:1px solid #d8cbb2;border-radius:9px;padding:9px 10px;font-size:12.5px;margin-bottom:6px;cursor:pointer;}
  .pay-method input{margin:0;}
  .fake-card-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px;}
  .fake-card-fields input{grid-column:span 2;}
  .demo-note{font-size:10.5px;color:#a17b2e;background:#fbf3df;border-radius:6px;padding:6px 8px;margin-top:6px;}
  .promo-row{display:flex;gap:6px;}
  .promo-row input{flex:1;}
  .promo-row button{background:var(--charcoal);color:#fff;border:none;border-radius:7px;padding:0 12px;font-size:12px;font-weight:600;cursor:pointer;}

  .ticket{background:#fffdf8;border-radius:4px;padding:22px 20px;position:relative;overflow:hidden;box-shadow:0 10px 26px rgba(0,0,0,.12);background-image:repeating-linear-gradient(to bottom, transparent 0 27px, #f0e9d8 27px 28px);}
  .ticket::before,.ticket::after{content:"";position:absolute;left:0;right:0;height:14px;background:radial-gradient(circle at 8px 0, transparent 7px, #fffdf8 7px) 0 0/16px 14px repeat-x;}
  .ticket::before{top:-1px;transform:rotate(180deg);}
  .ticket::after{bottom:-1px;}
  .stepper{display:flex;justify-content:space-between;margin:18px 0 6px;}
  .step{flex:1;text-align:center;font-size:10px;color:#b7ab8f;font-weight:700;position:relative;}
  .step .dot{width:14px;height:14px;border-radius:999px;background:#e4dac2;margin:0 auto 6px;transition:.3s;}
  .step.done .dot{background:var(--sage);}
  .step.current .dot{background:var(--ember);box-shadow:0 0 0 4px rgba(232,130,61,.25);}
  .step.done,.step.current{color:var(--ink);}
  .step-line{position:absolute;top:6px;left:-50%;width:100%;height:2px;background:#e4dac2;z-index:-1;}
  .step.done .step-line{background:var(--sage);}
  .stars{font-size:22px;letter-spacing:3px;cursor:pointer;}
  .star{color:#e4dac2;}
  .star.on{color:var(--gold);}

  @media print{
    body *{visibility:hidden;}
    #print-area, #print-area *{visibility:visible;}
    #print-area{position:absolute;top:0;left:0;width:100%;}
  }

  #kds-view.active{background:var(--charcoal);min-height:100vh;margin-top:-22px;padding-top:22px;max-width:100%;}
  .kds-topbar{display:flex;justify-content:space-between;align-items:center;color:var(--paper);padding:0 20px 10px;flex-wrap:wrap;gap:10px;}
  .kds-topbar h2{font-family:'IBM Plex Mono',monospace;color:var(--ember);font-size:19px;margin:0;}
  .conn-pill{font-size:11px;font-weight:700;padding:5px 12px;border-radius:999px;}
  .conn-on{background:rgba(107,122,94,.2);color:#9CC28A;border:1px solid #6B7A5E;}
  .conn-off{background:rgba(162,59,46,.2);color:#E8938A;border:1px solid var(--danger);}
  .kds-controls{display:flex;gap:8px;flex-wrap:wrap;}
  .kds-controls button{background:#33332c;color:#EDEAE0;border:1px solid #4a4a42;padding:7px 12px;border-radius:7px;font-size:11px;cursor:pointer;}
  .station-tabs{display:flex;gap:6px;padding:0 20px 14px;flex-wrap:wrap;}
  .station-tab{background:#2c2c26;color:#c9c4b4;border:1px solid #4a4a42;padding:6px 12px;border-radius:999px;font-size:11px;cursor:pointer;font-family:'IBM Plex Mono',monospace;}
  .station-tab.active{background:var(--ember);color:var(--charcoal);font-weight:700;}
  .kds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:0 20px 40px;}
  .kticket{background:var(--charcoal-2);border:1px solid #3a3a34;border-radius:6px;padding:16px;font-family:'IBM Plex Mono',monospace;color:#EDEAE0;position:relative;overflow:hidden;}
  .kticket.new{animation:printin .5s ease;}
  @keyframes printin{from{transform:translateY(-14px);opacity:0;}to{transform:translateY(0);opacity:1;}}
  .kticket .kt-head{display:flex;justify-content:space-between;border-bottom:1px dashed #4a4a42;padding-bottom:8px;margin-bottom:8px;}
  .kticket .kt-num{font-size:16px;font-weight:700;color:var(--ember);}
  .kticket .kt-table{font-size:13px;color:#c9c4b4;}
  .kticket .kt-item{font-size:13px;margin-bottom:6px;line-height:1.35;}
  .kticket .kt-item .station-tag{font-size:9px;background:#3a3a34;color:#c9c4b4;padding:1px 6px;border-radius:4px;margin-left:6px;}
  .kticket .kt-item .mods{color:#9b9587;font-size:11.5px;padding-left:10px;}
  .kticket .kt-item-check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;}
  .kticket .kt-item-check input{width:15px;height:15px;accent-color:var(--ember);cursor:pointer;}
  .kticket .kt-item-done .kt-item-check span{color:#8a8471;text-decoration:line-through;}
  .kticket .kt-timer{font-size:12px;color:#9b9587;margin:10px 0;}
  .kticket .kt-timer.late{color:#E8938A;font-weight:700;}
  .kt-status-bar{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
  .kt-status-btn{flex:1;min-width:90px;background:var(--ember);color:var(--charcoal);border:none;padding:9px 6px;border-radius:5px;font-weight:700;font-size:11px;cursor:pointer;font-family:'IBM Plex Mono',monospace;}
  .kt-status-btn.served{background:var(--sage);color:#0f130c;}
  .kt-status-btn.cancel{flex:0 0 auto;min-width:0;background:transparent;color:#9b9587;border:1px solid #4a4a42;padding:9px 10px;}
  .kt-status-btn.cancel:hover{color:var(--danger);border-color:var(--danger);}
  .kt-badge{position:absolute;top:0;right:0;background:var(--ember);color:var(--charcoal);font-size:10px;font-weight:700;padding:3px 10px;border-bottom-left-radius:6px;}
  .kt-urgent-flag{position:absolute;top:0;left:0;background:var(--danger);color:#fff;font-size:9px;font-weight:700;padding:3px 8px;border-bottom-right-radius:6px;}

  .table-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;}
  .tcard{background:#fff;border-radius:12px;padding:16px;border:1px solid #e8ddc7;cursor:pointer;text-align:center;}
  .tcard .tnum{font-size:22px;font-weight:700;font-family:'Fraunces',serif;}
  .tcard .tzone{font-size:11px;color:var(--slate);margin-bottom:8px;}
  .status-pill{font-size:10.5px;font-weight:700;padding:4px 10px;border-radius:999px;display:inline-block;}
  .st-libre{background:#e7ede2;color:var(--sage);}
  .st-cours{background:#fbe7d3;color:var(--ember-dim);}
  .st-addition{background:#f3ded9;color:var(--danger);}

  .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:70;display:none;align-items:center;justify-content:center;padding:16px;}
  .modal-overlay.open{display:flex;}
  .modal{background:#fff;border-radius:12px;max-width:480px;width:100%;max-height:88vh;overflow-y:auto;padding:20px;}

  .admin-tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;}
  .admin-tab{background:#fff;border:1px solid #e8ddc7;color:var(--ink);padding:8px 14px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;}
  .admin-tab.active{background:var(--bordeaux);color:#fff;border-color:var(--bordeaux);}
  .admin-panel{display:none;}
  .admin-panel.active{display:block;}
  table.admin-table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;border:1px solid #e8ddc7;font-size:12.5px;}
  table.admin-table th{background:var(--paper-dark);text-align:left;padding:9px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--slate);}
  table.admin-table td{padding:9px 10px;border-top:1px solid #f0e9d8;}
  .avail-select{font-size:11.5px;padding:4px 6px;}
  .log-type{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:5px;background:#eee;}
  .log-type.order{background:#e0e9d8;color:var(--sage);}
  .log-type.payment{background:#e5d9c9;color:var(--ember-dim);}
  .log-type.security{background:#f3ded9;color:var(--danger);}
  .log-type.system{background:#dbe3ea;color:#3a5878;}

  .stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:24px;}
  .stat-card{background:#fff;border-radius:12px;padding:16px;border:1px solid #e8ddc7;}
  .stat-card .label{font-size:10.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.5px;font-weight:600;}
  .stat-card .value{font-size:23px;font-weight:700;color:var(--bordeaux);font-family:'Fraunces',serif;margin-top:4px;}
  .top-products{background:#fff;border-radius:12px;padding:18px;border:1px solid #e8ddc7;margin-bottom:18px;}
  .tp-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f0e9d8;font-size:13px;}
  .bar-bg{background:#f0e9d8;border-radius:4px;height:6px;margin-top:5px;overflow:hidden;}
  .bar-fill{background:var(--bordeaux);height:100%;}

  .empty{text-align:center;color:#8a8471;padding:50px 20px;font-size:14px;}
  h2.section{font-family:'Fraunces',serif;font-size:20px;margin:0 0 14px;}

  /* toasts */
  #toast-wrap{position:fixed;bottom:20px;left:20px;z-index:90;display:flex;flex-direction:column;gap:8px;max-width:320px;}
  .toast{background:var(--charcoal);color:#fff;padding:11px 14px;border-radius:9px;font-size:12.5px;box-shadow:0 8px 20px rgba(0,0,0,.25);animation:toastin .2s ease;}
  .toast.success{background:var(--sage);}
  .toast.warn{background:var(--ember-dim);}
  .toast.danger{background:var(--danger);}
  @keyframes toastin{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

  /* cookie banner */
  #cookie-banner{position:fixed;bottom:0;left:0;right:0;background:var(--charcoal);color:#EDEAE0;padding:14px 18px;display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;z-index:95;font-size:12.5px;}
  #cookie-banner button{border:none;border-radius:7px;padding:8px 14px;font-weight:700;font-size:12px;cursor:pointer;}
  #cookie-banner .accept{background:var(--ember);color:var(--charcoal);}
  #cookie-banner .reject{background:transparent;color:#EDEAE0;border:1px solid #666;}

  /* loyalty progress bar + wheel of fortune */
  #loyalty-bar{background:#fff;border:1px solid #e8ddc7;border-radius:12px;padding:12px 16px;margin-bottom:16px;}
  #my-tab{background:var(--paper-dark);border:1px solid #e2d5ba;border-radius:12px;padding:12px 16px;margin-bottom:16px;font-size:12.5px;}
  #my-tab .mt-ref{font-family:'IBM Plex Mono',monospace;font-weight:700;background:#fff;border-radius:6px;padding:2px 8px;display:inline-block;}
  .loy-top{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:6px;}
  .loy-track{background:var(--paper-dark);border-radius:999px;height:10px;overflow:hidden;}
  .loy-fill{background:linear-gradient(90deg,var(--ember),var(--bordeaux));height:100%;border-radius:999px;transition:width .4s ease;}
  .spin-cta{margin-top:10px;width:100%;background:var(--ember);color:var(--charcoal);border:none;border-radius:9px;padding:10px;font-weight:700;font-size:13px;cursor:pointer;animation:pulseglow 1.6s infinite;}
  @keyframes pulseglow{0%,100%{box-shadow:0 0 0 0 rgba(232,130,61,.5);}50%{box-shadow:0 0 0 8px rgba(232,130,61,0);}}
  .modal#wheel-modal{background:radial-gradient(ellipse at 50% 0%,#2a1414 0%,#160a0a 70%);color:#f5e6c8;border:1px solid #6b4a1f;box-shadow:0 0 0 4px #1a0d0d,0 20px 50px rgba(0,0,0,.6);}
  .modal#wheel-modal h3{color:#f3cd6b;text-shadow:0 0 12px rgba(243,205,107,.5);}
  .wheel-wrap{display:flex;flex-direction:column;align-items:center;gap:16px;}
  .wheel-pointer{width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-top:24px solid #f3cd6b;margin-bottom:-10px;z-index:3;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6));}
  .wheel-outer{width:260px;height:260px;border-radius:50%;position:relative;border:8px solid #2b1a0d;box-shadow:0 0 0 4px #f3cd6b,0 0 30px rgba(243,205,107,.35),0 10px 30px rgba(0,0,0,.5);}
  .wheel-bulb{position:absolute;width:9px;height:9px;border-radius:50%;background:#fff6d8;box-shadow:0 0 6px 2px rgba(255,235,150,.9);animation:bulbtwinkle 1.2s infinite;}
  @keyframes bulbtwinkle{0%,100%{opacity:1;}50%{opacity:.25;}}
  .wheel-disc{width:100%;height:100%;border-radius:50%;position:relative;transition:transform 4s cubic-bezier(0.17,0.67,0.12,0.99);box-shadow:inset 0 0 0 3px rgba(243,205,107,.6),inset 0 0 20px rgba(0,0,0,.35);}
  .wheel-label{position:absolute;top:50%;left:50%;font-size:10.5px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.7);width:90px;text-align:center;transform-origin:0 0;}
  .wheel-hub{position:absolute;top:50%;left:50%;width:42px;height:42px;background:radial-gradient(circle at 35% 30%,#fff6d8,#f3cd6b 55%,#a9781f 100%);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 3px #2b1a0d,0 3px 8px rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;font-size:18px;}
  .wheel-result{text-align:center;font-family:'Fraunces',serif;font-size:19px;margin-top:6px;color:#f3cd6b;text-shadow:0 0 10px rgba(243,205,107,.6);}
  #wheel-modal .primary-btn, #wheel-modal #spin-btn{background:linear-gradient(180deg,#ff5a4e,#c62828);color:#fff6d8;border:none;box-shadow:0 4px 0 #7a1515,0 6px 14px rgba(0,0,0,.4);font-weight:800;letter-spacing:.3px;text-transform:uppercase;font-size:13px;}
  #wheel-modal #spin-btn:not(:disabled){animation:jackpotpulse 1.4s infinite;}
  #wheel-modal #spin-btn:active{transform:translateY(3px);box-shadow:0 1px 0 #7a1515,0 2px 6px rgba(0,0,0,.4);}
  @keyframes jackpotpulse{0%,100%{box-shadow:0 4px 0 #7a1515,0 6px 14px rgba(0,0,0,.4),0 0 0 0 rgba(255,90,78,.6);}50%{box-shadow:0 4px 0 #7a1515,0 6px 14px rgba(0,0,0,.4),0 0 0 10px rgba(255,90,78,0);}}
  #wheel-modal .ghost-btn{background:transparent;color:#f5e6c8;border:1px solid #6b4a1f;}
  .confetti-piece{position:fixed;top:-10px;width:8px;height:14px;z-index:200;pointer-events:none;animation:confettifall linear forwards;}
  @keyframes confettifall{to{transform:translateY(110vh) rotate(540deg);opacity:.9;}}

  /* generic sub-tabs (reused for Serveur: plan de salle / à servir) */
  .subtabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;}
  .subtab{background:#fff;border:1px solid #e8ddc7;color:var(--ink);padding:8px 14px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;}
  .subtab.active{background:var(--bordeaux);color:#fff;border-color:var(--bordeaux);}
  .subpanel{display:none;}
  .subpanel.active{display:block;}
  .serve-group{background:#fff;border:1px solid #e8ddc7;border-radius:12px;padding:14px 16px;margin-bottom:12px;}
  .serve-group .sg-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
  .serve-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f0e9d8;gap:10px;}
  .serve-item:last-child{border-bottom:none;}
  .serve-status{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:999px;}
  .ss-attente{background:#f0e9d8;color:var(--ember-dim);}
  .ss-pret{background:#fbe7d3;color:var(--ember-dim);}
  .ss-servi{background:#e7ede2;color:var(--sage);}
  .serve-btn{background:var(--charcoal);color:#fff;border:none;border-radius:7px;padding:6px 12px;font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap;}

  form.menu-form{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#fff;border:1px solid #e8ddc7;border-radius:10px;padding:14px;margin-top:14px;}
  form.menu-form .full{grid-column:1/-1;}
  form.menu-form label{font-size:11px;color:var(--slate);display:block;margin-bottom:3px;}
  form.menu-form input, form.menu-form select, form.menu-form textarea{width:100%;}

  /* wrap wide tables in this so they scroll horizontally instead of
     breaking the page layout on narrow screens */
  .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .table-scroll table{min-width:520px;}

  @media (max-width:640px){
    body{-webkit-text-size-adjust:100%;}
    .topbar{padding:10px 12px;gap:8px;}
    .brand h1{font-size:14px;}
    .brand small{font-size:9px;}
    .tabs{gap:2px;padding:3px;}
    .tab-btn{padding:6px 9px;font-size:11.5px;}
    .top-select{font-size:11px;padding:4px 6px;}
    .account-btn{font-size:11px;padding:5px 9px;}
    .view{padding:14px 12px 90px;}
    .client-header h2{font-size:22px;}
    .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
    .pcard{padding:12px;}
    .pcard h3{font-size:14px;}
    .pcard p{font-size:11.5px;min-height:0;}
    .cart-fab{bottom:14px;right:14px;padding:12px 16px;font-size:13px;}
    .drawer{max-width:100%;}
    .modal{max-width:94vw;padding:16px;}
    .wheel-outer{width:200px;height:200px;}
    .wheel-label{width:70px;font-size:9px;}
    .kds-grid{grid-template-columns:1fr;padding:0 12px 30px;}
    .kds-topbar{padding:0 12px 10px;}
    .station-tabs{padding:0 12px 12px;}
    .table-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
    .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
    form.menu-form{grid-template-columns:1fr;}
    .admin-tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;}
    .admin-tab{white-space:nowrap;}
  }

  .legal-footer{text-align:center;font-size:12px;color:var(--slate);padding:22px 12px 96px;}
  .legal-footer a{color:var(--slate);text-decoration:underline;}
