:root {
    --pm-ink: #000000;
    --pm-ink-secondary: #5a6069;
    --pm-ink-tertiary: #8b929a;
    --pm-ink-hint: #b0b7bf;
    --pm-surface: #ffffff;
    --pm-surface-dim: #f6f7f9;
    --pm-surface-dimmer: #eef0f3;
    --pm-surface-hover: #f0f1f4;
    --pm-border: #e2e5ea;
    --pm-border-strong: #d0d4da;
    --pm-accent: #2563eb;
    --pm-accent-hover: #1d4ed8;
    --pm-accent-bg: #eff5ff;
    --pm-accent-border: #bfdbfe;
    --pm-accent-text: #1e40af;
    --pm-success: #16a34a;
    --pm-success-bg: #f0fdf4;
    --pm-success-border: #bbf7d0;
    --pm-success-text: #166534;
    --pm-warning: #d97706;
    --pm-warning-bg: #fffbeb;
    --pm-warning-border: #fde68a;
    --pm-warning-text: #92400e;
    --pm-danger: #dc2626;
    --pm-danger-bg: #fef2f2;
    --pm-danger-border: #fecaca;
    --pm-danger-text: #991b1b;
    --pm-info: #6366f1;
    --pm-info-bg: #eef2ff;
    --pm-info-border: #c7d2fe;
    --pm-info-text: #3730a3;
    --pm-muted: #6b7280;
    --pm-muted-bg: #f3f4f6;
    --pm-muted-border: #e5e7eb;
    --pm-muted-text: #374151;
    --pm-red-bg: #fef2f2;
    --pm-red-border: #fecaca;
    --pm-red-text: #b91c1c;
    --pm-green-bg: #f0fdf4;
    --pm-green-border: #bbf7d0;
    --pm-green-text: #166534;
    --pm-blue-bg: #eff6ff;
    --pm-blue-border: #bfdbfe;
    --pm-blue-text: #1e40af;
    --pm-yellow-bg: #fffbeb;
    --pm-yellow-border: #fde68a;
    --pm-yellow-text: #92400e;
    --pm-purple-bg: #faf5ff;
    --pm-purple-border: #e9d5ff;
    --pm-purple-text: #6b21a8;
    --pm-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --pm-mono: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace;
    --pm-text-xs: .6875rem;
    --pm-text-sm: .8125rem;
    --pm-text-base: .9375rem;
    --pm-text-md: 1rem;
    --pm-text-lg: 1.125rem;
    --pm-text-xl: 1.25rem;
    --pm-text-2xl: 1.5rem;
    --pm-radius-sm: .25rem;
    --pm-radius: .5rem;
    --pm-radius-lg: .625rem;
    --pm-radius-xl: .75rem;
    --pm-radius-pill: 9999px;
    --pm-shadow-sm: 0 1px 2px rgba(0,0,0,.05);
    --pm-shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);
    --pm-shadow-md: 0 4px 6px -1px rgba(0,0,0,.08), 0 2px 4px -2px rgba(0,0,0,.04);
    --pm-ease: cubic-bezier(.4,0,.2,1);
    --pm-duration: .15s;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; color: inherit; }
html { font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body { font-family: var(--pm-font); font-size: var(--pm-text-base); font-weight: 400; line-height: 1.5; color: var(--pm-ink); background-color: var(--pm-surface-dim); }

h1, h2, h3, h4, h5, h6 { color: var(--pm-ink); line-height: 1.3; }
h1 { font-size: var(--pm-text-2xl); font-weight: 700; }
h2 { font-size: var(--pm-text-xl); font-weight: 600; }
h3 { font-size: var(--pm-text-lg); font-weight: 600; }
h4 { font-size: var(--pm-text-md); font-weight: 600; }
h5 { font-size: var(--pm-text-base); font-weight: 600; }
h6 { font-size: var(--pm-text-sm); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-secondary); }

a { color: var(--pm-accent); text-decoration: none; }
a:hover { color: var(--pm-accent-hover); text-decoration: underline; }

code { font-family: var(--pm-mono); font-size: .85em; background: var(--pm-surface-dimmer); padding: .125rem .375rem; border-radius: var(--pm-radius-sm); color: var(--pm-ink); }
::selection { background: var(--pm-accent-bg); color: var(--pm-accent-text); }

::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--pm-border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--pm-border-strong); }

/* App Shell */
.pm-app { display: flex; height: 100vh; overflow: hidden; }
.pm-sidebar { width: 264px; background: var(--pm-surface); border-right: 1px solid var(--pm-border); display: flex; flex-direction: column; flex-shrink: 0; }
.pm-sidebar-header { padding: 1rem 1.25rem; border-bottom: 1px solid var(--pm-border); text-align: center; }
.pm-sidebar-nav { flex: 1; overflow-y: auto; padding: .75rem; }
.pm-content { flex: 1; background: var(--pm-surface-dim); overflow: hidden; }
.pm-page { padding: 1.25rem; height: 100%; overflow-y: auto; }

.pm-page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.pm-page-header h1 { display: flex; align-items: center; gap: .5rem; font-size: var(--pm-text-xl); margin: 0; }
.pm-page-header h1 > i { color: var(--pm-accent); font-size: 1.25em; }
.pm-page-actions { display: flex; gap: .5rem; }

/* Logo */
.pm-logo { font-size: var(--pm-text-xl); font-weight: 800; letter-spacing: -.025em; color: var(--pm-ink); text-decoration: none; display: inline-flex; align-items: center; gap: .5rem; line-height: 1; }
.pm-logo:hover { text-decoration: none; color: var(--pm-ink); }
.pm-logo:hover .pm-logo-text { filter: brightness(1.1) saturate(1.15); }
.pm-logo:hover .pm-logo-badge { box-shadow: 0 2px 10px rgba(37,99,235,.4), inset 0 1px 0 rgba(255,255,255,.14); }
.pm-logo-text { background: linear-gradient(135deg, #1e40af 0%, #3b82f6 45%, #60a5fa 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; transition: filter var(--pm-duration) var(--pm-ease); background-size: 200% 200%; animation: pm-logo-grad 8s ease-in-out infinite; }
.pm-logo-badge { position: relative; display: inline-flex; align-items: center; gap: .3rem; background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 60%, #0f172a 100%); color: #fff; font-size: var(--pm-text-sm); font-weight: 700; padding: .22rem .6rem; border-radius: var(--pm-radius-sm); letter-spacing: .05em; box-shadow: 0 1px 3px rgba(37,99,235,.25), inset 0 1px 0 rgba(255,255,255,.08); overflow: hidden; transition: box-shadow var(--pm-duration) var(--pm-ease); }
.pm-logo-badge::before { content: ''; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(96,165,250,.32) 50%, transparent 70%); transform: translateX(-120%); animation: pm-logo-shimmer 4.5s ease-in-out infinite; pointer-events: none; }
.pm-logo-icon { font-size: 1.05em; line-height: 1; position: relative; z-index: 1; background: linear-gradient(135deg, #60a5fa 0%, #bfdbfe 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; filter: drop-shadow(0 0 4px rgba(96,165,250,.55)); }
.pm-logo-lg { font-size: 1.75rem; gap: .65rem; }
.pm-logo-lg .pm-logo-badge { font-size: 1rem; padding: .3rem .75rem; letter-spacing: .06em; }
.pm-logo-lg .pm-logo-icon { font-size: 1.1em; }
@keyframes pm-logo-shimmer { 0% { transform: translateX(-120%); } 55%, 100% { transform: translateX(220%); } }
@keyframes pm-logo-grad { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }

/* User Badge */
.pm-user-badge { display: inline-flex; align-items: center; gap: .25rem; background: var(--pm-surface-dim); color: var(--pm-ink-secondary); font-size: var(--pm-text-sm); font-weight: 500; padding: .25rem .75rem; border-radius: var(--pm-radius-pill); border: 1px solid var(--pm-border); }

/* Navigation */
.pm-nav-group-title { font-size: var(--pm-text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-tertiary); padding: 1rem .75rem .5rem; }
.pm-nav-item { display: flex; align-items: center; gap: .75rem; padding: .5rem .75rem; font-size: var(--pm-text-base); font-weight: 500; border-radius: var(--pm-radius); margin-bottom: 2px; text-decoration: none; color: var(--pm-ink); transition: background var(--pm-duration) var(--pm-ease), color var(--pm-duration) var(--pm-ease); }
.pm-nav-item:hover { background: var(--pm-surface-hover); color: var(--pm-ink); text-decoration: none; }
.pm-nav-item.active { background: var(--pm-accent-bg); color: var(--pm-accent-text); }
.pm-nav-icon { display: inline-flex; align-items: center; justify-content: center; min-width: 1.25rem; font-size: 1.1rem; color: var(--pm-ink-tertiary); }
.pm-nav-item.active .pm-nav-icon { color: var(--pm-accent); }
.pm-nav-item:hover .pm-nav-icon { color: var(--pm-ink-secondary); }

.pm-nav-item.badge-red { background: var(--pm-red-bg); color: var(--pm-red-text); }
.pm-nav-item.badge-green { background: var(--pm-green-bg); color: var(--pm-green-text); }
.pm-nav-item.badge-blue { background: var(--pm-blue-bg); color: var(--pm-blue-text); }
.pm-nav-item.badge-yellow { background: var(--pm-yellow-bg); color: var(--pm-yellow-text); }
.pm-nav-item.badge-purple { background: var(--pm-purple-bg); color: var(--pm-purple-text); }
.pm-nav-item.badge-red .pm-nav-icon { color: var(--pm-red-text); }
.pm-nav-item.badge-green .pm-nav-icon { color: var(--pm-green-text); }
.pm-nav-item.badge-blue .pm-nav-icon { color: var(--pm-blue-text); }
.pm-nav-item.badge-yellow .pm-nav-icon { color: var(--pm-yellow-text); }
.pm-nav-item.badge-purple .pm-nav-icon { color: var(--pm-purple-text); }

.pm-nav-item.badge-red:hover, .pm-nav-item.badge-red.active { filter: brightness(.97); }
.pm-nav-item.badge-green:hover, .pm-nav-item.badge-green.active { filter: brightness(.97); }
.pm-nav-item.badge-blue:hover, .pm-nav-item.badge-blue.active { filter: brightness(.97); }
.pm-nav-item.badge-yellow:hover, .pm-nav-item.badge-yellow.active { filter: brightness(.97); }
.pm-nav-item.badge-purple:hover, .pm-nav-item.badge-purple.active { filter: brightness(.97); }

.pm-nav-logout { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--pm-border); }

/* Cards */
.pm-card { background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius-lg); box-shadow: var(--pm-shadow-sm); overflow: hidden; }
.pm-card-header { display: flex; align-items: center; justify-content: space-between; padding: .75rem 1rem; border-bottom: 1px solid var(--pm-border); background: var(--pm-surface); min-height: 52px; }
.pm-card-header h5 { font-size: var(--pm-text-sm); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-secondary); margin: 0; }
.pm-card-body { padding: 1rem; }
.pm-card-body.p-0 { padding: 0; }
.pm-card-footer { display: flex; align-items: center; justify-content: space-between; padding: .75rem 1rem; border-top: 1px solid var(--pm-border); background: var(--pm-surface); }

/* Tables */
.pm-table { width: 100%; border-collapse: collapse; font-size: var(--pm-text-base); color: var(--pm-ink); }
.pm-table th { font-size: var(--pm-text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-secondary); background: var(--pm-surface-dim); border-bottom: 2px solid var(--pm-border); padding: .5rem .75rem; white-space: nowrap; position: sticky; top: 0; z-index: 10; }
.pm-table td { padding: .75rem; vertical-align: middle; border-bottom: 1px solid var(--pm-surface-dimmer); }
.pm-table th:first-child, .pm-table td:first-child { padding-left: 1rem; }
.pm-table th:last-child, .pm-table td:last-child { padding-right: 1rem; }
.pm-table tbody tr { transition: background var(--pm-duration) var(--pm-ease); }
.pm-table tbody tr:hover { background: var(--pm-surface-hover); }
.pm-table th a { color: var(--pm-ink-secondary); text-decoration: none; white-space: nowrap; display: inline-flex; align-items: center; }
.pm-table th a:hover { color: var(--pm-accent); }
.pm-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.pm-td-desc { white-space: normal; word-break: break-all; font-size: var(--pm-text-sm); line-height: 1.5; }

/* Forms */
.pm-label { display: block; font-size: var(--pm-text-sm); font-weight: 500; color: var(--pm-ink); margin-bottom: .25rem; }
.pm-input, .pm-select { width: 100%; height: 36px; font-family: var(--pm-font); font-size: var(--pm-text-base); color: var(--pm-ink); background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); padding: 0 .75rem; transition: border-color var(--pm-duration) var(--pm-ease), box-shadow var(--pm-duration) var(--pm-ease); }
.pm-input:focus, .pm-select:focus { outline: none; border-color: var(--pm-accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.pm-input::placeholder { color: var(--pm-ink-hint); }
.pm-input:read-only, .pm-input.locked { background: var(--pm-surface-dim); cursor: not-allowed; color: var(--pm-ink-secondary); }
.pm-textarea { width: 100%; font-family: var(--pm-font); font-size: var(--pm-text-base); color: var(--pm-ink); background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); padding: .5rem .75rem; resize: vertical; min-height: 80px; transition: border-color var(--pm-duration) var(--pm-ease), box-shadow var(--pm-duration) var(--pm-ease); }
.pm-textarea:focus { outline: none; border-color: var(--pm-accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }

.pm-filters { display: grid; grid-template-columns: repeat(6, 1fr); gap: .5rem; padding: .75rem 1rem; border-bottom: 1px solid var(--pm-border); background: var(--pm-surface); }
.pm-filters .pm-input, .pm-filters .pm-select { height: 36px; font-size: var(--pm-text-base); min-width: 0; }

/* Buttons */
.pm-btn { display: inline-flex; align-items: center; justify-content: center; gap: .25rem; font-family: var(--pm-font); font-size: var(--pm-text-sm); font-weight: 600; line-height: 1; padding: .5rem .75rem; border-radius: var(--pm-radius); border: 1px solid transparent; cursor: pointer; white-space: nowrap; transition: all var(--pm-duration) var(--pm-ease); text-decoration: none; }
.pm-btn:hover { text-decoration: none; }
.pm-btn:active { transform: scale(.98); }
.pm-btn:disabled, .pm-btn.disabled { opacity: .5; pointer-events: none; }

.pm-btn-primary { background: var(--pm-accent); color: #fff; border-color: var(--pm-accent); }
.pm-btn-primary:hover { background: var(--pm-accent-hover); border-color: var(--pm-accent-hover); color: #fff; }
.pm-btn-success { background: var(--pm-success); color: #fff; border-color: var(--pm-success); }
.pm-btn-success:hover { filter: brightness(.92); color: #fff; }
.pm-btn-danger { background: var(--pm-danger); color: #fff; border-color: var(--pm-danger); }
.pm-btn-danger:hover { filter: brightness(.92); color: #fff; }

.pm-btn-outline { background: var(--pm-surface); color: var(--pm-ink); border-color: var(--pm-border); }
.pm-btn-outline:hover { background: var(--pm-surface-hover); border-color: var(--pm-border-strong); color: var(--pm-ink); }
.pm-btn-outline-primary { background: transparent; color: var(--pm-accent); border-color: var(--pm-accent-border); }
.pm-btn-outline-primary:hover { background: var(--pm-accent-bg); color: var(--pm-accent-text); }
.pm-btn-outline-danger { background: transparent; color: var(--pm-danger); border-color: var(--pm-danger-border); }
.pm-btn-outline-danger:hover { background: var(--pm-danger-bg); color: var(--pm-danger-text); }
.pm-btn-outline-success { background: transparent; color: var(--pm-success); border-color: var(--pm-success-border); }
.pm-btn-outline-success:hover { background: var(--pm-success-bg); color: var(--pm-success-text); }
.pm-btn-ghost { background: transparent; color: var(--pm-ink-secondary); border-color: transparent; }
.pm-btn-ghost:hover { background: var(--pm-surface-hover); color: var(--pm-ink); }

/* Badges */
.pm-badge { display: inline-flex; align-items: center; gap: .25em; font-size: var(--pm-text-xs); font-weight: 600; padding: .25em .65em; border-radius: var(--pm-radius-pill); line-height: 1.4; white-space: nowrap; }
.pm-badge-icon { font-size: var(--pm-text-sm); padding: .2em .55em; gap: .3em; }
.pm-badge-icon > i { font-size: 1.05rem; line-height: 1; }
.pm-badge-primary { background: var(--pm-accent-bg); color: var(--pm-accent-text); }
.pm-badge-success { background: var(--pm-success-bg); color: var(--pm-success-text); }
.pm-badge-warning { background: var(--pm-warning-bg); color: var(--pm-warning-text); }
.pm-badge-danger { background: var(--pm-danger-bg); color: var(--pm-danger-text); }
.pm-badge-info { background: var(--pm-info-bg); color: var(--pm-info-text); }
.pm-badge-muted { background: var(--pm-muted-bg); color: var(--pm-muted-text); }
.pm-badge-count { background: var(--pm-accent); color: #fff; font-size: var(--pm-text-xs); padding: .15em .55em; }
.pm-badge-purple { background: var(--pm-purple-bg); color: var(--pm-purple-text); }
.pm-badge-red { background: var(--pm-red-bg); color: var(--pm-red-text); }
.pm-badge-green { background: var(--pm-green-bg); color: var(--pm-green-text); }
.pm-badge-blue { background: var(--pm-blue-bg); color: var(--pm-blue-text); }
.pm-badge-yellow { background: var(--pm-yellow-bg); color: var(--pm-yellow-text); }

.pm-status { cursor: pointer; user-select: none; transition: filter var(--pm-duration) var(--pm-ease); }
.pm-status:hover { filter: brightness(.92); }
.pm-status.loading { opacity: .5; pointer-events: none; }

/* Modals (Bootstrap override) */
.modal-content { border: 1px solid var(--pm-border); border-radius: var(--pm-radius-xl); box-shadow: var(--pm-shadow-md); background: var(--pm-surface) !important; }
.modal-header { padding: 1rem; border-bottom: 1px solid var(--pm-border); }
.modal-title { font-size: var(--pm-text-md); font-weight: 700; }
.modal-body { padding: 1rem; max-height: 70vh; overflow-y: auto; }
.modal-footer { padding: .75rem 1rem; border-top: 1px solid var(--pm-border); }
.pm-modal-wide .modal-dialog { max-width: 85%; width: 85%; }

/* Blocked-number modal components */
.blk-hotline { background: var(--pm-surface-dim); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); padding: .625rem .875rem; margin-bottom: .5rem; }
.blk-hotline--alert { background: var(--pm-danger-bg); border-color: var(--pm-danger-border); }
.blk-hotline--watch { background: var(--pm-warning-bg); border-color: var(--pm-warning-border); }
.blk-hotline .pm-table { background: transparent; margin-top: .5rem; }
.blk-hotline .pm-table th { background: transparent; border-bottom: 1px solid var(--pm-border); position: static; padding: .375rem .5rem; }
.blk-hotline .pm-table td { padding: .375rem .5rem; border-bottom: 1px solid var(--pm-surface-dimmer); }
.blk-hotline .pm-table tbody tr:last-child td { border-bottom: none; }
.blk-hotline .pm-table tbody tr:hover { background: transparent; }
.blk-carrier { cursor: help; }
.blk-code { cursor: help; font-family: var(--pm-mono); font-size: .6875rem; margin-right: .25rem; }
.blk-period-group .pm-btn { min-width: 72px; }

/* Tabs */
.pm-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--pm-border); margin-bottom: 1rem; }
.pm-tab { display: inline-flex; align-items: center; gap: .25rem; font-size: var(--pm-text-base); font-weight: 600; color: var(--pm-ink-secondary); padding: .75rem 1rem; border: none; border-bottom: 2px solid transparent; margin-bottom: -2px; background: transparent; cursor: pointer; text-decoration: none; transition: color var(--pm-duration) var(--pm-ease), border-color var(--pm-duration) var(--pm-ease); }
.pm-tab:hover { color: var(--pm-accent); text-decoration: none; }
.pm-tab.active { color: var(--pm-accent); border-bottom-color: var(--pm-accent); }

/* Pagination */
.pm-pagination .pagination { gap: .25rem; }
.pm-pagination .page-item { margin: 0; }
.pm-pagination .page-link { font-size: var(--pm-text-sm); font-weight: 500; color: var(--pm-ink); padding: .25rem .625rem; border-radius: var(--pm-radius) !important; border: 1px solid var(--pm-border); background: var(--pm-surface); transition: all var(--pm-duration) var(--pm-ease); }
.pm-pagination .page-link:hover { background: var(--pm-surface-hover); border-color: var(--pm-border-strong); color: var(--pm-ink); z-index: 0; }
.pm-pagination .page-link:focus { box-shadow: 0 0 0 3px rgba(37,99,235,.12); z-index: 1; }
.pm-pagination .page-item.active .page-link { background: var(--pm-accent); border-color: var(--pm-accent); color: #fff; z-index: 1; }
.pm-pagination .page-item.disabled .page-link { color: var(--pm-ink-hint); background: var(--pm-surface-dim); border-color: var(--pm-border); pointer-events: none; }

/* Alerts */
.pm-alert { display: flex; align-items: center; gap: .5rem; padding: .75rem 1rem; border-radius: var(--pm-radius); font-size: var(--pm-text-sm); font-weight: 500; margin-bottom: .75rem; border: 1px solid; }
.pm-alert-success { background: var(--pm-success-bg); color: var(--pm-success-text); border-color: var(--pm-success-border); }
.pm-alert-danger { background: var(--pm-danger-bg); color: var(--pm-danger-text); border-color: var(--pm-danger-border); }
.pm-alert-warning { background: var(--pm-warning-bg); color: var(--pm-warning-text); border-color: var(--pm-warning-border); }
.pm-alert-info { background: var(--pm-info-bg); color: var(--pm-info-text); border-color: var(--pm-info-border); }

/* Status Dropdown */
.pm-status-dropdown { position: absolute; z-index: 99999; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); box-shadow: var(--pm-shadow-md); min-width: 160px; padding: .25rem 0; display: none; }
.pm-status-dropdown.show { display: block; }
.pm-status-dropdown-item { display: flex; align-items: center; gap: .5rem; padding: .5rem .75rem; font-size: var(--pm-text-sm); cursor: pointer; transition: background var(--pm-duration) var(--pm-ease); }
.pm-status-dropdown-item:hover { background: var(--pm-surface-hover); }

/* Section Card (modal interiors) */
.pm-section { background: var(--pm-surface-dim); border-radius: var(--pm-radius); padding: 1rem; }
.pm-section-title { font-size: var(--pm-text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-tertiary); margin-bottom: .75rem; }
.pm-section-danger { border: 1px solid var(--pm-danger-border); }
.pm-section-danger .pm-section-title { color: var(--pm-danger); }

/* Menu Builder */
.pm-menu-item { display: flex; align-items: center; justify-content: space-between; background: var(--pm-surface-dim); border: 1px solid transparent; border-radius: var(--pm-radius); padding: .75rem; margin-bottom: .5rem; transition: background var(--pm-duration), border-color var(--pm-duration); cursor: pointer; }
.pm-menu-item:hover { background: var(--pm-surface-dimmer); border-color: var(--pm-border); }
.pm-menu-item.inactive { opacity: .5; }
.pm-group-header { cursor: pointer; }
.pm-menu-item.badge-red { background: var(--pm-red-bg) !important; border-color: var(--pm-red-border) !important; }
.pm-menu-item.badge-green { background: var(--pm-green-bg) !important; border-color: var(--pm-green-border) !important; }
.pm-menu-item.badge-blue { background: var(--pm-blue-bg) !important; border-color: var(--pm-blue-border) !important; }
.pm-menu-item.badge-yellow { background: var(--pm-yellow-bg) !important; border-color: var(--pm-yellow-border) !important; }
.pm-menu-item.badge-purple { background: var(--pm-purple-bg) !important; border-color: var(--pm-purple-border) !important; }

.pm-menu-item.badge-red .pm-menu-name, .pm-menu-item.badge-red .pm-menu-meta, .pm-menu-item.badge-red .pm-icon-preview i { color: var(--pm-red-text) !important; }
.pm-menu-item.badge-green .pm-menu-name, .pm-menu-item.badge-green .pm-menu-meta, .pm-menu-item.badge-green .pm-icon-preview i { color: var(--pm-green-text) !important; }
.pm-menu-item.badge-blue .pm-menu-name, .pm-menu-item.badge-blue .pm-menu-meta, .pm-menu-item.badge-blue .pm-icon-preview i { color: var(--pm-blue-text) !important; }
.pm-menu-item.badge-yellow .pm-menu-name, .pm-menu-item.badge-yellow .pm-menu-meta, .pm-menu-item.badge-yellow .pm-icon-preview i { color: var(--pm-yellow-text) !important; }
.pm-menu-item.badge-purple .pm-menu-name, .pm-menu-item.badge-purple .pm-menu-meta, .pm-menu-item.badge-purple .pm-icon-preview i { color: var(--pm-purple-text) !important; }

.pm-group-container { background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); padding: 1rem; margin-bottom: .75rem; }
.pm-group-container.inactive { opacity: .5; }
.pm-group-menus { margin-left: 1.5rem; margin-top: .75rem; }

.pm-icon-preview { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; color: var(--pm-ink-secondary); }
.pm-grip { cursor: move; color: var(--pm-ink-hint); }
.pm-grip:hover { color: var(--pm-ink-secondary); }
.sortable-ghost { opacity: .3; }
.sortable-drag { box-shadow: var(--pm-shadow-md); }

/* Permission Grid */
.pm-perm-group { background: var(--pm-surface-dim); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); padding: .75rem; }
.pm-perm-group-header { font-weight: 600; font-size: var(--pm-text-sm); padding-bottom: .5rem; margin-bottom: .5rem; border-bottom: 1px solid var(--pm-border); }
.pm-perm-badge { display: inline-block; font-size: var(--pm-text-xs); padding: .2em .5em; background: var(--pm-accent-bg); color: var(--pm-accent-text); border-radius: var(--pm-radius-sm); margin: 2px; }

/* Employee Info */
.pm-emp-info { line-height: 1.3; }
.pm-emp-info .pm-emp-name { font-weight: 700; font-size: var(--pm-text-md); white-space: nowrap; cursor: pointer; }
.pm-emp-info .pm-emp-name:hover { color: var(--pm-accent); }
.pm-emp-info .pm-emp-meta { display: flex; align-items: center; gap: .5rem; font-size: var(--pm-text-sm); color: var(--pm-ink-secondary); margin-top: .25rem; }

/* Employee Info in Permission */
.pm-emp-panel { background: var(--pm-accent-bg); border: 1px solid var(--pm-accent-border); border-radius: var(--pm-radius); padding: .75rem; margin-bottom: 1rem; display: none; }
.pm-emp-panel.show { display: block; }

/* Select2 Override */
.select2-container { width: 100% !important; }
.select2-container--bootstrap-5 .select2-selection { font-size: var(--pm-text-base); min-height: 36px; border-color: var(--pm-border); border-radius: var(--pm-radius); }
.select2-container--bootstrap-5 .select2-selection--single:focus, .select2-container--bootstrap-5.select2-container--focus .select2-selection { border-color: var(--pm-accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }

/* TX Code */
.pm-tx-code { font-family: var(--pm-mono); font-size: var(--pm-text-xs); font-weight: 700; letter-spacing: .04em; }
.pm-tx-link { cursor: pointer; text-decoration: none; }
.pm-tx-link:hover { opacity: .8; }

/* Amount Display */
.pm-amount { display: inline-block; font-size: .75rem; font-weight: 800; letter-spacing: .01em; white-space: nowrap; padding: .25em .6em; border-radius: var(--pm-radius-pill); border: 1px solid; }
.pm-amount-success { color: var(--pm-success-text); background: var(--pm-success-bg); border-color: var(--pm-success-border); }
.pm-amount-danger { color: var(--pm-danger-text); background: var(--pm-danger-bg); border-color: var(--pm-danger-border); }
.pm-amount-warning { color: var(--pm-warning-text); background: var(--pm-warning-bg); border-color: var(--pm-warning-border); }
.pm-amount-muted { color: var(--pm-ink-tertiary); background: var(--pm-surface-dimmer); border-color: var(--pm-border); }

/* Image Popup */
.pm-popup { position: fixed; inset: 0; background: rgba(0,0,0,.88); z-index: 9999; display: none; align-items: center; justify-content: center; padding: 20px; }
.pm-popup.show { display: flex; }
.pm-popup-content { position: relative; max-width: 90%; max-height: 90vh; display: flex; align-items: center; justify-content: center; }
.pm-popup-content img { max-width: 100%; max-height: 85vh; object-fit: contain; }
.pm-popup-close { position: absolute; top: -40px; right: 0; color: #fff; font-size: 2rem; cursor: pointer; line-height: 1; background: none; border: none; }
.pm-popup-close:hover { color: #ccc; }
.pm-popup-nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.8); border-radius: 50%; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.pm-popup-nav.prev { left: 10px; }
.pm-popup-nav.next { right: 10px; }
.pm-popup-counter { position: absolute; bottom: -40px; left: 0; color: #fff; font-size: var(--pm-text-base); }

/* Desc Popup */
.pm-desc-popup { position: fixed; z-index: 9999; max-width: 400px; background: #1e293b; color: #e2e8f0; border-radius: var(--pm-radius); padding: .75rem 1rem; font-size: var(--pm-text-xs); font-family: var(--pm-mono); word-break: break-all; line-height: 1.6; box-shadow: 0 8px 24px rgba(0,0,0,.25); pointer-events: none; opacity: 0; transition: opacity .15s; }
.pm-desc-popup.show { opacity: 1; pointer-events: auto; }
.pm-desc-popup .hl { color: #4ade80; font-weight: 700; }
.pm-desc-popup .warn { color: #fbbf24; font-weight: 700; }

/* Note Quote */
.pm-note-quote { margin-top: .25rem; padding: .25rem .5rem; border-left: 3px solid var(--pm-warning); background: var(--pm-warning-bg); font-size: var(--pm-text-sm); color: var(--pm-ink-secondary); border-radius: 0 var(--pm-radius-sm) var(--pm-radius-sm) 0; line-height: 1.4; }

/* Login Page */
.pm-login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(145deg, #f0f4ff 0%, #e0e7ff 50%, #f5f3ff 100%); position: relative; overflow: hidden; }
.pm-login-page::before { content: ''; position: absolute; width: 600px; height: 600px; background: radial-gradient(circle, rgba(37,99,235,.08) 0%, transparent 70%); top: -200px; right: -200px; border-radius: 50%; }
.pm-login-page::after { content: ''; position: absolute; width: 400px; height: 400px; background: radial-gradient(circle, rgba(99,102,241,.06) 0%, transparent 70%); bottom: -150px; left: -100px; border-radius: 50%; }

.pm-login-card { position: relative; z-index: 1; background: var(--pm-surface); border-radius: var(--pm-radius-xl); box-shadow: 0 20px 60px rgba(0,0,0,.08), 0 1px 3px rgba(0,0,0,.04); max-width: 420px; width: 100%; padding: 2.5rem; animation: pm-fadeUp .5s cubic-bezier(.16,1,.3,1); }
@keyframes pm-fadeUp { from { opacity: 0; transform: translateY(24px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }

.pm-login-title { text-align: center; margin-bottom: .5rem; }
.pm-login-subtitle { text-align: center; color: var(--pm-ink-secondary); font-size: var(--pm-text-sm); margin-bottom: 2rem; }

.pm-field-group { position: relative; margin-bottom: 1.5rem; }
.pm-field-group label { font-size: var(--pm-text-sm); font-weight: 600; color: var(--pm-ink); margin-bottom: .5rem; display: block; }
.pm-field-group .pm-input { height: 3rem; font-size: 1.375rem; font-weight: 900; font-variant-numeric: tabular-nums; letter-spacing: .08em; border-width: 1.5px; border-radius: var(--pm-radius-xl); padding-left: 3rem; background: var(--pm-surface-dim); }
.pm-field-group .pm-input:focus { background: var(--pm-surface); }
.pm-field-group .pm-input::placeholder { font-size: var(--pm-text-md); font-weight: 500; letter-spacing: normal; color: var(--pm-ink-hint); }
.pm-field-group .pm-field-icon { position: absolute; left: 1rem; top: calc(50% + 10px); transform: translateY(-50%); color: var(--pm-accent); font-size: 1.25rem; transition: color .2s, transform .2s; }
.pm-field-group .pm-input:focus ~ .pm-field-icon, .pm-field-group .pm-input:not(:placeholder-shown) ~ .pm-field-icon { color: var(--pm-accent); transform: translateY(-50%) scale(1.05); }

.pm-code-section { overflow: hidden; max-height: 0; opacity: 0; transition: all .4s cubic-bezier(.16,1,.3,1); margin-bottom: 0; }
.pm-code-section.visible { max-height: 200px; opacity: 1; margin-bottom: 1.5rem; }
.pm-code-label { font-size: var(--pm-text-sm); font-weight: 600; color: var(--pm-ink); margin-bottom: .75rem; display: flex; align-items: center; gap: .5rem; }
.pm-code-label i { color: var(--pm-ink-hint); font-size: .9rem; }

.pm-code-inputs { display: flex; gap: .625rem; }
.pm-code-input { flex: 1; min-width: 0; padding: 0; height: 56px; text-align: center; font-size: 1.875rem; font-weight: 900; border: 1.5px solid var(--pm-border); border-radius: var(--pm-radius-xl); background: var(--pm-surface-dim); color: var(--pm-ink); transition: all .2s; caret-color: transparent; -webkit-text-security: disc; }
.pm-code-input:focus { border-color: var(--pm-accent) !important; box-shadow: 0 0 0 3px rgba(37,99,235,.15) !important; background: var(--pm-surface); outline: none !important; }
.pm-code-input.filled { border-color: var(--pm-accent) !important; background: var(--pm-accent-bg); }
.pm-code-input.error { border-color: var(--pm-danger) !important; background: var(--pm-danger-bg); box-shadow: none !important; }

.pm-login-error { text-align: center; color: var(--pm-danger); font-size: var(--pm-text-base); font-weight: 500; margin-bottom: 1rem; opacity: 0; transform: translateY(-8px); transition: all .3s; }
.pm-login-error.show { opacity: 1; transform: translateY(0); }
.pm-login-loading { display: none; text-align: center; padding: 1rem 0; }
.pm-login-loading.show { display: block; }
.pm-login-success { display: none; text-align: center; padding: 1rem 0; }
.pm-login-success.show { display: block; }
.pm-login-footer { text-align: center; margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--pm-surface-dimmer); }
.pm-login-footer a { color: var(--pm-accent); text-decoration: none; font-weight: 500; font-size: var(--pm-text-sm); }
.pm-login-footer a:hover { text-decoration: underline; }

/* Spinner */
.pm-spinner { width: 32px; height: 32px; border: 3px solid var(--pm-border); border-top-color: var(--pm-accent); border-radius: 50%; animation: pm-spin .6s linear infinite; margin: 0 auto .75rem; }
@keyframes pm-spin { to { transform: rotate(360deg); } }

/* Pop-in */
.pm-check-circle { width: 48px; height: 48px; background: var(--pm-success-bg); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto .75rem; animation: pm-popIn .3s cubic-bezier(.16,1,.3,1); }
.pm-check-circle i { color: var(--pm-success); font-size: 1.5rem; }
@keyframes pm-popIn { from { transform: scale(0); } to { transform: scale(1); } }

/* Shake */
@keyframes pm-shake { 0%,100% { transform: translateX(0); } 20%,60% { transform: translateX(-6px); } 40%,80% { transform: translateX(6px); } }
.pm-shake { animation: pm-shake .4s ease; }

/* Empty State */
.pm-empty { text-align: center; padding: 2rem 1rem; color: var(--pm-ink-tertiary); }
.pm-empty i { font-size: 2.5rem; margin-bottom: .75rem; display: block; }
.pm-empty p { margin: 0; font-size: var(--pm-text-sm); }

/* Avatars */
.pm-avatar-sm { width: 36px; height: 36px; border-radius: var(--pm-radius); object-fit: cover; object-position: center 20%; border: 1px solid var(--pm-border); display: block; }
.pm-avatar-upload { position: relative; width: 103px; height: 133px; border-radius: var(--pm-radius-sm); background: var(--pm-surface-dimmer); overflow: hidden; cursor: pointer; transition: opacity var(--pm-duration) var(--pm-ease); flex-shrink: 0; border: 1px solid var(--pm-border); }
.pm-avatar-upload:hover { opacity: .85; }
.pm-avatar-upload.locked { pointer-events: none; cursor: default; }
.pm-avatar-upload img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pm-avatar-upload .pm-avatar-remove { position: absolute; top: .25rem; right: .25rem; width: 22px; height: 22px; border-radius: 50%; background: var(--pm-danger); color: #fff; border: none; display: none; align-items: center; justify-content: center; cursor: pointer; font-size: .75rem; z-index: 2; padding: 0; }
.pm-avatar-upload:not(.locked):hover .pm-avatar-remove { display: flex; }
.pm-avatar-upload .pm-avatar-remove:hover { filter: brightness(.9); }

/* Image Grid */
.pm-image-grid { display: grid; grid-template-columns: repeat(5,1fr); gap: .5rem; min-height: 40px; }
.pm-image-item { position: relative; aspect-ratio: 1; overflow: hidden; border-radius: var(--pm-radius); background: var(--pm-surface-dim); transition: transform .15s, box-shadow .15s; }
.pm-image-item img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; -webkit-user-drag: none; user-select: none; }
.pm-images-editable .pm-image-item img { pointer-events: auto; }
.pm-image-item .pm-image-remove { position: absolute; top: .25rem; right: .25rem; width: 22px; height: 22px; border-radius: 50%; background: var(--pm-danger); color: #fff; border: none; display: none; align-items: center; justify-content: center; cursor: pointer; font-size: .75rem; z-index: 2; }
.pm-images-editable .pm-image-item:hover .pm-image-remove { display: flex; }
.pm-images-editable .pm-image-item { cursor: grab; }
.pm-images-editable .pm-image-item:active { cursor: grabbing; }
.pm-image-item.sortable-ghost { opacity: .3; transform: scale(.95); }
.pm-image-item.sortable-drag { transform: scale(1.05); box-shadow: 0 4px 12px rgba(0,0,0,.2); z-index: 10; }

/* Drop Zone */
.pm-dropzone { border: 2px dashed var(--pm-border); border-radius: var(--pm-radius); padding: 1rem; text-align: center; color: var(--pm-ink-tertiary); font-size: var(--pm-text-sm); cursor: pointer; transition: border-color var(--pm-duration), color var(--pm-duration), background var(--pm-duration); }
.pm-dropzone:hover, .pm-dropzone.dragover { border-color: var(--pm-accent); color: var(--pm-accent); background: var(--pm-accent-bg); }

/* Shifts Grid */
.pm-shifts-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }

/* Utilities */
.pm-text-xs { font-size: var(--pm-text-xs); }
.pm-text-sm { font-size: var(--pm-text-sm); }
.pm-text-base { font-size: var(--pm-text-base); }
.pm-text-md { font-size: var(--pm-text-md); }
.pm-text-muted { color: var(--pm-ink-secondary); }
.pm-text-hint { color: var(--pm-ink-tertiary); }
.pm-text-accent { color: var(--pm-accent); }
.pm-text-success { color: var(--pm-success); }
.pm-text-danger { color: var(--pm-danger); }
.pm-text-warning { color: var(--pm-warning); }
.pm-font-mono { font-family: var(--pm-mono); }
.pm-font-bold { font-weight: 600; }
.pm-nowrap { white-space: nowrap; }
.pm-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pm-hidden { display: none !important; }

/* Bootstrap form-check align fix */
.form-check-input { cursor: pointer; }
.form-check-label { cursor: pointer; font-size: var(--pm-text-base); }

/* Unlock system (Ctrl+Shift+F8) */
#lockIcon { transition: all .3s ease; }
.pm-unlock-only { display: none; }
.sys-unlocked .pm-unlock-only { display: inline-flex; }
.sys-unlocked label.pm-unlock-only { display: inline; }
.pm-shield-icon { display: none; }
.sys-unlocked .pm-shield-icon { display: inline; }

/* Modal tabs (Bootstrap nav-tabs override) */
.pm-modal-tabs { border-bottom: 2px solid var(--pm-border); }
.pm-modal-tabs .nav-link { font-size: var(--pm-text-base); font-weight: 600; color: var(--pm-ink-secondary); border: none; border-bottom: 2px solid transparent; margin-bottom: -2px; padding: .5rem 1rem; }
.pm-modal-tabs .nav-link:hover { border-color: transparent; color: var(--pm-ink); }
.pm-modal-tabs .nav-link.active { color: var(--pm-accent); background-color: transparent; border-color: transparent transparent var(--pm-accent); }

/* Locked fields */
.pm-locked { background: var(--pm-surface-dim) !important; cursor: not-allowed !important; }
select.pm-locked { pointer-events: none !important; }

/* Image thumbnail in table */
.pm-img-thumb { width: 20px; height: 20px; object-fit: cover; border-radius: 2px; cursor: pointer; border: 1px solid var(--pm-ink); }
.pm-media-grid { display: flex; flex-wrap: nowrap; gap: .25rem; }
.pm-media-grid img { width: 20px; height: 20px; object-fit: cover; display: block; }

/* Flat picker override */
.flatpickr-input { font-family: var(--pm-font); }
.flatpickr-calendar { z-index: 10000 !important; }

/* Tab content inside modal */
.pm-tab-content { padding-top: 1.25rem; }

/* Autocomplete Dropdown */
.pm-autocomplete { position: absolute; top: 100%; left: 0; right: 0; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); margin-top: .25rem; max-height: 150px; overflow-y: auto; z-index: 1050; display: none; box-shadow: var(--pm-shadow-md); }
.pm-autocomplete-item { padding: .5rem .75rem; cursor: pointer; font-size: var(--pm-text-sm); transition: background var(--pm-duration) var(--pm-ease); border-bottom: 1px solid var(--pm-surface-dimmer); }
.pm-autocomplete-item:last-child { border-bottom: none; }
.pm-autocomplete-item:hover { background: var(--pm-surface-hover); }
.pm-autocomplete-main { font-weight: 600; margin-bottom: .25rem; }
.pm-autocomplete-sub { font-size: var(--pm-text-sm); color: var(--pm-ink-secondary); }

/* Distance Loading */
.pm-distance-loading { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); }

/* Tooltip override */
.tooltip-inner { max-width: 450px; text-align: left; }
/* Chat Layout */
.pm-chat-container { flex: 1; display: flex; overflow: hidden; }
.pm-chat-sidebar { width: 300px; min-width: 300px; background: var(--pm-surface); border-right: 1px solid var(--pm-border); overflow-y: auto; }
.pm-chat-main { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
.pm-chat-panel { width: 350px; min-width: 350px; background: var(--pm-surface); border-left: 1px solid var(--pm-border); overflow-y: auto; padding: 1rem; }

/* Chat Room List */
.pm-chat-room { padding: 1rem; border-bottom: 1px solid var(--pm-surface-dimmer); cursor: pointer; transition: background var(--pm-duration) var(--pm-ease); }
.pm-chat-room:hover { background: var(--pm-surface-hover); }
.pm-chat-room.active { background: var(--pm-accent-bg); border-left: 3px solid var(--pm-accent); }

/* Chat Header & Pin */
.pm-chat-header { padding: .75rem 1rem; border-bottom: 1px solid var(--pm-border); background: var(--pm-surface); }
.pm-chat-pin { width: 15px; height: 15px; margin-left: .375rem; flex-shrink: 0; color: var(--pm-warning); }
.pm-chat-header-pin { width: 18px; height: 18px; margin-left: .5rem; cursor: pointer; transition: color var(--pm-duration) var(--pm-ease); flex-shrink: 0; display: none; }
.pm-chat-header-pin.pinned { color: var(--pm-warning); }
.pm-chat-header-pin:not(.pinned) { color: var(--pm-ink-hint); }

/* Chat Messages */
.pm-chat-messages { flex: 1; overflow-y: auto; padding: 1.25rem; background: var(--pm-surface-dim); }
.pm-chat-msg { margin-bottom: 1rem; display: flex; align-items: flex-start; }
.pm-chat-msg-in { justify-content: flex-start; }
.pm-chat-msg-out { justify-content: flex-end; }
.pm-chat-msg-content { max-width: 70%; }
.pm-chat-msg-header { display: flex; align-items: center; gap: .5rem; margin-bottom: .25rem; font-size: var(--pm-text-sm); }
.pm-chat-msg-sender { font-weight: 600; color: var(--pm-ink); }
.pm-chat-msg-time { color: var(--pm-ink-tertiary); font-size: var(--pm-text-xs); }
.pm-chat-bubble { padding: .75rem 1rem; border-radius: var(--pm-radius-lg); background: var(--pm-surface-dimmer); word-wrap: break-word; font-size: var(--pm-text-base); border-top-left-radius: 0; }
.pm-chat-msg-out .pm-chat-bubble { background: var(--pm-accent-bg); border-top-left-radius: var(--pm-radius-lg); border-top-right-radius: 0; }
.pm-chat-msg.pm-chat-reminder .pm-chat-bubble { background: var(--pm-warning-bg); font-size: var(--pm-text-sm); text-align: left; border: 1px solid var(--pm-warning-border); border-radius: var(--pm-radius-lg); }
.pm-chat-msg.pm-chat-reminder .pm-chat-msg-content { max-width: 80%; margin: 0 auto; }
.pm-chat-msg.pm-chat-reminder { justify-content: center; }

/* Chat Input */
.pm-chat-input { padding: .75rem 1rem; background: var(--pm-surface); border-top: 1px solid var(--pm-border); }
.pm-chat-input-box { background: var(--pm-surface); border-radius: var(--pm-radius); border: 1px solid var(--pm-border); overflow: hidden; }
.pm-chat-input-row { display: flex; align-items: center; padding: .5rem; gap: .5rem; }
.pm-chat-textarea { overflow-y: auto; max-height: 120px; min-height: 40px; font-family: var(--pm-font); font-size: var(--pm-text-md); color: var(--pm-ink); background: transparent; border: none; outline: none; flex: 1; resize: none; padding: .25rem .5rem; line-height: 1.5; }
.pm-chat-textarea::placeholder { color: var(--pm-ink-hint); }
.pm-chat-textarea:disabled { color: var(--pm-ink-tertiary); cursor: not-allowed; }
.pm-chat-icon-btn { width: 32px; height: 32px; padding: .375rem; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: var(--pm-radius); color: var(--pm-ink-secondary); cursor: pointer; transition: background var(--pm-duration) var(--pm-ease), color var(--pm-duration) var(--pm-ease); }
.pm-chat-icon-btn:hover { background: var(--pm-surface-hover); color: var(--pm-ink); }
.pm-chat-icon-btn:disabled { color: var(--pm-ink-hint); cursor: not-allowed; }

/* Chat Members */
.pm-chat-member { display: flex; align-items: center; padding: .5rem 0; font-size: var(--pm-text-base); }
.pm-chat-indicator { width: 8px; height: 8px; border-radius: 50%; margin-right: .5rem; flex-shrink: 0; }
.pm-chat-indicator.online { background: var(--pm-success); }
.pm-chat-indicator.offline { background: var(--pm-border-strong); }

/* Chat Attachments */
.pm-chat-thumb { position: relative; width: 100px; height: 100px; overflow: hidden; border-radius: var(--pm-radius-sm); cursor: pointer; background: var(--pm-surface-dimmer); }
.pm-chat-thumb img { width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .3s; }
.pm-chat-thumb img.loaded { opacity: 1; }
.pm-chat-thumb-ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--pm-ink-hint); }
.pm-chat-thumb-ph i { font-size: 1.25rem; }
.pm-chat-expand { position: relative; width: 100px; height: 100px; overflow: hidden; border-radius: var(--pm-radius-sm); cursor: pointer; background: rgba(0,0,0,.8); display: flex; align-items: center; justify-content: center; color: #fff; font-size: var(--pm-text-xl); font-weight: 700; transition: background var(--pm-duration) var(--pm-ease); }
.pm-chat-expand:hover { background: rgba(0,0,0,.9); }
.pm-chat-video { width: 66.666%; aspect-ratio: 16/9; background: #000; position: relative; border-radius: var(--pm-radius-sm); overflow: hidden; cursor: pointer; }
.pm-chat-video-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 1.5rem; }

/* Chat Preview */
.pm-chat-preview { position: relative; width: 60px; height: 60px; overflow: hidden; border-radius: var(--pm-radius-sm); }
.pm-chat-preview img { width: 100%; height: 100%; object-fit: cover; }
.pm-chat-preview-rm { position: absolute; top: 2px; right: 2px; width: 20px; height: 20px; background: rgba(0,0,0,.5); color: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: .75rem; border: none; }

/* Chat Search */
.pm-chat-search { position: relative; width: 100%; }
.pm-chat-search-clear { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); background: transparent; border: none; cursor: pointer; padding: .25rem; display: none; color: var(--pm-ink-tertiary); }
.pm-chat-search-clear:hover { color: var(--pm-ink); }

/* Chat Utilities */
.pm-popup-nav.disabled { opacity: .3; pointer-events: none; }

/* Chat Responsive */
@media (max-width: 1024px) { .pm-chat-panel { display: none; } }
@media (max-width: 768px) { .pm-chat-sidebar { width: 280px; min-width: 280px; } }
@media (max-width: 640px) { .pm-chat-container { flex-direction: column; } .pm-chat-sidebar { width: 100%; min-width: unset; height: 40%; border-right: none; border-bottom: 1px solid var(--pm-border); } .pm-chat-main { height: 60%; } }
/* Map & Tracking */
#goongMap { height: 500px; width: 100%; z-index: 0; }
.mk-branch { font-size: 32px; color: var(--pm-danger); filter: drop-shadow(0 2px 4px rgba(0,0,0,.4)); cursor: pointer; line-height: 1; display: flex; align-items: center; justify-content: center; -webkit-text-stroke: 3px #fff; paint-order: stroke fill; }
.mk-checkin { font-size: 26px; color: var(--pm-ink); filter: drop-shadow(0 2px 4px rgba(0,0,0,.35)); cursor: pointer; line-height: 1; display: flex; align-items: center; justify-content: center; }
.cluster-marker { background: var(--pm-accent); border: 3px solid #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; box-shadow: 0 3px 10px rgba(0,0,0,.5); color: #fff; cursor: pointer; transition: transform var(--pm-duration) var(--pm-ease); }
.cluster-marker:hover { transform: scale(1.1); }
.cluster-sm { width: 36px; height: 36px; font-size: var(--pm-text-sm); }
.cluster-md { width: 44px; height: 44px; font-size: var(--pm-text-base); }
.cluster-lg { width: 52px; height: 52px; font-size: var(--pm-text-base); }
.dbscan-marker { background: var(--pm-accent); border: 3px solid #fff; border-radius: 50%; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: var(--pm-text-sm); box-shadow: 0 3px 10px rgba(0,0,0,.5); color: #fff; }
.detail-row { cursor: pointer; transition: background var(--pm-duration) var(--pm-ease); }
.detail-row:hover { background: var(--pm-surface-hover); }
.detail-row.active-row { background: var(--pm-accent-bg) !important; }
.grouped-rows { display: none; background: var(--pm-surface-dim); }
.grouped-rows.show { display: table-row; }
.action-badge { font-size: var(--pm-text-xs); padding: .2em .5em; border-radius: var(--pm-radius-sm); font-weight: 600; letter-spacing: .02em; }
.goong-popup-content-wrapper { border-radius: var(--pm-radius); box-shadow: var(--pm-shadow-md); }
.goong-popup-content { margin: 12px; min-width: 200px; font-family: var(--pm-font); }
.popup-content { font-family: var(--pm-font); }
.employee-name { font-weight: 600; }
.col-sm-text { font-size: var(--pm-text-sm); color: var(--pm-ink); }
.table-row-hover { cursor: pointer; transition: background var(--pm-duration) var(--pm-ease); }
.table-row-hover:hover { background: var(--pm-surface-hover); }
.sys-unlocked .table-row-hover { cursor: pointer; }
.expand-icon { cursor: pointer; transition: transform .3s; }

/* Tracking Delete Modal */
.emp-tags-container { display: flex; flex-wrap: wrap; gap: .25rem; padding: .375rem .5rem; border: 1px solid var(--pm-border); border-radius: var(--pm-radius); min-height: 42px; background: var(--pm-surface); cursor: text; transition: border-color var(--pm-duration) var(--pm-ease); align-items: center; }
.emp-tags-container:focus-within { border-color: var(--pm-accent); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.emp-tag { display: inline-flex; align-items: center; gap: .25rem; padding: .15rem .5rem; background: var(--pm-accent-bg); color: var(--pm-accent-text); border-radius: var(--pm-radius-sm); font-size: var(--pm-text-sm); font-weight: 500; white-space: nowrap; }
.emp-tag.tag-all { background: var(--pm-success-bg); color: var(--pm-success-text); }
.emp-tag .remove-tag { cursor: pointer; font-size: var(--pm-text-base); line-height: 1; opacity: .6; transition: opacity var(--pm-duration); }
.emp-tag .remove-tag:hover { opacity: 1; }
.emp-tags-input { border: none; outline: none; font-family: var(--pm-font); font-size: var(--pm-text-base); min-width: 80px; flex: 1; background: transparent; padding: 2px 0; }
.emp-suggest { position: absolute; top: 100%; left: 0; right: 0; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); box-shadow: var(--pm-shadow-md); max-height: 200px; overflow-y: auto; z-index: 1060; display: none; margin-top: .25rem; }
.emp-suggest.show { display: block; }
.emp-suggest-item { padding: .625rem .75rem; cursor: pointer; font-size: var(--pm-text-base); font-weight: 500; transition: background var(--pm-duration) var(--pm-ease); border-bottom: 1px solid var(--pm-surface-dimmer); }
.emp-suggest-item:last-child { border-bottom: none; }
.emp-suggest-item:hover { background: var(--pm-surface-hover); }
.emp-suggest-item .emp-branch { font-size: var(--pm-text-xs); color: var(--pm-ink-tertiary); font-weight: 400; }

/* Candidate / Recruitment */
.badge-outline-primary { background: var(--pm-surface) !important; color: var(--pm-ink) !important; border: 1px solid var(--pm-accent) !important; }
.badge-outline-info { background: var(--pm-surface) !important; color: var(--pm-ink) !important; border: 1px solid #0dcaf0 !important; }
.badge-outline-secondary { background: var(--pm-surface) !important; color: var(--pm-ink) !important; border: 1px solid var(--pm-border-strong) !important; }
.status-dot { width: 12px; height: 12px; display: inline-block; border-radius: 50%; }
.interview-time { font-size: var(--pm-text-base) !important; font-weight: 500; }
.history-text, .call-text { font-size: var(--pm-text-base); color: var(--pm-ink); }
.note-cell { cursor: pointer; min-height: 24px; padding: .25rem; border-radius: var(--pm-radius-sm); transition: background var(--pm-duration) var(--pm-ease); }
.note-cell:hover { background: var(--pm-surface-hover); }
.clickable-badge { cursor: pointer; user-select: none; transition: filter var(--pm-duration); }
.clickable-badge:hover { filter: brightness(.9); }
.status-dropdown { position: fixed !important; z-index: 99999 !important; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); box-shadow: var(--pm-shadow-md); min-width: 140px; display: none; }
.status-dropdown.show { display: block; }
.status-dropdown-item { padding: .5rem .75rem; cursor: pointer; font-size: var(--pm-text-sm); display: flex; align-items: center; gap: .4rem; }
.status-dropdown-item:hover { background: var(--pm-surface-hover); }
.status-dropdown-item .dot { width: .5rem; height: .5rem; border-radius: 50%; }
.audio-modal { display: none; position: fixed; z-index: 9999; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0,0,0,.5); }
.audio-modal.show { display: flex; align-items: center; justify-content: center; }
.audio-modal-content { background: var(--pm-surface); padding: 2rem; border-radius: var(--pm-radius); box-shadow: var(--pm-shadow-lg); max-width: 90%; width: 500px; }
.audio-modal audio { width: 100%; margin-top: 1rem; }

/* Calendar Table */
.cal-table { table-layout: fixed; }
.cal-table th { font-weight: 600; font-size: var(--pm-text-xs); text-transform: uppercase; background: var(--pm-surface-dim); border: 1px solid var(--pm-border); padding: .4rem .2rem; text-align: center; position: sticky; top: 0; z-index: 10; }
.cal-table th:first-child { width: 160px; min-width: 160px; text-align: left; position: sticky; left: 0; z-index: 20; padding-left: 1rem; }
.cal-table td { border: 1px solid var(--pm-border); padding: .2rem; text-align: center; vertical-align: middle; height: 36px; font-size: var(--pm-text-sm); }
.cal-table td:first-child { font-weight: 500; font-size: var(--pm-text-xs); text-align: left; position: sticky; left: 0; background: var(--pm-surface-dim); z-index: 5; white-space: nowrap; padding-left: 1rem; }
.cal-table td.has-iv { background: var(--pm-accent-bg); cursor: pointer; }
.cal-table td.has-iv:hover { background: var(--pm-accent-border); }
.cal-table td.today { background: var(--pm-danger-bg); }

/* Don Tu / Report Modal */
.status-badge { cursor: pointer; transition: filter var(--pm-duration) var(--pm-ease); user-select: none; font-size: var(--pm-text-sm); padding: .3em .75em; }
.status-badge:hover { filter: brightness(.95); }
.note-input { width: 100%; background: var(--pm-surface-dim); border: 1px solid var(--pm-accent); border-radius: var(--pm-radius-sm); padding: .5rem; outline: none; font-size: var(--pm-text-base); font-family: var(--pm-font); }
.note-cell.editing { background: var(--pm-surface-hover); }
.add-employee-icon, .employee-search-container, .employee-search-input, .employee-search-results, .employee-search-item, .employee-replacement-info { /* Đã xóa: tính năng chỉ định người làm hộ */ }

/* Lý do trong modal: viết hoa chữ cái đầu câu, các ký tự còn lại giữ nguyên */
.reason-cell::first-letter { text-transform: uppercase; }

/* Ghi chú trong modal: hiển thị uppercase (cell có nội dung) + input khi gõ */
.note-cell:not(.fst-italic), .note-input { text-transform: uppercase; }

/* Dấu - ở bảng lịch (ngày không có đơn): màu nhạt cho đỡ rối mắt */
.cal-empty-dash { color: var(--pm-ink-hint); font-weight: 400; }
/* ===== Check Blocked Numbers Modal ===== */

/* Period filter buttons — same base, toggle via .active only */
.blocked-period-btn { padding: .375rem .875rem; font-size: var(--pm-text-sm); font-weight: 600; }
.blocked-period-btn.active { background: var(--pm-accent); color: #fff; border-color: var(--pm-accent); }
.blocked-period-btn.active:hover { background: var(--pm-accent-hover); color: #fff; border-color: var(--pm-accent-hover); }

/* Summary stat tiles — black numbers, colored labels/backgrounds */
.blk-stat { padding: .625rem .875rem; background: var(--pm-surface-dim); border-radius: var(--pm-radius); border: 1px solid var(--pm-border); }
.blk-stat--success { background: var(--pm-success-bg); border-color: var(--pm-success-border); }
.blk-stat--warning { background: var(--pm-warning-bg); border-color: var(--pm-warning-border); }
.blk-stat--danger { background: var(--pm-danger-bg); border-color: var(--pm-danger-border); }
.blk-stat-label { font-size: var(--pm-text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-secondary); }
.blk-stat--success .blk-stat-label { color: var(--pm-success-text); }
.blk-stat--warning .blk-stat-label { color: var(--pm-warning-text); }
.blk-stat--danger .blk-stat-label { color: var(--pm-danger-text); }
.blk-stat-value { font-size: var(--pm-text-xl); font-weight: 700; line-height: 1.3; margin-top: .125rem; color: var(--pm-ink); }

/* Hotline list rows */
.blk-list-header { padding: .5rem .875rem; border-bottom: 1px solid var(--pm-border); background: var(--pm-surface); }
.blk-hotline { padding: .75rem .875rem; border-bottom: 1px solid var(--pm-border); background: var(--pm-surface); }
.blk-hotline:last-child { border-bottom: none; }
.blk-hotline--alert { background: var(--pm-danger-bg); border-bottom-color: var(--pm-danger-border); }
.blk-hotline--watch { background: var(--pm-warning-bg); border-bottom-color: var(--pm-warning-border); }

.blk-hotline-head { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
.blk-hotline-head .pm-chat-indicator { margin-right: 0; }
.blk-hotline-name { font-size: var(--pm-text-base); font-weight: 700; color: var(--pm-ink); }
.blk-hotline-meta { margin-left: auto; font-size: var(--pm-text-xs); color: var(--pm-ink-secondary); }

/* Inner carriers table — fixed column widths to prevent overflow */
.blk-hotline-table { margin-top: .625rem; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-radius); overflow: hidden; }
.blk-hotline-table table { width: 100%; border-collapse: collapse; font-size: var(--pm-text-sm); color: var(--pm-ink); table-layout: fixed; }
.blk-hotline-table col.c-carrier { width: 180px; }
.blk-hotline-table col.c-total { width: 90px; }
.blk-hotline-table col.c-refuse { width: 140px; }
.blk-hotline-table col.c-codes { width: auto; }
.blk-hotline-table th { font-size: var(--pm-text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--pm-ink-secondary); background: var(--pm-surface-dim); border-bottom: 1px solid var(--pm-border); padding: .5rem .75rem; text-align: left; white-space: nowrap; }
.blk-hotline-table th.num, .blk-hotline-table td.num { text-align: right; }
.blk-hotline-table td { padding: .5rem .75rem; border-bottom: 1px solid var(--pm-surface-dimmer); vertical-align: middle; color: var(--pm-ink); }
.blk-hotline-table tr:last-child td { border-bottom: none; }
.blk-hotline-table td.codes { white-space: normal; word-break: break-word; line-height: 1.9; }

.blk-carrier { cursor: help; color: var(--pm-ink); }
.blk-carrier.is-block { color: var(--pm-danger); font-weight: 700; }
.blk-refuse-strong { color: var(--pm-danger); font-weight: 700; }
.blk-code { cursor: help; margin-right: .25rem; display: inline-block; margin-bottom: .125rem; }

.blk-legend { margin-top: .875rem; padding: .625rem .75rem; background: var(--pm-surface-dim); border-radius: var(--pm-radius); font-size: var(--pm-text-xs); color: var(--pm-ink-secondary); line-height: 1.7; }
.blk-legend b { color: var(--pm-ink); font-weight: 600; }
/* ===== Moved from cham-cong.php inline <style> ===== */
.bg-indigo{background-color:#6366f1!important;color:#fff}
.employee-info{line-height:1.3}
.employee-info .fw-bold{font-size:var(--pm-text-base);font-weight:700}
.employee-info .small{font-size:var(--pm-text-sm)}
#goongMap{height:600px;width:100%;min-height:600px}
#mapContainer{position:relative;height:600px;width:100%}
.marker-icon{width:30px;height:30px;border-radius:50%;border:3px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;font-size:var(--pm-text-base);font-weight:600}
.marker-location{width:28px;height:28px;background:var(--pm-danger);border-radius:50%;border:2px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;color:#fff;font-size:1rem;cursor:pointer}
.btn-scan-count{width:32px;height:32px;padding:0;font-size:var(--pm-text-base);font-weight:600;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}
#datePicker{background-color:#fff!important;color:var(--pm-ink)!important;cursor:pointer;opacity:1!important}
#datePicker:focus{background-color:#fff!important}
.btn-scan-count.btn-outline-secondary{color:#000;border-color:#000}
.btn-scan-count.btn-outline-secondary:hover{background-color:#000;color:#fff;border-color:#000}
.status-column{min-width:150px;vertical-align:top!important}
.status-column .pm-badge{justify-content:center}
.checkin-column .pm-badge,.checkout-column .pm-badge{justify-content:center}
.replacement-inline{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.replacement-time{color:var(--pm-ink-secondary);white-space:nowrap;margin-left:.25rem}
.don-tu-row{display:flex;align-items:center;gap:.375rem;flex-wrap:nowrap;margin-bottom:.375rem}
.don-tu-row .pm-badge{flex-shrink:0}
.don-tu-row .don-tu-name{font-weight:700;white-space:nowrap}
.don-tu-row .don-tu-time{color:var(--pm-ink-secondary);white-space:nowrap}
.error-badge-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:.25rem;align-items:center;justify-content:center}
.image-viewer{display:none;position:relative;width:100%;height:600px;background-color:#000;overflow:hidden}
.image-viewer img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-width:100%;max-height:100%;object-fit:contain}
.image-viewer .close-btn{position:absolute;top:10px;right:10px;width:30px;height:30px;background-color:rgba(255,255,255,.9);border:none;border-radius:50%;cursor:pointer;z-index:1001;display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;color:#000}
.image-viewer .close-btn:hover{background-color:#fff}
.img-scan{width:40px;height:40px;object-fit:cover;border-radius:4px;display:block;position:relative;z-index:1}
.img-scan-wrap{position:relative;display:inline-flex;padding:3px;border-radius:7px;background:transparent;transition:background .3s}
.img-scan-wrap.valid{background:#22c55e}
.img-scan-wrap.invalid{background:#ef4444}
.face-result-icon{position:absolute;top:-5px;right:-5px;font-size:16px;z-index:2;display:none;line-height:1;border-radius:50%;background:#fff}
.img-scan-wrap.valid .face-result-icon,.img-scan-wrap.invalid .face-result-icon{display:block}
.face-badge-injected{display:contents}
.table-scan-details tbody tr{background-color:#fff!important}
.table-scan-details tbody tr:hover{background-color:var(--pm-surface-hover)!important}
.checkin-column,.checkout-column{vertical-align:top!important}
.table-attendance th{position:sticky;top:0;z-index:10}
.table-attendance th:nth-child(1){width:16%;padding-left:1rem}.table-attendance td:nth-child(1){padding-left:1rem}
.table-attendance th:nth-child(2){width:8%}.table-attendance th:nth-child(3){width:8%}
.table-attendance th:nth-child(4){width:11%}.table-attendance th:nth-child(5){width:11%}
.table-attendance th:nth-child(6){width:28%}
.table-attendance th:nth-child(7){width:8%}
.table-attendance th:nth-child(8){width:10%;padding-right:1rem}.table-attendance td:nth-child(8){padding-right:1rem}
#employeeSearch-wrap{position:relative}
#employeeSearch-wrap .search-tags{display:inline-flex;align-items:center;gap:.25rem;position:absolute;left:.5rem;top:50%;transform:translateY(-50%);z-index:2}
#employeeSearch-wrap .search-tags .pm-badge{font-size:var(--pm-text-xs);padding:.15em .5em}
#employeeSearch-wrap .search-tags .emp-tag-close:hover{color:#dc2626}
#searchSuggest{position:absolute;top:100%;left:0;z-index:1000}
/* === bao-cao custom: modal tạo đơn mới === */
.pm-suggest-drop{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:1080;background:var(--pm-surface,#fff);border:1px solid var(--pm-border,#e2e5ea);border-radius:8px;max-height:200px;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.pm-suggest-item{padding:8px 12px;cursor:pointer;font-size:13px;color:var(--pm-ink,#1a1a2e)}
.pm-suggest-item:hover{background:var(--pm-surface-hover,#f0f1f4)}
.pm-emp-card{border:1px solid var(--pm-accent-border,#93c5fd);border-radius:10px;background:var(--pm-accent-bg,#eff5ff);padding:10px 12px;display:flex;align-items:center;gap:10px}
.pm-emp-av{width:36px;height:36px;border-radius:50%;background-size:cover;background-position:center;background-color:#dbeafe;flex-shrink:0}
.pm-emp-av-lg{width:40px;height:40px;border-radius:50%;background-size:cover;background-position:center;background-color:#dbeafe;flex-shrink:0}
.pm-emp-card .fw-bold{font-size:13px;color:var(--pm-ink,#1a1a2e)}
.pm-emp-card .pm-text-sm{font-size:12px;color:var(--pm-ink-secondary,#5a6069)}