/* IPBases — app shell styles (moved out of every page in v2.1.1; cached). Same rules as before, same order. */

/* Keep our utility classes for backward compatibility with all existing views */
.vlabel{display:block;font-size:12px;font-weight:600;color:#495057;margin-bottom:5px}
.vlabel-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;font-size:14px;color:var(--primary);opacity:.7;margin-right:5px;vertical-align:-2px}
.vlabel:hover .vlabel-icon{opacity:1}
.vinput{width:100%;padding:8.5px 12px;border:1.5px solid #ced4da;border-radius:6px;font-size:13px;background:#fff;color:#495057;transition:border .15s,box-shadow .15s;outline:none}
.vinput:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(64,81,137,.1)}
select.vinput{cursor:pointer}
textarea.vinput{resize:vertical}

.vbtn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;border:1.5px solid transparent;text-decoration:none;white-space:nowrap;transition:all .15s;line-height:1.2}
.vbtn-primary,.vbtn-p{background:var(--primary);color:#fff;border-color:var(--primary)}
.vbtn-primary:hover,.vbtn-p:hover{background:var(--primary-dark);color:#fff;box-shadow:0 4px 12px rgba(64,81,137,.35)}
.vbtn-secondary,.vbtn-s,.vbtn-o{background:#fff;color:#6c757d;border-color:#dee2e6}
.vbtn-secondary:hover,.vbtn-s:hover,.vbtn-o:hover{background:#f8f9fa;border-color:var(--primary);color:var(--primary)}
.vbtn-success,.vbtn-ok{background:var(--success);color:#fff;border-color:var(--success)}
.vbtn-success:hover,.vbtn-ok:hover{background:#099984;color:#fff}
.vbtn-danger,.vbtn-d{background:#fde8e4;color:var(--danger);border-color:#f8c9bf}
.vbtn-danger:hover,.vbtn-d:hover{background:#fbc9bf}
.vbtn-warning,.vbtn-w{background:#fef4de;color:#c98a00;border-color:#fcd999}
.vbtn-sm{padding:5px 13px;font-size:12px;border-radius:5px}
.vbtn-xs{padding:3px 9px;font-size:11.5px;border-radius:4px}
.vbtn-ghost{background:transparent;border:1px solid transparent;color:#878a99;padding:4px 9px}
.vbtn-ghost:hover{background:#f3f3f9;color:#343a40}

.vcard,.vz-card{background:#fff;border:1px solid var(--card-border);border-radius:8px;margin-bottom:14px;overflow:hidden;box-shadow:0 1px 3px rgba(56,65,74,.06)}

/* When a custom select dropdown is open inside the card, temporarily allow
   overflow so the dropdown panel can extend below the card edge instead of
   being clipped. We keep overflow:hidden the rest of the time so child
   elements still respect the card's rounded corners. :has() lets us scope
   this override precisely to the open-dropdown moment. */
.vcard:has(.vselect-wrap.is-open),
.vz-card:has(.vselect-wrap.is-open){overflow:visible}
.vcard-body:has(.vselect-wrap.is-open){overflow:visible}
.vcard-hd{padding:13px 18px;border-bottom:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between;gap:8px}
.vcard-hd h6,.vcard-title{font-family:'Poppins',sans-serif;font-size:14px;font-weight:600;color:#343a40;margin:0;display:flex;align-items:center;gap:8px}
.vcard-body{padding:16px 20px}

.vtbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.vtbl thead th{background:#f3f3f9;color:#878a99;text-transform:uppercase;font-size:11px;letter-spacing:.04em;padding:10px 16px;font-weight:600;text-align:left;border-bottom:1px solid var(--card-border)}
.vtbl tbody td{padding:11px 16px;border-bottom:1px solid #f5f5f5;color:#495057;vertical-align:middle}
.vtbl tbody tr:hover{background:#fafbfc}
.vtbl tbody tr:last-child td{border-bottom:none}

.vbadge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:500;line-height:1.4}
.b-primary{background:var(--primary-light);color:var(--primary)}
.b-success,.vb-ok{background:#d5f0ec;color:#0a8072}
.b-warning,.vb-warn{background:#fef4de;color:#c98a00}
.b-danger,.vb-err{background:#fde8e4;color:#d03923}
.b-info,.vb-info{background:#d7edf9;color:#1a7aad}
.b-secondary,.vb-sec{background:#eef0f7;color:#5a6074}

.fbox{background:#fff;border:1px solid var(--card-border);border-radius:8px;padding:16px 20px;margin-bottom:20px;box-shadow:0 1px 3px rgba(56,65,74,.06)}

.valert,.valt{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:7px;font-size:13px;font-weight:500;margin-bottom:16px;border:1.5px solid}
.valert-success,.valt-ok{background:#d5f0ec;border-color:#a8e0d8;color:#0a8072}
.valert-danger,.valt-err{background:#fde8e4;border-color:#f8c9bf;color:#d03923}
.valert-warning,.valt-warn{background:#fef4de;border-color:#fcd999;color:#a07000}
.valert-info,.valt-info{background:#d7edf9;border-color:#9dd0ef;color:#1a7aad}

#toasts{position:fixed;bottom:22px;right:22px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast-item{min-width:260px;padding:13px 18px;border-radius:8px;color:#fff;font-size:13px;font-weight:500;box-shadow:0 8px 24px rgba(0,0,0,.2);display:flex;align-items:center;gap:10px;pointer-events:all;animation:toastSlide .3s ease}
@keyframes toastSlide{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
.toast-item.success{background:linear-gradient(135deg,#0ab39c,#099984)}
.toast-item.danger{background:linear-gradient(135deg,#f06548,#c8402d)}
.toast-item.info{background:linear-gradient(135deg,#405189,#3577f1)}

.page-hdr,.page-hdr-row,.page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:22px}
.page-hdr h4,.page-header h4,.page-title{font-family:'Poppins',sans-serif;font-size:17px;font-weight:600;color:#343a40;margin:0}
.bc,.breadcrumb-nav{font-size:12px;color:#878a99}
.bc a,.breadcrumb-nav a{color:#878a99}
.bc a:hover,.breadcrumb-nav a:hover{color:var(--primary)}
.sep{color:#dee2e6;margin:0 5px}
.empty-state{text-align:center;padding:40px 20px;color:#878a99}
.empty-state i{font-size:40px;margin-bottom:12px;display:block;color:#ced4da}

.sc-blue{background:linear-gradient(135deg,#405189,#3577f1)}
.sc-teal{background:linear-gradient(135deg,#0ab39c,#07967f)}
.sc-orange{background:linear-gradient(135deg,#f7b84b,#e8930a)}
.sc-red{background:linear-gradient(135deg,#f06548,#d03923)}
.sc-purple{background:linear-gradient(135deg,#6254d4,#4a3eaf)}
.sc-cyan{background:linear-gradient(135deg,#299cdb,#1a7aad)}

/* Custom branding block — replaces Velzon's image-based logo system */
.navbar-brand-box.brand-custom{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  padding:0 18px !important;
  height:70px !important;
  border-bottom:1px solid rgba(255,255,255,.07) !important;
  text-align:left !important;
}
[data-sidebar="light"] .navbar-brand-box.brand-custom{ border-bottom-color:rgba(0,0,0,.06) !important; }
.brand-link{display:flex;align-items:center;gap:11px;text-decoration:none;width:100%;color:inherit}
.brand-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;
  background:linear-gradient(135deg,#3577f1,#6254d4);
  border-radius:9px;
  color:#fff;font-weight:800;font-size:15px;
  flex-shrink:0;
  box-shadow:0 4px 14px rgba(53,119,241,.4),inset 0 1px 0 rgba(255,255,255,.18);
  font-family:'Poppins',sans-serif;
}
.brand-img{height:32px;max-width:38px;object-fit:contain;flex-shrink:0}
.brand-name{
  color:#fff; font-weight:600; font-size:25px;
  font-family:'Poppins',sans-serif; letter-spacing:-0.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  transition:opacity .15s;
}
[data-sidebar="light"] .brand-name{ color:#343a40 !important; }
/* Hide name in collapsed sidebar */
[data-sidebar-size="sm"] .brand-name,
[data-sidebar-size="sm-hover"] .brand-name{ display:none; }
[data-sidebar-size="sm-hover"] .navbar-menu:hover .brand-name{ display:inline-block; }
[data-sidebar-size="sm"] .navbar-brand-box.brand-custom,
[data-sidebar-size="sm-hover"] .navbar-brand-box.brand-custom{
  justify-content:center !important;
  padding:0 !important;
}
/* v1.150 — collapsed sidebar: centred logo, larger centred icons */
/* v1.151 — collapsed sidebar stays put while the page scrolls */
@media (min-width:768px){
  [data-sidebar-size="sm"] .app-menu.navbar-menu{position:fixed !important;top:0;bottom:0;height:100vh;padding-bottom:0}
}
[data-sidebar-size="sm"] .brand-link{justify-content:center;gap:0}
[data-sidebar-size="sm"] .brand-img{height:34px;max-width:44px}
/* v1.154 — identical box hovered or not, no transitions: nothing moves, so no jitter */
[data-sidebar-size="sm"] #navbar-nav .nav-link.menu-link{display:flex !important;align-items:center;justify-content:flex-start;height:48px;padding:0 0 0 23.5px !important;margin:2px 0 !important;transition:none !important;animation:none !important}
[data-sidebar-size="sm"] #navbar-nav .nav-link.menu-link i,[data-sidebar-size="sm"] #navbar-nav .nav-link.menu-link .sb-svg-icon{transition:none !important;animation:none !important;transform:none !important}
[data-sidebar-size="sm"] #navbar-nav .nav-item:hover > .nav-link.menu-link i{margin-right:14px !important}
[data-sidebar-size="sm"] #navbar-nav .nav-link.menu-link i{font-size:23px !important;margin:0 !important;line-height:1;width:23px;min-width:23px !important;text-align:center}
[data-sidebar-size="sm"] #navbar-nav .nav-link.menu-link .sb-svg-icon{width:23px;height:23px;margin:0}
[data-sidebar-size="sm"] #navbar-nav .nav-item:not(:hover) > .nav-link.menu-link{background:transparent !important;box-shadow:none !important}
/* v1.165 — gold = the section that holds the current page (not "expanded") */
[data-sidebar-size="sm"] #navbar-nav .nav-link.menu-link.active i,
[data-sidebar-size="sm"] #navbar-nav .nav-item:has(> .menu-dropdown .nav-link.active) > .nav-link.menu-link i{color:#D0A756 !important}
.app-menu.navbar-menu .navbar-brand-box{padding:18px 20px 14px}
.navbar-nav .menu-title{font-size:10.5px;letter-spacing:.085em;font-weight:600;padding:14px 20px 6px;opacity:.55}
#navbar-nav .nav-link.menu-link{padding:9px 22px;font-size:13.5px;font-weight:500}
#navbar-nav .nav-link.menu-link i{font-size:18px;margin-right:11px}
#navbar-nav .nav-sm .nav-link{padding:7px 22px 7px 50px;font-size:12.8px;font-weight:500}
#navbar-nav .nav-sm .nav-link:hover{padding-left:54px}
#navbar-nav .nav-sm .nav-link.active{position:relative;color:#fff;font-weight:600}
#navbar-nav .nav-sm .nav-link.active::before{content:'';position:absolute;left:35px;top:50%;width:5px;height:5px;border-radius:50%;background:#3577f1;transform:translateY(-50%);box-shadow:0 0 8px rgba(53,119,241,.7)}
/* Topbar buttons match Velzon header-item style */
.tb-action-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:7px;border:1px solid #e9ebec;background:#fff;cursor:pointer;font-size:12px;font-weight:600;color:#878a99;transition:all .15s;white-space:nowrap;line-height:1.2}
.tb-action-btn:hover{border-color:var(--primary);color:var(--primary)}

/* v1.34 — Edit Mode CSS removed. Dev Mode (its replacement) lives in
   helpers-devmode.php and is gated behind .env secret + DB flag + URL key.
   See database/dev-mode.php for the CLI. */
/* ── Topbar search box (v1.13: wider, with internal/global toggle) ──────── */
.app-search{position:relative;flex:1 1 auto;max-width:880px;min-width:280px;margin-right:14px}
.ts-box{display:flex;align-items:center;background:#f3f3f9;border:1.5px solid transparent;border-radius:10px;padding:0 6px 0 14px;height:46px;transition:all .15s;gap:8px}
.ts-box:focus-within{background:#fff;border-color:var(--primary);box-shadow:0 0 0 3px rgba(64,81,137,.10)}
/* v1.6.58 — AI mode tints the search box purple so the user sees the mode at a glance */
#topsearch-wrap.is-ai-mode .ts-box{background:#faf5ff;border-color:#a855f7}
#topsearch-wrap.is-ai-mode .ts-box:focus-within{background:#fff;border-color:#a855f7;box-shadow:0 0 0 3px rgba(168,85,247,.18)}
/* v1.6.58 — AI button (✨) inside the search bar */
.ts-ai-btn{flex-shrink:0;width:32px;height:32px;border-radius:8px;border:0;background:transparent;color:#9ca3af;cursor:pointer;font-size:17px;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,color .15s;align-self:center;margin-top:7px}
.ts-ai-btn:hover{background:#f3f4f6;color:#6b7280}
.ts-ai-btn.is-active{background:#a855f7;color:#fff;box-shadow:0 0 0 3px rgba(168,85,247,.20)}
.ts-ai-btn.is-active:hover{background:#9333ea;color:#fff}
.ts-ai-btn.is-active i{animation:tsAiSparkle 2s ease-in-out infinite}
@keyframes tsAiSparkle{0%,100%{transform:scale(1) rotate(0deg)}50%{transform:scale(1.15) rotate(15deg)}}
.ts-icon{color:#878a99;font-size:18px;flex-shrink:0;margin-right:9px}
.ts-box input{flex:1;border:none;background:transparent;outline:none;font-size:13.5px;color:#495057;font-family:inherit;height:100%;padding:0;min-width:0}
.ts-box input::placeholder{color:#adb5bd}
.ts-toggle{position:relative;display:inline-flex;align-items:center;gap:8px;flex-shrink:0;padding:5px 12px;border-radius:8px;cursor:pointer;background:#fff;border:1px solid #e9ebec;user-select:none;transition:all .15s;line-height:1;align-self:center;margin-top:7px}
.ts-toggle:hover{border-color:var(--primary)}
.ts-toggle input{position:absolute;opacity:0;pointer-events:none}
.ts-toggle-track{position:relative;width:44px;height:20px;background:#dee2e6;border-radius:99px;flex-shrink:0;transition:background .2s}
.ts-toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:left .2s}
.ts-toggle-label-internal,.ts-toggle-label-global{position:absolute;top:50%;transform:translateY(-50%);font-size:10px;color:#fff;line-height:1;pointer-events:none;transition:opacity .2s}
.ts-toggle-label-internal{left:5px;opacity:1}
.ts-toggle-label-global{right:5px;opacity:0}
.ts-toggle input:checked + .ts-toggle-track{background:linear-gradient(135deg,#0ab39c,#07967f)}
.ts-toggle input:checked + .ts-toggle-track .ts-toggle-thumb{left:26px}
.ts-toggle input:checked + .ts-toggle-track .ts-toggle-label-internal{opacity:0}
.ts-toggle input:checked + .ts-toggle-track .ts-toggle-label-global{opacity:1}
.ts-mode-text{font-size:11px;font-weight:600;color:#495057;text-transform:uppercase;letter-spacing:.04em;min-width:54px;text-align:left;line-height:1;display:inline-flex;align-items:center;gap:1px}
.ts-toggle input:checked ~ .ts-mode-text{color:#0ab39c}
/* ™ shown before GLOBAL when toggle is on */
.ts-mode-text .ts-tm{
  font-size:8px;
  font-weight:800;
  vertical-align:super;
  line-height:1;
  letter-spacing:0;
  text-transform:none;
  margin-right:1px;
  color:inherit;
}
/* ── Searchable selects (v1.13.9) ─────────────────────────────────────────
   Auto-applied to every <select class="vinput"> with 6+ options.
   The underlying <select> stays in the DOM (form-submit just works); we
   render a custom button + dropdown with a search input on top of it. */
.vselect-wrap{position:relative;width:100%;font-family:inherit}
.vselect-wrap > select{position:absolute !important;opacity:0 !important;pointer-events:none !important;height:0 !important;width:0 !important;border:0 !important;padding:0 !important;margin:0 !important}
.vselect-trigger{display:block;width:100%;padding:8.5px 30px 8.5px 12px;border:1.5px solid #ced4da;border-radius:6px;background:#fff;font-size:13px;font-family:inherit;color:#495057;cursor:pointer;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;outline:none;line-height:1.4;transition:border .15s,box-shadow .15s}
.vselect-trigger.placeholder{color:#adb5bd}
.vselect-trigger::after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);border:4px solid transparent;border-top-color:#878a99;margin-top:2px;pointer-events:none;transition:transform .2s}
.vselect-trigger:hover{border-color:#adb5bd}
.vselect-wrap.is-open .vselect-trigger{border-color:var(--primary);box-shadow:0 0 0 3px rgba(64,81,137,.1)}
.vselect-wrap.is-open .vselect-trigger::after{transform:translateY(-50%) rotate(180deg);margin-top:-2px}
.vselect-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e9ebec;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.14);z-index:1100;display:none;max-height:320px;overflow:hidden;flex-direction:column}
.vselect-wrap.is-open .vselect-dropdown{display:flex}
.vselect-search-wrap{padding:8px;border-bottom:1px solid #f0f0f0;position:relative;flex-shrink:0}
.vselect-search-icon{position:absolute;left:17px;top:50%;transform:translateY(-50%);color:#878a99;font-size:14px;pointer-events:none}
.vselect-search{width:100%;padding:7px 10px 7px 32px;border:1px solid #ced4da;border-radius:5px;font-size:12.5px;outline:none;background:#fafbfc;font-family:inherit;color:#495057}
.vselect-search:focus{border-color:var(--primary);background:#fff}
.vselect-options{flex:1;overflow-y:auto;max-height:240px}
.vselect-option{padding:8px 14px;font-size:13px;cursor:pointer;color:#495057;border-bottom:1px solid #f9f9fb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s}
.vselect-option:last-child{border-bottom:none}
.vselect-option:hover,.vselect-option.is-active{background:#f0f7ff;color:var(--primary)}
.vselect-option.is-selected{background:rgba(10,179,156,.08);color:#0a8072;font-weight:600}
.vselect-option.is-selected:hover{background:rgba(10,179,156,.14)}
.vselect-option mark{background:#fff3cd;color:#856404;padding:0 1px;font-weight:600;border-radius:2px}
.vselect-empty{padding:18px 14px;text-align:center;color:#adb5bd;font-size:12.5px}

/* Disable transitions during initial page render to prevent flicker (v1.13.6) */
.ts-toggle.preload .ts-toggle-track,
.ts-toggle.preload .ts-toggle-thumb,
.ts-toggle.preload .ts-toggle-label-internal,
.ts-toggle.preload .ts-toggle-label-global{ transition:none !important }
.ts-toggle input:checked ~ .ts-mode-text{color:#0ab39c}

#search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--card-border);border-radius:10px;z-index:1050;max-height:480px;overflow-y:auto;box-shadow:0 12px 36px rgba(0,0,0,.14);display:none}
.sr-loading{padding:18px;text-align:center;color:#878a99;font-size:12.5px}
.sr-loading i{animation:spin 1s linear infinite;margin-right:6px}
.sr-empty{padding:24px 18px;text-align:center;color:#878a99;font-size:12.5px}
.sr-empty i{font-size:28px;display:block;margin-bottom:6px;color:#ced4da}
.sr-group{border-bottom:1px solid #f5f5f5}
.sr-group:last-child{border-bottom:none}
.sr-group-hd{display:flex;align-items:center;gap:7px;padding:8px 14px;background:#fafbfc;font-size:10.5px;font-weight:700;color:#878a99;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;z-index:1}
.sr-group-hd i{font-size:13px;color:var(--primary)}
.sr-group-hd .sr-group-count{margin-left:auto;color:#adb5bd;font-weight:500;text-transform:none;letter-spacing:0}
.sr-item{padding:9px 14px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:10px;border-top:1px solid #f9f9fb;color:#495057;text-decoration:none;transition:background .12s}
.sr-item:first-of-type{border-top:none}
.sr-item:hover{background:#f0f7ff;color:var(--primary)}
/* Module rows: split into [main link] + [+ New action] */
.sr-item-module{padding:0;display:flex;align-items:stretch;gap:0}
.sr-item-module .sr-item-main{flex:1;display:flex;align-items:center;gap:10px;padding:9px 14px;text-decoration:none;color:#495057;min-width:0;transition:background .12s}
.sr-item-module .sr-item-main:hover{background:#f0f7ff;color:var(--primary)}
.sr-item-module .sr-item-action{flex-shrink:0;display:flex;align-items:center;gap:4px;padding:6px 11px;margin:5px 8px 5px 0;background:rgba(10,179,156,.10);color:#0a8072;border-radius:6px;font-size:11.5px;font-weight:700;text-decoration:none;text-transform:uppercase;letter-spacing:.03em;transition:all .15s;align-self:center}
.sr-item-module .sr-item-action:hover{background:#0a8072;color:#fff;transform:translateX(-1px)}
.sr-item-module .sr-item-action i{font-size:14px}
.sr-item-icon{width:30px;height:30px;border-radius:7px;background:rgba(64,81,137,.08);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:15px}
.sr-item-thumb{background:#fff;border:1px solid rgba(64,81,137,.15);overflow:hidden;padding:1px}
.sr-item-thumb img{width:100%;height:100%;object-fit:contain;display:block}
.sr-item-av{width:40px;height:40px;border-radius:50%;overflow:hidden;padding:0;background:#eef1fb;border:1px solid rgba(64,81,137,.12)}.sr-item-av img{width:100%;height:100%;object-fit:cover;display:block}.sr-av-ini{font-size:13px;font-weight:700;color:var(--primary);letter-spacing:.02em}
.sr-thumb-preview{position:fixed;z-index:9999;width:200px;height:200px;background:#fff;border:1px solid rgba(64,81,137,.2);border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.18);padding:8px;pointer-events:none;animation:srThumbIn .12s ease-out}
.sr-thumb-preview img{width:100%;height:100%;object-fit:contain;display:block}
@keyframes srThumbIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
.sr-item-body{flex:1;min-width:0}
.sr-item-label{font-weight:500;color:#343a40;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.sr-item-sub{font-size:11.5px;color:#878a99;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.sr-item-ext-badge{font-size:9.5px;font-weight:700;background:#0ab39c15;color:#0ab39c;padding:2px 7px;border-radius:99px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}
.sr-item mark{background:#fff3cd;color:#856404;padding:0 2px;border-radius:2px;font-weight:600}
.sr-error{padding:14px 18px;color:#d03923;font-size:12.5px;background:#fde8e4;border-radius:0 0 10px 10px}
.sr-mode-banner{padding:8px 14px;font-size:11px;color:#878a99;background:linear-gradient(90deg, rgba(10,179,156,.05), transparent);border-bottom:1px solid #f5f5f5;display:flex;align-items:center;gap:7px}
.sr-mode-banner i{color:#0ab39c}
@keyframes spin{to{transform:rotate(360deg)}}

.notif-dot{display:none;position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:#f06548;border:2px solid #fff}
.notif-dot.show{display:block}

.page-fade{ transition:opacity .1s ease; }
@keyframes pgFade { from { opacity:1 } to { opacity:1 } }

/* Custom SVG icons (uploaded sidebar icons) */
.sb-svg-icon{width:18px;height:18px;flex-shrink:0;filter:brightness(0) invert(1) opacity(0.62);transition:filter .15s}
[data-sidebar="light"] .sb-svg-icon{filter:brightness(0) opacity(0.55)}
#navbar-nav .nav-link:hover .sb-svg-icon,
#navbar-nav .nav-link.active .sb-svg-icon{filter:brightness(0) invert(1) opacity(1)}
[data-sidebar="light"] #navbar-nav .nav-link:hover .sb-svg-icon,
[data-sidebar="light"] #navbar-nav .nav-link.active .sb-svg-icon{filter:brightness(0) opacity(1)}

/* header widgets (actions, notifications) */
            .my-actions-badge-active { background: #fef2f2; color: #b91c1c; cursor: pointer; }
            .my-actions-badge-zero   { background: #f0fdf4; color: #15803d; cursor: pointer; }
            .my-actions-trigger:focus-visible { outline: 2px solid var(--primary, #405189); outline-offset: 2px; border-radius: 999px; }
            .my-actions-panel { min-width: 380px; max-width: 90vw; border: 1px solid #e2e8f0; box-shadow: 0 12px 32px rgba(15,23,42,.16); border-radius: 10px; overflow: hidden; }
            .my-actions-hd { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #f8fafc; border-bottom: 1px solid #eef0f3; }
            .my-actions-hd strong { font-size: 13px; color: #1f2937; }
            .my-actions-viewall { font-size: 11px; color: var(--primary, #405189); text-decoration: none; font-weight: 500; }
            .my-actions-viewall:hover { text-decoration: underline; }
            .my-actions-empty { padding: 28px 20px; text-align: center; color: #6b7280; font-size: 13px; }
            .my-actions-empty i { font-size: 28px; opacity: .35; display: block; margin-bottom: 8px; }
            .my-actions-empty small { display: block; font-size: 11px; color: #9ca3af; margin-top: 2px; }
            .my-actions-list { max-height: 440px; overflow-y: auto; }
            .my-actions-item { display: flex; gap: 0; padding: 0; color: inherit; text-decoration: none; border-bottom: 1px solid #f1f5f9; transition: background-color .12s; }
            .my-actions-item:last-child { border-bottom: 0; }
            .my-actions-item:hover { background: #f8fafc; }
            .my-actions-item-bar { width: 3px; flex-shrink: 0; }
            .my-actions-item-body { padding: 10px 14px; flex: 1; min-width: 0; }
            .my-actions-item-note { font-size: 13px; line-height: 1.4; color: #1f2937; font-weight: 500; margin-bottom: 4px; }
            .my-actions-item-meta { display: flex; gap: 14px; flex-wrap: wrap; font-size: 11px; align-items: center; }
            .my-actions-item-tm { color: #475569; font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
            .my-actions-item-tm i { font-size: 12px; color: var(--primary, #405189); }
            .my-actions-item-tmname { font-weight: 400; color: #6b7280; }
            .my-actions-item-due { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; }
            .my-actions-item-assignee { display: inline-flex; align-items: center; gap: 4px; color: #475569; font-weight: 500; font-size: 11px; }
            .my-actions-item-assignee i { font-size: 12px; color: #94a3b8; }
            .my-actions-firm-link { display: block; padding: 10px 16px; font-size: 12px; font-weight: 600; color: var(--primary, #405189); background: #f8fafc; border-top: 1px solid #eef0f3; text-decoration: none; text-align: center; }
            .my-actions-firm-link:hover { background: #eef4ff; }
            .notif-trigger { position: relative; }
            .notif-trigger.pulse i { animation: notifPulse 1s ease-in-out 2; transform-origin: center top; }
            @keyframes notifPulse {
              0%   { transform: rotate(0); }
              15%  { transform: rotate(-15deg); }
              30%  { transform: rotate(12deg); }
              45%  { transform: rotate(-10deg); }
              60%  { transform: rotate(8deg); }
              75%  { transform: rotate(-4deg); }
              100% { transform: rotate(0); }
            }
            .notif-badge {
              position: absolute; top: -2px; right: -2px;
              min-width: 18px; height: 18px; padding: 0 5px;
              background: #dc2626; color: #fff;
              border-radius: 999px;
              font-size: 10.5px; font-weight: 700;
              display: inline-flex; align-items: center; justify-content: center;
              border: 2px solid #fff;
              line-height: 1;
              transition: transform .18s, background-color .18s;
            }
            .notif-badge.is-zero { background: #94a3b8; opacity: .55; }
            .notif-badge.tb-act-badge { background: #f06548; }
            /* v2.1.1 — "Actions due" pill */
            .tb-actpill{display:inline-flex;align-items:center;gap:8px;height:38px;margin:auto 6px auto 0;padding:0 14px 0 8px;border-radius:19px;font:700 12.5px Inter,sans-serif;white-space:nowrap;cursor:pointer;border:1px solid;transition:filter .15s}
            .tb-actpill:hover{filter:brightness(.97)}
            .tb-actpill .n{border-radius:11px;min-width:22px;height:22px;padding:0 5px;display:grid;place-items:center;font-size:11.5px;color:#fff}
            .tb-actpill small{font-weight:600;font-size:12px}
            .tb-actpill.t-hot{background:#fff1ec;border-color:#f7c4b5;color:#b42318}.tb-actpill.t-hot .n{background:#f06548;animation:tbActP 2s infinite}.tb-actpill.t-hot small{color:#c2410c}
            .tb-actpill.t-warm{background:#fff8e6;border-color:#f6dc9c;color:#8a5a00}.tb-actpill.t-warm .n{background:#f0a400}
            .tb-actpill.t-calm{background:#eef1fb;border-color:#d7ddf3;color:#2c3a74}.tb-actpill.t-calm .n{background:#405189}
            @keyframes tbActP{0%{box-shadow:0 0 0 0 rgba(240,101,72,.45)}70%{box-shadow:0 0 0 7px rgba(240,101,72,0)}100%{box-shadow:0 0 0 0 rgba(240,101,72,0)}}
            @media (max-width:900px){.tb-actpill small{display:none}.tb-actpill{padding:0 10px 0 6px}}
            @media (prefers-reduced-motion:reduce){.tb-actpill .n{animation:none !important}}
            .tb-quick:hover i, .my-actions-trigger:hover i { color: var(--primary); }
            .notif-badge.bump { animation: notifBump .4s ease-out; }
            @keyframes notifBump {
              0% { transform: scale(1); }
              50% { transform: scale(1.35); }
              100% { transform: scale(1); }
            }
            .notif-panel { min-width: 380px; max-width: 90vw; border: 1px solid #e2e8f0; box-shadow: 0 12px 32px rgba(15,23,42,.16); border-radius: 10px; overflow: hidden; }
            .notif-hd { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #f8fafc; border-bottom: 1px solid #eef0f3; }
            .notif-hd strong { font-size: 13px; color: #1f2937; }
            .notif-read-all { font-size: 11px; color: #6b7280; background: transparent; border: 0; cursor: pointer; padding: 2px 4px; display: inline-flex; align-items: center; gap: 4px; }
            .notif-read-all:hover { color: var(--primary, #405189); }
            .notif-sound-toggle { font-size: 14px; color: #6b7280; background: transparent; border: 0; cursor: pointer; padding: 2px 4px; display: inline-flex; align-items: center; }
            .notif-sound-toggle:hover { color: var(--primary, #405189); }
            .notif-sound-toggle.is-muted { color: #cbd5e1; }
            .notif-viewall { font-size: 11px; color: var(--primary, #405189); text-decoration: none; font-weight: 500; }
            .notif-viewall:hover { text-decoration: underline; }
            .notif-list { max-height: 440px; overflow-y: auto; }
            .notif-item { display: flex; gap: 0; padding: 0; color: inherit; text-decoration: none; border-bottom: 1px solid #f1f5f9; transition: background-color .12s; }
            .notif-item:last-child { border-bottom: 0; }
            .notif-item:hover { background: #f8fafc; }
            .notif-item.unread { background: #f0f9ff; }
            .notif-item.unread:hover { background: #e0f2fe; }
            .notif-item-bar { width: 3px; flex-shrink: 0; }
            .notif-item-icon { flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 12px 0 0 12px; }
            .notif-item-icon i { font-size: 16px; }
            .notif-item-body { padding: 10px 14px; flex: 1; min-width: 0; }
            .notif-item-title { font-size: 12.5px; line-height: 1.4; color: #1f2937; font-weight: 600; margin-bottom: 2px; }
            .notif-item-body-text { font-size: 11.5px; color: #6b7280; margin-bottom: 4px; }
            .notif-item-time { font-size: 10.5px; color: #9ca3af; font-variant-numeric: tabular-nums; }
            .notif-empty { padding: 36px 20px; text-align: center; color: #6b7280; font-size: 13px; }
            .notif-empty i { font-size: 28px; opacity: .35; display: block; margin-bottom: 8px; }
            .notif-loading { padding: 8px 14px; }
            .notif-skel { height: 44px; background: linear-gradient(90deg, #f1f5f9 0%, #e2e8f0 50%, #f1f5f9 100%); background-size: 200% 100%; border-radius: 6px; margin-bottom: 8px; animation: notifSkel 1.4s linear infinite; }
            @keyframes notifSkel {
              0%   { background-position: 200% 0; }
              100% { background-position: -200% 0; }
            }

/* v2.1.1 — skeleton shown while an in-app page loads (ipb-nav.js) */
.ipb-skel{position:absolute;z-index:5;animation:skIn .15s ease;min-height:calc(100vh - 150px);background:var(--vz-body-bg,#f6f4f1);transition:opacity .18s ease}
.ipb-skel.out{opacity:0;pointer-events:none}
@keyframes skIn{from{opacity:0}to{opacity:1}}
.ipb-skel .sk{display:block;border-radius:8px;background:linear-gradient(90deg,#e9e7e2 25%,#f4f2ee 37%,#e9e7e2 63%);background-size:400% 100%;animation:skShine 1.3s ease infinite}
@keyframes skShine{0%{background-position:100% 50%}100%{background-position:0 50%}}
@media (prefers-reduced-motion:reduce){.ipb-skel .sk{animation:none}}
.ipb-skel .sk-hd{margin:6px 0 24px}
.ipb-skel .sk-card{background:#fff;border:1px solid #ece9e3;border-radius:14px;padding:18px}
.ipb-skel .sk-row4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}
.ipb-skel .sk-table{padding:0}
.ipb-skel .sk-tools{display:flex;gap:10px;align-items:center;padding:18px;border-bottom:1px solid #f0eee9}
.ipb-skel .sk-tr{display:flex;gap:18px;align-items:center;padding:15px 18px;border-bottom:1px solid #f4f2ee}
.ipb-skel .sk-tr:last-child{border-bottom:0}
.ipb-skel .sk-col{flex:1;min-width:0;display:block}
.ipb-skel .sk-form{margin-bottom:16px}
.ipb-skel .sk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px;margin-top:20px}
.ipb-skel .sk-grid span{display:block}
.ipb-skel .sk-detail{display:flex;gap:22px;align-items:center;margin-bottom:16px}
.ipb-skel .sk-2col{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}
.ipb-skel .sk-2col .sk-card{padding:6px 0}.ipb-skel .sk-2col .sk-card:last-child{padding:18px}
@media (max-width:900px){.ipb-skel .sk-row4{grid-template-columns:repeat(2,minmax(0,1fr))}.ipb-skel .sk-2col,.ipb-skel .sk-grid{grid-template-columns:1fr}}
