/* ============================================================
   SmartPOS — Shared light design system + multi-theme tokens
   Used by storefront, admin and POS. Theme set via <body data-theme="...">
   ============================================================ */
:root{
  /* neutrals (light) */
  --bg:#f6f7fb; --surface:#ffffff; --surface-2:#f5f7fd;
  --ink:#1e293b; --ink-soft:#475569; --muted:#94a3b8;
  --line:#eceff7; --line-strong:#dde2ee;
  --shadow-sm:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.10);
  --shadow:0 8px 24px rgba(16,24,40,.10);
  --shadow-lg:0 20px 50px rgba(16,24,40,.16);
  --radius:14px; --radius-sm:10px; --radius-lg:20px;

  /* status */
  --good:#16a34a; --good-bg:#e7f6ed;
  --warn:#d97706; --warn-bg:#fdf0dd;
  --bad:#dc2626;  --bad-bg:#fdeaea;
  --info:#2563eb; --info-bg:#e8f0fe;

  /* brand (default = aurora) */
  --brand:#7c3aed; --brand-2:#ec4899; --brand-ink:#ffffff;
  --brand-soft:#f3eafe;
  --grad:linear-gradient(135deg,#6366f1 0%,#7c3aed 50%,#ec4899 100%);
}

/* ---- Theme variants (storefront multi-theme) ---- */
[data-theme="sunset"]{
  --brand:#ea580c; --brand-2:#f59e0b; --brand-soft:#fff1e6;
  --grad:linear-gradient(135deg,#f43f5e 0%,#ea580c 50%,#f59e0b 100%);
}
[data-theme="forest"]{
  --brand:#059669; --brand-2:#10b981; --brand-soft:#e6f6ef;
  --grad:linear-gradient(135deg,#0d9488 0%,#059669 50%,#84cc16 100%);
}
[data-theme="ocean"]{
  --brand:#0284c7; --brand-2:#06b6d4; --brand-soft:#e4f4fb;
  --grad:linear-gradient(135deg,#4f46e5 0%,#0284c7 50%,#06b6d4 100%);
}
[data-theme="mono"]{
  --brand:#111827; --brand-2:#374151; --brand-soft:#f1f3f7;
  --grad:linear-gradient(135deg,#111827 0%,#374151 100%);
}
/* Levania palettes. Declared here (not only in levania.css) so the admin monogram
   preview, the PWA manifest and any non-Levania surface still resolve --brand/--grad. */
[data-theme="lv-amber"]{
  --brand:#D98612; --brand-2:#F5A623; --brand-soft:#FFF9EC;
  --grad:linear-gradient(135deg,#D98612 0%,#F5A623 50%,#FFBC34 100%);
}
[data-theme="lv-aqua"]{
  --brand:#0891B2; --brand-2:#06B6D4; --brand-soft:#ECFEFF;
  --grad:linear-gradient(135deg,#0891B2 0%,#06B6D4 50%,#38BDF8 100%);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  line-height:1.55;-webkit-font-smoothing:antialiased;
}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.2;letter-spacing:-.3px}
img{max-width:100%;display:block}

/* ---- Buttons ---- */
.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;cursor:pointer;
  border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);
  padding:10px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;
  transition:.15s;white-space:nowrap}
.btn:hover{border-color:var(--brand);text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--grad);border:none;color:#fff;box-shadow:var(--shadow-sm)}
.btn-primary:hover{filter:brightness(1.06);box-shadow:var(--shadow)}
.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-soft)}
.btn-ghost:hover{background:var(--surface-2);border-color:transparent}
.btn-outline{background:transparent;border-color:var(--brand);color:var(--brand)}
.btn-danger{background:var(--bad);border:none;color:#fff}
.btn-sm{padding:7px 12px;font-size:13px}
.btn-lg{padding:14px 24px;font-size:16px}
.btn-block{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ---- Cards ---- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.card-pad{padding:20px}

/* ---- Forms ---- */
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
.input,select,textarea{
  width:100%;padding:11px 13px;font-size:14px;font-family:inherit;color:var(--ink);
  background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);outline:none;transition:.15s}
.input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
textarea{resize:vertical;min-height:90px}
.hint{font-size:12px;color:var(--muted);margin-top:4px}

/* ---- Badges ---- */
.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.b-good{background:var(--good-bg);color:var(--good)}
.b-warn{background:var(--warn-bg);color:var(--warn)}
.b-bad{background:var(--bad-bg);color:var(--bad)}
.b-info{background:var(--info-bg);color:var(--info)}
.b-mut{background:var(--surface-2);color:var(--ink-soft)}
.b-brand{background:var(--brand-soft);color:var(--brand)}

/* ---- Tables ---- */
.table{width:100%;border-collapse:collapse;font-size:14px}
.table th{text-align:left;padding:12px 14px;color:var(--muted);font-weight:600;font-size:12px;
  text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line)}
.table td{padding:13px 14px;border-bottom:1px solid var(--line)}
.table tbody tr:hover{background:var(--surface-2)}
.table .r{text-align:right}

/* ---- Alerts ---- */
.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:14px;border:1px solid transparent}
.alert-good{background:var(--good-bg);color:#14532d;border-color:#bbe9cb}
.alert-bad{background:var(--bad-bg);color:#7f1d1d;border-color:#f5c2c2}
.alert-info{background:var(--info-bg);color:#1e3a8a;border-color:#bcd3fb}

/* ---- Utilities ---- */
.container{max-width:1400px;margin:0 auto;padding:0 20px}
.flex{display:flex} .between{justify-content:space-between} .center{align-items:center}
.gap{gap:12px} .gap-sm{gap:8px} .gap-lg{gap:20px} .wrap{flex-wrap:wrap}
.grid{display:grid;gap:18px}
.muted{color:var(--muted)} .soft{color:var(--ink-soft)}
.text-brand{color:var(--brand)}
.mt{margin-top:16px}.mt-lg{margin-top:28px}.mb{margin-bottom:16px}
.tr{text-align:right}.tc{text-align:center}
.price{font-weight:800;color:var(--ink)}
.strike{text-decoration:line-through;color:var(--muted);font-weight:500;font-size:.85em}
.pill-brand{background:var(--grad);color:#fff;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:700}
.spin{width:18px;height:18px;border:2px solid var(--line-strong);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}

/* ============================================================
   Brand lockup — uploaded logo, or a monogram painted with the
   active theme's --grad. One `--bm` sizes mark + name + tagline.
   ============================================================ */
.brand-lockup{--bm:40px;display:inline-flex;align-items:center;gap:calc(var(--bm)*.26);
  color:var(--ink);text-decoration:none;min-width:0}
.brand-lockup:hover{text-decoration:none}
.brand-mark{width:var(--bm);height:var(--bm);flex:none;border-radius:29%;
  background:var(--grad);color:#fff;display:grid;place-items:center;line-height:1;
  font-size:calc(var(--bm)*.46);font-weight:800;letter-spacing:-.02em;
  box-shadow:0 6px 16px -6px rgba(16,24,40,.45)}
.brand-text{display:flex;flex-direction:column;justify-content:center;line-height:1.05;min-width:0}
.brand-text b{font-size:calc(var(--bm)*.46);font-weight:800;letter-spacing:-.3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-text small{font-size:calc(var(--bm)*.2);font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--muted);margin-top:.35em;white-space:nowrap}
.brand-logo-img{display:block;width:auto;height:var(--bm);max-width:100%;object-fit:contain}

/* ---- Pagination ---- */
.pager{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin:26px 0 6px;font-size:14px}
.pager-info{color:var(--muted);font-size:13px}
.pager-links{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}
.pager .pg{display:grid;place-items:center;min-width:38px;height:38px;padding:0 11px;border-radius:10px;
  border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-soft);
  font-weight:600;transition:.15s}
.pager a.pg:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.pager .pg.current{background:var(--grad);border-color:transparent;color:#fff}
.pager .pg.disabled{opacity:.45;cursor:not-allowed}
.pager .pg.gap{border:none;background:none;min-width:20px;padding:0;color:var(--muted)}
@media(max-width:560px){
  .pager{justify-content:center}
  .pager-links{margin-left:0}
  .pager-info{width:100%;text-align:center}
}

/* ---- Toast ---- */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:#fff;padding:12px 22px;border-radius:12px;font-size:14px;font-weight:500;
  z-index:200;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:.25s}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.good{background:var(--good)} .toast.bad{background:var(--bad)}

/* ============================================================
   Global responsive layer (applies to every page that loads
   theme.css: storefront, admin, POS, auth, invoice)
   ============================================================ */
img,svg,video{max-width:100%}
* {min-width:0}                           /* let flex/grid children shrink instead of overflowing */

/* Wide data tables become horizontally scrollable on small screens
   instead of overflowing the viewport. */
@media (max-width:900px){
  /* storefront layout stacks (kept here because it must hold regardless of store.css) */
  .shop-wrap{grid-template-columns:1fr !important}
  .hero-inner{grid-template-columns:1fr !important}
  .hero-art{display:none}
  .filters{position:static}
  .summary{position:static}
  .footer-grid{grid-template-columns:1fr 1fr !important}
  .site-header-inner{flex-wrap:wrap;gap:12px}
  .site-header .search{order:3;flex-basis:100%;max-width:none}
}
@media (max-width:768px){
  /* Safety net against incidental horizontal scroll. Must be `clip`, not `hidden`:
     `hidden` turns the root into a scroll container and silently kills every
     `position:sticky` descendant (site header, admin top bar). */
  html{overflow-x:clip}
  .container{padding-left:14px;padding-right:14px}
  .table{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  /* multi-column form/section grids stack */
  .form-grid,.set-grid,.checkout-grid,.cart-layout,.pdp{grid-template-columns:1fr !important}
  .modal-card,.pmodal-card{width:100% !important}
  .modal-actions,.pmodal-actions{flex-wrap:wrap}
  /* lux (SériChoice) hero fits small screens */
  .lux-title{font-size:clamp(2.3rem,11vw,3.4rem)}
  .lux-hero .hero-cta{flex-direction:column;align-items:stretch;width:100%}
  .lux-hero .hero-cta .btn{justify-content:center}
}
@media (max-width:520px){
  .btn{padding:9px 14px;font-size:13.5px}
  .btn-lg{padding:12px 18px;font-size:15px}
  h1{font-size:1.7rem}
  .footer-grid{grid-template-columns:1fr !important}
  .band-grid{grid-template-columns:repeat(2,1fr) !important}
  .prod-grid{grid-template-columns:repeat(2,1fr)}
}
