/* =========================================================
   Zentronyx + Bootstrap (Polished, FIXED)
   - Bootstrap loaded BEFORE this file
   - Scope: .zx-app (added on <body>)
   ========================================================= */

/* =========================
   1) Tokens / Variables
   ========================= */
:root{
  --bg1:#0b1220;
  --bg2:#0f1b33;

  --card: rgba(255,255,255,.08);
  --card2: rgba(255,255,255,.10);
  --border: rgba(255,255,255,.14);

  --text: rgba(255,255,255,.92);
  --text2: rgba(255,255,255,.80);
  --muted: rgba(255,255,255,.68);

  --shadow: 0 20px 60px rgba(0,0,0,.45);
  --radius: 18px;

  --focus: rgba(90,150,255,.12);
  --focus-border: rgba(120,170,255,.45);

  --thead-bg: rgba(255,255,255,.08);

  --chip-bg: rgba(255,255,255,.08);
  --chip-bg-active: rgba(255,255,255,.18);
  --chip-border: rgba(255,255,255,.16);
  --chip-border-active: rgba(255,255,255,.30);

  --hover: rgba(255,255,255,.06);
}

/* =========================
   2) Base / Reset (SAFE)
   ========================= */
*, *::before, *::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust: 100%; }
html, body{
  height:100%;
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}

img, video, canvas, svg{ max-width:100%; height:auto; }

.zx-app{
  color: var(--text);
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:
    radial-gradient(1200px 600px at 20% 10%, #1b2a52 0%, transparent 60%),
    radial-gradient(900px 500px at 80% 0%, #2b1b52 0%, transparent 55%),
    linear-gradient(180deg, var(--bg1), var(--bg2));
  min-height:100vh;
}

/* Links */
.zx-app a{ color: rgba(180,210,255,.95); text-decoration:none; }
.zx-app a:hover{ color: rgba(210,230,255,.98); text-decoration:underline; }

/* Card links (module cards etc.) – nema podcrtavanja */
.zx-app a.card,
.zx-app a.module-card,
.zx-app .zx-cardlink{
  text-decoration: none !important;
  color: inherit !important;
}

.zx-app hr{
  border:0; height:1px;
  background: rgba(255,255,255,.14);
  margin: 14px 0;
}

.zx-app h1,.zx-app h2,.zx-app h3,.zx-app h4{
  color: var(--text);
  opacity: 1;
  margin: 0 0 12px;
}

/* Bootstrap "muted" too grey on dark */
.zx-app .text-muted,
.zx-app .small.text-muted,
.zx-app .small{
  color: var(--muted) !important;
  opacity: 1 !important;
}
.zx-app .muted{ opacity: 1 !important; color: var(--muted) !important; }

/* Flex shrink fixes only where needed */
.zx-app .d-flex > *{ min-width: 0; }
.zx-app .topbar > *{ min-width: 0; }

/* =========================
   3) Layout
   ========================= */
.zx-app .app-main{ padding: 12px 0; }
@media (min-width: 768px){ .zx-app .app-main{ padding: 18px 0; } }

/* Default container */
.zx-app .zx-container{
  max-width: 980px;
  margin: 18px auto;
  padding: 0 14px;
}

/* Wide container (for tables / lists) */
.zx-app.container-wide .zx-container{
  max-width: 1180px;
}
/* =========================
   4) Cards (Bootstrap-safe)
   ========================= */
.zx-app .card{
  background: var(--card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  box-shadow: var(--shadow);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: var(--text) !important;
}

/* NEMOJ global "card *" */
.zx-app .card p,
.zx-app .card span,
.zx-app .card small,
.zx-app .card .label,
.zx-app .card .sub,
.zx-app .card .module-title{
  color: inherit;
}

.zx-app .card-inner{ padding: 18px; }

/* =========================
   5) Buttons (glass default)
   ========================= */
.zx-app .btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  white-space: nowrap;

  background: rgba(255,255,255,.06) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  color: var(--text) !important;
  box-shadow: none !important;

  border-radius: 999px;
  padding: .55rem 1rem;
  transition: .12s ease;
}

.zx-app .btn:hover{
  background: rgba(255,255,255,.10) !important;
  border-color: rgba(255,255,255,.18) !important;
}

.zx-app .btn.active,
.zx-app .btn:active{
  background: rgba(255,255,255,.18) !important;
  border-color: rgba(255,255,255,.30) !important;
}

.zx-app .btn.btn-danger{
  background: rgba(255,110,110,.18) !important;
  border-color: rgba(255,110,110,.32) !important;
}
.zx-app .btn.btn-danger:hover{
  background: rgba(255,110,110,.24) !important;
  border-color: rgba(255,110,110,.40) !important;
}

/* Outline variants on dark */
.zx-app .btn-outline-primary,
.zx-app .btn-outline-secondary,
.zx-app .btn-outline-success,
.zx-app .btn-outline-danger,
.zx-app .btn-outline-warning,
.zx-app .btn-outline-info,
.zx-app .btn-outline-light,
.zx-app .btn-outline-dark{
  background: rgba(255,255,255,.05) !important;
  border-color: rgba(255,255,255,.14) !important;
  color: var(--text) !important;
}

/* Touch-friendly default */
.zx-app .btn,
.zx-app .form-control,
.zx-app .form-select,
.zx-app .input-group-text{
  min-height: 44px;
}

/* Bootstrap Icons visible */
.zx-app .bi{
  color: currentColor;
  opacity: .92;
  font-size: 1.05em;
}

/* =========================================================
   BOOTSTRAP SIZE VARIANTS FIX (IMPORTANT)
   - Restore compact UI where you use *-sm
   ========================================================= */
.zx-app .btn.btn-sm{
  min-height: 34px !important;
  padding: .35rem .75rem !important;
  border-radius: 999px;
}

.zx-app .form-control.form-control-sm,
.zx-app .form-select.form-select-sm{
  min-height: 34px !important;
  padding-top: .25rem !important;
  padding-bottom: .25rem !important;
}

.zx-app .input-group-sm .input-group-text,
.zx-app .input-group-sm .form-control{
  min-height: 34px !important;
  padding-top: .25rem !important;
  padding-bottom: .25rem !important;
}

.zx-app .btn.btn-lg{
  min-height: 52px !important;
  padding: .75rem 1.25rem !important;
}

/* =========================
   6) Inputs / Selects (dark)
   ========================= */
.zx-app .form-control,
.zx-app .form-select,
.zx-app input,
.zx-app select,
.zx-app textarea{
  background: rgba(0,0,0,.22) !important;
  color: var(--text) !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  border-radius: 12px !important;
}

.zx-app .form-control::placeholder,
.zx-app input::placeholder,
.zx-app textarea::placeholder{
  color: rgba(255,255,255,.50) !important;
}

.zx-app .form-control:focus,
.zx-app .form-select:focus,
.zx-app input:focus,
.zx-app select:focus,
.zx-app textarea:focus{
  border-color: var(--focus-border) !important;
  box-shadow: 0 0 0 3px var(--focus) !important;
}

/* Checkboxes */
.zx-app .form-check-input{
  background-color: rgba(0,0,0,.28) !important;
  border-color: rgba(255,255,255,.22) !important;
}
.zx-app .form-check-input:checked{
  background-color: rgba(120,170,255,.85) !important;
  border-color: rgba(120,170,255,.85) !important;
}

/* =========================
   Alerts (global for protected pages)
   ========================= */
.zx-app .alert.err{
  border-radius: 14px;
  padding: 10px 12px;
  border: 1px solid rgba(255,110,110,.32);
  background: rgba(255,110,110,.14);
  color: rgba(255,230,230,.95);
}

/* =========================
   7) Tables
   ========================= */
.zx-app .table,
.zx-app table{
  color: var(--text) !important;
}

.zx-app .table > :not(caption) > * > *{
  background-color: transparent !important;
  box-shadow: none !important;
}

.zx-app .table-responsive{
  border-radius: 16px;
  overflow: auto;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.zx-app .table thead th{
  background: var(--thead-bg) !important;
  color: rgba(255,255,255,.78) !important;
  border-bottom: 1px solid rgba(255,255,255,.12) !important;
  font-weight: 650;
  font-size: 13px;
}

.zx-app .table tbody td{
  border-bottom: 1px solid rgba(255,255,255,.08) !important;
  color: rgba(255,255,255,.88) !important;
}

.zx-app .table tbody tr:hover{
  background: var(--hover) !important;
}

/* =========================
   8) Badges
   ========================= */
.zx-app .badge{
  border: 1px solid rgba(255,255,255,.18) !important;
  background: rgba(255,255,255,.10) !important;
  color: rgba(255,255,255,.92) !important;
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.1;
}

.zx-app .badge.status-novo{ background: rgba(80,160,255,.20) !important; border-color: rgba(80,160,255,.38) !important; }
.zx-app .badge.status-uradu{ background: rgba(255,210,90,.20) !important; border-color: rgba(255,210,90,.38) !important; }
.zx-app .badge.status-ceka{ background: rgba(255,140,80,.20) !important; border-color: rgba(255,140,80,.38) !important; }
.zx-app .badge.status-zavrseno{ background: rgba(110,255,170,.18) !important; border-color: rgba(110,255,170,.38) !important; }
.zx-app .badge.status-otkazano{ background: rgba(255,110,110,.18) !important; border-color: rgba(255,110,110,.38) !important; }

.zx-app .badge.bg-success,
.zx-app .badge.bg-danger,
.zx-app .badge.bg-warning,
.zx-app .badge.bg-info,
.zx-app .badge.bg-primary{
  color: rgba(255,255,255,.95) !important;
  border-color: rgba(255,255,255,.18) !important;
}

/* =========================
   9) Topbar + menus
   ========================= */
.zx-app .topbar{
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px;
  min-height: 80px;
}

.zx-app .brand{
  display: flex;
  align-items: center;
  gap: 12px;
}

.zx-app .brand-logo{
  height: 64px;
  width: auto;
}

.zx-app .topbar-actions{
  display:flex;
  align-items:center;
  gap:10px;
}

.zx-app .brand-title{ margin:0; }

/* User button internals (tight) */
.zx-app .zx-user-btn{
  gap: 10px;
}
.zx-app .zx-avatar{
  width: 34px;
  height: 34px;
  display:grid;
  place-items:center;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.08);
  font-weight: 800;
  line-height: 1;
}
.zx-app .zx-user-meta{
  display:flex;
  flex-direction:column;
  line-height: 1.05;
  text-align:left;
}
.zx-app .zx-user-name{
  font-weight: 750;
  font-size: 13px;
}
.zx-app .zx-user-role{
  font-size: 12px;
  opacity: .78;
}

/* Custom user dropdown (.zx-menu) */
.zx-app .zx-user{ position: relative; }

.zx-app .zx-menu{
  position: absolute;
  right: 0;
  top: calc(100% + 10px);
  min-width: 220px;
  padding: 8px;
  border-radius: 14px;

  background: rgba(10,14,24,.88);
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 20px 60px rgba(0,0,0,.45);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);

  display: none;
  z-index: 9999;
}

.zx-app .zx-menu.is-open{ display: block; }

.zx-app .zx-menu-item{
  display: block;
  padding: 10px 12px;
  border-radius: 10px;
  color: rgba(255,255,255,.92) !important;
  text-decoration: none !important;
}

.zx-app .zx-menu-item:hover{ background: rgba(255,255,255,.10); }

.zx-app .zx-menu-sep{
  height: 1px;
  margin: 6px 4px;
  background: rgba(255,255,255,.12);
}

.zx-app .zx-menu-item.zx-danger{
  color: rgba(255,170,170,.95) !important;
}

/* =========================
   10) Notifications dropdown
   ========================= */
.zx-app .zx-notif{ position:relative; display:inline-block; }

.zx-app .zx-notif-btn{
  position: relative;
}

.zx-app .zx-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:18px;
  height:18px;
  padding:0 6px;
  border-radius:999px;
  font-size:12px;
  background: rgba(220,53,69,.90);
  border: 1px solid rgba(255,255,255,.18);
  line-height: 1;
  color: #fff;

  position:absolute;
  right: -6px;
  top: -6px;
}

.zx-app .zx-notif-menu{
  position:absolute;
  right:0;
  top:110%;
  width: 360px;
  max-width: calc(100vw - 24px);
  border-radius: 16px;
  background: rgba(20,24,33,.92);
  border: 1px solid rgba(255,255,255,.12);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 18px 50px rgba(0,0,0,.35);
  overflow:hidden;
  z-index: 9999;
}

.zx-app .zx-notif-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.10);
}
.zx-app .zx-notif-list{ max-height: 380px; overflow:auto; }

.zx-app .zx-notif-item{
  padding:10px 12px;
  cursor:pointer;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.zx-app .zx-notif-item:hover{ background: rgba(255,255,255,.06); }
.zx-app .zx-notif-item.is-read{ opacity:.70; }

.zx-app .zx-notif-title{ font-weight:650; margin-bottom:2px; }
.zx-app .zx-notif-body{ opacity:.9; font-size:13px; }
.zx-app .zx-notif-time{ opacity:.7; font-size:12px; margin-top:4px; }

.zx-app .zx-notif-foot{
  padding:10px 12px;
  border-top:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.03);
}
.zx-app .zx-notif-link{ color: rgba(200,225,255,.95); text-decoration:none; }
.zx-app .zx-notif-link:hover{ text-decoration: underline; }

.zx-app .zx-link{ color: rgba(200,225,255,.95); text-decoration:none; }
.zx-app .zx-link:hover{ text-decoration: underline; }

/* Notifications page (optional scope) */
.notif-scope .zx-tabs{ margin: 4px 0 10px; }
.notif-scope .zx-noti-card{ padding: 10px 12px; border-radius: 16px; }
.notif-scope .zx-noti-title{ font-size: 14px; }
.notif-scope .zx-noti-msg{ font-size: 13px; }
.notif-scope .zx-pager{ margin-top: 12px; }

/* =========================
   11) Grid helper
   ========================= */
.zx-app .zx-grid{ display:grid; gap: 14px; }
.zx-app .zx-grid.cols-2{ grid-template-columns: 1fr; }
.zx-app .zx-grid.cols-4{ grid-template-columns: 1fr; }

@media (min-width: 768px){
  .zx-app .zx-grid.cols-2{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .zx-app .zx-grid.cols-4{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* =========================
   12) Warehouse scope
   ========================= */
.wh-scope .zx-grid{ gap: 18px; }
.wh-scope h3{ font-size: 1.35rem; }

.wh-scope .zx-stat{
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.5px;
  margin-top: 2px;
}

.wh-scope .wh-toolbar .btn{
  border-radius: 999px;
  padding: .55rem 1.0rem;
}

.wh-scope .zx-grid.cols-4 .card{
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, rgba(255,255,255,0.10), rgba(255,255,255,0.03)) !important;
  min-height: 120px;
}
.wh-scope .zx-grid.cols-4 .card::before{
  content:"";
  position:absolute;
  inset:-1px;
  background: radial-gradient(600px circle at 20% 10%, rgba(90,200,255,0.12), transparent 45%);
  pointer-events:none;
}
.wh-scope .zx-grid.cols-4 .card::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(120deg, rgba(255,255,255,0.05), transparent 55%);
  pointer-events:none;
}

.wh-scope .wh-statline{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.wh-scope .wh-icon{
  width:42px; height:42px;
  display:grid; place-items:center;
  border-radius:14px;
  border:1px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.06);
}
.wh-scope .wh-icon i{ font-size: 20px; opacity: .92; }

.wh-scope .zx-cardlink{ text-decoration:none; color: inherit; }
.wh-scope .zx-cardlink .card{
  border:1px solid rgba(255,255,255,0.10) !important;
  background: rgba(255,255,255,0.04) !important;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.wh-scope .zx-cardlink:hover .card{
  transform: translateY(-2px);
  box-shadow: 0 18px 40px rgba(0,0,0,0.20);
  border-color: rgba(255,255,255,0.18) !important;
}

.wh-scope .wh-open{ opacity:.85; }
.wh-scope .wh-open span:last-child{ transition: transform .12s ease; }
.wh-scope .zx-cardlink:hover .wh-open span:last-child{ transform: translateX(3px); }

/* =========================
   13) Mobile helpers
   ========================= */
@media (max-width: 576px){
  .mobile-hide{ display:none !important; }
  .mobile-full{ width:100% !important; }
  .mobile-stack > *{ width:100% !important; }
}

/* =========================
   Service scope (dashboard)
   ========================= */
.svc-scope .zx-grid{ gap: 18px; }
.svc-scope h3{ font-size: 1.35rem; }

.svc-scope .zx-stat{
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.5px;
  margin-top: 2px;
}

.svc-scope .svc-toolbar .btn{
  border-radius: 999px;
  padding: .55rem 1.0rem;
}

.svc-scope .stats .card{
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, rgba(255,255,255,0.10), rgba(255,255,255,0.03)) !important;
  min-height: 120px;
}
.svc-scope .stats .card::before{
  content:"";
  position:absolute;
  inset:-1px;
  background: radial-gradient(600px circle at 20% 10%, rgba(90,200,255,0.12), transparent 45%);
  pointer-events:none;
}
.svc-scope .stats .card::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(120deg, rgba(255,255,255,0.05), transparent 55%);
  pointer-events:none;
}

.svc-scope .svc-statline{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.svc-scope .svc-icon{
  width:42px; height:42px;
  display:grid; place-items:center;
  border-radius:14px;
  border:1px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.06);
}
.svc-scope .svc-icon i{ font-size: 20px; opacity: .92; }

.svc-scope .zx-cardlink{ text-decoration:none; color: inherit; }
.svc-scope .zx-cardlink .card{
  border:1px solid rgba(255,255,255,0.10) !important;
  background: rgba(255,255,255,0.04) !important;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.svc-scope .zx-cardlink:hover .card{
  transform: translateY(-2px);
  box-shadow: 0 18px 40px rgba(0,0,0,0.20);
  border-color: rgba(255,255,255,0.18) !important;
}

.svc-scope .svc-open{ opacity:.85; }
.svc-scope .svc-open span:last-child{ transition: transform .12s ease; }
.svc-scope .zx-cardlink:hover .svc-open span:last-child{ transform: translateX(3px); }

.svc-scope{
  max-width: 1180px;
  margin: 0 auto;
}

/* =========================================================
   LOGIN (PUBLIC) — isolated from .zx-app
   ========================================================= */
.login-page{
  min-height: 100vh;
  color: rgba(255,255,255,.92);
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;

  background:
    radial-gradient(1200px 600px at 20% 10%, #1b2a52 0%, transparent 60%),
    radial-gradient(900px 500px at 80% 0%, #2b1b52 0%, transparent 55%),
    linear-gradient(180deg, #0b1220, #0f1b33);
}

.login-wrap{
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px 14px;
}

.login-card{
  width: min(440px, 100%);
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.08);
  box-shadow: 0 20px 60px rgba(0,0,0,.45);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  overflow: hidden;
  position: relative;
}

.login-card .card-inner{ padding: 18px; }

.login-logo{
  display:flex;
  justify-content:center;
  margin: 6px 0 8px;
}
.login-logo img{
  height: 74px;
  width: auto;
  filter: drop-shadow(0 10px 25px rgba(0,0,0,.35));
}

.login-title{
  margin: 0;
  text-align: center;
  font-weight: 800;
  letter-spacing: -.4px;
}

.login-form label{
  display:block;
  margin-top: 10px;
  margin-bottom: 6px;
  font-size: 13px;
  color: rgba(255,255,255,.72);
  letter-spacing: .02em;
}

.login-form input{
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(0,0,0,.22);
  color: rgba(255,255,255,.92);
  outline: none;
}

.login-form input::placeholder{ color: rgba(255,255,255,.50); }

.login-form input:focus{
  border-color: rgba(120,170,255,.45);
  box-shadow: 0 0 0 3px rgba(90,150,255,.12);
}

.pw-wrap{
  position: relative;
  display:flex;
  align-items:center;
}
.pw-wrap input{ padding-right: 46px; }

.pw-toggle{
  position:absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color: rgba(255,255,255,.92);
  display:grid;
  place-items:center;
  cursor:pointer;
  transition: .12s ease;
}
.pw-toggle:hover{
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.22);
}

.btn-login{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap: 10px;

  width: 100%;
  min-height: 44px;
  border-radius: 999px;
  padding: .6rem 1rem;

  border: 1px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.92);
  cursor:pointer;
  transition: .12s ease;
}

.btn-login:hover{
  background: rgba(255,255,255,.12);
  border-color: rgba(255,255,255,.26);
  transform: translateY(-1px);
}

.btn-login:active{
  transform: translateY(0);
  background: rgba(255,255,255,.16);
  border-color: rgba(255,255,255,.32);
}

.btn-login .btn-spinner{
  width: 16px;
  height: 16px;
  border-radius: 999px;
  border: 2px solid rgba(255,255,255,.25);
  border-top-color: rgba(255,255,255,.90);
  display:none;
  animation: zxspin .8s linear infinite;
}
.btn-login.is-loading .btn-spinner{ display:inline-block; }
.btn-login.is-loading .btn-text{ opacity: .85; }

@keyframes zxspin{ to { transform: rotate(360deg); } }

.login-page .alert.err{
  border-radius: 14px;
  padding: 10px 12px;
  border: 1px solid rgba(255,110,110,.32);
  background: rgba(255,110,110,.14);
  color: rgba(255,230,230,.95);
}

.login-card.is-shake{ animation: zxshake .45s ease; }
@keyframes zxshake{
  0%{ transform: translateX(0); }
  20%{ transform: translateX(-6px); }
  40%{ transform: translateX(6px); }
  60%{ transform: translateX(-4px); }
  80%{ transform: translateX(4px); }
  100%{ transform: translateX(0); }
}
/* =========================
   ADMIN + HOME layout helpers
   ========================= */

/* 1) Make main container spacing consistent */
.zx-app .zx-container{
  margin: 18px auto;
}

/* 2) Admin + Home cards should NOT look like one long “merged” block */
.zx-app .admin-grid .card,
.zx-app .home-grid .card{
  height: 100%;
}

/* Optional: tighten page headers a bit */
.zx-app .page-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom: 14px;
}

.zx-app .page-head h3{ margin:0; }

/* Pills inside page content */
.zx-page-pills{
  margin: 10px 0 18px;
}

/* Keep pills aligned left inside content (praktičnije od center) */
.zx-topnav{
  justify-content: flex-start;
}
