/* ─── Reset & Base ─── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --bg:#f0f4f8;--surface:#ffffff;--text:#1a2332;--text-secondary:#64748b;
  --primary:#2563eb;--primary-light:#dbeafe;--primary-dark:#1e40af;
  --accent:#0891b2;--accent-light:#cffafe;
  --danger:#dc2626;--danger-light:#fee2e2;
  --success:#059669;--success-light:#d1fae5;
  --warning:#d97706;--warning-light:#fef3c7;
  --expired:#4b5563;--expired-light:#e5e7eb;
  --border:#e2e8f0;--shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.06);
  --shadow-md:0 4px 12px rgba(0,0,0,.1);--shadow-lg:0 10px 30px rgba(0,0,0,.15);
  --radius:14px;--radius-sm:10px;--radius-xs:8px;
  --font-display:'Fredoka',sans-serif;--font-body:'DM Sans',sans-serif;
}

[data-theme="dark"]{
  --bg:#0f172a;--surface:#1e293b;--text:#e2e8f0;--text-secondary:#94a3b8;
  --border:#334155;--shadow:0 1px 3px rgba(0,0,0,.3);
  --shadow-md:0 4px 12px rgba(0,0,0,.4);--shadow-lg:0 10px 30px rgba(0,0,0,.5);
  --primary-light:#1e3a5f;--accent-light:#164e63;
  --danger-light:#450a0a;--success-light:#064e3b;--warning-light:#451a03;--expired-light:#1f2937;
}

html{font-size:16px;-webkit-tap-highlight-color:transparent}
body{font-family:var(--font-body);background:var(--bg);color:var(--text);min-height:100dvh;transition:background .3s,color .3s}
input,select,textarea,button{font-family:inherit;font-size:inherit}

/* ─── Animations ─── */
.fade-enter{opacity:0;transform:translateY(8px)}
.fade-enter-active{opacity:1;transform:translateY(0);transition:all .25s ease}
.card-exit{animation:cardOut .3s ease forwards}

@keyframes cardOut{to{opacity:0;transform:scale(.95) translateY(-10px)}}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes popIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(37,99,235,.4)}50%{box-shadow:0 0 0 8px rgba(37,99,235,0)}}

.modal-backdrop{animation:fadeIn .2s ease}
.modal-content{animation:slideUp .3s cubic-bezier(.16,1,.3,1)}

@keyframes slideInRight{from{transform:translateX(100%)}to{transform:translateX(0)}}
@keyframes slideOutRight{from{transform:translateX(0)}to{transform:translateX(100%)}}
.page-view{animation:slideInRight .3s cubic-bezier(.16,1,.3,1) forwards}
.page-view-exit{animation:slideOutRight .25s ease forwards}
.toast-anim{animation:popIn .25s ease}

/* ─── Components ─── */
.chip-active{background:var(--primary)!important;color:#fff!important;box-shadow:0 2px 8px rgba(37,99,235,.3)}

/* ─── Scrollbar ─── */
::-webkit-scrollbar{width:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}

/* ─── Inputs ─── */
input[type="date"]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6}

/* ─── Patterns ─── */
.frost-pattern{background-image:radial-gradient(circle at 20% 50%,rgba(255,255,255,.08) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(255,255,255,.06) 0%,transparent 40%),radial-gradient(circle at 50% 80%,rgba(255,255,255,.04) 0%,transparent 60%)}

/* ─── Dashboard ─── */
.dashboard-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media(min-width:480px){.dashboard-location-grid{grid-template-columns:repeat(2,1fr)}}
