/* public/assets/css/app.css — StockVyapar theme (ported from inventory-saas:
   slate/zinc neutrals + a single emerald accent, left sidebar app shell). */
:root{
  --sv-bg:#f7f8fa;
  --sv-fg:#0f172a;
  --sv-card:#ffffff;
  --sv-primary:#059669;
  --sv-primary-light:#10b981;
  --sv-accent:#ecfdf5;
  --sv-accent-fg:#047857;
  --sv-muted:#475569;
  --sv-border:#e2e8f0;
  --sv-sidebar:#ffffff;
  --sv-sidebar-border:#e9edf2;
  --sv-radius:.625rem;
  --sv-shadow-sm:0 1px 2px -1px rgb(15 23 42 / .06), 0 2px 4px -2px rgb(15 23 42 / .06);
  --sv-shadow-md:0 2px 4px -2px rgb(15 23 42 / .06), 0 6px 14px -4px rgb(15 23 42 / .10);
  --sv-sidebar-w:248px;
  /* Bootstrap variable overrides */
  --bs-primary:#059669;
  --bs-primary-rgb:5,150,105;
  --bs-link-color:#047857;
  --bs-link-hover-color:#065f46;
  --bs-body-color:#0f172a;
  --bs-body-bg:#f7f8fa;
  --bs-border-color:#e2e8f0;
}

body,.sv-body{
  background:var(--sv-bg);
  color:var(--sv-fg);
  font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-tap-highlight-color:transparent;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5{letter-spacing:-.02em;font-weight:600;}

/* The old per-page top navbar is replaced by the sidebar shell. */
.sv-navbar{display:none !important;}

/* ---------- app shell ---------- */
.sv-shell{min-height:100vh;}
.sv-sidebar{
  position:fixed;top:0;left:0;bottom:0;width:var(--sv-sidebar-w);
  background:var(--sv-sidebar);border-right:1px solid var(--sv-sidebar-border);
  display:flex;flex-direction:column;z-index:1040;overflow-y:auto;
  transition:transform .2s ease;
}
.sv-brand{
  display:flex;align-items:center;gap:.6rem;padding:1rem 1.1rem;
  font-weight:700;font-size:1.05rem;color:var(--sv-fg);text-decoration:none;
  border-bottom:1px solid var(--sv-sidebar-border);
}
.sv-brand .sv-mark{
  width:32px;height:32px;border-radius:8px;flex:0 0 32px;
  background:linear-gradient(135deg,var(--sv-primary),var(--sv-primary-light));
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;
}
.sv-nav{padding:.6rem .55rem;flex:1;}
.sv-nav-group{font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:#94a3b8;padding:.85rem .65rem .3rem;}
.sv-nav a{
  display:flex;align-items:center;gap:.65rem;padding:.5rem .65rem;margin:.1rem 0;
  border-radius:8px;color:#334155;text-decoration:none;font-size:.9rem;font-weight:500;
  border-left:3px solid transparent;
}
.sv-nav a i{font-size:1.05rem;width:1.1rem;text-align:center;color:#64748b;}
.sv-nav a:hover{background:#f1f5f9;color:var(--sv-fg);}
.sv-nav a.active{background:var(--sv-accent);color:var(--sv-accent-fg);border-left-color:var(--sv-primary);}
.sv-nav a.active i{color:var(--sv-primary);}

/* topbar */
.sv-main{margin-left:var(--sv-sidebar-w);min-height:100vh;display:flex;flex-direction:column;}
.sv-topbar{
  position:sticky;top:0;z-index:1030;background:rgba(255,255,255,.85);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--sv-border);padding:.6rem 1.2rem;
  display:flex;align-items:center;gap:.75rem;
}
.sv-topbar .sv-org{font-weight:600;}
.sv-topbar .sv-role{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;
  background:var(--sv-accent);color:var(--sv-accent-fg);padding:.15rem .5rem;border-radius:999px;}
.sv-content{padding:1.25rem 1.5rem;flex:1;}
.sv-hamburger{display:none;border:1px solid var(--sv-border);background:#fff;border-radius:8px;
  width:38px;height:38px;font-size:1.1rem;line-height:1;}
.sv-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:1035;}

/* the .container inside content shouldn't re-pad/re-center now */
.sv-content > .container,.sv-content > .container-fluid{max-width:none;padding-left:0;padding-right:0;}

/* ---------- components ---------- */
.card{border:1px solid var(--sv-border);border-radius:var(--sv-radius);box-shadow:var(--sv-shadow-sm);}
.card.shadow-sm{box-shadow:var(--sv-shadow-sm)!important;}
.table{--bs-table-color:var(--sv-fg);}
.table > thead{--bs-table-bg:#f8fafc;}
.table td,.table th{font-variant-numeric:tabular-nums;}
.btn-primary{--bs-btn-bg:var(--sv-primary);--bs-btn-border-color:var(--sv-primary);
  --bs-btn-hover-bg:#047857;--bs-btn-hover-border-color:#047857;
  --bs-btn-active-bg:#065f46;--bs-btn-active-border-color:#065f46;}
.btn-success{--bs-btn-bg:var(--sv-primary);--bs-btn-border-color:var(--sv-primary);
  --bs-btn-hover-bg:#047857;--bs-btn-hover-border-color:#047857;}
.btn-outline-primary{--bs-btn-color:var(--sv-accent-fg);--bs-btn-border-color:var(--sv-primary);
  --bs-btn-hover-bg:var(--sv-primary);--bs-btn-hover-border-color:var(--sv-primary);}
.form-control:focus,.form-select:focus{border-color:var(--sv-primary-light);
  box-shadow:0 0 0 .2rem rgb(16 185 129 / .15);}
a{color:var(--sv-accent-fg);}
.badge.bg-success{background:var(--sv-primary)!important;}

/* ---------- auth screens ---------- */
.sv-auth-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem;}
.sv-auth-card{width:100%;max-width:400px;background:#fff;border:1px solid var(--sv-border);
  border-radius:14px;padding:2rem;box-shadow:var(--sv-shadow-md);}
.sv-logo{width:54px;height:54px;margin:0 auto;border-radius:12px;
  background:linear-gradient(135deg,var(--sv-primary),var(--sv-primary-light));
  color:#fff;font-weight:700;font-size:1.25rem;display:flex;align-items:center;justify-content:center;}

/* ---------- dashboard icon stat cards (inventory-saas style) ---------- */
.sv-statcard{display:flex;gap:.85rem;align-items:flex-start;background:#fff;border:1px solid var(--sv-border);
  border-radius:var(--sv-radius);padding:1rem 1.1rem;box-shadow:var(--sv-shadow-sm);text-decoration:none;color:inherit;height:100%;
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;}
.sv-statcard:hover{transform:translateY(-2px);box-shadow:var(--sv-shadow-md);border-color:color-mix(in srgb,var(--sv-primary) 30%,var(--sv-border));}
.sv-statcard .ic{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:1.2rem;flex:0 0 40px;background:var(--sv-accent);color:var(--sv-accent-fg);}
.sv-statcard .ic.info{background:#eff6ff;color:#1d4ed8;}
.sv-statcard .ic.warn{background:#fffbeb;color:#b45309;}
.sv-statcard .ic.ok{background:#ecfdf5;color:#047857;}
.sv-statcard .lbl{font-size:.78rem;color:var(--sv-muted);}
.sv-statcard .val{font-size:1.4rem;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;}
.sv-statcard .hint{font-size:.72rem;color:#94a3b8;}

/* ---------- dashboard stat cards ---------- */
.sv-stat{background:#fff;border:1px solid var(--sv-border);border-radius:var(--sv-radius);padding:1rem 1.1rem;box-shadow:var(--sv-shadow-sm);}
.sv-stat-num{font-size:1.6rem;font-weight:700;color:var(--sv-fg);line-height:1;font-variant-numeric:tabular-nums;}
.sv-stat-lbl{font-size:.8rem;color:var(--sv-muted);margin-top:.25rem;}

/* ---------- motion (ported from inventory-saas app shell) ----------
   CSS-only, no JS. Per-route enter, staggered grids, tactile cards, and
   global micro-interactions. All disabled under prefers-reduced-motion. */

/* Per-route content enter — replays on every full page load / navigation. */
.page-enter{animation:sv-page-enter .4s cubic-bezier(.22,1,.36,1) both;}

/* Auth/org cards rise in on load (login, register, forgot, reset, org create). */
.sv-auth-card{animation:sv-rise .5s cubic-bezier(.22,1,.36,1) both;}

/* Cascade direct children in (stat grids, card lists). */
.stagger-children > *{animation:sv-rise .5s cubic-bezier(.22,1,.36,1) both;}
.stagger-children > *:nth-child(1){animation-delay:.02s;}
.stagger-children > *:nth-child(2){animation-delay:.06s;}
.stagger-children > *:nth-child(3){animation-delay:.10s;}
.stagger-children > *:nth-child(4){animation-delay:.14s;}
.stagger-children > *:nth-child(5){animation-delay:.18s;}
.stagger-children > *:nth-child(6){animation-delay:.22s;}
.stagger-children > *:nth-child(7){animation-delay:.26s;}
.stagger-children > *:nth-child(8){animation-delay:.30s;}
.stagger-children > *:nth-child(n+9){animation-delay:.34s;}

/* Tactile lift for clickable cards / list rows (opt-in class). */
.card-interactive{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;will-change:transform;}
.card-interactive:hover{transform:translateY(-2px);box-shadow:var(--sv-shadow-md);
  border-color:color-mix(in srgb,var(--sv-primary) 30%,var(--sv-border));}
.card-interactive:active{transform:translateY(0) scale(.99);}

/* Tap feedback for one-hand mobile use. */
.tap-scale{transition:transform .12s ease;}
.tap-scale:active{transform:scale(.97);}

/* Sweeping shimmer for skeleton loaders. */
.shimmer{position:relative;overflow:hidden;}
.shimmer::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgb(15 23 42 / .06),transparent);
  animation:sv-shimmer 1.4s infinite;}

/* Global micro-interactions: smooth buttons, nav, links, inputs, table rows. */
.btn{transition:transform .12s ease,box-shadow .15s ease,background-color .15s ease,border-color .15s ease,color .15s ease;}
.btn:active{transform:translateY(1px);}
.sv-nav a{transition:background-color .15s ease,color .15s ease,border-color .15s ease,padding-left .15s ease;}
.sv-nav a:hover{padding-left:.85rem;}
.card{transition:box-shadow .18s ease,border-color .18s ease;}
.table tbody tr{transition:background-color .12s ease;}
.table tbody tr:hover{background:#f8fafc;}
.form-control,.form-select{transition:border-color .15s ease,box-shadow .15s ease;}
.badge{transition:background-color .15s ease;}

@keyframes sv-page-enter{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
@keyframes sv-rise{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
@keyframes sv-shimmer{100%{transform:translateX(100%);}}

@media (prefers-reduced-motion:reduce){
  .page-enter,.sv-auth-card,.stagger-children > *{opacity:1!important;transform:none!important;animation:none!important;}
  .card-interactive,.btn,.sv-nav a,.card,.table tbody tr,.tap-scale,.form-control,.form-select,.sv-statcard{transition:none!important;}
  .card-interactive:hover,.sv-nav a:hover,.btn:active,.sv-statcard:hover{transform:none!important;}
  .shimmer::after{animation:none!important;}
}

/* ---------- responsive ---------- */
@media (max-width:991.98px){
  .sv-sidebar{transform:translateX(-100%);}
  .sv-shell.sidebar-open .sv-sidebar{transform:translateX(0);}
  .sv-shell.sidebar-open .sv-backdrop{display:block;}
  .sv-main{margin-left:0;}
  .sv-hamburger{display:inline-flex;align-items:center;justify-content:center;}
}
