/* ============================================================
   Diseño VISTOSO — gradientes vivos, brillos, color
   Conducido por var(--primary) de cada restaurante
   ============================================================ */
:root{
  /* Marca La Reyna del Bosque: verde bosque + crema durazno
     (--brand lo puede pisar cada restaurante desde su panel) */
  --brand:#12463A;
  --primary:var(--brand); --primary-dk:#0C3128; --accent:#2A7358;
  --p-lite:color-mix(in srgb, var(--primary) 58%, #7FB39C);
  --grad:linear-gradient(135deg, var(--primary), var(--accent));
  --grad2:linear-gradient(135deg, var(--primary), var(--primary-dk));
  --grad-mesh:radial-gradient(at 0% 0%, color-mix(in srgb,var(--primary) 55%,#7FB39C) 0, transparent 50%),
              radial-gradient(at 100% 0%, var(--accent) 0, transparent 50%),
              radial-gradient(at 100% 100%, color-mix(in srgb,var(--accent) 70%,#0C3128) 0, transparent 50%),
              radial-gradient(at 0% 100%, var(--primary) 0, transparent 50%);
  /* Texto + superficies (modo claro, cálido) */
  --ink:#16302A; --ink-soft:#3A5249; --muted:#7C7268; --faint:#B0A396;
  --line:#E8D6C4; --line-2:#F1E3D5; --bg:#F8EBDD; --card:#FFFBF7; --card-2:#F3DFCB;
  --input:#FFFCF8; --input-focus:#ffffff; --surface-blur:rgba(255,251,247,.82);
  /* Sidebar: claro por defecto; se oscurece solo en modo oscuro */
  --sb-bg:linear-gradient(180deg,#FFFCF8,#F5E3D2);
  --sb-bg-m:linear-gradient(90deg,#FFFCF8,#F5E3D2);
  --sb-border:var(--line);
  --sb-text:#5C5349;
  --sb-label:#A89A8C;
  --sb-hover:rgba(18,70,58,.09);
  --sb-brand:var(--ink);
  --r:22px; --r-sm:14px;
  --sh-1:0 2px 6px rgba(22,48,42,.06);
  --sh-2:0 10px 26px rgba(22,48,42,.10);
  --sh-3:0 24px 56px rgba(22,48,42,.16);
  --glow:0 12px 30px color-mix(in srgb,var(--primary) 40%,transparent);
  --ring:0 0 0 4px color-mix(in srgb, var(--primary) 18%, transparent);
  --t:.24s cubic-bezier(.4,0,.2,1);
  --font:'Plus Jakarta Sans','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}

/* ── MODO OSCURO ──────────────────────────────────────────────
   Se activa de dos formas:
   1) Automático: según el modo del sistema (salvo que el usuario elija "claro").
   2) Manual: con el botón 🌗 del panel → <html data-theme="dark">.
   Aclara la marca (para que el texto con gradiente se lea) y
   voltea las superficies a tonos carbón cálidos.               */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --primary:color-mix(in srgb, var(--brand) 55%, #eef3d8);
    --primary-dk:color-mix(in srgb, var(--brand) 78%, #eef3d8);
    --accent:#cbab6e;
    --grad2:linear-gradient(135deg, var(--primary), var(--accent));
    --ink:#eae7d8; --ink-soft:#c9c6b4; --muted:#9c9a84; --faint:#6f6d5b;
    --line:#3a3e2d; --line-2:#2f3323; --bg:#171912; --card:#22261b; --card-2:#2b3021;
    --input:#20241a; --input-focus:#272c1f; --surface-blur:rgba(34,38,27,.85);
    --sh-1:0 2px 6px rgba(0,0,0,.35);
    --sh-2:0 12px 30px rgba(0,0,0,.5);
    --sh-3:0 26px 60px rgba(0,0,0,.6);
    --sb-bg:linear-gradient(180deg,#242a1c,#1b2015);
    --sb-bg-m:linear-gradient(90deg,#242a1c,#1b2015);
    --sb-border:rgba(255,255,255,.07);
    --sb-text:rgba(235,232,210,.68);
    --sb-label:rgba(235,232,210,.42);
    --sb-hover:rgba(255,255,255,.07);
    --sb-brand:#fff;
  }
}
:root[data-theme="dark"]{
  --primary:color-mix(in srgb, var(--brand) 55%, #eef3d8);
  --primary-dk:color-mix(in srgb, var(--brand) 78%, #eef3d8);
  --accent:#cbab6e;
  --grad2:linear-gradient(135deg, var(--primary), var(--accent));
  --ink:#eae7d8; --ink-soft:#c9c6b4; --muted:#9c9a84; --faint:#6f6d5b;
  --line:#3a3e2d; --line-2:#2f3323; --bg:#171912; --card:#22261b; --card-2:#2b3021;
  --input:#20241a; --input-focus:#272c1f; --surface-blur:rgba(34,38,27,.85);
  --sh-1:0 2px 6px rgba(0,0,0,.35);
  --sh-2:0 12px 30px rgba(0,0,0,.5);
  --sh-3:0 26px 60px rgba(0,0,0,.6);
  --sb-bg:linear-gradient(180deg,#242a1c,#1b2015);
  --sb-bg-m:linear-gradient(90deg,#242a1c,#1b2015);
  --sb-border:rgba(255,255,255,.07);
  --sb-text:rgba(235,232,210,.68);
  --sb-label:rgba(235,232,210,.42);
  --sb-hover:rgba(255,255,255,.07);
  --sb-brand:#fff;
}
*{box-sizing:border-box}
::selection{background:color-mix(in srgb,var(--primary) 28%,transparent)}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 45%,transparent);border-radius:20px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:var(--primary);background-clip:content-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:16.5px}
body{margin:0;font-family:var(--font);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased;
  letter-spacing:-.005em;
  background:
    radial-gradient(900px 500px at 110% -5%, color-mix(in srgb,var(--primary) 12%,transparent), transparent),
    radial-gradient(800px 460px at -10% 100%, color-mix(in srgb,var(--primary) 10%,transparent), transparent),
    var(--bg);
  background-attachment:fixed}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes meshmove{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes shine{0%{transform:translateX(-120%)}60%,100%{transform:translateX(220%)}}

/* ── BOTONES ─────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.74rem 1.35rem;
  border:none;border-radius:999px;font-family:var(--font);font-size:.93rem;font-weight:700;cursor:pointer;
  transition:var(--t);text-decoration:none;line-height:1;white-space:nowrap;position:relative;overflow:hidden}
.btn:active{transform:scale(.96)}
.btn-primary{background:var(--grad);color:#fff;box-shadow:var(--glow)}
.btn-primary::after{content:"";position:absolute;top:0;left:0;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);transform:translateX(-120%)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 36px color-mix(in srgb,var(--primary) 55%,transparent)}
.btn-primary:hover::after{animation:shine .9s}
.btn-secondary{background:linear-gradient(135deg,#4a5237,#2E3320);color:#fff}.btn-secondary:hover{transform:translateY(-2px);filter:brightness(1.08)}
.btn-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;box-shadow:0 10px 24px rgba(16,185,129,.35)}
.btn-danger{background:linear-gradient(135deg,#f43f5e,#e11d48);color:#fff;box-shadow:0 10px 24px rgba(244,63,94,.32)}
.btn-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}
.btn-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}
.btn-success:hover,.btn-danger:hover,.btn-warning:hover,.btn-info:hover{transform:translateY(-2px);filter:brightness(1.05)}
.btn-light{background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:var(--sh-1)}
.btn-light:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--primary) 35%,var(--line))}
.btn-sm{padding:.46rem .9rem;font-size:.8rem}.btn-lg{padding:1.05rem 1.8rem;font-size:1rem}.btn-block{width:100%}

/* ── CARDS ───────────────────────────────────────────────── */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);
  overflow:hidden;margin-bottom:1.3rem;transition:var(--t);animation:fadeUp .5s both}
.card:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}
.card-header{padding:1.15rem 1.5rem;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:1rem}
/* Títulos de tarjeta estilo panel pro: pequeños, mayúsculas, en color de marca */
.card-header h2,.card-header h3{margin:0;font-size:.84rem;font-weight:800;letter-spacing:.09em;
  text-transform:uppercase;color:var(--primary)}
.card-header h2 .ico,.card-header h3 .ico{width:16px;height:16px}
.card-body{padding:1.5rem}

/* ── FORMULARIOS ─────────────────────────────────────────── */
.form-group{margin-bottom:1.15rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
label{display:block;font-size:.85rem;font-weight:700;color:var(--ink-soft);margin-bottom:.45rem}
.form-control{width:100%;padding:.85rem 1.05rem;border:1.5px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.97rem;color:var(--ink);background:var(--input);transition:var(--t)}
.form-control::placeholder{color:var(--faint)}
.form-control:hover{border-color:color-mix(in srgb,var(--primary) 25%,var(--line))}
.form-control:focus{outline:none;border-color:var(--primary);background:var(--input-focus);box-shadow:var(--ring)}
textarea.form-control{min-height:100px;resize:vertical}
select.form-control{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%236c7886' d='M6 8 0 0h12z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 1.05rem center;padding-right:2.6rem}

/* ── BADGES / ALERTS ─────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;padding:.34rem .76rem;border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.02em}
.badge-success{background:color-mix(in srgb,#10b981 16%,var(--card));color:#059669}.badge-danger{background:color-mix(in srgb,#e11d48 14%,var(--card));color:#e11d48}
.badge-warning{background:color-mix(in srgb,#f59e0b 18%,var(--card));color:#b45309}.badge-info{background:color-mix(in srgb,#3b82f6 15%,var(--card));color:#3b82f6}
.badge-secondary{background:var(--card-2);color:var(--ink-soft)}
.alert{padding:1rem 1.2rem;border-radius:var(--r-sm);margin-bottom:1rem;font-size:.9rem;font-weight:600;
  border:1px solid;display:flex;gap:.6rem;align-items:center;animation:pop .3s both}
.alert-success{background:#ecfdf5;border-color:#a7f3d0;color:#047857}
.alert-danger{background:#fff1f2;border-color:#fecdd3;color:#be123c}
.alert-warning{background:#fffbeb;border-color:#fde68a;color:#b45309}
.alert-info{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}

/* ── TABLAS ──────────────────────────────────────────────── */
.table-wrap{overflow-x:auto;border-radius:var(--r-sm)}
table{width:100%;border-collapse:collapse;font-size:.95rem}
th{text-align:left;padding:.92rem 1.05rem;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted);background:var(--card-2);border-bottom:2px solid var(--line);font-weight:800}
td{padding:.98rem 1.05rem;border-bottom:1px solid var(--line-2)}
tbody tr{transition:var(--t)}
tbody tr:hover{background:color-mix(in srgb,var(--primary) 7%,var(--card))}
tbody tr:last-child td{border-bottom:none}

/* ── NAVBAR / LAYOUT ─────────────────────────────────────── */
.navbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1.6rem;
  background:var(--surface-blur);backdrop-filter:saturate(170%) blur(16px);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.navbar::before{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--grad);opacity:.85}
.navbar-brand{font-weight:850;font-size:1.2rem;background:var(--grad2);-webkit-background-clip:text;background-clip:text;color:transparent;
  display:inline-flex;align-items:center;gap:.45rem}
.nav-brand-mobile{display:none} /* la marca vive en el sidebar; en móvil reaparece aquí */
.nav-greet{color:var(--muted);font-size:.92rem}
.nav-greet strong{color:var(--ink)}
.navbar-nav{display:flex;align-items:center;gap:1rem;list-style:none;margin:0;padding:0;margin-left:auto}
.layout{display:flex;min-height:100vh}
/* Sidebar estilo "admin pro": claro con el tema claro, oscuro con el modo oscuro */
.sidebar{width:262px;flex-shrink:0;background:var(--sb-bg);
  border-right:1px solid var(--sb-border);
  padding:1rem .8rem 1.4rem;position:sticky;top:0;height:100vh;overflow-y:auto}
.sidebar::-webkit-scrollbar{width:8px}
.sidebar::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--sb-text) 30%,transparent);border-radius:8px}
.sidebar-brand{display:flex;align-items:center;gap:.65rem;color:var(--sb-brand);font-weight:800;font-size:1.14rem;
  letter-spacing:-.01em;padding:.55rem .95rem .9rem;border-bottom:1px solid var(--sb-border);margin-bottom:.4rem}
.sidebar-brand-ico{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:11px;
  background:var(--grad);color:#fff;box-shadow:var(--glow);flex-shrink:0}
.sidebar-label{font-size:.68rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--sb-label);padding:1.05rem .95rem .45rem}
.sidebar-item{display:flex;align-items:center;gap:.78rem;padding:.78rem 1rem;border-radius:var(--r-sm);
  color:var(--sb-text);font-weight:600;font-size:.98rem;margin-bottom:.22rem;transition:var(--t)}
.sidebar-item:hover{background:var(--sb-hover);color:var(--primary);transform:translateX(3px)}
.sidebar-item.active{background:var(--grad);color:#fff;box-shadow:var(--glow)}
.sidebar-item.active .sidebar-ico{color:#fff}
.main-content{flex:1;padding:1.9rem;min-width:0;animation:fadeUp .5s both}
.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.6rem;flex-wrap:wrap}
.page-header h1{margin:0;font-size:1.85rem;font-weight:800;
  background:var(--grad2);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ── STAT CARDS (gradiente lleno, vistoso) ───────────────── */
.stats-grid,.kitchen-grid{display:grid;gap:1.2rem}
.stats-grid{grid-template-columns:repeat(auto-fit,minmax(205px,1fr));margin-bottom:1.7rem}
.stat-card{position:relative;overflow:hidden;border-radius:var(--r);padding:1.5rem 1.4rem;color:#fff;
  background:var(--grad);box-shadow:var(--glow);transition:var(--t);animation:fadeUp .5s both}
/* Alternado gradiente/oscuro como en los paneles pro */
.stats-grid .stat-card:nth-child(even){background:linear-gradient(135deg,#454d33,#262b1c);
  box-shadow:0 12px 30px rgba(20,24,14,.4)}
/* Variante con ícono a la izquierda (cuando la tarjeta trae .stat-ico) */
.stat-card:has(.stat-ico){display:flex;align-items:center;gap:1.05rem}
.stat-ico{position:relative;z-index:1;width:54px;height:54px;border-radius:14px;flex-shrink:0;
  background:rgba(255,255,255,.2);display:grid;place-items:center;color:#fff;backdrop-filter:blur(4px)}
.stat-ico .ico{width:26px;height:26px}
.stat-card:hover{transform:translateY(-5px) scale(1.01);box-shadow:0 26px 56px color-mix(in srgb,var(--primary) 50%,transparent)}
.stat-card::before{content:"";position:absolute;top:-40px;right:-30px;width:140px;height:140px;
  background:rgba(255,255,255,.18);border-radius:50%}
.stat-card::after{content:"";position:absolute;bottom:-50px;left:-30px;width:120px;height:120px;
  background:rgba(255,255,255,.10);border-radius:50%}
.stat-card .value{position:relative;font-size:2.05rem;font-weight:850;line-height:1.1;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.12)}
.stat-card .label{position:relative;color:rgba(255,255,255,.92);font-size:.8rem;font-weight:700;margin-top:.35rem;text-transform:uppercase;letter-spacing:.04em}

/* ── LOGIN (fondo mesh animado) ──────────────────────────── */
.login-wrapper{min-height:100vh;display:grid;place-items:center;padding:1.5rem;position:relative;overflow:hidden;
  background:var(--grad-mesh),#0b0e13;background-size:200% 200%;animation:meshmove 14s ease infinite}
.login-card{width:100%;max-width:430px;background:var(--card);border-radius:30px;padding:2.7rem;
  box-shadow:0 36px 80px rgba(0,0,0,.45);animation:pop .5s both;backdrop-filter:blur(6px)}
.login-logo{text-align:center;margin-bottom:1.7rem}
.login-mark{width:66px;height:66px;margin:0 auto .8rem;display:grid;place-items:center;font-size:1.9rem;
  border-radius:20px;background:var(--grad);box-shadow:var(--glow);animation:floaty 4.5s ease-in-out infinite}
.login-logo h1{margin:0 0 .25rem;font-size:1.75rem;font-weight:800;
  background:var(--grad2);-webkit-background-clip:text;background-clip:text;color:transparent}
.login-logo p{margin:0;color:var(--muted);font-size:.9rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.12em}
.login-tabs{display:flex;background:var(--card-2);border-radius:999px;padding:.32rem;margin-bottom:1.6rem;gap:.25rem}
.login-tab{flex:1;border:none;background:none;padding:.64rem;border-radius:999px;cursor:pointer;
  font-family:var(--font);font-weight:700;font-size:.85rem;color:var(--muted);transition:var(--t)}
.login-tab.active{background:var(--grad);color:#fff;box-shadow:var(--glow)}

/* ── MENÚ CLIENTE ────────────────────────────────────────── */
.menu-hero{position:relative;padding:2.8rem 1.5rem;text-align:center;color:#fff;background:var(--grad2);overflow:hidden}
.menu-hero::before{content:"";position:absolute;inset:0;background:var(--grad-mesh);background-size:200% 200%;
  opacity:.5;animation:meshmove 12s ease infinite}
.menu-hero::after{content:"";position:absolute;top:0;left:0;width:30%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);animation:shine 5s ease-in-out infinite}
.menu-hero>*{position:relative;z-index:1}
.menu-hero h1{margin:.2rem 0;font-size:2.1rem;font-weight:850;text-shadow:0 2px 16px rgba(0,0,0,.18)}
.menu-hero p{margin:0;opacity:.95;font-size:.95rem}
.menu-logo{width:90px;height:90px;border-radius:50%;object-fit:cover;margin:0 auto .8rem;
  border:3px solid rgba(255,255,255,.92);box-shadow:0 14px 38px rgba(0,0,0,.3);animation:floaty 4s ease-in-out infinite}
.menu-tabs{position:sticky;top:0;z-index:20;display:flex;gap:.55rem;overflow-x:auto;padding:.95rem 1rem;
  background:var(--surface-blur);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);scrollbar-width:none}
.menu-tabs::-webkit-scrollbar{display:none}
.menu-tab{flex:none;border:1.5px solid var(--line);background:var(--card);padding:.55rem 1.2rem;border-radius:999px;cursor:pointer;
  font-family:var(--font);font-weight:700;font-size:.85rem;color:var(--muted);transition:var(--t)}
.menu-tab:hover{border-color:color-mix(in srgb,var(--primary) 50%,var(--line));color:var(--primary);transform:translateY(-1px)}
.menu-tab.active{background:var(--grad);color:#fff;border-color:transparent;box-shadow:var(--glow)}
.menu-section{padding:1.6rem 1rem;max-width:1160px;margin:0 auto}
.menu-section h2{font-size:1.4rem;font-weight:850;margin:0 0 1.1rem;display:flex;align-items:center;gap:.6rem;
  background:var(--grad2);-webkit-background-clip:text;background-clip:text;color:transparent}
.menu-section h2::before{content:"";width:6px;height:1.2em;border-radius:5px;background:var(--grad)}
/* (tarjetas de producto unificadas en .pcard — ver bloque PRODUCT CARD) */

.cart-float{position:fixed;left:50%;transform:translateX(-50%);bottom:1.2rem;z-index:60;display:inline-flex;
  align-items:center;gap:.65rem;padding:1rem 1.7rem;border-radius:999px;background:var(--grad);color:#fff;font-weight:800;
  box-shadow:0 18px 42px color-mix(in srgb,var(--primary) 55%,transparent);animation:pop .3s both;transition:var(--t)}
.cart-float:hover{transform:translateX(-50%) translateY(-4px)}
.cart-badge{background:rgba(255,255,255,.3);min-width:26px;height:26px;border-radius:999px;display:inline-grid;place-items:center;font-size:.78rem;padding:0 .4rem}

.kitchen-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.kitchen-card{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--primary);border-radius:var(--r);
  padding:1.3rem;box-shadow:var(--sh-1);transition:var(--t);animation:fadeUp .5s both}
.kitchen-card:hover{box-shadow:var(--sh-2);transform:translateY(-3px)}

/* Utilidades */
.d-flex{display:flex}.align-center{align-items:center}.justify-between{justify-content:space-between}
.gap-1{gap:.5rem}.gap-2{gap:1rem}
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}
.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}
.text-center{text-align:center}.text-muted{color:var(--muted)}
@media (max-width:560px){.hide-mobile{display:none}}

/* ── ÍCONOS (SVG de línea) ────────────────────────────────── */
.ico{display:block;flex-shrink:0;vertical-align:middle}
.sidebar-ico{display:inline-flex;align-items:center;justify-content:center;opacity:.9}
.sidebar-item.active .sidebar-ico{opacity:1}
.brand-ico{display:inline-flex;align-items:center;color:var(--primary)}
.card-header h3 .ico,.page-header h1 .ico{vertical-align:-3px;margin-right:.15rem}

/* ── PULIDO: tipografía, foco, transiciones ───────────────── */
h1,h2,h3{letter-spacing:-.02em}
.page-header h1{line-height:1.15}
.card-header h3{display:flex;align-items:center;gap:.55rem}
a,button{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid color-mix(in srgb,var(--primary) 60%,transparent);outline-offset:2px}
.badge{gap:.3rem}

/* ── ESTADO VACÍO ─────────────────────────────────────────── */
.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--muted)}
.empty-state .ei{width:64px;height:64px;margin:0 auto 1rem;display:grid;place-items:center;border-radius:50%;
  background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary)}
.empty-state h3{margin:.2rem 0;color:var(--ink)}

/* ── PANEL TÁCTIL DEL MESERO (mesas, detalle, POS) ─────────── */
/* Objetivo táctil mínimo 44–48px en todo */
.tbl-toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1.1rem}
.tbl-search{flex:1;min-width:180px}
.tbl-search .form-control{min-height:50px;font-size:1.05rem;border-radius:14px}
.mode-switch{display:flex;background:var(--card-2);border:1px solid var(--line);border-radius:999px;padding:.3rem;gap:.25rem}
.mode-switch a{padding:.65rem 1.25rem;border-radius:999px;font-weight:800;font-size:.95rem;color:var(--muted);
  display:inline-flex;align-items:center;gap:.45rem;min-height:46px}
.mode-switch a.active{background:var(--grad);color:#fff;box-shadow:var(--glow)}

.tables-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:.9rem}
.table-tile{position:relative;display:flex;flex-direction:column;gap:.3rem;padding:1.05rem 1rem;
  border-radius:18px;border:2px solid var(--line);background:var(--card);min-height:128px;
  transition:var(--t);cursor:pointer;-webkit-tap-highlight-color:transparent}
.table-tile:active{transform:scale(.97)}
.table-tile .tt-num{font-weight:850;font-size:1.25rem;display:flex;align-items:center;gap:.5rem}
.table-tile .tt-meta{font-size:.85rem;color:var(--muted);display:flex;align-items:center;gap:.35rem}
.table-tile .tt-total{margin-top:auto;font-weight:850;font-size:1.15rem;color:var(--primary)}
.table-tile.free{border-style:dashed}
.table-tile.free .tt-state{color:#0a8754}
.table-tile.busy{border-color:color-mix(in srgb,var(--primary) 55%,var(--line));
  background:color-mix(in srgb,var(--primary) 7%,var(--card));box-shadow:var(--sh-1)}
.table-tile .tt-state{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.table-tile.busy .tt-state{color:var(--primary)}
.table-tile .tt-time{position:absolute;top:.8rem;right:.8rem;font-size:.74rem;font-weight:800;
  background:var(--card-2);padding:.25rem .6rem;border-radius:999px;color:var(--ink-soft)}
.table-tile.late .tt-time{background:#fde68a;color:#92400e}

/* Detalle de mesa: líneas de platillo con stepper táctil */
.oi-line{display:flex;align-items:center;gap:.8rem;padding:.85rem 0;border-bottom:1px dashed var(--line)}
.oi-line:last-child{border-bottom:none}
.oi-info{flex:1;min-width:0}
.oi-name{font-weight:750;font-size:1.02rem}
.oi-mods{font-size:.84rem;color:var(--primary);font-weight:600}
.oi-notes{font-size:.84rem;color:#b45309;font-weight:600}
.oi-price{font-weight:800;white-space:nowrap}
.stepper{display:flex;align-items:center;gap:.15rem;background:var(--card-2);border-radius:999px;padding:.2rem}
.stepper button{width:46px;height:46px;border-radius:50%;border:none;background:var(--card);color:var(--ink);
  font-size:1.35rem;font-weight:800;cursor:pointer;box-shadow:var(--sh-1);display:grid;place-items:center}
.stepper button:active{transform:scale(.92)}
.stepper .stq{min-width:2.2rem;text-align:center;font-weight:850;font-size:1.1rem}
.oi-locked{opacity:.75}
.oi-locked .stepper{display:none}

/* Barra de acciones fija inferior (pulgar) */
.action-bar{position:sticky;bottom:0;display:flex;gap:.7rem;padding:1rem 0 .4rem;
  background:linear-gradient(transparent,var(--bg) 30%);z-index:30}
.action-bar .btn{flex:1;min-height:58px;font-size:1.05rem;border-radius:16px}

/* Modal de productos (mesero/POS) */
.prod-modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:600;display:none;align-items:flex-end;justify-content:center}
.prod-modal.open{display:flex}
.prod-sheet{background:var(--card);color:var(--ink);border-radius:20px 20px 0 0;width:100%;max-width:860px;
  max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.prod-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;border-bottom:1px solid var(--line)}
.prod-cats{display:flex;gap:.5rem;overflow-x:auto;padding:.7rem 1.2rem;border-bottom:1px solid var(--line);scrollbar-width:none}
.prod-cats::-webkit-scrollbar{display:none}
.prod-cats button{flex:none;border:1.5px solid var(--line);background:var(--card);padding:.6rem 1.15rem;border-radius:999px;
  font-family:var(--font);font-weight:700;font-size:.92rem;color:var(--muted);min-height:46px;cursor:pointer}
.prod-cats button.active{background:var(--grad);color:#fff;border-color:transparent}
/* Contenedor con scroll de los modales de producto (la rejilla la pone .pcard-grid) */
.prod-grid{display:block;padding:1rem 1.2rem;overflow-y:auto}


/* Indicador de sincronización */
.sync-dot{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted);font-weight:700}
.sync-dot::before{content:"";width:9px;height:9px;border-radius:50%;background:#10b981;
  box-shadow:0 0 0 0 rgba(16,185,129,.5);animation:syncpulse 2s infinite}
@keyframes syncpulse{0%{box-shadow:0 0 0 0 rgba(16,185,129,.45)}70%{box-shadow:0 0 0 8px transparent}100%{box-shadow:0 0 0 0 transparent}}

@media (max-width:640px){
  .tables-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem}
  .action-bar .btn{min-height:54px;font-size:1rem}
}

/* ── SKELETONS (carga) ────────────────────────────────────── */
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
.skeleton{border-radius:8px;background:linear-gradient(90deg,var(--card-2) 25%,var(--line-2) 37%,var(--card-2) 63%);
  background-size:800px 100%;animation:shimmer 1.4s infinite linear;min-height:14px}
.skeleton.sk-line{height:14px;margin:.5rem 0}
.skeleton.sk-card{height:120px;border-radius:var(--r-sm)}

/* ── RESPONSIVE ──────────────────────────────────────────── */
@media (max-width:900px){
  .form-row{grid-template-columns:1fr}
  .layout{flex-direction:column}
  /* Barra de navegación lateral → cinta horizontal con scroll (sigue el tema) */
  .sidebar{width:100%;height:auto;position:sticky;top:0;z-index:40;display:flex;gap:.4rem;overflow-x:auto;
    padding:.6rem .8rem;border-right:none;border-bottom:1px solid var(--sb-border);scrollbar-width:none;
    background:var(--sb-bg-m);
    -webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
  .sidebar::-webkit-scrollbar{display:none}
  .sidebar-brand,.sidebar-label{display:none} /* la marca vuelve al navbar en móvil */
  .nav-brand-mobile{display:inline-flex}
  .nav-greet{display:none}
  .sidebar-item{flex:none;margin:0;white-space:nowrap;padding:.62rem 1rem;scroll-snap-align:start;font-size:.88rem}
  .sidebar-item:hover{transform:none}.sidebar-item.active{box-shadow:none}
}

/* ── MÓVIL: tablas se vuelven tarjetas (nada de scroll horizontal) ── */
@media (max-width:640px){
  .main-content{padding:1rem .9rem}.navbar{padding:.75rem 1rem}
  .navbar-brand{font-size:1.05rem}
  .menu-hero{padding:2.1rem 1.2rem}.menu-hero h1{font-size:1.7rem}
  .page-header{margin-bottom:1.1rem}
  .page-header h1{font-size:1.35rem}.card-body{padding:1.1rem}.login-card{padding:1.8rem}
  .stat-card{padding:1.25rem 1.2rem}.stat-card .value{font-size:1.7rem}
  .stats-grid{grid-template-columns:1fr 1fr;gap:.8rem}
  .btn{padding:.7rem 1.15rem}.btn-sm{padding:.5rem 1rem}
  .card{border-radius:18px}

  /* Cada fila de tabla → una tarjeta apilada, con la etiqueta de columna al lado */
  .table-wrap{overflow:visible}
  table, table thead, table tbody, table tr, table td{display:block;width:100%}
  table thead{position:absolute;left:-9999px}           /* ocultamos encabezados */
  table tr{margin-bottom:.9rem;border:1px solid var(--line);border-radius:16px;
    background:var(--card);box-shadow:var(--sh-1);overflow:hidden}
  table td{display:flex;justify-content:space-between;align-items:center;gap:1rem;text-align:right;
    padding:.7rem 1rem;border:none;border-bottom:1px solid var(--line-2)}
  table td:last-child{border-bottom:none}
  table td::before{content:attr(data-label);font-weight:800;font-size:.72rem;text-transform:uppercase;
    letter-spacing:.04em;color:var(--muted);text-align:left;flex:0 0 40%}
  table td:only-child::before{content:none}
  /* Celdas de acciones: botones a lo ancho */
  table td[data-label="Acciones"],table td[data-label="Tickets"],table td[data-label=""]{justify-content:flex-end;flex-wrap:wrap}

  .kitchen-grid{grid-template-columns:1fr}
}
@media (max-width:380px){
  .stats-grid{grid-template-columns:1fr}
}

/* ── FORM CONTROLS DE MARCA (checkbox, radio, switch) ─────── */
input[type="checkbox"],input[type="radio"]{accent-color:var(--primary);width:20px;height:20px;cursor:pointer}
input[type="color"]{cursor:pointer;border-radius:10px}
.switch{position:relative;display:inline-block;width:52px;height:30px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.switch .sl{position:absolute;inset:0;background:var(--line);border-radius:999px;transition:var(--t);cursor:pointer}
.switch .sl::before{content:"";position:absolute;left:4px;top:4px;width:22px;height:22px;border-radius:50%;
  background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:var(--t)}
.switch input:checked + .sl{background:var(--grad)}
.switch input:checked + .sl::before{transform:translateX(22px)}

/* ── ESTADOS DESHABILITADOS ───────────────────────────────── */
.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none !important;box-shadow:none !important;filter:grayscale(.35)}
.form-control:disabled{opacity:.55;cursor:not-allowed;background:var(--card-2)}

/* ── MODAL (utilidad unificada) ───────────────────────────── */
.modal-backdrop{position:fixed;inset:0;background:rgba(10,12,6,.55);backdrop-filter:blur(3px);
  z-index:500;display:none;align-items:center;justify-content:center;padding:1rem}
.modal-backdrop.open{display:flex}
.modal-card{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:20px;
  box-shadow:var(--sh-3);width:100%;max-width:520px;max-height:92vh;overflow-y:auto;padding:1.8rem;animation:pop .3s both}

/* ── TABLAS: encabezado pegajoso en listas largas ─────────── */
.table-wrap{max-height:72vh}
.table-wrap thead th{position:sticky;top:0;z-index:2}

/* ── MICROINTERACCIONES ───────────────────────────────────── */
.card,.btn,.badge,.sidebar-item,.table-tile,.pcard{will-change:transform}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
}

/* ── PRODUCT CARD (componente ÚNICO: cliente, llevar, mesero, POS) ── */
.pcard-grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(172px,1fr))}
@media (min-width:1400px){.pcard-grid{grid-template-columns:repeat(auto-fill,minmax(196px,1fr))}}
@media (max-width:560px){.pcard-grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:.65rem}}

.pcard{position:relative;display:flex;flex-direction:column;padding:0;text-align:left;cursor:pointer;
  background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;
  box-shadow:var(--sh-1);transition:var(--t);font-family:var(--font);color:var(--ink);
  -webkit-tap-highlight-color:transparent}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--sh-2);
  border-color:color-mix(in srgb,var(--primary) 40%,var(--line))}
.pcard:active{transform:scale(.97)}
.pcard:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 60%,transparent);outline-offset:2px}
.pcard.is-out{opacity:.55;cursor:not-allowed;filter:grayscale(.5)}
.pcard.is-out:hover{transform:none;box-shadow:var(--sh-1)}

.pcard-media{position:relative;display:block;width:100%;aspect-ratio:4/3;background:var(--card-2);overflow:hidden}
.pcard-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.pcard:hover .pcard-media img{transform:scale(1.07)}
.pcard-ph{position:absolute;inset:0;display:grid;place-items:center;font-size:2.5rem;
  background:linear-gradient(140deg,var(--card-2),color-mix(in srgb,var(--primary) 12%,var(--card-2)));
  color:color-mix(in srgb,var(--primary) 45%,var(--faint))}

.pcard-badges{position:absolute;top:.55rem;left:.55rem;display:flex;gap:.3rem;flex-wrap:wrap;max-width:85%}
.pbadge{font-size:.66rem;font-weight:800;padding:.26rem .6rem;border-radius:999px;color:#fff;
  letter-spacing:.03em;box-shadow:0 3px 10px rgba(0,0,0,.28);white-space:nowrap}
.pbadge-new{background:linear-gradient(135deg,#3b82f6,#2563eb)}
.pbadge-top{background:linear-gradient(135deg,#f59e0b,#d97706)}
.pbadge-low{background:linear-gradient(135deg,#f43f5e,#be123c)}
.pbadge-out{background:#4b5563}
.pbadge-promo{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}

.pcard-qty{position:absolute;top:.55rem;right:.55rem;min-width:30px;height:30px;padding:0 .45rem;
  display:grid;place-items:center;border-radius:999px;background:var(--grad);color:#fff;
  font-weight:850;font-size:.85rem;box-shadow:var(--glow);animation:pop .25s both}

.pcard-body{display:flex;flex-direction:column;gap:.18rem;padding:.75rem .85rem .85rem;flex:1}
.pcard-name{font-weight:750;font-size:.98rem;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard-desc{color:var(--muted);font-size:.8rem;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto;padding-top:.45rem}
.pcard-price{font-weight:850;font-size:1.12rem;
  background:var(--grad2);-webkit-background-clip:text;background-clip:text;color:transparent}
.pcard-add{width:44px;height:44px;border-radius:999px;display:grid;place-items:center;flex-shrink:0;
  background:var(--grad);color:#fff;font-size:1.35rem;font-weight:800;line-height:1;
  box-shadow:var(--glow);transition:var(--t)}
.pcard:hover .pcard-add{transform:scale(1.1) rotate(90deg)}
.pcard.is-out .pcard-add{background:var(--card-2);color:var(--muted);box-shadow:none}
@media (max-width:560px){.pcard-add{width:40px;height:40px}.pcard-name{font-size:.92rem}}
