/* ═══════════════════════════════════════════════════════════════
   BOOTSTRAP VARIABLE OVERRIDES & CLASS OVERRIDES
   Semua customasi dilakukan dengan override variable/class Bootstrap.
   Tidak ada utility class baru — hanya override bawaan Bootstrap.
═══════════════════════════════════════════════════════════════ */

/* Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500&display=swap');

:root,
[data-bs-theme="light"] {
  /* Brand → map ke Bootstrap primary */
  --bs-primary:             #6366f1;
  --bs-primary-rgb:         99, 102, 241;
  --bs-link-color:          #6366f1;
  --bs-link-hover-color:    #4f46e5;

  /* Internal accent vars ( dipakai oleh component CSS ) */
  --pm-accent:              #6366f1;
  --pm-accent-rgb:          99, 102, 241;
  --pm-accent-subtle:       #eef2ff;
  --pm-accent-hover:        #4f46e5;
  --pm-accent-glow:         rgba(99,102,241,.15);

  /* Glass-badge vars */
  --pm-badge-primary-bg:    rgba(99,102,241,.10);
  --pm-badge-primary-color: #4f46e5;
  --pm-badge-success-bg:    rgba(22,163,74,.10);
  --pm-badge-success-color: #15803d;
  --pm-badge-warning-bg:    rgba(217,119,6,.10);
  --pm-badge-warning-color: #b45309;
  --pm-badge-danger-bg:     rgba(220,38,38,.10);
  --pm-badge-danger-color:  #b91c1c;
  --pm-badge-info-bg:       rgba(6,182,212,.10);
  --pm-badge-info-color:    #0e7490;
  --pm-badge-secondary-bg:  rgba(107,114,128,.10);
  --pm-badge-secondary-color:#4b5563;
  --pm-badge-purple-bg:     rgba(147,51,234,.10);
  --pm-badge-purple-color:  #7e22ce;
  --pm-badge-orange-bg:     rgba(234,88,12,.10);
  --pm-badge-orange-color:  #c2410c;

  /* Body */
  --bs-body-bg:             #f4f5f9;
  --bs-body-color:          #1a1d2e;
  --bs-secondary-color:     #6b7280;
  --bs-tertiary-color:      #9ca3af;
  --bs-border-color:        #e5e7eb;
  --bs-border-color-translucent: rgba(0,0,0,.06);

  /* Cards — flat, no shadow */
  --bs-card-bg:             #ffffff;
  --bs-card-border-color:   var(--bs-border-color);
  --bs-card-border-radius:  .625rem;
  --bs-card-box-shadow:     none;

  /* Table */
  --bs-table-bg:            #ffffff;
  --bs-table-striped-bg:    #fafafa;
  --bs-table-border-color:  var(--bs-border-color);

  /* Form */
  --bs-border-radius:       .5rem;
  --bs-border-radius-sm:    .375rem;
  --bs-border-radius-lg:    .625rem;
  --bs-border-radius-pill:  9999px;

  /* Font */
  --bs-body-font-family:    'DM Sans', sans-serif;
  --bs-font-monospace:      'JetBrains Mono', monospace;
  --bs-body-font-size:      .875rem;

  /* Progress */
  --bs-progress-height:     .375rem;
  --bs-progress-border-radius: 9999px;
  --bs-progress-bg:         #f0f1f6;

  /* Dropdown */
  --bs-dropdown-border-color: var(--bs-border-color);
  --bs-dropdown-border-radius: .625rem;
  --bs-dropdown-box-shadow: none;
  --bs-dropdown-link-hover-bg: var(--pm-accent-subtle);
  --bs-dropdown-link-hover-color: var(--pm-accent);

  /* Structural */
  --pm-sidebar-bg:          #ffffff;
  --pm-sidebar-w:           244px;
  --pm-topbar-bg:           #ffffff;
  --pm-muted-bg:            #f0f1f6;
  --pm-code-bg:             #f4f5f9;

  /* Content / component backgrounds */
  --pm-content-bg:          #ffffff;
  --pm-content-bg-subtle:   #fafafa;
  --pm-form-bg:             #ffffff;
}

[data-bs-theme="dark"] {
  --bs-primary:             #818cf8;
  --bs-primary-rgb:         129,140,248;
  --bs-link-color:          #818cf8;
  --bs-link-hover-color:    #a5b4fc;

  --pm-accent:              #818cf8;
  --pm-accent-rgb:          129,140,248;
  --pm-accent-subtle:       rgba(99,102,241,.15);
  --pm-accent-hover:        #a5b4fc;
  --pm-accent-glow:         rgba(129,140,248,.18);

  --pm-badge-primary-bg:    rgba(129,140,248,.15);
  --pm-badge-primary-color: #a5b4fc;
  --pm-badge-success-bg:    rgba(34,197,94,.12);
  --pm-badge-success-color: #4ade80;
  --pm-badge-warning-bg:    rgba(251,191,36,.12);
  --pm-badge-warning-color: #fbbf24;
  --pm-badge-danger-bg:     rgba(248,113,113,.12);
  --pm-badge-danger-color:  #f87171;
  --pm-badge-info-bg:       rgba(34,211,238,.12);
  --pm-badge-info-color:    #22d3ee;
  --pm-badge-secondary-bg:  rgba(156,163,175,.12);
  --pm-badge-secondary-color:#9ca3af;
  --pm-badge-purple-bg:     rgba(192,132,252,.12);
  --pm-badge-purple-color:  #c084fc;
  --pm-badge-orange-bg:     rgba(251,146,60,.12);
  --pm-badge-orange-color:  #fb923c;

  --bs-body-bg:             #0d0e1a;
  --bs-body-color:          #e2e4ef;
  --bs-secondary-color:     #9ca3af;
  --bs-tertiary-color:      #6b7280;
  --bs-border-color:        #1f2137;
  --bs-border-color-translucent: rgba(255,255,255,.06);

  --bs-card-bg:             #181a2e;
  --bs-card-border-color:   var(--bs-border-color);
  --bs-card-box-shadow:     none;

  --bs-table-bg:            #181a2e;
  --bs-table-striped-bg:    rgba(255,255,255,.02);
  --bs-table-border-color:  var(--bs-border-color);

  --bs-dropdown-border-color: var(--bs-border-color);
  --bs-dropdown-bg:         #181a2e;
  --bs-dropdown-link-color: var(--bs-body-color);
  --bs-dropdown-link-hover-bg: var(--pm-accent-subtle);
  --bs-dropdown-link-hover-color: var(--pm-accent);

  --pm-sidebar-bg:          rgba(13,14,26,.85);
  --pm-topbar-bg:           rgba(13,14,26,.85);
  --pm-muted-bg:            #1a1d30;
  --pm-code-bg:             #1a1d30;
  --bs-progress-bg:         #1a1d30;

  --pm-content-bg:          #13142a;
  --pm-content-bg-subtle:   #161830;
  --pm-form-bg:             #1a1d30;
}

/* ═══════════════════════════════════════════════════════════════
   BOOTSTRAP CLASS OVERRIDES — mengubah nilai class bawaan
═══════════════════════════════════════════════════════════════ */

/* Font-size utility overrides untuk dashboard compact */
.fs-1 { font-size: 1.25rem !important; }
.fs-2 { font-size: .9375rem !important; }
.fs-3 { font-size: .875rem !important; }
.fs-4 { font-size: .8125rem !important; }
.fs-5 { font-size: .75rem !important; }
.fs-6 { font-size: .6875rem !important; }

/* Body */
body {
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-body-font-size);
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  min-height: 100vh;
  transition: background .25s, color .25s;
}

/* Monospace + size */
code, .font-monospace { font-size: .75rem; }
code { background: var(--pm-code-bg); padding: .125rem .375rem; border-radius: .3125rem; color: var(--pm-accent); }

/* Kbd */
kbd { border-radius: .3125rem; font-family: var(--bs-font-monospace); font-size: .7rem; padding: .1em .35em; background: var(--pm-muted-bg); color: var(--bs-body-color); border: 1px solid var(--bs-border-color); }

/* Placeholder / skeleton */
.placeholder { background: var(--pm-muted-bg) !important; }

/* Cards — flat no shadow */
.card { border-color: var(--bs-border-color); box-shadow: none !important; background-color: var(--pm-content-bg) !important; }
.card-header { background: var(--pm-content-bg); border-color: var(--bs-border-color); }
.card-body { background-color: var(--pm-content-bg); }

/* Table */
.table { --bs-table-bg: var(--pm-content-bg); font-size: .8125rem; }
.table thead th { font-size: .6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--bs-tertiary-color); white-space: nowrap; vertical-align: middle; border-bottom-width: 1px; padding: .5625rem .75rem; background: var(--pm-content-bg); }
.table tbody td { padding: .6875rem .75rem; vertical-align: middle; }

/* Form backgrounds */
.form-control, .form-select { background-color: var(--pm-form-bg); border-color: var(--bs-border-color); color: var(--bs-body-color); }
.form-control:focus, .form-select:focus { border-color: var(--pm-accent); box-shadow: 0 0 0 3px var(--pm-accent-glow); background-color: var(--pm-form-bg); color: var(--bs-body-color); }
.form-check-input:checked { background-color: var(--pm-accent); border-color: var(--pm-accent); }
.form-check-input:focus { box-shadow: 0 0 0 3px var(--pm-accent-glow); }
.form-check-label { font-size: .8125rem; }
.form-range { accent-color: var(--pm-accent); }
.input-group-text { border-color: var(--bs-border-color); background: var(--pm-muted-bg); color: var(--bs-secondary-color); font-size: .8125rem; }

/* List group */
.list-group-item { background-color: var(--pm-content-bg); border-color: var(--bs-border-color); }

/* Accordion */
.accordion-item { background-color: var(--pm-content-bg); border-color: var(--bs-border-color); }
.accordion-body { background-color: var(--pm-content-bg); }
.accordion-button { background-color: var(--pm-content-bg); }

/* Tab content pane */
.tab-pane { background-color: transparent; }

/* Pagination */
.page-link { background-color: var(--pm-content-bg); }

/* Dropdown menu bg override */
.dropdown-menu { background-color: var(--pm-content-bg) !important; }

/* Modal */
.modal-content { background-color: var(--pm-content-bg) !important; }

/* Card section header bg */
.pm-card-hd { background-color: var(--pm-content-bg); }

/* Btn primary override */
.btn-primary { background: var(--pm-accent); border-color: var(--pm-accent); }
.btn-primary:hover, .btn-primary:focus { background: var(--pm-accent-hover); border-color: var(--pm-accent-hover); box-shadow: 0 0 0 3px var(--pm-accent-glow); }
.btn-outline-primary { border-color: var(--pm-accent); color: var(--pm-accent); }
.btn-outline-primary:hover { background: var(--pm-accent); border-color: var(--pm-accent); box-shadow: 0 0 0 3px var(--pm-accent-glow); }

/* Dropdown */
.dropdown-menu { padding: .3125rem; font-size: .8125rem; box-shadow: 0 8px 24px rgba(0,0,0,.1); }
.dropdown-item { border-radius: .375rem; padding: .4375rem .75rem; }

/* Badge glass override */
.badge { font-weight: 600; letter-spacing: .01em; }
.badge.bg-primary, .badge.text-bg-primary,
.badge.pm-primary   { background: var(--pm-badge-primary-bg) !important; color: var(--pm-badge-primary-color) !important; }
.badge.bg-success, .badge.text-bg-success,
.badge.pm-success   { background: var(--pm-badge-success-bg) !important; color: var(--pm-badge-success-color) !important; }
.badge.bg-warning, .badge.text-bg-warning,
.badge.pm-warning   { background: var(--pm-badge-warning-bg) !important; color: var(--pm-badge-warning-color) !important; }
.badge.bg-danger, .badge.text-bg-danger,
.badge.pm-danger    { background: var(--pm-badge-danger-bg)  !important; color: var(--pm-badge-danger-color)  !important; }
.badge.bg-info, .badge.text-bg-info,
.badge.pm-info      { background: var(--pm-badge-info-bg)    !important; color: var(--pm-badge-info-color)    !important; }
.badge.bg-secondary, .badge.text-bg-secondary,
.badge.pm-secondary { background: var(--pm-badge-secondary-bg)!important;color: var(--pm-badge-secondary-color)!important; }
.badge.pm-purple    { background: var(--pm-badge-purple-bg)  !important; color: var(--pm-badge-purple-color)  !important; }
.badge.pm-orange    { background: var(--pm-badge-orange-bg)  !important; color: var(--pm-badge-orange-color)  !important; }

/* Alert glass */
.alert { border-left: 3px solid; border-radius: .5rem; font-size: .8125rem; }
.alert-success { background: var(--pm-badge-success-bg); border-color: var(--pm-badge-success-color); color: var(--pm-badge-success-color); }
.alert-warning { background: var(--pm-badge-warning-bg); border-color: var(--pm-badge-warning-color); color: var(--pm-badge-warning-color); }
.alert-danger  { background: var(--pm-badge-danger-bg);  border-color: var(--pm-badge-danger-color);  color: var(--pm-badge-danger-color);  }
.alert-info    { background: var(--pm-badge-info-bg);    border-color: var(--pm-badge-info-color);    color: var(--pm-badge-info-color);    }
.alert-primary { background: var(--pm-badge-primary-bg); border-color: var(--pm-badge-primary-color); color: var(--pm-badge-primary-color); }
.alert-secondary{ background: var(--pm-badge-secondary-bg);border-color:var(--pm-badge-secondary-color);color:var(--pm-badge-secondary-color); }
.alert .fw-normal { color: var(--bs-body-color); }

/* Accordion override */
.accordion-button { font-size: .8125rem; font-weight: 600; }
.accordion-button:not(.collapsed) { color: var(--pm-accent); background: var(--pm-accent-subtle); box-shadow: none; }
.accordion-button:focus { box-shadow: none; }
.accordion-item { border-color: var(--bs-border-color); }
.accordion-body { font-size: .8125rem; }

/* Tabs override */
.nav-tabs { border-color: var(--bs-border-color); }
.nav-tabs .nav-link { color: var(--bs-secondary-color); border-color: transparent; font-size: .8125rem; }
.nav-tabs .nav-link.active { color: var(--pm-accent); border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-card-bg); font-weight: 600; }
.nav-tabs .nav-link:hover:not(.active) { color: var(--pm-accent); background: var(--pm-accent-subtle); border-color: transparent; }
.nav-pills .nav-link { font-size: .8125rem; border-radius: .4375rem; color: var(--bs-secondary-color); }
.nav-pills .nav-link.active { background: var(--pm-accent); color: #fff; }
.nav-pills .nav-link:hover:not(.active) { background: var(--pm-accent-subtle); color: var(--pm-accent); }
.tab-content { font-size: .8125rem; }

/* Pagination */
.page-link { border-color: var(--bs-border-color); color: var(--bs-secondary-color); font-size: .8125rem; }
.page-link:hover { color: var(--pm-accent); background: var(--pm-accent-subtle); border-color: var(--pm-accent); }
.page-item.active .page-link { background: var(--pm-accent); border-color: var(--pm-accent); }
.page-item.disabled .page-link { background: transparent; }

/* Breadcrumb */
.breadcrumb { font-size: .78125rem; }
.breadcrumb-item.active { color: var(--bs-body-color); }
.breadcrumb-item + .breadcrumb-item::before { color: var(--bs-tertiary-color); }

/* Spinner */
.spinner-border.text-primary, .spinner-grow.text-primary { color: var(--pm-accent) !important; }

/* Modal */
.modal-content { border-color: var(--bs-border-color); border-radius: .75rem; box-shadow: none; background: var(--bs-card-bg); }
.modal-header { border-color: var(--bs-border-color); }
.modal-body { font-size: .8125rem; }
.modal-footer { border-color: var(--bs-border-color); }

/* Scrollbar */
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--bs-border-color); border-radius: 9999px; }

/* ═══════════════════════════════════════════════════════════════
   COMPONENT CSS — structural, tidak ada di Bootstrap
═══════════════════════════════════════════════════════════════ */

/* Sidebar */
.pm-sidebar {
  width: var(--pm-sidebar-w); height: 100vh;
  background: var(--pm-sidebar-bg);
  border-right: 1px solid var(--bs-border-color);
  display: flex; flex-direction: column;
  position: fixed; top: 0; left: 0; z-index: 1040;
  transition: transform .28s cubic-bezier(.4,0,.2,1), background .25s;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  overflow: hidden;
}
.pm-sidebar-logo { padding: 1.125rem 1rem .875rem; border-bottom: 1px solid var(--bs-border-color); flex-shrink: 0; display:flex; justify-content: center;}
.pm-logo-mark {
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.pm-logo-mark img {
  width: 100%; height: 100%; object-fit: contain;
}
.pm-logo-text { font-weight: 700; font-size: .9375rem; letter-spacing: -.025em; color: var(--bs-body-color); }
.pm-logo-text em { font-style: normal; color: var(--pm-accent); }

/* Nav */
.pm-nav-label { font-size: .625rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--bs-tertiary-color); padding: 0 .625rem; }
.pm-nav-item {
  display: flex; align-items: center; gap: .5rem;
  padding: .4375rem .625rem; border-radius: .4375rem;
  color: var(--bs-secondary-color); text-decoration: none;
  font-size: .8125rem; font-weight: 500; line-height: 1.4;
  cursor: pointer; border: none; background: transparent;
  width: 100%; position: relative;
  transition: background .12s, color .12s;
}
.pm-nav-item:hover { background: var(--pm-accent-subtle); color: var(--pm-accent); }
.pm-nav-item.active { background: var(--pm-accent-subtle); color: var(--pm-accent); font-weight: 600; }
.pm-nav-item.active::before { content: ''; position: absolute; left: 0; top: 18%; bottom: 18%; width: 2.5px; background: var(--pm-accent); border-radius: 0 3px 3px 0; }
.pm-nav-item > i:first-child { font-size: .9375rem; width: 1rem; text-align: center; flex-shrink: 0; }
.pm-nav-chevron { font-size: .6rem; margin-left: auto; transition: transform .2s; }
.pm-nav-chevron.open { transform: rotate(90deg); }

/* Submenu */
.pm-submenu { margin-left: .875rem; padding-left: .5rem; border-left: 1.5px solid var(--bs-border-color); overflow: hidden; transition: max-height .22s ease; max-height: 0; }
.pm-submenu .pm-nav-item { font-size: .78125rem; padding: .3125rem .5rem; }
.pm-submenu .pm-submenu { margin-left: .75rem; }
.pm-submenu.show { max-height: 600px; }

.pm-sidebar-nav { flex: 1; overflow-y: auto; overflow-x: hidden; padding: .5rem .625rem; }
.pm-sidebar-footer { flex-shrink: 0; padding: .625rem; border-top: 1px solid var(--bs-border-color); }

/* Main */
.pm-main { margin-left: var(--pm-sidebar-w); flex: 1; display: flex; flex-direction: column; min-height: 100vh; transition: margin-left .28s cubic-bezier(.4,0,.2,1); }

/* Topbar */
.pm-topbar {
  position: sticky; top: 0; z-index: 1030;
  background: var(--pm-topbar-bg);
  border-bottom: 1px solid var(--bs-border-color);
  height: 56px; display: flex; align-items: center;
  padding: 0 1.25rem; gap: .75rem;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  transition: background .25s; flex-shrink: 0;
}
.pm-topbar-brand { display: none; }
.pm-content { padding: 1.5rem 1.25rem; flex: 1; }
.pm-title-bar { width: 2rem; height: 2.5px; background: var(--pm-accent); border-radius: 9999px; }

/* Icon button */
.pm-icon-btn {
  width: 32px; height: 32px; border: 1px solid var(--bs-border-color);
  border-radius: .4375rem; background: transparent; color: var(--bs-secondary-color);
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; font-size: .875rem; position: relative;
  transition: border-color .12s, color .12s, background .12s;
}
.pm-icon-btn:hover { border-color: var(--pm-accent); color: var(--pm-accent); background: var(--pm-accent-subtle); }

/* Notif popup */
.pm-notif-popup { position: absolute; top: calc(100% + 8px); right: 0; width: 300px; background: var(--bs-card-bg); border: 1px solid var(--bs-border-color); border-radius: .625rem; z-index: 1050; overflow: hidden; }
.pm-notif-item { display: flex; gap: .625rem; padding: .625rem .875rem; border-bottom: 1px solid var(--bs-border-color-translucent); font-size: .78125rem; cursor: pointer; transition: background .12s; }
.pm-notif-item:hover { background: var(--pm-muted-bg); }
.pm-notif-item:last-child { border-bottom: none; }
.pm-notif-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; margin-top: .3125rem; }
.pm-notif-dot.opacity-50 { opacity: .35; }

/* Stat icon */
.pm-stat-icon { width: 34px; height: 34px; background: var(--pm-accent-subtle); border-radius: .4375rem; display: inline-flex; align-items: center; justify-content: center; color: var(--pm-accent); font-size: .9375rem; flex-shrink: 0; }

/* Shortcut card */
.pm-shortcut { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; padding: 1rem .5rem; text-decoration: none; color: var(--bs-secondary-color); border: 1px solid var(--bs-border-color); border-radius: .625rem; background: var(--bs-card-bg); transition: border-color .15s, color .15s, background .15s; cursor: pointer; }
.pm-shortcut:hover { border-color: var(--pm-accent); color: var(--pm-accent); background: var(--pm-accent-subtle); }
.pm-shortcut-icon { width: 36px; height: 36px; background: var(--pm-muted-bg); border-radius: .5rem; display: flex; align-items: center; justify-content: center; font-size: 1rem; transition: background .15s; }
.pm-shortcut:hover .pm-shortcut-icon { background: var(--pm-accent-subtle); }

/* Thin progress bar */
.pm-prog { height: 4px; border-radius: 9999px; background: var(--pm-muted-bg); overflow: hidden; }
.pm-prog-fill { height: 100%; border-radius: 9999px; background: var(--pm-accent); transition: width .5s ease; }
.pm-prog-fill.warn  { background: var(--pm-badge-warning-color); }
.pm-prog-fill.danger{ background: var(--pm-badge-danger-color); }

/* Status dot */
.pm-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; flex-shrink: 0; }
.pm-dot-success { background: var(--pm-badge-success-color); box-shadow: 0 0 0 2.5px var(--pm-badge-success-bg); }
.pm-dot-warning { background: var(--pm-badge-warning-color); box-shadow: 0 0 0 2.5px var(--pm-badge-warning-bg); }
.pm-dot-danger  { background: var(--pm-badge-danger-color);  box-shadow: 0 0 0 2.5px var(--pm-badge-danger-bg);  }
.pm-dot-info    { background: var(--pm-badge-info-color);    box-shadow: 0 0 0 2.5px var(--pm-badge-info-bg);    }
.pm-dot-muted   { background: var(--bs-tertiary-color); }

/* Avatar — default 30px */
.pm-avatar { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--pm-accent); color: #fff; font-weight: 700; flex-shrink: 0; width: 30px; height: 30px; font-size: .75rem; }
.pm-topbar .pm-avatar { width: 24px; height: 24px; font-size: .6875rem; }
.pm-topbar-brand .pm-logo-mark { width: 26px; height: 26px; font-size: .75rem; }

/* Timeline */
.pm-timeline { list-style: none; padding: 0; margin: 0; }
.pm-timeline-item { display: flex; gap: .75rem; }
.pm-timeline-item:not(:last-child) .pm-tl-line { flex: 1; }
.pm-tl-left { display: flex; flex-direction: column; align-items: center; gap: 0; }
.pm-tl-dot { width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--pm-accent); background: var(--bs-card-bg); flex-shrink: 0; }
.pm-tl-dot.active { border-color: var(--pm-accent) !important; background: var(--pm-accent) !important; opacity: .9; }
.pm-tl-line { width: 1.5px; background: var(--bs-border-color); flex: 1; min-height: 20px; }
.pm-tl-body { padding-bottom: 1rem; flex: 1; }

/* Toast area */
.pm-toast-area { position: fixed; bottom: 1.25rem; right: 1.25rem; z-index: 1090; display: flex; flex-direction: column; gap: .5rem; pointer-events: none; }
.pm-toast { pointer-events: all; min-width: 260px; max-width: 320px; background: var(--bs-card-bg); border: 1px solid var(--bs-border-color); border-radius: .625rem; padding: .75rem 1rem; display: flex; gap: .625rem; align-items: flex-start; font-size: .8125rem; animation: pmSlideIn .25s ease; }
@keyframes pmSlideIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }

/* Card section header */
.pm-card-hd { padding: .75rem 1rem; border-bottom: 1px solid var(--bs-border-color); display: flex; align-items: center; gap: .5rem; }
.pm-card-hd i { color: var(--pm-accent); font-size: .875rem; }
.pm-card-hd-title { font-size: .8125rem; font-weight: 600; }

/* Overlay */
.pm-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1039; backdrop-filter: blur(2px); }
.pm-overlay.show { display: block; }

/* Responsive */
@media (max-width: 991.98px) {
  .pm-sidebar { transform: translateX(-100%); }
  .pm-sidebar.show { transform: translateX(0); }
  .pm-main { margin-left: 0; }
  .pm-topbar-brand { display: flex; align-items: center; gap: .5rem; }
  .pm-content { padding: 1rem; }
}

/* List group flush override */
.list-group-item { font-size: .8125rem; }

/* Btn-sm font override */
.btn-sm, .form-select-sm, .form-control-sm, .input-group-sm .form-control,
.input-group-sm .input-group-text { font-size: .78125rem; }

/* Form field height override */
.form-control-sm, .form-select-sm {
  min-height: 38px;
  padding-top: .4rem;
  padding-bottom: .4rem;
}

/* Progress bar height override — already set via --bs-progress-height */
.progress { height: var(--bs-progress-height); }

/* Progress label sizing */
.progress-bar-label { font-size: .71875rem; }

/* Modal form label override */
.modal .form-label { font-size: .78125rem; }

/* Tooltip */
.tooltip-inner { background: var(--bs-body-color); font-size: .75rem; border-radius: .375rem; }
.bs-tooltip-top .tooltip-arrow::before { border-top-color: var(--bs-body-color); }