:root{--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-active: #1d4ed8;--color-primary-light: #eff6ff;--color-background: #ffffff;--color-surface: #f3f4f6;--color-surface-elevated: #ffffff;--color-surface-hover: #f9fafb;--color-surface-muted: #f9fafb;--color-text-primary: #1f2937;--color-text-secondary: #6b7280;--color-text-tertiary: #9ca3af;--color-text-muted: #718096;--color-text-hint: #999999;--color-text-dark: #111827;--color-text-body: #4a5568;--color-text-strong: #374151;--color-text-inverse: #ffffff;--color-border: #e5e7eb;--color-border-strong: #d1d5db;--color-border-light: #e2e8f0;--color-border-muted: #dee2e6;--color-baseline-badge: #22c55e;--color-selection-border: #3b82f6;--color-error: #ef4444;--color-error-hover: #dc2626;--color-error-light: #fef2f2;--color-error-bg: #fee2e2;--color-error-text: #991b1b;--color-warning: #f59e0b;--color-warning-hover: #d97706;--color-warning-light: #fffbeb;--color-warning-bg: #fef3c7;--color-warning-text: #92400e;--color-warning-strong: #b45309;--color-warning-border: #fcd34d;--color-success: #10b981;--color-success-dark: #15803d;--color-success-light: #f0fdf4;--color-success-bg: #dcfce7;--color-success-strong: #166534;--color-success-border: #bbf7d0;--color-info: #2563eb;--color-info-light: #dbeafe;--color-info-bg: #eff6ff;--color-info-text: #1d4ed8;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--color-chart-blue: #4299e1;--color-chart-red: #f56565;--color-chart-green: #48bb78;--color-chart-orange: #ed8936;--color-chart-purple: #9f7aea;--color-chart-indigo: #667eea;--color-chart-teal: #38b2ac;--color-chart-pink: #ed64a6;--color-chart-yellow: #d69e2e;--color-chart-violet: #805ad5;--color-chart-emerald: #38a169;--color-chart-cyan: #319795;--color-chart-material-red: #f44336;--color-chart-material-green: #4caf50;--color-chart-material-amber: #ff9800;--color-chart-material-brown: #795548;--color-chart-material-blue: #2196f3;--color-chart-lavender: #8884d8;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--border-radius-sm: 4px;--border-radius-md: 8px;--border-radius-lg: 12px;--border-radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--image-viewer-sidebar-width: 220px;--image-viewer-sidebar-width-collapsed: 60px;--image-viewer-thumbnail-size: 120px;--image-viewer-header-height: 64px;--image-viewer-bottom-nav-height: 64px;--touch-target-min: 44px}[data-theme=dark]{--color-primary: #60a5fa;--color-primary-hover: #3b82f6;--color-primary-active: #2563eb;--color-background: #111827;--color-surface: #1f2937;--color-surface-elevated: #374151;--color-text-primary: #f9fafb;--color-text-secondary: #d1d5db;--color-text-tertiary: #9ca3af;--color-border: #374151;--color-border-strong: #4b5563;--color-baseline-badge: #34d399;--color-selection-border: #60a5fa;--color-error: #f87171;--color-warning: #fbbf24;--color-success: #34d399;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .4);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .5), 0 4px 6px -4px rgb(0 0 0 / .5);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .6), 0 8px 10px -6px rgb(0 0 0 / .6)}[data-theme=light]{--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-active: #1d4ed8;--color-background: #ffffff;--color-surface: #f3f4f6;--color-surface-elevated: #ffffff;--color-text-primary: #1f2937;--color-text-secondary: #6b7280;--color-text-tertiary: #9ca3af;--color-border: #e5e7eb;--color-border-strong: #d1d5db;--color-baseline-badge: #22c55e;--color-selection-border: #3b82f6;--color-error: #ef4444;--color-warning: #f59e0b;--color-success: #10b981;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1)}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(prefers-contrast:high){:root{--color-border: #000000;--color-border-strong: #000000}[data-theme=dark]{--color-border: #ffffff;--color-border-strong: #ffffff}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.dark .admin-dashboard,[data-theme=dark] .admin-dashboard,.dark .module-layout[data-module=admin] .module-layout__content,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content{background-color:var(--color-bg-secondary)}.dark .stat-card,.dark .dashboard-card,.dark .analytics-card,.dark .system-status-card,.dark .tip-card,.dark .form-card,.dark .settings-card,.dark .user-card,.dark .role-card,.dark .branch-card,.dark .department-card,.dark .code-table-card,[data-theme=dark] .stat-card,[data-theme=dark] .dashboard-card,[data-theme=dark] .analytics-card,[data-theme=dark] .system-status-card,[data-theme=dark] .tip-card,[data-theme=dark] .form-card,[data-theme=dark] .settings-card,[data-theme=dark] .user-card,[data-theme=dark] .role-card,[data-theme=dark] .branch-card,[data-theme=dark] .department-card,[data-theme=dark] .code-table-card{background:#1e293b!important;border-color:#334155!important}.dark .stat-card__value,[data-theme=dark] .stat-card__value{color:#f1f5f9!important}.dark .stat-card__label,[data-theme=dark] .stat-card__label{color:#94a3b8!important}.dark .stat-card__icon,[data-theme=dark] .stat-card__icon{background:var(--color-bg-tertiary)!important}.dark .admin-dashboard__title,[data-theme=dark] .admin-dashboard__title{color:#f1f5f9!important}.dark .admin-dashboard__subtitle,[data-theme=dark] .admin-dashboard__subtitle{color:#94a3b8!important}.dark .admin-dashboard__section-title,[data-theme=dark] .admin-dashboard__section-title,.dark .dashboard-card__title,[data-theme=dark] .dashboard-card__title{color:#f1f5f9!important}.dark .dashboard-card__description,[data-theme=dark] .dashboard-card__description{color:#94a3b8!important}.dark .dashboard-card__icon,[data-theme=dark] .dashboard-card__icon{background:var(--color-bg-tertiary)!important}.dark .dashboard-card__arrow,[data-theme=dark] .dashboard-card__arrow{color:#64748b!important}.dark .analytics-card__title,[data-theme=dark] .analytics-card__title{color:#f1f5f9!important}.dark .analytics-empty,[data-theme=dark] .analytics-empty{color:#94a3b8!important}.dark .role-bar-name,[data-theme=dark] .role-bar-name{color:#f1f5f9!important}.dark .role-bar-value,.dark .role-bar-permissions,[data-theme=dark] .role-bar-value,[data-theme=dark] .role-bar-permissions{color:#94a3b8!important}.dark .role-bar-track,[data-theme=dark] .role-bar-track{background:var(--color-bg-tertiary)!important}.dark .permission-module-name,[data-theme=dark] .permission-module-name,.dark .permission-module-value,[data-theme=dark] .permission-module-value{color:#f1f5f9!important}.dark .permission-module-percent,.dark .permission-module-total,[data-theme=dark] .permission-module-percent,[data-theme=dark] .permission-module-total{color:#94a3b8!important}.dark .iam-summary-item,[data-theme=dark] .iam-summary-item{background:var(--color-bg-tertiary)!important}.dark .iam-summary-label,[data-theme=dark] .iam-summary-label{color:#94a3b8!important}.dark .iam-summary-value,[data-theme=dark] .iam-summary-value,.dark .system-status-label,[data-theme=dark] .system-status-label{color:#f1f5f9!important}.dark .system-status-value,[data-theme=dark] .system-status-value{color:#94a3b8!important}.dark .system-status-item,[data-theme=dark] .system-status-item{border-color:var(--color-bg-tertiary)!important}.dark .tip-card,[data-theme=dark] .tip-card{background:var(--color-bg-tertiary)!important;border-color:var(--color-border)!important}.dark .tip-card__content h4,.dark .tip-card h4,[data-theme=dark] .tip-card__content h4,[data-theme=dark] .tip-card h4{color:#60a5fa!important}.dark .tip-card__content p,.dark .tip-card p,[data-theme=dark] .tip-card__content p,[data-theme=dark] .tip-card p{color:#94a3b8!important}.dark .user-management,[data-theme=dark] .user-management{background-color:var(--color-bg-secondary)}.dark .user-management__title,.dark .user-management__header h1,[data-theme=dark] .user-management__title,[data-theme=dark] .user-management__header h1{color:var(--color-text-primary)}.dark .user-management__subtitle,.dark .user-management__description,[data-theme=dark] .user-management__subtitle,[data-theme=dark] .user-management__description{color:var(--color-text-secondary)}.dark .users-table,.dark .roles-table,.dark .branches-table,.dark .departments-table,.dark .code-table,.dark table,[data-theme=dark] .users-table,[data-theme=dark] .roles-table,[data-theme=dark] .branches-table,[data-theme=dark] .departments-table,[data-theme=dark] .code-table,[data-theme=dark] table{background:var(--color-bg-primary);border-color:var(--color-border)}.dark th,.dark thead th,[data-theme=dark] th,[data-theme=dark] thead th{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-color:var(--color-border)}.dark td,.dark tbody td,[data-theme=dark] td,[data-theme=dark] tbody td{color:var(--color-text-primary);border-color:var(--color-border)}.dark tr:hover td,.dark tbody tr:hover,[data-theme=dark] tr:hover td,[data-theme=dark] tbody tr:hover{background:var(--color-bg-tertiary)}.dark .role-management,[data-theme=dark] .role-management{background-color:var(--color-bg-secondary)}.dark .role-management__title,.dark .role-management__header h1,[data-theme=dark] .role-management__title,[data-theme=dark] .role-management__header h1{color:var(--color-text-primary)}.dark .role-card,.dark .permission-card,[data-theme=dark] .role-card,[data-theme=dark] .permission-card{background:var(--color-bg-primary);border-color:var(--color-border)}.dark .role-card__title,.dark .permission-card__title,[data-theme=dark] .role-card__title,[data-theme=dark] .permission-card__title{color:var(--color-text-primary)}.dark .role-card__description,.dark .permission-card__description,[data-theme=dark] .role-card__description,[data-theme=dark] .permission-card__description{color:var(--color-text-secondary)}.dark .branch-management,[data-theme=dark] .branch-management{background-color:var(--color-bg-secondary)}.dark .branch-management__title,.dark .branch-management__header h1,[data-theme=dark] .branch-management__title,[data-theme=dark] .branch-management__header h1{color:var(--color-text-primary)}.dark .department-management,[data-theme=dark] .department-management{background-color:var(--color-bg-secondary)}.dark .department-management__title,.dark .department-management__header h1,[data-theme=dark] .department-management__title,[data-theme=dark] .department-management__header h1{color:var(--color-text-primary)}.dark .code-table-management,[data-theme=dark] .code-table-management{background-color:var(--color-bg-secondary)}.dark .code-table-management__title,.dark .code-table-management__header h1,[data-theme=dark] .code-table-management__title,[data-theme=dark] .code-table-management__header h1{color:var(--color-text-primary)}.dark .code-table-card,.dark .code-value-item,[data-theme=dark] .code-table-card,[data-theme=dark] .code-value-item{background:var(--color-bg-primary);border-color:var(--color-border)}.dark .code-table-card__title,.dark .code-value-item__name,[data-theme=dark] .code-table-card__title,[data-theme=dark] .code-value-item__name{color:var(--color-text-primary)}.dark .code-table-card__description,.dark .code-value-item__description,[data-theme=dark] .code-table-card__description,[data-theme=dark] .code-value-item__description{color:var(--color-text-secondary)}.dark .app-settings,.dark .settings-management,[data-theme=dark] .app-settings,[data-theme=dark] .settings-management{background-color:var(--color-bg-secondary)}.dark .settings-card,.dark .settings-group,.dark .setting-item,[data-theme=dark] .settings-card,[data-theme=dark] .settings-group,[data-theme=dark] .setting-item{background:var(--color-bg-primary);border-color:var(--color-border)}.dark .settings-card__title,.dark .setting-item__label,[data-theme=dark] .settings-card__title,[data-theme=dark] .setting-item__label{color:var(--color-text-primary)}.dark .settings-card__description,.dark .setting-item__description,[data-theme=dark] .settings-card__description,[data-theme=dark] .setting-item__description{color:var(--color-text-secondary)}.dark input[type=text],.dark input[type=email],.dark input[type=password],.dark input[type=number],.dark input[type=search],.dark textarea,.dark select,[data-theme=dark] input[type=text],[data-theme=dark] input[type=email],[data-theme=dark] input[type=password],[data-theme=dark] input[type=number],[data-theme=dark] input[type=search],[data-theme=dark] textarea,[data-theme=dark] select{background:var(--color-bg-primary);color:var(--color-text-primary);border-color:var(--color-border)}.dark input::placeholder,.dark textarea::placeholder,[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:var(--color-text-muted)}.dark input:focus,.dark textarea:focus,.dark select:focus,[data-theme=dark] input:focus,[data-theme=dark] textarea:focus,[data-theme=dark] select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-ring)}.dark label,.dark .form-label,.dark .input-label,[data-theme=dark] label,[data-theme=dark] .form-label,[data-theme=dark] .input-label{color:var(--color-text-primary)}.dark .form-hint,.dark .input-hint,.dark .helper-text,[data-theme=dark] .form-hint,[data-theme=dark] .input-hint,[data-theme=dark] .helper-text{color:var(--color-text-secondary)}.dark .modal,.dark .dialog,.dark .modal-content,.dark .dialog-content,[data-theme=dark] .modal,[data-theme=dark] .dialog,[data-theme=dark] .modal-content,[data-theme=dark] .dialog-content{background:var(--color-bg-primary);border-color:var(--color-border)}.dark .modal-header,.dark .dialog-header,[data-theme=dark] .modal-header,[data-theme=dark] .dialog-header{border-color:var(--color-border)}.dark .modal-title,.dark .dialog-title,[data-theme=dark] .modal-title,[data-theme=dark] .dialog-title{color:var(--color-text-primary)}.dark .modal-footer,.dark .dialog-footer,[data-theme=dark] .modal-footer,[data-theme=dark] .dialog-footer{background:var(--color-bg-tertiary);border-color:var(--color-border)}.dark .btn-secondary,.dark .button-secondary,[data-theme=dark] .btn-secondary,[data-theme=dark] .button-secondary{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-color:var(--color-border)}.dark .btn-secondary:hover,.dark .button-secondary:hover,[data-theme=dark] .btn-secondary:hover,[data-theme=dark] .button-secondary:hover{background:var(--color-border)}.dark .dropdown-menu,.dark .dropdown-content,.dark .menu-items,[data-theme=dark] .dropdown-menu,[data-theme=dark] .dropdown-content,[data-theme=dark] .menu-items{background:var(--color-bg-primary);border-color:var(--color-border);box-shadow:var(--shadow-lg)}.dark .dropdown-item,.dark .menu-item,[data-theme=dark] .dropdown-item,[data-theme=dark] .menu-item{color:var(--color-text-primary)}.dark .dropdown-item:hover,.dark .menu-item:hover,[data-theme=dark] .dropdown-item:hover,[data-theme=dark] .menu-item:hover{background:var(--color-bg-tertiary)}.dark .status-badge--active,.dark .badge--success,[data-theme=dark] .status-badge--active,[data-theme=dark] .badge--success{background:var(--color-success-light);color:var(--color-success)}.dark .status-badge--inactive,.dark .badge--error,[data-theme=dark] .status-badge--inactive,[data-theme=dark] .badge--error{background:var(--color-danger-light);color:var(--color-danger)}.dark .status-badge--pending,.dark .badge--warning,[data-theme=dark] .status-badge--pending,[data-theme=dark] .badge--warning{background:var(--color-warning-light);color:var(--color-warning)}.dark .search-box,.dark .search-input,.dark .filter-input,[data-theme=dark] .search-box,[data-theme=dark] .search-input,[data-theme=dark] .filter-input{background:var(--color-bg-primary);border-color:var(--color-border);color:var(--color-text-primary)}.dark .filter-dropdown,.dark .filter-panel,[data-theme=dark] .filter-dropdown,[data-theme=dark] .filter-panel{background:var(--color-bg-primary);border-color:var(--color-border)}.dark .pagination,[data-theme=dark] .pagination{color:var(--color-text-primary)}.dark .pagination-button,.dark .page-item,[data-theme=dark] .pagination-button,[data-theme=dark] .page-item{background:var(--color-bg-primary);border-color:var(--color-border);color:var(--color-text-primary)}.dark .pagination-button:hover,.dark .page-item:hover,[data-theme=dark] .pagination-button:hover,[data-theme=dark] .page-item:hover{background:var(--color-bg-tertiary)}.dark .pagination-button--active,.dark .page-item--active,[data-theme=dark] .pagination-button--active,[data-theme=dark] .page-item--active{background:var(--color-primary);color:#fff}.dark .empty-state,[data-theme=dark] .empty-state{color:var(--color-text-secondary)}.dark .empty-state__title,[data-theme=dark] .empty-state__title{color:var(--color-text-primary)}.dark .empty-state__description,[data-theme=dark] .empty-state__description{color:var(--color-text-secondary)}.dark .skeleton,.dark .loading-skeleton,[data-theme=dark] .skeleton,[data-theme=dark] .loading-skeleton{background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-border) 50%,var(--color-bg-tertiary) 75%)}.dark .tooltip,.dark .tooltip-content,[data-theme=dark] .tooltip,[data-theme=dark] .tooltip-content{background:var(--color-bg-primary);color:var(--color-text-primary);border-color:var(--color-border)}.dark ::-webkit-scrollbar-track,[data-theme=dark] ::-webkit-scrollbar-track{background:var(--color-bg-secondary)}.dark ::-webkit-scrollbar-thumb,[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--color-bg-tertiary);border-color:var(--color-bg-secondary)}.dark ::-webkit-scrollbar-thumb:hover,[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:var(--color-border)}.dark a,[data-theme=dark] a{color:var(--color-primary)}.dark a:hover,[data-theme=dark] a:hover{color:var(--color-primary-hover)}.dark hr,.dark .divider,.dark .separator,[data-theme=dark] hr,[data-theme=dark] .divider,[data-theme=dark] .separator{border-color:var(--color-border)}.dark .user-form,.dark .user-details,[data-theme=dark] .user-form,[data-theme=dark] .user-details{background:var(--color-bg-primary);color:var(--color-text-primary)}.dark .user-form-staff-codes__empty,[data-theme=dark] .user-form-staff-codes__empty{color:var(--color-text-tertiary)}.dark .user-form-staff-codes__manage,[data-theme=dark] .user-form-staff-codes__manage{color:var(--color-accent)}.dark .user-form-staff-codes__manage:hover,[data-theme=dark] .user-form-staff-codes__manage:hover{color:var(--color-accent-hover, #63b3ed)}.dark .role-hierarchy-tree,[data-theme=dark] .role-hierarchy-tree{background:var(--color-bg-primary);border-color:var(--color-border)}.dark .role-hierarchy-node,[data-theme=dark] .role-hierarchy-node{background:var(--color-bg-primary);border-color:var(--color-border);color:var(--color-text-primary)}.dark .breadcrumbs__current,[data-theme=dark] .breadcrumbs__current{color:#f1f5f9!important}.dark .breadcrumbs__link,[data-theme=dark] .breadcrumbs__link{color:#60a5fa!important}.dark .breadcrumbs__separator,[data-theme=dark] .breadcrumbs__separator{color:#64748b!important}.dark .module-layout[data-module=admin] .module-layout__content h1,.dark .module-layout[data-module=admin] .module-layout__content h2,.dark .module-layout[data-module=admin] .module-layout__content h3,.dark .module-layout[data-module=admin] .module-layout__content h4,.dark .module-layout[data-module=admin] .module-layout__content h5,.dark .module-layout[data-module=admin] .module-layout__content h6,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content h1,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content h2,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content h3,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content h4,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content h5,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content h6{color:#f1f5f9!important}.dark .module-layout[data-module=admin] .module-layout__content p,[data-theme=dark] .module-layout[data-module=admin] .module-layout__content p{color:#94a3b8!important}.dark .main-content,[data-theme=dark] .main-content{background-color:#0f172a!important;color:#f1f5f9!important}:root{--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--touch-target-min: 44px;--form-max-width: 640px;--form-field-max-width: 480px;--z-dropdown: 100;--z-sticky: 200;--z-modal-backdrop: 900;--z-modal: 1000;--z-tooltip: 1100}.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-border, #e5e7eb) transparent}.table-responsive::-webkit-scrollbar{height:8px}.table-responsive::-webkit-scrollbar-track{background:transparent}.table-responsive::-webkit-scrollbar-thumb{background:var(--color-border, #e5e7eb);border-radius:4px}.table-responsive::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary, #9ca3af)}.data-table{width:100%;min-width:600px;border-collapse:collapse;font-size:.875rem}.data-table th,.data-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--color-border, #e5e7eb);vertical-align:middle}.data-table th{font-weight:600;color:var(--color-text-secondary, #6b7280);background:var(--color-surface, #f9fafb);position:sticky;top:0;z-index:var(--z-sticky)}.data-table tbody tr:hover{background:var(--color-surface-hover, #f3f4f6)}.data-table .col-xs{width:60px;min-width:60px}.data-table .col-sm{width:100px;min-width:100px}.data-table .col-md{width:150px;min-width:150px}.data-table .col-lg{width:200px;min-width:200px}.data-table .col-xl{width:250px;min-width:250px}.data-table .col-auto{width:auto}.data-table .col-fill{width:100%}.text-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.text-truncate[title]{cursor:help}.form-container{max-width:var(--form-max-width);margin:0 auto}.form-field{margin-bottom:var(--spacing-lg)}.form-field__label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text-secondary, #6b7280);margin-bottom:var(--spacing-sm)}.form-field__input,.form-field__select,.form-field__textarea{width:100%;max-width:var(--form-field-max-width);padding:.625rem .875rem;font-size:.9375rem;border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md);background:var(--color-background, #ffffff);color:var(--color-text-primary, #1f2937);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-field__input:focus,.form-field__select:focus,.form-field__textarea:focus{outline:none;border-color:var(--color-primary, #6366f1);box-shadow:0 0 0 3px #6366f126}.form-field__input::placeholder{color:var(--color-text-tertiary, #9ca3af)}.form-field--error .form-field__input,.form-field--error .form-field__select{border-color:var(--color-error, #ef4444)}.form-field--error .form-field__input:focus,.form-field--error .form-field__select:focus{box-shadow:0 0 0 3px #ef444426}.form-field__error{display:flex;align-items:center;gap:.25rem;margin-top:.375rem;font-size:.8125rem;color:var(--color-error, #ef4444)}.form-field__hint{margin-top:.375rem;font-size:.8125rem;color:var(--color-text-tertiary, #9ca3af)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg)}@media(max-width:640px){.form-row{grid-template-columns:1fr}}.touch-target{min-width:var(--touch-target-min);min-height:var(--touch-target-min);display:inline-flex;align-items:center;justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:var(--touch-target-min);padding:.625rem 1rem;font-size:.875rem;font-weight:500;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--color-primary, #6366f1);color:#fff;border-color:var(--color-primary, #6366f1)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover, #4f46e5);border-color:var(--color-primary-hover, #4f46e5)}.btn--secondary{background:var(--color-surface, #f3f4f6);color:var(--color-text-primary, #1f2937);border-color:var(--color-border, #e5e7eb)}.btn--secondary:hover:not(:disabled){background:var(--color-surface-hover, #e5e7eb)}.btn--ghost{background:transparent;color:var(--color-text-secondary, #6b7280)}.btn--ghost:hover:not(:disabled){background:var(--color-surface, #f3f4f6);color:var(--color-text-primary, #1f2937)}.btn--icon{padding:.5rem;min-width:var(--touch-target-min)}.btn--icon svg{width:20px;height:20px}.btn--sm{min-height:36px;padding:.375rem .75rem;font-size:.8125rem}:focus-visible{outline:2px solid var(--color-primary, #6366f1);outline-offset:2px}.focus-ring:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-background, #ffffff),0 0 0 4px var(--color-primary, #6366f1)}.skip-link{position:absolute;top:-100%;left:0;padding:1rem;background:var(--color-primary, #6366f1);color:#fff;z-index:9999;transition:top var(--transition-fast)}.skip-link:focus{top:0}.sr-only-focusable:focus{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;font-size:.75rem;font-weight:600;border-radius:var(--radius-full);white-space:nowrap}.badge--success{background:#dcfce7;color:#166534;border:1px solid #86efac}.badge--warning{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.badge--error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.badge--info{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}.badge--neutral{background:#f3f4f6;color:#374151;border:1px solid #d1d5db}.badge--primary{background:#e0e7ff;color:#3730a3;border:1px solid #a5b4fc}.badge--pending{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.badge--approved{background:#dcfce7;color:#166534;border:1px solid #86efac}.badge--rejected{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.badge--cancelled{background:#f3f4f6;color:#374151;border:1px solid #d1d5db}.card{background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg);overflow:hidden}.card--hover:hover{box-shadow:0 4px 12px #00000014;border-color:var(--color-border-hover, #d1d5db)}.card__header{padding:1rem 1.25rem;border-bottom:1px solid var(--color-border, #e5e7eb);background:var(--color-surface, #f9fafb)}.card__body{padding:1.25rem}.card__footer{padding:1rem 1.25rem;border-top:1px solid var(--color-border, #e5e7eb);background:var(--color-surface, #f9fafb)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-card{background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg);padding:1.25rem;transition:all var(--transition-fast)}.stat-card:hover{box-shadow:0 4px 12px #0000000d}.stat-card__label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary, #6b7280);margin-bottom:.5rem}.stat-card__value{font-size:1.75rem;font-weight:700;color:var(--color-text-primary, #1f2937);line-height:1.2}.stat-card__trend{display:flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem}.stat-card__trend--up{color:var(--color-success, #10b981)}.stat-card__trend--down{color:var(--color-error, #ef4444)}.dashboard-card{background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg);padding:1.5rem;text-decoration:none;color:inherit;display:block;transition:all var(--transition-normal)}.dashboard-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001a;border-color:var(--color-primary, #6366f1)}.dashboard-card:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-background, #ffffff),0 0 0 4px var(--color-primary, #6366f1)}.dashboard-card__icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;border-radius:var(--radius-lg);margin-bottom:1rem}.dashboard-card__title{font-size:1.125rem;font-weight:600;color:var(--color-text-primary, #1f2937);margin-bottom:.5rem}.dashboard-card__description{font-size:.875rem;color:var(--color-text-secondary, #6b7280);line-height:1.5}.pagination{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.pagination__btn{min-width:var(--touch-target-min);min-height:var(--touch-target-min);padding:.5rem .75rem;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:500;border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md);background:var(--color-surface-elevated, #ffffff);color:var(--color-text-primary, #1f2937);cursor:pointer;transition:all var(--transition-fast)}.pagination__btn:hover:not(:disabled){background:var(--color-surface, #f3f4f6);border-color:var(--color-border-hover, #d1d5db)}.pagination__btn:disabled{opacity:.5;cursor:not-allowed}.pagination__btn--active{background:var(--color-primary, #6366f1);color:#fff;border-color:var(--color-primary, #6366f1)}.pagination__info{font-size:.875rem;color:var(--color-text-secondary, #6b7280);padding:0 .5rem}.role-badges{display:flex;flex-wrap:wrap;gap:.375rem;max-width:100%}.role-badge{display:inline-flex;align-items:center;padding:.1875rem .5rem;font-size:.6875rem;font-weight:500;border-radius:var(--radius-full);background:var(--color-surface, #f3f4f6);color:var(--color-text-secondary, #6b7280);border:1px solid var(--color-border, #e5e7eb);white-space:nowrap}.today-indicator{position:relative}.today-indicator:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);width:6px;height:6px;border-radius:50%;background:var(--color-primary, #6366f1)}.today-badge{display:inline-flex;align-items:center;padding:.125rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-radius:var(--radius-full);background:var(--color-primary, #6366f1);color:#fff;margin-left:.5rem}.day-empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:60px;color:var(--color-text-tertiary, #9ca3af);font-size:.75rem;font-style:italic}.day-empty:before{content:"—";opacity:.5}.modal-backdrop{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal-backdrop);display:flex;align-items:center;justify-content:center;padding:1rem}.modal{background:var(--color-surface-elevated, #ffffff);border-radius:var(--radius-xl);box-shadow:0 25px 50px -12px #00000040;width:100%;max-width:560px;max-height:calc(100vh - 2rem);overflow:hidden;display:flex;flex-direction:column;z-index:var(--z-modal)}.modal--lg{max-width:800px}.modal--xl{max-width:1024px}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border, #e5e7eb)}.modal__title{font-size:1.25rem;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0}.modal__close{min-width:var(--touch-target-min);min-height:var(--touch-target-min);display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-md);color:var(--color-text-tertiary, #9ca3af);cursor:pointer;transition:all var(--transition-fast)}.modal__close:hover{background:var(--color-surface, #f3f4f6);color:var(--color-text-primary, #1f2937)}.modal__body{flex:1;padding:1.5rem;overflow-y:auto}.modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border, #e5e7eb);background:var(--color-surface, #f9fafb)}.list-spaced{display:flex;flex-direction:column;gap:.75rem}.list-spaced__item{padding:1rem;background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md);transition:all var(--transition-fast)}.list-spaced__item:hover{border-color:var(--color-border-hover, #d1d5db);box-shadow:0 2px 8px #0000000a}.grid-cell{min-height:80px;padding:.5rem;display:flex;flex-direction:column;gap:.25rem}.grid-cell--expandable{min-height:auto;height:auto}.grid-cell__overflow{font-size:.6875rem;color:var(--color-primary, #6366f1);cursor:pointer}.action-buttons{display:flex;gap:.25rem;opacity:.6;transition:opacity var(--transition-fast)}.action-buttons--visible,tr:hover .action-buttons,.card:hover .action-buttons,.list-spaced__item:hover .action-buttons{opacity:1}.action-btn{min-width:32px;min-height:32px;padding:.375rem;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-tertiary, #9ca3af);cursor:pointer;transition:all var(--transition-fast)}.action-btn:hover{background:var(--color-surface, #f3f4f6);color:var(--color-text-primary, #1f2937)}.action-btn--danger:hover{background:#fee2e2;color:#dc2626}.dropdown-select{min-width:160px;max-width:280px;padding:.5rem 2rem .5rem .75rem;font-size:.875rem;border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md);background:var(--color-surface-elevated, #ffffff) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") right .5rem center/1.25rem no-repeat;color:var(--color-text-primary, #1f2937);cursor:pointer;appearance:none;transition:all var(--transition-fast)}.dropdown-select:hover{border-color:var(--color-border-hover, #d1d5db)}.dropdown-select:focus{outline:none;border-color:var(--color-primary, #6366f1);box-shadow:0 0 0 3px #6366f126}.color-display{display:inline-flex;align-items:center;gap:.5rem}.color-swatch{width:24px;height:24px;border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.1);flex-shrink:0}.color-code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;font-size:.8125rem;color:var(--color-text-secondary, #6b7280);text-transform:uppercase}@media print{.no-print{display:none!important}.print-only{display:block!important}body{background:#fff!important;color:#000!important}.card,.stat-card,.dashboard-card{box-shadow:none!important;border:1px solid #e5e7eb!important}.btn,.pagination,.action-buttons{display:none!important}table{page-break-inside:auto}tr{page-break-inside:avoid;page-break-after:auto}thead{display:table-header-group}}.table-sticky-header{position:relative}.table-sticky-header thead th{position:sticky;top:0;background:var(--color-surface, #f9fafb);z-index:var(--z-sticky);box-shadow:0 1px 0 var(--color-border, #e5e7eb)}.row-fixed-height{height:56px;min-height:56px;max-height:56px;overflow:hidden}.row-fixed-height td{vertical-align:middle}.input-uppercase{text-transform:uppercase}.input-uppercase::placeholder{text-transform:none}.tree{padding-left:1.5rem}.tree-item{position:relative;padding-left:1.5rem;margin-bottom:.5rem}.tree-item:before{content:"";position:absolute;left:0;top:0;width:1rem;height:.875rem;border-left:2px solid var(--color-border, #e5e7eb);border-bottom:2px solid var(--color-border, #e5e7eb);border-radius:0 0 0 4px}.tree-item:last-child:after{content:"";position:absolute;left:0;top:.875rem;bottom:0;width:2px;background:var(--color-background, #ffffff)}.tree-item__content{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-surface, #f3f4f6);border-radius:var(--radius-md);font-size:.875rem}.time-display{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.time-display--compact{font-size:.8125rem}.shift-card{min-height:80px;display:flex;flex-direction:column;padding:.75rem;background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md);border-left:4px solid var(--shift-color, var(--color-primary, #6366f1))}.shift-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.shift-card__time{font-size:.8125rem;font-weight:600;color:var(--color-text-primary, #1f2937)}.shift-card__type{font-size:.75rem;color:var(--color-text-secondary, #6b7280)}.shift-card__details{font-size:.75rem;color:var(--color-text-tertiary, #9ca3af);margin-top:auto}.swap-card{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:center;padding:1rem;background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg)}.swap-card__arrow{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--color-surface, #f3f4f6);border-radius:50%;color:var(--color-text-secondary, #6b7280)}.swap-card__actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:.5rem;padding-top:.75rem;border-top:1px solid var(--color-border, #e5e7eb);margin-top:.5rem}@media(max-width:640px){.swap-card{grid-template-columns:1fr;text-align:center}.swap-card__arrow{justify-self:center;transform:rotate(90deg)}}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.metric-card{padding:1rem;background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg);text-align:center}.metric-card__value{font-size:2rem;font-weight:700;color:var(--color-text-primary, #1f2937);line-height:1;margin-bottom:.25rem}.metric-card__label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.05em}.blackout-day{background:repeating-linear-gradient(-45deg,transparent,transparent 4px,rgba(239,68,68,.1) 4px,rgba(239,68,68,.1) 8px)!important;position:relative}.blackout-day:after{content:"Blackout";position:absolute;top:4px;right:4px;font-size:.625rem;font-weight:600;text-transform:uppercase;color:#dc2626;background:#fee2e2;padding:.125rem .375rem;border-radius:var(--radius-sm)}.chart-container{padding:1rem;background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-lg)}:root{--chart-color-1: #6366f1;--chart-color-2: #10b981;--chart-color-3: #f59e0b;--chart-color-4: #ef4444;--chart-color-5: #8b5cf6;--chart-color-6: #06b6d4;--chart-color-7: #ec4899;--chart-color-8: #84cc16}.conflict-status{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.8125rem;font-weight:500;border-radius:var(--radius-full)}.conflict-status--unresolved{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.conflict-status--pending{background:#fefce8;color:#ca8a04;border:1px solid #fde047}.conflict-status--resolved{background:#f0fdf4;color:#16a34a;border:1px solid #86efac}.conflict-status__icon{width:16px;height:16px}.tab-nav{display:flex;gap:.25rem;padding:.25rem;background:var(--color-surface, #f3f4f6);border-radius:var(--radius-lg)}.tab-nav__item{padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--color-text-secondary, #6b7280);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.tab-nav__item:hover{color:var(--color-text-primary, #1f2937)}.tab-nav__item--active{background:var(--color-surface-elevated, #ffffff);color:var(--color-primary, #6366f1);box-shadow:0 1px 3px #0000001a}.nav-arrow{min-width:var(--touch-target-min);min-height:var(--touch-target-min);display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface-elevated, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:var(--radius-md);color:var(--color-text-primary, #1f2937);cursor:pointer;transition:all var(--transition-fast)}.nav-arrow:hover{background:var(--color-surface, #f3f4f6);border-color:var(--color-border-hover, #d1d5db)}.nav-arrow:disabled{opacity:.5;cursor:not-allowed}.nav-arrow svg{width:20px;height:20px}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-hint{color:var(--color-text-hint)}.text-body{color:var(--color-text-body)}.text-dark{color:var(--color-text-dark)}.text-strong{color:var(--color-text-strong)}.text-inverse{color:var(--color-text-inverse)}.text-error{color:var(--color-error)}.text-error-dark{color:var(--color-error-text)}.text-warning{color:var(--color-warning-text)}.text-success{color:var(--color-success-dark)}.text-info{color:var(--color-info)}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-italic{font-style:italic}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}.text-nowrap{white-space:nowrap}.bg-surface{background-color:var(--color-surface)}.bg-surface-hover{background-color:var(--color-surface-hover)}.bg-surface-muted{background-color:var(--color-surface-muted)}.bg-primary-light{background-color:var(--color-primary-light)}.bg-error-light{background-color:var(--color-error-light)}.bg-error-bg{background-color:var(--color-error-bg)}.bg-warning-light{background-color:var(--color-warning-light)}.bg-warning-bg{background-color:var(--color-warning-bg)}.bg-success-light{background-color:var(--color-success-light)}.bg-success-bg{background-color:var(--color-success-bg)}.bg-info-light{background-color:var(--color-info-light)}.bg-info-bg{background-color:var(--color-info-bg)}.bg-white{background-color:#fff}.m-0{margin:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.w-full{width:100%}.h-full{height:100%}.min-w-0{min-width:0}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.relative{position:relative}.absolute{position:absolute}.border{border:1px solid var(--color-border)}.border-b{border-bottom:1px solid var(--color-border)}.border-t{border-top:1px solid var(--color-border)}.border-strong{border-color:var(--color-border-strong)}.border-none{border:none}.rounded{border-radius:var(--border-radius-md)}.rounded-sm{border-radius:var(--border-radius-sm)}.rounded-lg{border-radius:var(--border-radius-lg)}.rounded-full{border-radius:var(--border-radius-full)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}@media(max-width:768px){.hide-mobile{display:none!important}}@media(min-width:769px){.hide-desktop{display:none!important}}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;--color-text-primary: #1e293b;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-bg-primary: #ffffff;--color-bg-secondary: #f8fafc;--color-bg-tertiary: #f1f5f9;--color-border: #e2e8f0;--color-border-hover: #cbd5e1;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #dbeafe;--color-success-light: #dcfce7;--color-warning: #f59e0b;--color-warning-light: #fef3c7;--color-danger-light: #fee2e2;--color-focus-ring: rgba(37, 99, 235, .5);--color-shadow: rgba(0, 0, 0, .1);--color-overlay: rgba(0, 0, 0, .5);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--bp-mobile: 480px;--bp-tablet-portrait: 768px;--bp-tablet-landscape: 1024px;--bp-desktop: 1280px;color:var(--color-text-primary);background-color:var(--color-bg-secondary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--text-primary: #111827;--text-secondary: #4b5563;--text-muted: #9ca3af;--border-color: #e5e7eb;--border-subtle: #f3f4f6;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--color-surface: #ffffff;--color-surface-hover: #f9fafb;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-success: #22c55e;--color-warning: #eab308;--color-danger: #ef4444;--color-info: #0ea5e9;--card-bg: var(--bg-primary);--input-bg: var(--bg-primary);--input-border: var(--border-color);--tooltip-bg: #1f2937;--tooltip-text: #f9fafb}[data-theme=dark]{color-scheme:dark;color:#f9fafb;background-color:#0f172a;--bg-primary: #1f2937;--bg-secondary: #111827;--bg-tertiary: #0f172a;--text-primary: #f9fafb;--text-secondary: #d1d5db;--text-muted: #6b7280;--border-color: #374151;--border-subtle: #1f2937;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .3);--color-surface: #1f2937;--color-surface-hover: #374151;--color-primary: #60a5fa;--color-primary-hover: #3b82f6;--color-success: #4ade80;--color-warning: #facc15;--color-danger: #f87171;--color-info: #38bdf8;--card-bg: var(--bg-primary);--input-bg: #374151;--input-border: #4b5563;--tooltip-bg: #f9fafb;--tooltip-text: #1f2937}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;color:#f9fafb;background-color:#0f172a;--bg-primary: #1f2937;--bg-secondary: #111827;--bg-tertiary: #0f172a;--text-primary: #f9fafb;--text-secondary: #d1d5db;--text-muted: #6b7280;--border-color: #374151;--border-subtle: #1f2937;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .3);--color-surface: #1f2937;--color-surface-hover: #374151;--color-primary: #60a5fa;--color-primary-hover: #3b82f6;--color-success: #4ade80;--color-warning: #facc15;--color-danger: #f87171;--color-info: #38bdf8;--card-bg: var(--bg-primary);--input-bg: #374151;--input-border: #4b5563;--tooltip-bg: #f9fafb;--tooltip-text: #1f2937}}.dark,[data-theme=dark]{color-scheme:dark;--color-text-primary: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-bg-primary: #1e293b;--color-bg-secondary: #0f172a;--color-bg-tertiary: #334155;--color-border: #334155;--color-border-hover: #475569;--color-primary: #3b82f6;--color-primary-hover: #60a5fa;--color-primary-light: #1e3a5f;--color-success: #22c55e;--color-success-light: #14532d;--color-warning: #f59e0b;--color-warning-light: #451a03;--color-danger: #ef4444;--color-danger-light: #450a0a;--color-focus-ring: rgba(59, 130, 246, .5);--color-shadow: rgba(0, 0, 0, .3);--color-overlay: rgba(0, 0, 0, .7);--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .4);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .5), 0 4px 6px -4px rgb(0 0 0 / .5);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .6), 0 8px 10px -6px rgb(0 0 0 / .6)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--color-text-primary);background-color:var(--color-bg-secondary)}[dir=rtl],[dir=rtl] .text-start{text-align:right}[dir=rtl] .text-end{text-align:left}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover)}*:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-ring);border-radius:4px}@media print{nav,.sidebar,.toolbar,.pagination,.modal-overlay,.btn,button,.keyboard-shortcuts-help,.search-box,.filter-group,.bulk-actions-toolbar,.dashboard-card__arrow,.system-status-card,.admin-dashboard__tips{display:none!important}body,.admin-dashboard,.user-management,.role-management,.branch-management,.department-management{background:#fff!important;color:#000!important}table{border-collapse:collapse!important;width:100%!important}th,td{border:1px solid #000!important;padding:8px!important;text-align:left!important}.page-break{page-break-before:always}h1,h2,h3{page-break-after:avoid}.stat-card,.dashboard-card,.analytics-card{border:1px solid #ccc!important;box-shadow:none!important;break-inside:avoid}}.progress-bar{width:100%;margin:1rem 0}.progress-bar__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.875rem}.progress-bar__label{color:var(--color-text-primary);font-weight:500}.progress-bar__percentage{color:var(--color-text-secondary)}.progress-bar__track{height:8px;background-color:var(--color-bg-tertiary);border-radius:4px;overflow:hidden}.progress-bar__fill{height:100%;width:var(--progress-bar-fill-width, 0%);background:linear-gradient(90deg,var(--color-primary),var(--color-primary-hover));border-radius:4px;transition:width .3s ease-out}.progress-bar__fill--success{background:linear-gradient(90deg,var(--color-success),#16a34a)}.progress-bar__fill--error{background:linear-gradient(90deg,var(--color-danger),#dc2626)}.progress-bar__footer{display:flex;gap:1rem;margin-top:.5rem;font-size:.75rem}.progress-bar__stat{display:flex;align-items:center;gap:.25rem}.progress-bar__stat--success{color:var(--color-success)}.progress-bar__stat--error{color:var(--color-danger)}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton{animation:skeleton-pulse 1.5s ease-in-out infinite;background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-border) 50%,var(--color-bg-tertiary) 75%);background-size:200% 100%}.typeahead-container{position:relative}.typeahead-suggestions{position:absolute;top:100%;left:0;right:0;z-index:100;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:4px;box-shadow:0 4px 12px var(--color-shadow);max-height:300px;overflow-y:auto;margin-top:4px}.typeahead-suggestion{padding:.75rem 1rem;cursor:pointer;transition:background-color .15s ease}.typeahead-suggestion:hover,.typeahead-suggestion--active{background-color:var(--color-bg-tertiary)}.typeahead-suggestion--highlight{font-weight:600;color:var(--color-primary)}.typeahead-no-results{padding:.75rem 1rem;color:var(--color-text-muted);font-style:italic}.home{max-width:1200px;margin:0 auto}.hero{text-align:center;padding:3rem 0}.hero h1{font-size:2.5rem;color:var(--color-text-primary, #1e293b);margin-bottom:.5rem}.subtitle{font-size:1.25rem;color:var(--color-text-secondary, #64748b);margin-bottom:1rem}.welcome-user{font-size:1.1rem;color:var(--color-primary, #2563eb);font-weight:500}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;padding:2rem 0}.feature-card{background:var(--color-bg-primary, white);border-radius:.5rem;padding:1.5rem;box-shadow:var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, .1));border:1px solid var(--color-border, transparent);transition:transform .2s,box-shadow .2s}.feature-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md, 0 4px 12px rgba(0, 0, 0, .15))}.feature-card--clickable{cursor:pointer;font:inherit;text-align:inherit;width:100%}.feature-card--clickable:focus{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.feature-card--clickable:hover{border-color:var(--color-primary, #2563eb)}.feature-card--coming-soon{position:relative;opacity:.7;cursor:default}.feature-card--coming-soon:hover{transform:none;box-shadow:var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, .1))}.feature-card__badge{position:absolute;top:.75rem;right:.75rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:.15rem .5rem;border-radius:999px;color:var(--color-text-secondary, #64748b);background:var(--color-bg-secondary, #f1f5f9);border:1px solid var(--color-border, #e2e8f0)}.feature-icon{font-size:2.5rem;display:block;margin-bottom:1rem}.feature-card h3{font-size:1.25rem;color:var(--color-text-primary, #1e293b);margin-bottom:.5rem}.feature-card p{color:var(--color-text-secondary, #64748b);line-height:1.5}.home-no-access{text-align:center;max-width:32rem;margin:1rem auto 2rem;padding:2.5rem 2rem;background:var(--color-bg-primary, white);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;box-shadow:var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, .1))}.home-no-access__icon{font-size:2.5rem;display:block;margin-bottom:1rem}.home-no-access__title{font-size:1.25rem;color:var(--color-text-primary, #1e293b);margin-bottom:.5rem}.home-no-access__desc{color:var(--color-text-secondary, #64748b);line-height:1.6;margin:0}.cta{text-align:center;padding:2rem;background:var(--color-primary-light, #e0e7ff);border-radius:.5rem;margin-top:2rem}.cta p{color:var(--color-primary, #4338ca);font-weight:500;margin:0}.aops{display:flex;flex-direction:column;gap:1.25rem;padding:1rem 1.25rem 2rem}.aops__header{display:flex;flex-direction:column;gap:.25rem}.aops__title{font-size:1.4rem;font-weight:600;margin:0;color:var(--text-color, #1f2937)}.aops__subtitle{margin:0;font-size:.9rem;color:var(--text-muted, #6b7280);max-width:60ch}.aops__tabs{display:flex;gap:.5rem;border-bottom:1px solid var(--border-color, #e5e7eb);padding-bottom:.25rem;overflow-x:auto}.aops__tab{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .875rem;border-radius:6px 6px 0 0;color:var(--text-muted, #6b7280);text-decoration:none;font-size:.9rem;white-space:nowrap;border-bottom:2px solid transparent;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.aops__tab:hover{background:var(--surface-hover, rgba(0, 0, 0, .04));color:var(--text-color, #1f2937)}.aops__tab--active{color:var(--accent-color, #2563eb);border-bottom-color:var(--accent-color, #2563eb);font-weight:600}.aops__tab-icon{font-size:1rem;line-height:1}.aops__tab-label{line-height:1}.aops__body{background:var(--surface-color, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:8px;padding:1.25rem;min-height:200px}.aops__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1rem;text-align:center;color:var(--text-muted, #6b7280)}.aops__empty-icon{font-size:2.25rem;line-height:1}.aops__empty-title{margin:0;font-size:1rem;font-weight:600;color:var(--text-color, #1f2937)}.aops__empty-body{margin:0;max-width:40ch;font-size:.85rem}.ops-flags{width:100%;overflow-x:auto}.ops-flags__loading{padding:2rem;text-align:center;color:var(--text-muted, #6b7280)}.ops-flags__table{width:100%;border-collapse:collapse;font-size:.9rem}.ops-flags__table thead th{text-align:left;font-weight:600;padding:.5rem .75rem;border-bottom:1px solid var(--border, #e5e7eb);background:var(--surface-subtle, #f9fafb)}.ops-flags__row td{padding:.625rem .75rem;border-bottom:1px solid var(--border, #f3f4f6);vertical-align:middle}.ops-flags__key code{font-size:.85rem;background:var(--surface-subtle, #f3f4f6);padding:.125rem .375rem;border-radius:.25rem}.ops-flags__pill{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-weight:600;font-size:.75rem;letter-spacing:.05em;text-transform:uppercase}.ops-flags__pill--on{background:#d1fae5;color:#065f46}.ops-flags__pill--off{background:#fee2e2;color:#991b1b}.ops-flags__actor{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;color:var(--text-muted, #6b7280)}.ops-flags__actions{display:flex;gap:.5rem;justify-content:flex-end}.ops-flags__btn{padding:.375rem .75rem;border-radius:.375rem;border:1px solid var(--border, #d1d5db);background:var(--surface, #ffffff);cursor:pointer;font-size:.85rem}.ops-flags__btn:hover:not(:disabled){background:var(--surface-subtle, #f3f4f6)}.ops-flags__btn:disabled{opacity:.5;cursor:not-allowed}.ops-flags__btn--ghost{background:transparent;color:var(--text-muted, #6b7280)}.ops-cache{display:flex;flex-direction:column;gap:1.5rem}.ops-cache__loading{padding:2rem;text-align:center;color:var(--text-muted, #6b7280)}.ops-cache__scope{border:1px solid var(--border, #e5e7eb);border-radius:.5rem;padding:1rem;background:var(--surface, #ffffff)}.ops-cache__scope-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.75rem}.ops-cache__scope-title{margin:0;font-size:1.1rem;font-weight:600;text-transform:capitalize}.ops-cache__scope-count{font-size:.85rem;color:var(--text-muted, #6b7280)}.ops-cache__invalidate-form{display:flex;gap:.5rem;margin-bottom:.75rem}.ops-cache__prefix-input{flex:1 1 auto;padding:.375rem .625rem;border:1px solid var(--border, #d1d5db);border-radius:.375rem;font-size:.85rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ops-cache__invalidate-btn{padding:.375rem .875rem;border-radius:.375rem;border:1px solid var(--danger, #dc2626);background:var(--danger, #dc2626);color:#fff;cursor:pointer;font-size:.85rem;font-weight:600}.ops-cache__invalidate-btn:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.ops-cache__invalidate-btn:disabled{opacity:.5;cursor:not-allowed}.ops-cache__empty{margin:0;font-size:.85rem;color:var(--text-muted, #6b7280)}.ops-cache__keys{list-style:none;margin:0;padding:0;max-height:24rem;overflow-y:auto;border:1px solid var(--border, #f3f4f6);border-radius:.375rem;background:var(--surface-subtle, #f9fafb)}.ops-cache__key{padding:.25rem .625rem;font-size:.8rem;border-bottom:1px solid var(--border, #f3f4f6)}.ops-cache__key:last-child{border-bottom:none}.ops-cache__key code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ops-counters{display:flex;flex-direction:column;gap:1.5rem}.ops-counters__loading{padding:2rem;text-align:center;color:var(--text-muted, #6b7280)}.ops-counters__header{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--text-muted, #6b7280)}.ops-counters__live{margin-left:.75rem;color:#16a34a;font-weight:600;letter-spacing:.05em}.ops-counters__meter{border:1px solid var(--border, #e5e7eb);border-radius:.5rem;padding:1rem;background:var(--surface, #ffffff)}.ops-counters__meter-title{margin:0 0 .75rem;font-size:1.05rem;font-weight:600}.ops-counters__table{width:100%;border-collapse:collapse;font-size:.85rem}.ops-counters__table thead th{text-align:left;font-weight:600;padding:.375rem .625rem;border-bottom:1px solid var(--border, #e5e7eb);background:var(--surface-subtle, #f9fafb)}.ops-counters__table tbody td{padding:.5rem .625rem;border-bottom:1px solid var(--border, #f3f4f6);vertical-align:top}.ops-counters__num{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ops-counters__desc{font-size:.75rem;color:var(--text-muted, #6b7280);margin-top:.125rem}.ops-jobs{display:flex;flex-direction:column;gap:1rem}.ops-jobs__loading{padding:2rem;text-align:center;color:var(--text-muted, #6b7280)}.ops-jobs__header{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--text-muted, #6b7280)}.ops-jobs__table{width:100%;border-collapse:collapse;font-size:.85rem}.ops-jobs__table thead th{text-align:left;font-weight:600;padding:.5rem .625rem;border-bottom:1px solid var(--border, #e5e7eb);background:var(--surface-subtle, #f9fafb)}.ops-jobs__table tbody td{padding:.5rem .625rem;border-bottom:1px solid var(--border, #f3f4f6);vertical-align:top}.ops-jobs__row--failed{background:var(--danger-subtle, #fef2f2)}.ops-jobs__queue{font-size:.7rem;color:var(--text-muted, #9ca3af);margin-top:.125rem}.ops-jobs__state{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.ops-jobs__state--ok{background:#dcfce7;color:#166534}.ops-jobs__state--failed{background:#fee2e2;color:#991b1b}.ops-jobs__state--neutral{background:var(--surface-subtle, #f3f4f6);color:var(--text-muted, #6b7280)}.ops-jobs__failure{margin-top:.375rem;font-size:.75rem;color:#991b1b;max-width:28rem}.ops-jobs__trace{display:inline-block;margin-right:.375rem;font-family:var(--font-mono, monospace);color:var(--text-muted, #6b7280)}.ops-jobs__failure-msg{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.patient-search-box{position:relative;width:100%}.patient-search-input-wrapper{position:relative;display:flex;align-items:center}.patient-search-icon{position:absolute;left:12px;font-size:14px;pointer-events:none}.patient-search-input{width:100%;padding:10px 40px 10px 36px;font-size:14px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c);transition:border-color .2s,box-shadow .2s}.patient-search-input:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 3px #3b82f61a}.patient-search-input::placeholder{color:var(--text-muted, #a0aec0)}.patient-search-spinner{position:absolute;right:12px;animation:spin 1s linear infinite}.patient-search-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--bg-dropdown, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;box-shadow:0 10px 25px #0000001a;z-index:50;max-height:400px;overflow-y:auto}.patient-search-loading{display:flex;align-items:center;justify-content:center;padding:20px;color:var(--text-muted, #a0aec0);font-size:14px}.patient-search-results{padding:8px}.patient-search-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:none;background:transparent;border-radius:6px;cursor:pointer;text-align:left;transition:background-color .15s}.patient-search-item:hover{background:var(--bg-hover, #f7fafc)}.patient-avatar{font-size:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--bg-avatar, #edf2f7);border-radius:50%}.patient-info{flex:1;overflow:hidden}.patient-name{font-weight:500;color:var(--text-primary, #1a202c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.patient-details{display:flex;gap:12px;font-size:12px;color:var(--text-muted, #718096);margin-top:2px}.patient-search-divider{height:1px;background:var(--border-color, #e2e8f0);margin:8px 0}.patient-search-new-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:10px;border:1px solid var(--border-color, #e2e8f0);background:var(--bg-button, #fff);border-radius:6px;font-size:14px;font-weight:500;color:var(--text-primary, #1a202c);cursor:pointer;transition:background-color .15s,border-color .15s}.patient-search-new-btn:hover{background:var(--bg-hover, #f7fafc);border-color:var(--primary-color, #3b82f6)}.patient-search-new-btn.primary{background:var(--primary-color, #3b82f6);border-color:var(--primary-color, #3b82f6);color:#fff}.patient-search-new-btn.primary:hover{background:var(--primary-hover, #2563eb)}.patient-search-empty{padding:24px;text-align:center}.patient-search-empty p{color:var(--text-muted, #718096);margin-bottom:16px;font-size:14px}[data-theme=dark] .patient-search-input{background:var(--bg-input-dark, #2d3748);border-color:var(--border-color-dark, #4a5568);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .patient-search-dropdown{background:var(--bg-dropdown-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .patient-search-item:hover{background:var(--bg-hover-dark, #4a5568)}[data-theme=dark] .patient-avatar{background:var(--bg-avatar-dark, #4a5568)}[data-theme=dark] .patient-name{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .patient-search-new-btn{background:var(--bg-button-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}.photo-capture{background:var(--bg-card, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:12px;padding:20px}.capture-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.capture-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary, #1a202c)}.device-select{padding:6px 12px;font-size:13px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c)}.capture-viewport{position:relative;margin:0 auto;background:#000;border-radius:8px;overflow:hidden;width:var(--capture-w);height:var(--capture-h)}.capture-viewport .camera-feed,.capture-viewport .preview-img{width:100%;height:100%}.camera-feed--mirror{transform:scaleX(-1)}.camera-feed--hidden,.canvas-hidden{display:none}.capture-placeholder,.capture-loading,.capture-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-section, #f7fafc);cursor:pointer}.capture-placeholder:hover{background:var(--bg-hover, #edf2f7)}.placeholder-icon,.loading-icon,.error-icon{font-size:48px;margin-bottom:12px}.loading-icon{animation:spin 1.5s linear infinite}.placeholder-text,.loading-text,.error-text{font-size:14px;color:var(--text-muted, #718096);text-align:center;padding:0 20px}.error-text{color:var(--error-color, #e53e3e)}.retry-btn{margin-top:16px;padding:8px 16px;font-size:13px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-button, #fff);color:var(--text-primary, #1a202c);cursor:pointer}.retry-btn:hover{background:var(--bg-hover, #f7fafc)}.video-container{position:relative;width:100%;height:100%}.video-container video{display:block;object-fit:cover;position:relative;z-index:1}.face-guide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:2}.guide-oval{width:60%;height:80%;border:2px dashed rgba(255,255,255,.6);border-radius:50%;box-shadow:0 0 0 9999px #0000004d}.preview-container{position:relative;width:100%;height:100%}.preview-container img{display:block;object-fit:cover}.capture-actions{display:flex;justify-content:center;gap:12px;margin-top:16px;flex-wrap:wrap}.capture-btn,.cancel-btn,.save-btn,.retake-btn,.clear-btn,.start-btn{padding:12px 20px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.capture-btn,.start-btn{background:var(--primary-color, #3b82f6);border:1px solid var(--primary-color, #3b82f6);color:#fff}.capture-btn:hover,.start-btn:hover{background:var(--primary-hover, #2563eb)}.save-btn{background:var(--success-color, #10b981);border:1px solid var(--success-color, #10b981);color:#fff}.save-btn:hover{background:var(--success-hover, #059669)}.cancel-btn,.retake-btn,.clear-btn{background:var(--bg-button, #fff);border:1px solid var(--border-color, #e2e8f0);color:var(--text-primary, #1a202c)}.cancel-btn:hover,.retake-btn:hover,.clear-btn:hover{background:var(--bg-hover, #f7fafc)}.clear-btn{color:var(--error-color, #e53e3e)}.capture-hint{text-align:center;font-size:13px;color:var(--text-muted, #718096);margin-top:12px}.file-input-hidden{display:none}.upload-btn{margin-top:12px;padding:8px 16px;font-size:13px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-button, #fff);color:var(--text-primary, #1a202c);cursor:pointer;transition:background .15s}.upload-btn:hover{background:var(--bg-hover, #f7fafc)}.capture-placeholder.drag-over{background:var(--primary-bg, #eff6ff);border:2px dashed var(--primary-color, #3b82f6)}.guide-oval.confidence-none{border-color:#fff6}.guide-oval.confidence-low{border-color:#fbbf24cc;animation:guide-pulse 2s ease-in-out infinite}.guide-oval.confidence-good{border-color:#10b981e6;border-style:solid}@keyframes guide-pulse{0%,to{opacity:.6}50%{opacity:1}}.guide-crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:20px;pointer-events:none}.guide-crosshair:before,.guide-crosshair:after{content:"";position:absolute;background:#fff6}.guide-crosshair:before{top:0;left:50%;width:1px;height:100%;transform:translate(-50%)}.guide-crosshair:after{top:50%;left:0;width:100%;height:1px;transform:translateY(-50%)}.guide-hint{position:absolute;bottom:12%;left:50%;transform:translate(-50%);font-size:12px;color:#ffffffb3;text-shadow:0 1px 3px rgba(0,0,0,.6);white-space:nowrap;pointer-events:none}.guide-hint-ready{color:#10b981;font-weight:600}[data-theme=dark] .photo-capture{background:var(--bg-card-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .capture-header h3{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .device-select{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .capture-placeholder,[data-theme=dark] .capture-loading,[data-theme=dark] .capture-error{background:var(--bg-section-dark, #4a5568)}[data-theme=dark] .cancel-btn,[data-theme=dark] .retake-btn,[data-theme=dark] .clear-btn{background:var(--bg-button-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}@media(max-width:480px){.capture-viewport{width:100%!important;height:auto!important;aspect-ratio:3 / 4}.capture-actions{flex-direction:column}.capture-actions button{width:100%}}@media(prefers-reduced-motion:reduce){.loading-icon,.guide-oval.confidence-low{animation:none}.capture-btn,.cancel-btn,.save-btn,.retake-btn,.clear-btn,.start-btn,.upload-btn{transition:none}}.photo-history-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.photo-history-panel{background:var(--bg-card, #fff);border-radius:12px;width:min(480px,90vw);max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000026}.photo-history-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-color, #e2e8f0)}.photo-history-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary, #1a202c)}.photo-history-header .close-btn{background:none;border:none;font-size:18px;cursor:pointer;color:var(--text-muted, #718096);padding:4px 8px;border-radius:4px}.photo-history-header .close-btn:hover{background:var(--bg-hover, #f7fafc)}.photo-history-body{padding:20px;overflow-y:auto}.photo-history-loading,.photo-history-empty{text-align:center;color:var(--text-muted, #718096);padding:32px 0;font-size:14px}.photo-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:16px}.photo-version-card{border:2px solid var(--border-color, #e2e8f0);border-radius:8px;overflow:hidden;transition:border-color .15s}.photo-version-card.current{border-color:var(--primary-color, #3b82f6)}.photo-version-card.archived{opacity:.7}.photo-version-img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.photo-version-placeholder{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:var(--bg-section, #f7fafc);font-size:32px}.photo-version-meta{padding:8px;display:flex;flex-direction:column;gap:4px}.version-badge{font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px;align-self:flex-start}.version-badge.current{background:var(--primary-bg, #eff6ff);color:var(--primary-color, #3b82f6)}.version-badge.archived{background:var(--bg-section, #f7fafc);color:var(--text-muted, #718096)}.version-date,.version-size{font-size:11px;color:var(--text-muted, #718096)}[data-theme=dark] .photo-history-panel{background:var(--bg-card, #1a202c)}.thai-id-reader{background:var(--bg-card, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:12px;padding:24px;text-align:center}.thai-id-reader.not-supported{background:var(--bg-warning, #fffbeb);border-color:var(--warning-color, #f59e0b)}.reader-status{margin-bottom:20px}.reader-icon{font-size:48px;margin-bottom:12px}.reader-status.connecting .reader-icon,.reader-status.reading .reader-icon{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.status-message{font-size:14px;color:var(--text-secondary, #4a5568);margin:0}.reader-status.success .status-message{color:var(--success-color, #10b981);font-weight:500}.reader-status.error .status-message{color:var(--error-color, #ef4444)}.connect-btn,.read-btn{padding:14px 28px;font-size:15px;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:all .15s}.connect-btn{background:var(--primary-color, #3b82f6);color:#fff}.connect-btn:hover{background:var(--primary-hover, #2563eb)}.read-btn{background:var(--success-color, #10b981);color:#fff}.read-btn:hover{background:var(--success-hover, #059669)}.card-preview{display:flex;gap:20px;margin-top:24px;padding:20px;background:var(--bg-section, #f7fafc);border-radius:8px;text-align:left}.card-photo{flex-shrink:0}.card-photo img{width:100px;height:125px;object-fit:cover;border-radius:4px;border:2px solid var(--border-color, #e2e8f0)}.card-info{flex:1}.info-row{display:flex;margin-bottom:8px;font-size:14px}.info-row .label{width:120px;color:var(--text-muted, #718096);flex-shrink:0}.info-row .value{color:var(--text-primary, #1a202c);font-weight:500}.reader-actions{display:flex;justify-content:center;gap:12px;margin-top:20px}.action-btn{padding:10px 20px;font-size:14px;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-button, #fff);color:var(--text-primary, #1a202c);cursor:pointer;transition:all .15s}.action-btn:hover{background:var(--bg-hover, #f7fafc);border-color:var(--primary-color, #3b82f6)}.action-btn.secondary{color:var(--text-muted, #718096)}.hint{font-size:12px;color:var(--text-muted, #a0aec0);margin-top:8px}.card-expiry-warning{margin-top:16px;padding:12px 16px;background:var(--warning-bg, #fffbeb);border:1px solid var(--warning-color, #f59e0b);border-radius:8px;color:var(--warning-text, #92400e);font-size:14px;font-weight:500;text-align:left}[data-theme=dark] .thai-id-reader{background:var(--bg-card-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .card-preview{background:var(--bg-section-dark, #4a5568)}[data-theme=dark] .info-row .value{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .action-btn{background:var(--bg-button-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .card-expiry-warning{background:#f59e0b26;border-color:#f59e0b66;color:var(--warning-text-dark, #fbbf24)}@media(max-width:768px){.thai-id-reader{padding:16px}.connect-btn,.read-btn{width:100%;padding:16px 24px;font-size:16px;min-height:48px}.reader-actions{flex-direction:column}.action-btn{width:100%;min-height:44px;text-align:center}.info-row .label{width:100px;font-size:12px}.info-row .value{font-size:13px}}@media(max-width:480px){.card-preview{flex-direction:column;align-items:center}.card-photo img{width:80px;height:100px}.info-row{flex-direction:column;margin-bottom:12px}.info-row .label{width:auto;margin-bottom:2px;font-weight:600}}@media print{.thai-id-reader .connect-btn,.thai-id-reader .read-btn,.thai-id-reader .reader-actions,.thai-id-reader .reader-status{display:none}.thai-id-reader .card-preview{border:1px solid #ccc;break-inside:avoid}.thai-id-reader .card-expiry-warning{border:2px solid #000;color:#000;background:#fff}}.medical-section{margin-bottom:20px;padding:16px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--bg-section, #fafafa)}.medical-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.medical-section-title{margin:0;font-size:15px;font-weight:600;color:var(--text-primary, #1a202c)}.medical-selected-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.medical-selected-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);transition:border-color .15s}.medical-selected-item:hover{border-color:var(--primary-color, #3b82f6)}.btn-remove-selected{flex-shrink:0;width:24px;height:24px;padding:0;margin-top:2px;border:none;border-radius:50%;background:var(--error-bg, #fee2e2);color:var(--error-color, #e53e3e);font-size:12px;font-weight:700;line-height:1;cursor:pointer;transition:background .15s,transform .1s;display:flex;align-items:center;justify-content:center}.btn-remove-selected:hover:not(:disabled){background:var(--error-color, #e53e3e);color:#fff;transform:scale(1.1)}.btn-remove-selected:disabled{opacity:.4;cursor:not-allowed}.selected-item-content{flex:1;min-width:0}.selected-item-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.selected-name{font-size:14px;font-weight:500;color:var(--text-primary, #1a202c)}.selected-secondary{font-size:12px;color:var(--text-muted, #a0aec0);font-style:italic}.selected-code{display:inline-block;padding:1px 6px;font-size:11px;font-weight:600;font-family:SF Mono,Consolas,monospace;background:var(--primary-light, #ebf4ff);color:var(--primary-color, #3b82f6);border-radius:3px}.selected-badge{display:inline-block;padding:1px 6px;font-size:11px;font-weight:500;background:var(--badge-bg, #f0f4f8);color:var(--text-secondary, #4a5568);border-radius:10px}.selected-item-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.severity-select{padding:4px 8px;font-size:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c);cursor:pointer;min-width:120px}.severity-select:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.notes-input{flex:1;min-width:150px;padding:4px 8px;font-size:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c)}.notes-input:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.notes-input::placeholder{color:var(--text-muted, #a0aec0)}.allergy-type-filter{margin-bottom:12px}.type-filter-label{display:block;font-size:12px;font-weight:500;color:var(--text-secondary, #4a5568);margin-bottom:6px}.type-filter-buttons{display:flex;gap:4px;flex-wrap:wrap}.type-filter-btn{padding:4px 10px;font-size:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:16px;background:var(--bg-input, #fff);color:var(--text-secondary, #4a5568);cursor:pointer;transition:all .15s;white-space:nowrap}.type-filter-btn:hover:not(:disabled){border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}.type-filter-btn.active{background:var(--primary-color, #3b82f6);border-color:var(--primary-color, #3b82f6);color:#fff}.type-filter-btn:disabled{opacity:.5;cursor:not-allowed}.allergy-type-icon{font-size:16px;line-height:1}.allergy-item .selected-item-main{gap:6px}.emergency-contact-list{display:flex;flex-direction:column;gap:12px}.emergency-contact-entry{padding:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);position:relative}.emergency-contact-entry.primary{border-color:var(--primary-color, #3b82f6);border-width:2px}.contact-entry-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.contact-entry-number{font-size:12px;font-weight:600;color:var(--text-secondary, #4a5568)}.medical-section-empty{font-size:13px;color:var(--text-muted, #a0aec0);text-align:center;padding:16px 0}.primary-badge--inline{margin-inline-start:8px}.primary-badge{font-size:11px;padding:2px 8px;background:var(--primary-light, #ebf4ff);color:var(--primary-color, #3b82f6);border-radius:10px;font-weight:500}.contact-entry-actions{display:flex;gap:4px}.btn-set-primary,.btn-remove-contact{padding:4px 8px;font-size:11px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;cursor:pointer;transition:all .15s;background:var(--bg-input, #fff)}.btn-set-primary{color:var(--primary-color, #3b82f6)}.btn-set-primary:hover:not(:disabled){background:var(--primary-light, #ebf4ff)}.btn-remove-contact{color:var(--error-color, #e53e3e)}.btn-remove-contact:hover:not(:disabled){background:var(--error-bg, #fee2e2)}.contact-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.contact-field{display:flex;flex-direction:column}.contact-field.full-width{grid-column:1 / -1}.contact-field label{font-size:11px;font-weight:500;color:var(--text-secondary, #4a5568);margin-bottom:2px}.contact-field input,.contact-field select{padding:6px 8px;font-size:13px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c)}.contact-field input:focus,.contact-field select:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.btn-add-contact{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:10px;margin-top:8px;font-size:13px;font-weight:500;border:2px dashed var(--border-color, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-secondary, #4a5568);cursor:pointer;transition:all .15s}.btn-add-contact:hover:not(:disabled){border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6);background:var(--primary-light, rgba(59, 130, 246, .04))}.btn-add-contact:disabled{opacity:.5;cursor:not-allowed}.medication-controls{gap:6px}.medication-field{display:flex;flex-direction:column;min-width:0}.medication-field-label{font-size:10px;font-weight:500;color:var(--text-muted, #a0aec0);margin-bottom:2px;text-transform:uppercase;letter-spacing:.5px}.dosage-input{width:100px;padding:4px 8px;font-size:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c)}.dosage-input:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.dosage-input::placeholder{color:var(--text-muted, #a0aec0)}.frequency-select,.route-select{padding:4px 8px;font-size:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c);cursor:pointer;min-width:90px}.frequency-select:focus,.route-select:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.medical-history-container{display:flex;flex-direction:column;gap:0}.medical-history-container .medical-section{border-radius:0;margin-bottom:-1px}.medical-history-container .medical-section:first-child{border-radius:8px 8px 0 0}.medical-history-container .medical-section:last-child{border-radius:0 0 8px 8px;margin-bottom:0}.medical-history-container .medical-section:only-child{border-radius:8px}@media(max-width:640px){.selected-item-controls{flex-direction:column;align-items:stretch}.severity-select,.notes-input{min-width:unset;width:100%}.contact-fields{grid-template-columns:1fr}.medication-controls{flex-direction:column;align-items:stretch}.medication-field,.dosage-input,.frequency-select,.route-select{width:100%}.type-filter-buttons{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}}[data-theme=dark] .medical-section{background:var(--bg-section-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .medical-section-title{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .medical-selected-item{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096)}[data-theme=dark] .medical-selected-item:hover{border-color:var(--primary-color, #3b82f6)}[data-theme=dark] .selected-name{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .selected-secondary{color:var(--text-muted-dark, #718096)}[data-theme=dark] .selected-code{background:#3b82f633;color:var(--primary-light-dark, #90cdf4)}[data-theme=dark] .selected-badge{background:var(--bg-badge-dark, #4a5568);color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .severity-select,[data-theme=dark] .notes-input,[data-theme=dark] .dosage-input,[data-theme=dark] .frequency-select,[data-theme=dark] .route-select{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .btn-remove-selected{background:#e53e3e33;color:#fc8181}[data-theme=dark] .btn-remove-selected:hover:not(:disabled){background:var(--error-color, #e53e3e);color:#fff}[data-theme=dark] .type-filter-btn{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .type-filter-btn:hover:not(:disabled){border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}[data-theme=dark] .type-filter-btn.active{background:var(--primary-color, #3b82f6);border-color:var(--primary-color, #3b82f6);color:#fff}[data-theme=dark] .type-filter-label{color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .emergency-contact-entry{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096)}[data-theme=dark] .emergency-contact-entry.primary{border-color:var(--primary-color, #3b82f6)}[data-theme=dark] .contact-entry-number,[data-theme=dark] .contact-field label{color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .contact-field input,[data-theme=dark] .contact-field select{background:var(--bg-section-dark, #2d3748);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .btn-add-contact{border-color:var(--border-color-dark, #718096);color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .btn-add-contact:hover:not(:disabled){border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}[data-theme=dark] .btn-set-primary,[data-theme=dark] .btn-remove-contact{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096)}[data-theme=dark] .medication-field-label{color:var(--text-muted-dark, #718096)}[data-theme=dark] .primary-badge{background:#3b82f633;color:var(--primary-light-dark, #90cdf4)}@media print{.btn-remove-selected,.btn-add-contact,.btn-remove-contact,.btn-set-primary,.type-filter-buttons{display:none}.medical-section{break-inside:avoid;border-color:#ccc;background:#fff}.medical-selected-item{border-color:#ddd}}.searchable-select{position:relative;width:100%}.searchable-select-label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary, #4a5568);margin-bottom:4px}.searchable-select-input-wrapper{position:relative;display:flex;align-items:center}.searchable-select-icon{position:absolute;left:10px;font-size:14px;pointer-events:none;z-index:1}.searchable-select-input{width:100%;padding:8px 12px 8px 32px;font-size:14px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c);transition:border-color .15s,box-shadow .15s}.searchable-select-input:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.searchable-select-input::placeholder{color:var(--text-muted, #a0aec0)}.searchable-select-input:disabled{opacity:.6;cursor:not-allowed}.searchable-select-spinner{position:absolute;right:10px;font-size:14px;animation:spin 1s linear infinite}.searchable-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:280px;overflow-y:auto;background:var(--bg-dropdown, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;box-shadow:0 4px 12px #0000001a;z-index:50}.searchable-select-option{padding:8px 12px;cursor:pointer;transition:background-color .1s;font-size:14px}.searchable-select-option:hover,.searchable-select-option.active{background:var(--bg-hover, #f0f4ff)}.searchable-select-option.disabled{opacity:.5;cursor:not-allowed}.searchable-select-option-content{display:flex;align-items:center;gap:8px}.option-icon{flex-shrink:0;font-size:16px}.option-text{flex:1;min-width:0;display:flex;flex-direction:column}.option-label{font-weight:500;color:var(--text-primary, #1a202c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-label-secondary{font-size:12px;color:var(--text-secondary, #4a5568)}.option-description{font-size:12px;color:var(--text-muted, #a0aec0)}.option-badge{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px;background:var(--color-badge-bg, #dbeafe);color:var(--color-badge-text, #1d4ed8)}.searchable-select-divider{height:1px;background:var(--border-color, #e2e8f0);margin:4px 0}.searchable-select-option.custom-entry{color:var(--primary-color, #3b82f6);font-size:13px}.searchable-select-loading,.searchable-select-empty{padding:16px;text-align:center;color:var(--text-muted, #a0aec0);font-size:13px}.searchable-select-custom-btn{margin-top:8px;padding:6px 12px;font-size:13px;color:var(--primary-color, #3b82f6);background:none;border:1px solid var(--primary-color, #3b82f6);border-radius:4px;cursor:pointer;transition:background .15s}.searchable-select-custom-btn:hover{background:var(--bg-hover, #f0f4ff)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-theme=dark] .searchable-select-input{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .searchable-select-dropdown{background:var(--bg-dropdown-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .searchable-select-option:hover,[data-theme=dark] .searchable-select-option.active{background:var(--bg-hover-dark, #4a5568)}[data-theme=dark] .option-label{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .option-label-secondary{color:var(--text-secondary-dark, #a0aec0)}@keyframes spin{to{transform:rotate(360deg)}}.patient-reg-form{max-width:800px;margin:0 auto}.form-section--hidden{display:none}.form-input--uppercase{text-transform:uppercase}.form-section{margin-bottom:24px;padding:16px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--bg-section, #fafafa)}.form-row{display:flex;gap:16px;margin-bottom:12px}.form-field label{font-size:13px;font-weight:500;color:var(--text-secondary, #4a5568);margin-bottom:4px}.form-field input,.form-field select,.form-field textarea{padding:8px 12px;font-size:14px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c);transition:border-color .15s,box-shadow .15s}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--text-muted, #a0aec0)}.field-error{font-size:12px;color:var(--error-color, #e53e3e);margin-top:4px}.form-field.auto-filled{position:relative;border-left:3px solid var(--color-info, #3b82f6);background-color:var(--color-info-bg, rgba(59, 130, 246, .04));padding-left:8px;border-radius:4px}.form-field.auto-filled:after{content:"💳";position:absolute;right:8px;top:4px;font-size:.75rem;opacity:.5;pointer-events:none}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:24px;border-top:1px solid var(--border-color, #e2e8f0)}.btn-submit{background:var(--primary-color, #3b82f6);border:1px solid var(--primary-color, #3b82f6);color:#fff}.btn-submit:hover:not(:disabled){background:var(--primary-hover, #2563eb)}@media(max-width:640px){.form-row{flex-direction:column}.form-field.wide{flex:1}}[data-theme=dark] .form-section{background:var(--bg-section-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .form-field label{color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .form-field input,[data-theme=dark] .form-field select,[data-theme=dark] .form-field textarea{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .form-field.auto-filled{background-color:#3b82f614;border-left-color:var(--color-info-dark, #60a5fa)}.view-history-btn{margin-top:12px;padding:8px 16px;font-size:13px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-button, #fff);color:var(--text-primary, #1a202c);cursor:pointer;transition:background .15s}.view-history-btn:hover{background:var(--bg-hover, #f7fafc)}@media print{.card-reader-section,.form-actions{display:none}.form-field.auto-filled{border-left-color:#000;background-color:transparent}.form-field.auto-filled:after{display:none}.patient-reg-form{max-width:100%}.form-section{break-inside:avoid;border-color:#ccc}}@media(max-width:768px){.form-actions{flex-direction:column}.btn-cancel,.btn-submit{width:100%;min-height:48px;text-align:center}}.duplicate-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.duplicate-modal-overlay.duplicate-modal-overlay--hidden{display:none}.duplicate-modal{background:var(--bg-modal, #fff);border-radius:12px;box-shadow:0 20px 50px #0003;max-width:500px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.duplicate-modal-header{padding:24px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0)}.duplicate-modal-header h2{margin:0;font-size:18px;font-weight:600;color:var(--text-primary, #1a202c)}.duplicate-modal-header p{margin:8px 0 0;font-size:14px;color:var(--text-muted, #718096)}.duplicate-modal-body{padding:16px 24px;overflow-y:auto;flex:1}.duplicate-modal-body h3{margin:0 0 12px;font-size:14px;font-weight:500;color:var(--text-secondary, #4a5568)}.duplicate-list{display:flex;flex-direction:column;gap:8px}.duplicate-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--bg-item, #f7fafc);cursor:pointer;transition:all .15s;text-align:left;width:100%}.duplicate-item:hover{border-color:var(--primary-color, #3b82f6);background:var(--bg-item-hover, #ebf8ff)}.duplicate-avatar{font-size:28px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--bg-avatar, #fff);border-radius:50%;border:2px solid var(--border-color, #e2e8f0)}.duplicate-info{flex:1;overflow:hidden}.duplicate-name{font-weight:500;font-size:15px;color:var(--text-primary, #1a202c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.duplicate-details{display:flex;gap:16px;font-size:13px;color:var(--text-muted, #718096);margin-top:4px}.duplicate-select-icon{font-size:20px;color:var(--primary-color, #3b82f6)}.duplicate-modal-footer{padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;justify-content:flex-end;gap:12px}.duplicate-btn{padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s}.duplicate-btn.secondary{background:var(--bg-button, #fff);border:1px solid var(--border-color, #e2e8f0);color:var(--text-primary, #1a202c)}.duplicate-btn.secondary:hover{background:var(--bg-hover, #f7fafc)}.duplicate-btn.warning{background:var(--warning-color, #ed8936);border:1px solid var(--warning-color, #ed8936);color:#fff}.duplicate-btn.warning:hover{background:var(--warning-hover, #dd6b20)}[data-theme=dark] .duplicate-modal{background:var(--bg-modal-dark, #2d3748)}[data-theme=dark] .duplicate-modal-header h2{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .duplicate-item{background:var(--bg-item-dark, #4a5568);border-color:var(--border-color-dark, #718096)}[data-theme=dark] .duplicate-name{color:var(--text-primary-dark, #f7fafc)}.visit-preview-summary{position:sticky;bottom:0;z-index:10;margin-top:1.5rem;padding:1rem 1.25rem 1.25rem;background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:.75rem;box-shadow:0 -4px 16px #0000000f}.visit-preview-summary__heading{margin:0 0 .75rem;font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary, #6b7280)}.visit-preview-summary__cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}@media(max-width:768px){.visit-preview-summary__cards{grid-template-columns:1fr}}.visit-preview-card{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem .875rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;background:var(--color-surface-muted, #f9fafb);min-width:0}.visit-preview-card--empty{background:transparent;border-style:dashed;border-color:var(--color-border-strong, #d1d5db)}.visit-preview-card__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.5rem;background:var(--color-primary-100, #dbeafe);color:var(--color-primary-600, #2563eb)}.visit-preview-card--empty .visit-preview-card__icon{background:var(--color-surface-muted, #f9fafb);color:var(--color-text-tertiary, #9ca3af)}.visit-preview-card__body{flex:1;min-width:0}.visit-preview-card__label{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-tertiary, #9ca3af)}.visit-preview-card__primary{margin-top:.125rem;font-size:.9375rem;font-weight:600;color:var(--color-text-primary, #111827);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visit-preview-card--empty .visit-preview-card__primary{font-weight:500;color:var(--color-text-tertiary, #9ca3af);font-style:italic}.visit-preview-card__secondary{margin-top:.125rem;font-size:.75rem;color:var(--color-text-secondary, #6b7280);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visit-preview-summary__actions{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem}.visit-preview-summary__hint{margin:0;font-size:.8125rem;color:var(--color-warning-700, #b45309);background:var(--color-warning-50, #fffbeb);border:1px solid var(--color-warning-200, #fde68a);border-radius:.375rem;padding:.5rem .75rem;line-height:1.4}.visit-preview-summary__buttons{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}:root[data-theme=dark] .visit-preview-summary{background:var(--color-surface-dark, #1f2937);border-color:var(--color-border-dark, #374151);box-shadow:0 -4px 16px #0006}:root[data-theme=dark] .visit-preview-card{background:var(--color-surface-muted-dark, #111827);border-color:var(--color-border-dark, #374151)}:root[data-theme=dark] .visit-preview-card--empty{background:transparent;border-color:var(--color-border-dark, #374151)}:root[data-theme=dark] .visit-preview-card__icon{background:var(--color-primary-800, #1e40af);color:var(--color-primary-200, #bfdbfe)}:root[data-theme=dark] .visit-preview-card--empty .visit-preview-card__icon{background:var(--color-surface-muted-dark, #111827);color:var(--color-text-tertiary-dark, #6b7280)}:root[data-theme=dark] .visit-preview-card__primary{color:var(--color-text-primary-dark, #f3f4f6)}:root[data-theme=dark] .visit-preview-card__secondary,:root[data-theme=dark] .visit-preview-summary__heading{color:var(--color-text-secondary-dark, #9ca3af)}:root[data-theme=dark] .visit-preview-summary__actions{border-top-color:var(--color-border-dark, #374151)}.visit-reg-form{max-width:700px;margin:0 auto}.patient-header{display:flex;align-items:center;gap:16px;padding:20px;background:var(--bg-section, #f7fafc);border-radius:12px;margin-bottom:20px}.patient-icon{font-size:48px;background:var(--primary-color, #3b82f6);border-radius:50%;width:72px;height:72px;display:flex;align-items:center;justify-content:center}.patient-info h3{margin:0;font-size:20px;font-weight:600;color:var(--text-primary, #1a202c)}.patient-id{font-size:14px;color:var(--text-muted, #718096)}.eligibility-check{display:flex;align-items:center;gap:12px;padding:16px 20px;border-radius:8px;margin-bottom:20px;font-size:14px}.eligibility-check.loading{background:var(--bg-section, #f7fafc);color:var(--text-muted, #718096)}.eligibility-check.eligible{background:var(--success-bg, #d1fae5);color:var(--success-color, #059669)}.eligibility-check.blocked{background:var(--error-bg, #fee2e2);color:var(--error-color, #dc2626)}.eligibility-check .icon{font-size:20px}.eligibility-check .balance{margin-left:auto;font-weight:600}.form-section{margin-bottom:24px;padding:20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--bg-card, #fff)}.form-section legend{padding:0 12px;font-weight:600;font-size:14px;color:var(--text-primary, #1a202c)}.form-row{display:flex;gap:16px;margin-bottom:16px}.form-row:last-child{margin-bottom:0}.form-field{flex:1;display:flex;flex-direction:column}.form-field.wide{flex:2}.form-field label{font-size:13px;font-weight:500;color:var(--text-secondary, #4a5568);margin-bottom:6px}.form-field select,.form-field textarea{padding:10px 12px;font-size:14px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);color:var(--text-primary, #1a202c);transition:border-color .15s,box-shadow .15s}.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.form-field select:disabled,.form-field textarea:disabled{background:var(--bg-disabled, #f1f5f9);cursor:not-allowed;opacity:.6}.form-field textarea{resize:vertical;min-height:60px}.form-field textarea::placeholder{color:var(--text-muted, #a0aec0)}.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-top:24px;padding-top:24px;border-top:1px solid var(--border-color, #e2e8f0)}.form-actions__hint{margin-right:auto;font-size:13px;color:var(--text-warning, #b45309);background:var(--bg-warning, #fef3c7);padding:6px 12px;border-radius:6px;border:1px solid var(--border-warning, #fde68a);max-width:60%}.btn-cancel,.btn-submit{padding:12px 24px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.btn-cancel{background:var(--bg-button, #fff);border:1px solid var(--border-color, #e2e8f0);color:var(--text-primary, #1a202c)}.btn-cancel:hover:not(:disabled){background:var(--bg-hover, #f7fafc)}.btn-submit{background:var(--success-color, #10b981);border:1px solid var(--success-color, #10b981);color:#fff}.btn-submit:hover:not(:disabled){background:var(--success-hover, #059669)}.btn-cancel:disabled,.btn-submit:disabled{opacity:.6;cursor:not-allowed}@media(max-width:640px){.form-row{flex-direction:column}.patient-header,.eligibility-check{flex-direction:column;text-align:center}.eligibility-check .balance{margin-left:0;margin-top:8px}}[data-theme=dark] .patient-header{background:var(--bg-section-dark, #2d3748)}[data-theme=dark] .patient-info h3{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .form-section{background:var(--bg-card-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .form-section legend{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .form-field select,[data-theme=dark] .form-field textarea{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .btn-cancel{background:var(--bg-button-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}.skeleton{background:linear-gradient(90deg,#e2e8f0 25%,#edf2f7,#e2e8f0 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite;border-radius:4px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-icon{width:72px;height:72px;border-radius:50%;flex-shrink:0}.skeleton-text{height:16px;margin-bottom:8px}.skeleton-text--xs{width:60px;height:12px}.skeleton-text--sm{width:120px;height:14px}.skeleton-text--md{width:200px}.skeleton-text--lg{width:180px;height:20px}.skeleton-input{width:100%;height:40px;border-radius:6px}.skeleton-textarea{width:100%;height:72px;border-radius:6px}.skeleton-button{width:100px;height:44px;border-radius:6px}.skeleton-button--primary{width:220px}[data-theme=dark] .skeleton{background:linear-gradient(90deg,#4a5568 25%,#718096,#4a5568 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}.visit-reg-form__existing-visit{display:flex;align-items:center;gap:10px;padding:12px 16px;margin-bottom:20px;background:var(--info-bg, #eff6ff);border:1px solid var(--info-border, #bfdbfe);border-radius:8px;font-size:14px;color:var(--info-color, #1d4ed8)}.visit-reg-form__existing-visit-icon{font-size:18px;flex-shrink:0}.visit-reg-form__existing-visit-info{flex:1;line-height:1.4}.visit-reg-form__existing-visit-vn{font-family:JetBrains Mono,Fira Code,monospace;font-weight:600;background:var(--info-badge-bg, #dbeafe);padding:2px 8px;border-radius:4px;font-size:13px}.visit-reg-form__encounter-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.visit-reg-form__encounter-item{display:flex;align-items:center;gap:8px;font-size:13px;padding:4px 8px;border-radius:4px;background:var(--info-badge-bg, #dbeafe)}.visit-reg-form__encounter-pcn{font-family:JetBrains Mono,Fira Code,monospace;font-weight:600;font-size:12px;color:var(--info-color, #1d4ed8)}.visit-reg-form__encounter-detail{flex:1;display:flex;align-items:center;gap:6px}.visit-reg-form__encounter-category{font-size:11px;font-weight:500;padding:1px 6px;border-radius:3px;background:var(--color-bg-surface, #f1f5f9);color:var(--color-text-secondary, #475569);white-space:nowrap}.visit-reg-form__encounter-queue{font-family:JetBrains Mono,Fira Code,monospace;font-weight:600;font-size:12px;color:var(--color-text-secondary, #475569)}.visit-reg-form__category-indicator{display:flex;align-items:center;gap:8px;padding:10px 16px;margin-bottom:16px;background:var(--color-primary-bg, #eff6ff);border:1px solid var(--color-primary-border, #bfdbfe);border-radius:8px;font-size:14px}.visit-reg-form__category-indicator-label{color:var(--color-text-secondary, #64748b)}.visit-reg-form__category-indicator-value{font-weight:600;color:var(--color-primary, #2563eb)}.form-field__readonly{background:var(--color-bg-muted, #f1f5f9);border:1px solid var(--color-border, #e2e8f0);border-radius:6px;padding:8px 12px;font-size:14px;color:var(--color-text-secondary, #64748b);cursor:default}:root[data-theme=dark] .visit-reg-form__encounter-category{background:var(--color-bg-surface-dark, #334155);color:var(--color-text-secondary-dark, #94a3b8)}:root[data-theme=dark] .visit-reg-form__category-indicator{background:var(--color-primary-bg-dark, #1e293b);border-color:var(--color-primary-border-dark, #334155)}:root[data-theme=dark] .visit-reg-form__category-indicator-value{color:var(--color-primary-light, #60a5fa)}:root[data-theme=dark] .form-field__readonly{background:var(--color-bg-muted-dark, #1e293b);border-color:var(--color-border-dark, #334155);color:var(--color-text-secondary-dark, #94a3b8)}@media(prefers-reduced-motion:reduce){.visit-reg-form--skeleton .skeleton{animation:none}.form-field select,.form-field textarea,.btn-submit,.btn-cancel{transition:none}}.visit-history{padding:16px 0}.visit-history.loading,.visit-history.error,.visit-history.empty{text-align:center;padding:40px;color:var(--text-muted, #718096)}.visits-table{width:100%;border-collapse:collapse;font-size:14px}.visits-table th,.visits-table td{padding:12px;text-align:left;border-bottom:1px solid var(--border-color, #e2e8f0)}.visits-table th{background:var(--bg-section, #f7fafc);font-weight:600;font-size:12px;text-transform:uppercase;color:var(--text-secondary, #4a5568)}.visits-table tr:hover{background:var(--bg-hover, #f7fafc)}.visits-table .date{white-space:nowrap}.visits-table .visit-number{font-family:monospace;font-weight:500}.visits-table .complaint{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:500;text-transform:uppercase}.status-badge.registered{background:#dbeafe;color:#1e40af}.status-badge.checked_in{background:#fef3c7;color:#92400e}.status-badge.in_progress{background:#dcfce7;color:#166534}.status-badge.completed{background:#e0e7ff;color:#3730a3}.status-badge.cancelled{background:#fee2e2;color:#991b1b}@media(max-width:768px){.visits-table{display:block;overflow-x:auto}}[data-theme=dark] .visits-table th{background:var(--bg-section-dark, #2d3748);color:var(--text-secondary-dark, #a0aec0)}[data-theme=dark] .visits-table td{border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .visits-table tr:hover{background:var(--bg-hover-dark, #4a5568)}.wallet-display{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:8px;margin-bottom:20px}.wallet-display.eligible{background:var(--success-bg, #d1fae5);border:1px solid var(--success-color, #10b981)}.wallet-display.blocked{background:var(--error-bg, #fee2e2);border:1px solid var(--error-color, #ef4444)}.wallet-icon{font-size:24px}.wallet-info{flex:1}.wallet-status{font-weight:600;margin-bottom:4px}.wallet-display.eligible .wallet-status{color:var(--success-color, #059669)}.wallet-display.blocked .wallet-status{color:var(--error-color, #dc2626)}.wallet-details{display:flex;gap:16px;font-size:13px;color:var(--text-secondary, #4a5568)}.wallet-details .balance{font-weight:500}.wallet-details .balance.negative{color:var(--error-color, #dc2626)}.wallet-details .balance.positive{color:var(--success-color, #059669)}.wallet-details .credit-limit{color:var(--text-muted, #718096)}.wallet-details .effective{color:var(--warning-color, #f59e0b);font-weight:500}@media(max-width:640px){.wallet-display{flex-direction:column;text-align:center}.wallet-details{flex-direction:column;gap:4px}}[data-theme=dark] .wallet-display.eligible{background:#10b9811a;border-color:#10b98180}[data-theme=dark] .wallet-display.blocked{background:#ef44441a;border-color:#ef444480}.wallet-view-all-btn{display:block;width:100%;padding:8px;margin-top:8px;background:none;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;color:var(--color-primary, #2563eb);font-size:.8125rem;cursor:pointer;transition:background .15s}.wallet-view-all-btn:hover{background:var(--color-surface-hover, #f3f4f6)}.cw-pi-panel{display:flex;flex-direction:column;gap:16px}.cw-pi-panel__state{padding:16px;font-size:14px;color:var(--text-muted, #6b7280);text-align:center}.cw-pi-panel__state--error{color:var(--danger, #b91c1c)}.cw-pi-panel__lesions{display:flex;flex-wrap:wrap;gap:8px}.cw-pi-panel__lesion{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:160px;padding:8px 12px;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:var(--surface, #ffffff);cursor:pointer;text-align:left}.cw-pi-panel__lesion:hover{background:var(--surface-alt, #f3f4f6)}.cw-pi-panel__lesion--active{border-color:var(--primary, #2563eb);box-shadow:0 0 0 1px var(--primary, #2563eb) inset}.cw-pi-panel__lesion-title{display:flex;align-items:center;gap:6px;font-weight:600;font-size:14px;color:var(--text, #111827)}.cw-pi-panel__lesion-meta{font-size:12px;color:var(--text-muted, #6b7280)}.cw-pi-panel__timeline{display:flex;flex-direction:column;gap:16px}.cw-pi-panel__group-date{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--text-muted, #6b7280);position:sticky;top:0;background:var(--surface, #ffffff);padding:4px 0}.cw-pi-panel__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}.cw-pi-panel__thumb{display:flex;flex-direction:column;gap:6px}.cw-pi-panel__thumb-img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:8px;border:1px solid var(--border, #e5e7eb);background:var(--surface-alt, #f3f4f6)}.cw-pi-panel__thumb-btn{display:block;width:100%;margin:0;padding:0;border:none;background:none;cursor:pointer;border-radius:8px}.cw-pi-panel__thumb-btn:hover .cw-pi-panel__thumb-img{border-color:var(--primary, #2563eb)}.cw-pi-panel__thumb-btn:focus-visible{outline:2px solid var(--primary, #2563eb);outline-offset:2px}.cw-pi-panel__thumb-pending{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1 / 1;border-radius:8px;border:1px dashed var(--border, #e5e7eb);font-size:12px;color:var(--text-muted, #6b7280)}.cw-pi-panel__thumb-meta{display:flex;flex-wrap:wrap;gap:4px}.cw-pi-panel__badge{display:inline-block;padding:1px 6px;border-radius:999px;font-size:11px;font-weight:500;background:var(--surface-alt, #f3f4f6);color:var(--text, #111827)}.cw-pi-panel__badge--suspicious{background:#fef2f2;color:#b91c1c}.cw-pi-panel__badge--baseline{background:#eff6ff;color:#1d4ed8}.cw-pi-panel__badge--key{background:#fffbeb;color:#b45309}@media(prefers-reduced-motion:reduce){.cw-pi-panel__lesion{transition:none}}.cw-pi-gallery{padding:16px 0}.cw-pi-gallery--no-filter .cw-pi-panel__lesions{display:none}.cw-pi-gallery__lightbox{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.cw-pi-gallery__lightbox-backdrop{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:none;background:transparent;cursor:pointer}.cw-pi-gallery__lightbox-content{position:relative;z-index:1;max-width:90vw;max-height:90vh;background:var(--bg-card, #fff);border-radius:12px;overflow:hidden}.cw-pi-gallery__lightbox-img{max-width:100%;max-height:70vh;display:block}.cw-pi-gallery__lightbox-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border:none;border-radius:50%;background:#00000080;color:#fff;font-size:18px;cursor:pointer;z-index:10;transition:background .15s}.cw-pi-gallery__lightbox-close:hover{background:#000c}.cw-pi-gallery__lightbox-info{padding:16px;font-size:14px}.cw-pi-gallery__lightbox-info p{margin:4px 0}[data-theme=dark] .cw-pi-gallery__lightbox-content{background:var(--bg-card-dark, #2d3748);color:var(--text-primary-dark, #f7fafc)}@media(prefers-reduced-motion:reduce){.cw-pi-gallery__lightbox-close{transition:none}}.patient-photo-avatar{position:relative;border-radius:50%;overflow:hidden;flex-shrink:0;-webkit-user-select:none;user-select:none}.avatar-fallback,.avatar-skeleton{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;color:#fff;font-weight:600;text-transform:uppercase;background-color:var(--avatar-fallback-bg, #6b7280)}.patient-photo-avatar--sm{width:48px;height:48px}.patient-photo-avatar--md{width:96px;height:96px}.patient-photo-avatar--lg{width:192px;height:192px}.patient-photo-avatar--sm .avatar-initials{font-size:1rem}.patient-photo-avatar--md .avatar-initials{font-size:1.75rem}.patient-photo-avatar--lg .avatar-initials{font-size:3.5rem}.avatar-img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;transition:opacity .25s ease}.avatar-img--loading{position:absolute;top:0;left:0;opacity:0}.avatar-img--loaded{opacity:1}.avatar-skeleton{position:absolute;top:0;left:0;z-index:1;animation:avatar-pulse 1.5s ease-in-out infinite}@keyframes avatar-pulse{0%,to{opacity:1}50%{opacity:.6}}@media(prefers-color-scheme:dark){.avatar-fallback,.avatar-skeleton{border:2px solid rgba(255,255,255,.15)}}@media(prefers-reduced-motion:reduce){.avatar-skeleton{animation:none}.avatar-img{transition:none}}.patient-alert-banner{border-radius:8px;padding:12px 16px;margin-bottom:16px;border-left:4px solid}.patient-alert-banner.banner-life-threatening{background-color:#fef2f2;border-left-color:#dc2626}.patient-alert-banner.banner-severe{background-color:#fff7ed;border-left-color:#ea580c}.patient-alert-banner.banner-moderate{background-color:#fffbeb;border-left-color:#d97706}.patient-alert-banner.banner-mild{background-color:#f0fdf4;border-left-color:#16a34a}.patient-alert-banner.compact{padding:8px 12px;margin-bottom:8px}.patient-alert-banner.compact .alert-banner-header{margin-bottom:4px}.patient-alert-banner.compact .alert-badge{font-size:.75rem;padding:2px 6px}.alert-banner-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.alert-banner-icon{font-size:1.1rem}.alert-banner-title{font-size:.95rem;color:#1f2937}.alert-banner-content{display:flex;flex-direction:column;gap:6px}.alert-banner-section{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.alert-section-label{font-size:.8rem;font-weight:600;color:#6b7280;min-width:80px;padding-top:3px}.alert-legacy-text{font-size:.85rem;color:#4b5563}.alert-badges{display:flex;flex-wrap:wrap;gap:4px}.alert-badge{display:inline-flex;align-items:center;gap:3px;padding:3px 8px;border-radius:12px;font-size:.8rem;font-weight:500;white-space:nowrap}.alert-badge.alert-life-threatening{background-color:#fecaca;color:#991b1b;border:1px solid #f87171}.alert-badge.alert-severe{background-color:#fed7aa;color:#9a3412;border:1px solid #fb923c}.alert-badge.alert-moderate{background-color:#fef3c7;color:#92400e;border:1px solid #fbbf24}.alert-badge.alert-mild{background-color:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.alert-badge.alert-condition{background-color:#e0e7ff;color:#3730a3;border:1px solid #a5b4fc}.alert-badge .icd10-code{font-family:monospace;font-size:.7rem;background:#0000000f;padding:1px 4px;border-radius:3px;margin-right:3px}.alert-badge .severity-indicator{font-size:.7rem;opacity:.8}.patient-viewer{padding:1.5rem;max-width:1200px;margin:0 auto;font-family:Inter,Noto Sans Thai,Sarabun,system-ui,-apple-system,sans-serif}.patient-viewer.loading,.patient-viewer.error{text-align:center;padding:4rem 2rem;color:var(--color-text-secondary, #64748b)}.patient-viewer.loading .loading-spinner,.patient-viewer.error .error-icon{font-size:2.5rem;margin-bottom:.75rem}.viewer-header{display:flex;align-items:flex-start;gap:1.25rem;margin-bottom:1.25rem}.patient-basic{flex:1;min-width:0}.patient-name{font-size:1.5rem;font-weight:700;color:var(--color-text-primary, #1e293b);margin:0 0 .15rem;line-height:1.3}.patient-name-alt{font-size:1rem;color:var(--color-text-secondary, #64748b);margin:0 0 .5rem;font-family:Noto Sans Thai,Sarabun,Inter,system-ui,sans-serif}.patient-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;font-size:.875rem;color:var(--color-text-secondary, #64748b)}.hn-badge{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.8rem;font-weight:500;background:var(--color-surface-secondary, #f1f5f9);padding:.2rem .6rem;border-radius:4px;color:var(--color-primary, #2563eb)}.header-actions{display:flex;gap:.5rem;flex-shrink:0}.header-actions .btn-primary{padding:.5rem 1rem;background:var(--color-primary, #2563eb);color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}.header-actions .btn-primary:hover{background:var(--color-primary-dark, #1d4ed8)}.header-actions .btn-secondary{padding:.5rem .75rem;background:var(--color-surface-secondary, #f1f5f9);color:var(--color-text-secondary, #64748b);border:1px solid var(--color-border, #e2e8f0);border-radius:6px;font-size:.875rem;cursor:pointer;transition:background .15s}.header-actions .btn-secondary:hover{background:var(--color-surface-hover, #e2e8f0)}.viewer-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border, #e2e8f0);margin-bottom:1.5rem}.viewer-tabs .tab{padding:.65rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--color-text-secondary, #64748b);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.viewer-tabs .tab:hover{color:var(--color-text-primary, #1e293b);background:var(--color-surface-hover, #f8fafc)}.viewer-tabs .tab.active{color:var(--color-primary, #2563eb);border-bottom-color:var(--color-primary, #2563eb);font-weight:600}.viewer-content{min-height:200px}.patient-info-tab{display:flex;flex-direction:column;gap:1.5rem}.info-section{padding:1rem 1.25rem;background:var(--color-surface, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:8px}.info-section h3{font-size:.95rem;font-weight:600;color:var(--color-text-primary, #1e293b);margin:0 0 .75rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border-light, #f1f5f9)}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-item label{display:block;font-size:.75rem;font-weight:600;color:var(--color-text-secondary, #64748b);text-transform:uppercase;letter-spacing:.03em}.info-item span{font-size:.9rem;color:var(--color-text-primary, #1e293b);word-break:break-word}.info-item span.highlight{font-weight:600;color:var(--color-primary, #2563eb);font-size:1.1rem}.info-item span.masked{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.85rem;letter-spacing:.05em}.info-empty{font-size:.875rem;color:var(--color-text-secondary, #94a3b8);margin:0;padding:.5rem 0}.patient-medical-history-tab{display:flex;flex-direction:column;gap:1.5rem}.medical-history-list{display:flex;flex-direction:column;gap:.5rem}.medical-history-card{padding:.75rem 1rem;background:var(--color-surface-secondary, #f8fafc);border:1px solid var(--color-border-light, #f1f5f9);border-radius:6px}.medical-history-card-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}.medical-history-card-header strong{font-size:.9rem;color:var(--color-text-primary, #1e293b)}.medical-history-card-details{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.8rem;color:var(--color-text-secondary, #64748b)}.code-badge{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.7rem;font-weight:600;background:#0000000f;padding:.15rem .4rem;border-radius:3px}.badge{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:12px;font-size:.7rem;font-weight:600}.badge-primary{background:var(--color-primary-light, #dbeafe);color:var(--color-primary, #2563eb)}.severity-badge{display:inline-flex;padding:.1rem .5rem;border-radius:12px;font-size:.7rem;font-weight:600;text-transform:uppercase}.severity-badge.severity-mild{background:#d1fae5;color:#065f46}.severity-badge.severity-moderate{background:#fef3c7;color:#92400e}.severity-badge.severity-severe{background:#fed7aa;color:#9a3412}.severity-badge.severity-life_threatening{background:#fecaca;color:#991b1b}.severity-badge.severity-controlled{background:#dbeafe;color:#1e40af}.severity-badge.severity-uncontrolled{background:#fee2e2;color:#991b1b}.type-badge{font-size:.7rem;font-weight:500;padding:.1rem .4rem;border-radius:4px;background:var(--color-surface-secondary, #f1f5f9);color:var(--color-text-secondary, #64748b)}.dose-badge{font-size:.75rem;font-weight:500;color:var(--color-text-secondary, #64748b)}@media(max-width:768px){.patient-viewer{padding:1rem}.viewer-header{flex-direction:column;align-items:center;text-align:center}.header-actions{width:100%;justify-content:center}.patient-meta{justify-content:center}.viewer-tabs{overflow-x:auto}.info-grid{grid-template-columns:1fr}}.agency-selector{position:relative;width:100%}.agency-selector.disabled{opacity:.6;pointer-events:none}.selector-trigger{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--bg-input, #fff);cursor:pointer;transition:border-color .15s}.agency-selector.open .selector-trigger{border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.selector-trigger:hover{border-color:var(--border-hover, #cbd5e0)}.selected-value{display:flex;align-items:center;gap:8px;flex:1}.selected-value .agency-code{background:var(--primary-bg, #dbeafe);color:var(--primary-color, #3b82f6);padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.selected-value .agency-name{font-size:14px;color:var(--text-primary, #1a202c)}.selected-value .clear-btn{padding:2px 6px;border:none;background:none;color:var(--text-muted, #718096);cursor:pointer;font-size:12px}.selected-value .clear-btn:hover{color:var(--error-color, #ef4444)}.placeholder{color:var(--text-muted, #a0aec0);font-size:14px}.dropdown-icon{font-size:10px;color:var(--text-muted, #718096)}.selector-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--bg-card, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;box-shadow:0 4px 12px #0000001a;z-index:100;overflow:hidden}.search-box{padding:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.search-box input{width:100%;padding:8px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;font-size:14px;outline:none}.search-box input:focus{border-color:var(--primary-color, #3b82f6)}.agency-list{max-height:250px;overflow-y:auto}.agency-option{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;transition:background .1s}.agency-option:hover{background:var(--bg-hover, #f7fafc)}.agency-option.selected{background:var(--primary-bg, #dbeafe)}.agency-option .agency-code{background:var(--bg-section, #f7fafc);padding:2px 6px;border-radius:4px;font-size:11px;font-weight:500;color:var(--text-secondary, #4a5568)}.agency-option .agency-name{font-size:14px;color:var(--text-primary, #1a202c)}.agency-option .agency-name-th{font-size:12px;color:var(--text-muted, #718096);width:100%;padding-left:44px}.loading,.no-results{text-align:center;padding:20px;color:var(--text-muted, #718096);font-size:14px}[data-theme=dark] .selector-trigger{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096)}[data-theme=dark] .selector-dropdown{background:var(--bg-card-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .search-box input{background:var(--bg-input-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .agency-option:hover{background:var(--bg-hover-dark, #4a5568)}.advanced-patient-search{background:var(--bg-surface, #fff);border-radius:8px;box-shadow:0 2px 8px #0000001a;margin-bottom:20px}.advanced-patient-search .quick-search-bar{display:flex;gap:12px;padding:16px;align-items:center}.advanced-patient-search .search-input-wrapper{flex:1;position:relative;display:flex;align-items:center}.advanced-patient-search .search-icon{position:absolute;left:12px;font-size:1rem;color:var(--text-secondary, #666)}.advanced-patient-search .search-input-wrapper input{width:100%;padding:12px 40px;border:1px solid var(--border-color, #d0d0d0);border-radius:8px;font-size:.95rem}.advanced-patient-search .search-input-wrapper input:focus{outline:none;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px #2563eb1a}.advanced-patient-search .clear-input{position:absolute;right:12px;background:none;border:none;font-size:1.2rem;color:var(--text-secondary, #999);cursor:pointer;padding:4px}.advanced-patient-search .clear-input:hover{color:var(--text-primary, #333)}.advanced-patient-search .btn-search{padding:12px 24px;background:var(--primary-color, #2563eb);color:#fff;border:none;border-radius:8px;font-weight:500;cursor:pointer;transition:background .2s}.advanced-patient-search .btn-search:hover:not(:disabled){background:var(--primary-dark, #1d4ed8)}.advanced-patient-search .btn-search:disabled{opacity:.6;cursor:not-allowed}.advanced-patient-search .btn-toggle-advanced{padding:12px 16px;background:var(--bg-subtle, #f5f5f5);border:1px solid var(--border-color, #d0d0d0);border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:.9rem;transition:background .2s}.advanced-patient-search .btn-toggle-advanced:hover{background:var(--bg-hover, #e8e8e8)}.advanced-patient-search .btn-toggle-advanced.expanded{background:var(--primary-light, #e0e7ff);border-color:var(--primary-color, #2563eb)}.advanced-patient-search .filter-count{background:var(--primary-color, #2563eb);color:#fff;padding:2px 8px;border-radius:10px;font-size:.75rem;font-weight:600}.advanced-patient-search .advanced-filters-panel{padding:0 16px 16px;border-top:1px solid var(--border-color, #e0e0e0);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.advanced-patient-search .filter-section{border:1px solid var(--border-color, #e0e0e0);border-radius:6px;padding:16px;margin-top:16px}.advanced-patient-search .filter-section legend{padding:0 8px;font-weight:600;font-size:.9rem;color:var(--text-primary, #333)}.advanced-patient-search .collapsible-legend{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;padding:0;border:none;background:none;font:inherit;font-weight:600;color:inherit;text-align:left}.advanced-patient-search .collapsible-legend:hover{color:var(--color-primary, #2563eb)}.advanced-patient-search .legend-toggle{display:inline-block;width:1em;font-size:.75rem;margin-right:4px}.advanced-patient-search .filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.advanced-patient-search .filter-field{display:flex;flex-direction:column;gap:6px}.advanced-patient-search .filter-field label{font-size:.85rem;font-weight:500;color:var(--text-secondary, #555)}.advanced-patient-search .filter-field input,.advanced-patient-search .filter-field select{padding:10px 12px;border:1px solid var(--border-color, #d0d0d0);border-radius:6px;font-size:.9rem}.advanced-patient-search .filter-field input:focus,.advanced-patient-search .filter-field select:focus{outline:none;border-color:var(--primary-color, #2563eb)}.advanced-patient-search .date-range{display:flex;align-items:center;gap:8px}.advanced-patient-search .date-range input{flex:1;min-width:0}.advanced-patient-search .date-range span{color:var(--text-secondary, #999)}.advanced-patient-search .filter-checkboxes{display:flex;flex-wrap:wrap;gap:20px}.advanced-patient-search .checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.9rem}.advanced-patient-search .checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.advanced-patient-search .filter-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border-color, #e0e0e0)}.advanced-patient-search .btn-clear{padding:10px 20px;background:none;border:1px solid var(--border-color, #d0d0d0);border-radius:6px;cursor:pointer;font-size:.9rem}.advanced-patient-search .btn-clear:hover{background:var(--bg-subtle, #f5f5f5)}.advanced-patient-search .btn-apply{padding:10px 24px;background:var(--primary-color, #2563eb);color:#fff;border:none;border-radius:6px;font-weight:500;cursor:pointer;font-size:.9rem}.advanced-patient-search .btn-apply:hover:not(:disabled){background:var(--primary-dark, #1d4ed8)}.advanced-patient-search .btn-apply:disabled{opacity:.6;cursor:not-allowed}@media(max-width:768px){.advanced-patient-search .quick-search-bar{flex-wrap:wrap}.advanced-patient-search .search-input-wrapper{flex:1 1 100%}.advanced-patient-search .filter-grid{grid-template-columns:1fr}.advanced-patient-search .date-range{flex-direction:column}.advanced-patient-search .date-range span{display:none}}.cross-branch-toggle{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .625rem;border:1px solid var(--color-border-subtle, #e5e7eb);border-radius:999px;font-size:.8125rem;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:var(--color-surface, #ffffff)}.cross-branch-toggle input[type=checkbox]{margin:0;cursor:pointer}.cross-branch-toggle:has(input:checked){background-color:var(--color-primary-soft, #dbeafe);border-color:var(--color-primary, #2563eb);color:var(--color-primary-text, #1e3a8a)}.print-preview-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.print-preview-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;width:100%;max-width:900px;height:90vh;display:flex;flex-direction:column;overflow:hidden}.preview-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb;background:#f9fafb}.preview-header h2{margin:0;font-size:18px;font-weight:600;color:#1f2937}.preview-header .close-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:4px 8px;border-radius:4px;color:#6b7280;transition:all .2s}.preview-header .close-btn:hover{background:#e5e7eb;color:#1f2937}.preview-header .close-btn:disabled{opacity:.5;cursor:not-allowed}.preview-toolbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#f3f4f6;border-bottom:1px solid #e5e7eb}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:12px}.language-selector{display:flex;align-items:center;gap:8px}.language-selector label{font-size:13px;color:#6b7280}.language-selector select{padding:6px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;background:#fff;cursor:pointer}.language-selector select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.btn-preview,.btn-download,.btn-print{padding:8px 16px;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s}.btn-preview{background:#3b82f6;color:#fff}.btn-preview:hover:not(:disabled){background:#2563eb}.btn-download{background:#10b981;color:#fff}.btn-download:hover:not(:disabled){background:#059669}.btn-print{background:#8b5cf6;color:#fff}.btn-print:hover:not(:disabled){background:#7c3aed}.btn-preview:disabled,.btn-download:disabled,.btn-print:disabled{opacity:.6;cursor:not-allowed}.preview-content{flex:1;overflow:hidden;position:relative;background:#e5e7eb}.preview-error{position:absolute;top:20px;left:50%;transform:translate(-50%);background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:12px 20px;display:flex;align-items:center;gap:12px;z-index:10}.preview-error .error-icon{font-size:18px}.preview-error span{color:#dc2626;font-size:14px}.preview-error button{background:#fee2e2;border:none;padding:4px 12px;border-radius:4px;font-size:12px;cursor:pointer;color:#dc2626}.preview-error button:hover{background:#fecaca}.preview-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.preview-loading .spinner{font-size:48px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preview-loading p{margin-top:16px;color:#6b7280;font-size:14px}.preview-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.preview-empty .empty-icon{font-size:64px;opacity:.5}.preview-empty p{margin-top:16px;color:#9ca3af;font-size:14px}.pdf-viewer{width:100%;height:100%}.pdf-viewer iframe{border:none;background:#fff}.preview-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb;background:#f9fafb}.preview-footer .btn-cancel{padding:10px 20px;background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:500;color:#374151;cursor:pointer;transition:all .2s}.preview-footer .btn-cancel:hover:not(:disabled){background:#f3f4f6}.preview-footer .btn-primary{padding:10px 24px;background:#3b82f6;border:none;border-radius:6px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s}.preview-footer .btn-primary:hover:not(:disabled){background:#2563eb}.preview-footer .btn-cancel:disabled,.preview-footer .btn-primary:disabled{opacity:.6;cursor:not-allowed}@media print{.print-preview-overlay{display:none}}@media(max-width:768px){.print-preview-modal{height:100vh;max-width:100%;border-radius:0}.preview-toolbar{flex-direction:column;gap:12px}.toolbar-left,.toolbar-right{width:100%;justify-content:center}}.error-boundary{padding:2rem;margin:1rem;border-radius:8px;background-color:var(--color-error-bg, #fef2f2);border:1px solid var(--color-error-light, #fecaca);text-align:center}.error-boundary__title{color:var(--color-error-text, #991b1b);margin-bottom:.5rem;font-size:1.25rem}.error-boundary__description{color:var(--color-error, var(--color-danger, #b91c1c));margin-bottom:1rem;font-size:.875rem}.error-boundary__details{margin-bottom:1rem;text-align:start}.error-boundary__summary{cursor:pointer;color:var(--color-text-muted, #6b7280);font-size:.75rem}.error-boundary__pre{padding:.5rem;background-color:var(--color-gray-50, #f9fafb);border-radius:4px;font-size:.75rem;overflow:auto;max-height:120px;color:var(--color-text-strong, #374151);white-space:pre-wrap;margin:.25rem 0 0}.error-boundary__retry{padding:.5rem 1.5rem;background-color:var(--color-primary, #2563eb);color:var(--color-text-inverse, #fff);border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500}.error-boundary__retry:hover,.error-boundary__retry:focus-visible{background-color:var(--color-primary-hover, #1d4ed8);outline:none}.duty-roster{background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:12px;padding:24px}.duty-roster__title{font-size:1.125rem;font-weight:600;color:var(--color-text, #111827);margin:0 0 16px;display:flex;align-items:center;gap:8px}.duty-roster__count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:12px;background:var(--color-primary, #2563eb);color:#fff;font-size:.75rem;font-weight:600}.duty-roster__list{display:flex;flex-direction:column;gap:8px}.duty-roster__row{border-radius:8px}.duty-roster__row-btn{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;width:100%;min-width:0;padding:12px;border:1px solid var(--color-border, #e5e7eb);border-radius:8px;background:var(--color-surface, #ffffff);cursor:pointer;transition:background .15s ease,border-color .15s ease;font:inherit;text-align:left;color:inherit}.duty-roster__row-btn:hover{background:var(--color-hover, #f9fafb);border-color:var(--color-primary, #2563eb)}.duty-roster__row-btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.duty-roster__indicator{width:10px;height:10px;border-radius:50%;border:2px solid var(--color-text-secondary, #9ca3af);background:transparent;flex-shrink:0}.duty-roster__indicator--in{border-color:var(--color-primary, #2563eb);background:var(--color-primary, #2563eb)}.duty-roster__indicator--out{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;color:var(--color-error, #ef4444);flex-shrink:0;border:none;border-radius:0;background:transparent}.duty-roster__indicator--break{width:auto;height:auto;display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--color-warning-dark, #d97706);flex-shrink:0;border:none;border-radius:0;background:transparent;animation:duty-roster-break-pulse 2s ease-in-out infinite}@keyframes duty-roster-break-pulse{0%,to{opacity:1}50%{opacity:.5}}.duty-roster__code{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;background:var(--color-info-light, #eff6ff);color:var(--color-info-dark, #1e40af);font-size:.75rem;font-weight:600;white-space:nowrap;flex-shrink:0}.duty-roster__name-group{flex:1 1 120px;display:flex;flex-direction:column;gap:2px;min-width:0;overflow:hidden}.duty-roster__name{font-weight:500;color:var(--color-text, #111827);font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duty-roster__break-note{font-size:.6875rem;color:var(--color-warning-dark, #d97706);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}.duty-roster__shift{font-size:.75rem;color:var(--color-text-secondary, #6b7280);white-space:nowrap;flex-shrink:0}.duty-roster__pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:500;white-space:nowrap;flex-shrink:0;background:var(--color-hover, #f3f4f6);color:var(--color-text-secondary, #6b7280)}.duty-roster__pill--active{background:var(--color-warning-light, #fef3c7);color:var(--color-warning-dark, #92400e)}.duty-roster__empty{text-align:center;padding:32px 16px;color:var(--color-text-secondary, #6b7280)}.duty-roster__empty-icon{font-size:2rem;display:block;margin-bottom:8px}.duty-roster__empty p{margin:0;font-size:.875rem}.duty-roster__error{text-align:center;padding:32px 16px;color:var(--color-text-secondary, #6b7280)}.duty-roster__error-icon{font-size:2rem;display:block;margin-bottom:8px}.duty-roster__error p{margin:0 0 12px;font-size:.875rem}.duty-roster__retry-btn{padding:8px 16px;background:var(--color-primary, #2563eb);color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s ease}.duty-roster__retry-btn:hover{background:var(--color-primary-dark, #1d4ed8)}.duty-roster__retry-btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.duty-roster__row.skeleton{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:12px;min-width:0;border:1px solid var(--color-border, #e5e7eb);border-radius:8px;animation:duty-roster-pulse 1.5s ease-in-out infinite}.skeleton-badge{width:48px;height:20px;border-radius:4px;background:var(--color-border, #e5e7eb)}.skeleton-text{height:14px;border-radius:4px;background:var(--color-border, #e5e7eb)}.skeleton-text--name{flex:1;min-width:80px}.skeleton-text--time{width:80px}.skeleton-pill{width:40px;height:20px;border-radius:12px;background:var(--color-border, #e5e7eb)}.skeleton-dot{width:10px;height:10px;border-radius:50%;background:var(--color-border, #e5e7eb)}@keyframes duty-roster-pulse{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:640px){.duty-roster__row-btn{flex-wrap:wrap;gap:8px}.duty-roster__name{order:1;flex-basis:100%}.duty-roster__shift{order:2}}@keyframes slideInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.attendance-modal{border:none;border-radius:12px;padding:0;max-width:480px;width:calc(100% - 32px);box-shadow:0 20px 60px #00000026;background:var(--color-surface, #ffffff);color:var(--color-text, #111827)}.attendance-modal[open]{animation:slideInUp .25s ease-out}.attendance-modal::backdrop{background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .2s ease-out}.attendance-modal__content{padding:24px}.attendance-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.attendance-modal__title{font-size:1.125rem;font-weight:600;margin:0;color:var(--color-text, #111827)}.attendance-modal__close{background:none;border:none;font-size:1.25rem;color:var(--color-text-secondary, #6b7280);cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1;transition:background .15s ease}.attendance-modal__close:hover{background:var(--color-hover, #f3f4f6);color:var(--color-text, #111827)}.attendance-modal__close:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.attendance-modal__info{background:var(--color-hover, #f9fafb);border-radius:8px;padding:16px;margin-bottom:16px;display:flex;flex-direction:column;gap:8px}.attendance-modal__doctor{display:flex;align-items:center;gap:8px}.attendance-modal__code{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;background:var(--color-info-light, #eff6ff);color:var(--color-info-dark, #1e40af);font-size:.75rem;font-weight:600}.attendance-modal__name{font-weight:600;font-size:1rem;color:var(--color-text, #111827)}.attendance-modal__schedule,.attendance-modal__department{display:flex;align-items:center;gap:8px;font-size:.875rem}.attendance-modal__label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary, #6b7280)}.attendance-modal__badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em}.attendance-modal__badge--on-time{background:var(--color-success-light, #d1fae5);color:var(--color-success-dark, #065f46)}.attendance-modal__badge--late{background:var(--color-error-light, #fee2e2);color:var(--color-error-dark, #991b1b)}.attendance-modal__timeline{display:flex;align-items:flex-start;padding:16px 0;margin-bottom:16px}.attendance-modal__step{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 auto;min-width:72px}.attendance-modal__step-dot{width:12px;height:12px;border-radius:50%;background:var(--color-border, #e5e7eb);border:2px solid var(--color-border, #d1d5db);transition:all .3s ease}.attendance-modal__step--active .attendance-modal__step-dot{background:var(--color-primary, #2563eb);border-color:var(--color-primary, #2563eb)}.attendance-modal__step--current .attendance-modal__step-dot{box-shadow:0 0 0 4px #2563eb33}.attendance-modal__step--checked-out .attendance-modal__step-dot{background:var(--color-error, #ef4444);border-color:var(--color-error, #ef4444)}.attendance-modal__step--checked-out .attendance-modal__step-dot{box-shadow:0 0 0 4px #ef444433}.attendance-modal__step-label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary, #9ca3af);text-align:center;white-space:nowrap}.attendance-modal__step--active .attendance-modal__step-label{color:var(--color-text, #111827)}.attendance-modal__step-time{font-size:.6875rem;color:var(--color-primary, #2563eb);font-weight:500}.attendance-modal__step-time--auto{color:var(--color-text-secondary, #9ca3af);font-style:italic}.attendance-modal__step-connector{flex:1;height:2px;background:var(--color-border, #e5e7eb);margin-top:5px;transition:background .3s ease}.attendance-modal__step-connector--active{background:var(--color-primary, #2563eb)}.attendance-modal__step-connector--checked-out{background:var(--color-error, #ef4444)}.attendance-modal__step--on-break .attendance-modal__step-dot{background:var(--color-warning, #f59e0b);border-color:var(--color-warning, #f59e0b);box-shadow:0 0 0 4px #f59e0b33}.attendance-modal__step--on-break .attendance-modal__step-label{color:var(--color-warning-dark, #92400e);font-weight:600}.attendance-modal__step-time--break{font-size:.875rem!important}.attendance-modal__step-connector--break{background:var(--color-warning, #f59e0b)}.attendance-modal__break-section{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1px solid var(--color-warning, #f59e0b);border-radius:8px;padding:10px 12px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px}.attendance-modal__break-toggle{background:transparent;border:none;padding:2px 4px;margin:0;font:inherit;font-size:.8125rem;color:var(--color-warning-dark, #92400e);text-align:left;cursor:pointer;align-self:flex-start;text-decoration:underline;text-underline-offset:2px}.attendance-modal__break-toggle:hover{color:#78350f}.attendance-modal__break-actions{display:flex;gap:8px;align-items:center}.attendance-modal__break-actions .attendance-modal__btn--start-break{flex:1}.attendance-modal__break-cancel{background:transparent;border:none;padding:6px 10px;font:inherit;font-size:.8125rem;color:var(--color-text-secondary, #6b7280);cursor:pointer}.attendance-modal__break-cancel:hover{color:var(--color-text, #111827)}.attendance-modal__break-active{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.attendance-modal__break-icon{font-size:1.25rem;line-height:1}.attendance-modal__break-status{font-weight:600;font-size:.875rem;color:var(--color-warning-dark, #92400e)}.attendance-modal__break-note-display{margin:0;font-size:.8125rem;font-style:italic;color:var(--color-warning-dark, #92400e);padding-left:4px}.attendance-modal__break-note-input{width:100%;padding:8px 10px;border:1px solid var(--color-warning, #f59e0b);border-radius:6px;font:inherit;font-size:.8125rem;resize:none;color:var(--color-text, #111827);background:#ffffffb3;transition:border-color .15s ease;box-sizing:border-box}.attendance-modal__break-note-input:focus{outline:none;border-color:var(--color-warning-dark, #d97706);box-shadow:0 0 0 3px #f59e0b26}.attendance-modal__break-note-input::placeholder{color:var(--color-text-secondary, #9ca3af)}.attendance-modal__break-note-count{text-align:right;font-size:.6875rem;color:var(--color-text-secondary, #9ca3af)}.attendance-modal__break-summary{margin:0;font-size:.75rem;color:var(--color-text-secondary, #6b7280);border-top:1px solid rgba(245,158,11,.3);padding-top:8px}.attendance-modal__conflict{background:var(--color-warning-light, #fef3c7);border:1px solid var(--color-warning, #f59e0b);border-radius:8px;padding:12px 16px;margin-bottom:16px;display:flex;gap:10px}.attendance-modal__conflict-icon{flex-shrink:0;color:var(--color-warning, #f59e0b);display:flex;align-items:center}.attendance-modal__conflict-body{flex:1}.attendance-modal__conflict-msg{margin:0 0 4px;font-weight:500;font-size:.875rem;color:var(--color-warning-dark, #92400e)}.attendance-modal__conflict-body p{margin:0 0 4px;font-size:.8125rem;color:var(--color-warning-dark, #92400e)}.attendance-modal__override-label{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:.8125rem;font-weight:500;color:var(--color-warning-dark, #92400e);cursor:pointer}.attendance-modal__override-label input[type=checkbox]{width:16px;height:16px;cursor:pointer}.attendance-modal__notes{margin-bottom:20px}.attendance-modal__notes .attendance-modal__label{display:block;margin-bottom:6px}.attendance-modal__textarea{width:100%;padding:10px 12px;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;font:inherit;font-size:.875rem;resize:vertical;color:var(--color-text, #111827);transition:border-color .15s ease;box-sizing:border-box}.attendance-modal__textarea:focus{outline:none;border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb1a}.attendance-modal__textarea::placeholder{color:var(--color-text-secondary, #9ca3af)}.attendance-modal__char-count{text-align:right;font-size:.75rem;color:var(--color-text-secondary, #9ca3af);margin-top:4px}.attendance-modal__actions{display:flex;flex-direction:column;gap:8px}.attendance-modal__btn{width:100%;padding:12px 20px;border:none;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s ease,opacity .15s ease}.attendance-modal__btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.attendance-modal__btn:disabled{opacity:.5;cursor:not-allowed}.attendance-modal__btn--secondary{background:var(--color-hover, #f3f4f6);color:var(--color-text, #111827);border:1px solid var(--color-border, #e5e7eb)}.attendance-modal__btn--secondary:hover:not(:disabled){background:var(--color-border, #e5e7eb)}.attendance-modal__btn--checkin{background:var(--color-success, #10b981);color:#fff}.attendance-modal__btn--checkin:hover:not(:disabled){background:var(--color-success-dark, #059669)}.attendance-modal__btn--checkout{background:var(--color-warning, #f59e0b);color:#fff}.attendance-modal__btn--checkout:hover:not(:disabled){background:var(--color-warning-dark, #d97706)}.attendance-modal__btn--start-break{background:var(--color-warning, #f59e0b);color:#fff}.attendance-modal__btn--start-break:hover:not(:disabled){background:var(--color-warning-dark, #d97706)}.attendance-modal__btn--end-break{background:var(--color-primary, #2563eb);color:#fff}.attendance-modal__btn--end-break:hover:not(:disabled){background:var(--color-primary-dark, #1d4ed8)}.patient-roster{background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:12px;padding:24px}.patient-roster__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}.patient-roster__title{font-size:1.125rem;font-weight:600;color:var(--color-text, #111827);margin:0;display:flex;align-items:center;gap:8px}.patient-roster__total-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:12px;background:var(--color-primary, #2563eb);color:#fff;font-size:.75rem;font-weight:600}.patient-roster__filter{position:relative;width:220px}.patient-roster__filter-input{width:100%;padding:8px 32px 8px 12px;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;font-size:.875rem;color:var(--color-text, #111827);transition:border-color .15s ease;box-sizing:border-box}.patient-roster__filter-input:focus{outline:none;border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb1a}.patient-roster__filter-input::placeholder{color:var(--color-text-secondary, #9ca3af)}.patient-roster__filter-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:.875rem;color:var(--color-text-secondary, #9ca3af);cursor:pointer;padding:2px 4px;line-height:1}.patient-roster__filter-clear:hover{color:var(--color-text, #111827)}.patient-roster__table-wrap{overflow-x:auto;max-height:480px;overflow-y:auto}.patient-roster__table{width:100%;border-collapse:collapse;font-size:.875rem}.patient-roster__table thead{position:sticky;top:0;z-index:1}.patient-roster__table th{background:var(--color-hover, #f9fafb);padding:10px 12px;text-align:left;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary, #6b7280);border-bottom:2px solid var(--color-border, #e5e7eb);white-space:nowrap}.patient-roster__table td{padding:10px 12px;border-bottom:1px solid var(--color-border, #e5e7eb);color:var(--color-text, #111827);white-space:nowrap}.patient-roster__row{cursor:pointer;transition:background .15s ease}.patient-roster__row:hover{background:var(--color-hover, #f9fafb)}.patient-roster__row:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:-2px}.patient-roster__row--new{animation:patient-roster-highlight 3s ease-out}@keyframes patient-roster-highlight{0%{background:var(--color-success-light, #d1fae5)}to{background:transparent}}@media(prefers-reduced-motion:reduce){.patient-roster__row--new{animation:none;background:var(--color-success-light, #d1fae5)}}.patient-roster__cell--vn{font-family:monospace;font-weight:500}.patient-roster__cell--name{font-weight:500;max-width:180px;overflow:hidden;text-overflow:ellipsis}.patient-roster__status{display:inline-flex;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:500;text-transform:capitalize}.patient-roster__status--registered{background:var(--color-info-light, #eff6ff);color:var(--color-info-dark, #1e40af)}.patient-roster__status--waiting{background:var(--color-warning-light, #fef3c7);color:var(--color-warning-dark, #92400e)}.patient-roster__status--serving,.patient-roster__status--inprogress,.patient-roster__status--in-progress{background:var(--color-success-light, #d1fae5);color:var(--color-success-dark, #065f46)}.patient-roster__status--completed{background:var(--color-hover, #f3f4f6);color:var(--color-text-secondary, #6b7280)}.patient-roster__status--cancelled{background:var(--color-error-light, #fef2f2);color:var(--color-error-dark, #991b1b)}.patient-roster__pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--color-border, #e5e7eb)}.patient-roster__page-btn{padding:6px 12px;background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:6px;cursor:pointer;font-size:.875rem;color:var(--color-text, #111827);transition:background .15s ease}.patient-roster__page-btn:hover:not(:disabled){background:var(--color-hover, #f3f4f6)}.patient-roster__page-btn:disabled{opacity:.4;cursor:not-allowed}.patient-roster__page-btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.patient-roster__page-info{font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.patient-roster__empty{text-align:center;padding:40px 16px;color:var(--color-text-secondary, #6b7280)}.patient-roster__empty-icon{font-size:2rem;display:block;margin-bottom:8px}.patient-roster__empty p{margin:0;font-size:.875rem}.patient-roster__error{text-align:center;padding:32px 16px;color:var(--color-text-secondary, #6b7280)}.patient-roster__error p{margin:8px 0 12px;font-size:.875rem}.patient-roster__retry-btn{padding:8px 16px;background:var(--color-primary, #2563eb);color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s ease}.patient-roster__retry-btn:hover{background:var(--color-primary-dark, #1d4ed8)}.patient-roster__retry-btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.patient-roster__skeleton-row td{padding:10px 12px;border-bottom:1px solid var(--color-border, #e5e7eb)}.skeleton-cell{height:14px;width:80px;border-radius:4px;background:var(--color-border, #e5e7eb);animation:patient-roster-pulse 1.5s ease-in-out infinite}.skeleton-cell--sm{width:50px}.skeleton-cell--lg{width:120px}@keyframes patient-roster-pulse{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:768px){.patient-roster__header{flex-direction:column;align-items:flex-start}.patient-roster__filter{width:100%}}.patient-roster__col-expand{width:32px;min-width:32px}.patient-roster__col-actions{width:120px;min-width:120px}.patient-roster__row--expandable{cursor:pointer}.patient-roster__cell--expand{text-align:center;padding:6px 4px}.patient-roster__expand-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:none;border:1px solid var(--color-border, #e5e7eb);border-radius:4px;font-size:.625rem;color:var(--color-text-secondary, #6b7280);cursor:pointer;transition:background .15s ease,color .15s ease}.patient-roster__expand-btn:hover{background:var(--color-hover, #f3f4f6);color:var(--color-primary, #2563eb)}.patient-roster__expand-btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:1px}.patient-roster__encounter-count{font-size:.75rem;color:var(--color-text-secondary, #6b7280);margin-left:4px;font-weight:400}.patient-roster__row--encounter{background:var(--color-hover, #f9fafb)}.patient-roster__row--encounter:hover{background:var(--color-border, #e5e7eb)}.patient-roster__cell--pcn{font-family:monospace;font-size:.8125rem;color:var(--color-text-secondary, #6b7280)}.patient-roster__pcn-indent{color:var(--color-primary, #2563eb);margin-right:4px;font-weight:600}.patient-roster__cell--actions{text-align:center}.patient-roster__add-encounter-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--color-primary-light, #eff6ff);border:1px solid var(--color-primary, #2563eb);border-radius:6px;font-size:.75rem;font-weight:500;color:var(--color-primary, #2563eb);cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease}.patient-roster__add-encounter-btn:hover{background:var(--color-primary, #2563eb);color:#fff}.patient-roster__add-encounter-btn:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.dept-sidebar{display:flex;flex-direction:column;gap:8px;min-width:0}.dept-sidebar__heading{font-size:.8125rem;font-weight:600;color:var(--color-text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.04em;margin:0 0 4px;padding:0 8px}.dept-sidebar__list{display:flex;flex-direction:column;gap:2px}.dept-sidebar__item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:8px;border:2px solid transparent;background:transparent;cursor:pointer;transition:background-color .15s ease,border-color .15s ease;-webkit-user-select:none;user-select:none;min-width:0}.dept-sidebar__item:hover{background:var(--color-surface-hover, #f9fafb)}.dept-sidebar__item:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:-2px}.dept-sidebar__item--active{background:var(--color-primary-bg, #eff6ff);border-left-color:var(--color-primary, #2563eb);border-left-width:3px;padding-left:11px}.dept-sidebar__item--active:hover{background:var(--color-primary-bg, #eff6ff)}.dept-sidebar__item-label{flex:1;font-size:.8125rem;font-weight:500;color:var(--color-text, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4}.dept-sidebar__item--active .dept-sidebar__item-label{color:var(--color-primary, #2563eb);font-weight:600}.dept-sidebar__item-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--color-hover, #f3f4f6);color:var(--color-text-secondary, #6b7280);font-size:.7rem;font-weight:600;flex-shrink:0;line-height:1}.dept-sidebar__item--active .dept-sidebar__item-badge{background:var(--color-primary, #2563eb);color:#fff}.dept-sidebar__skeleton{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:8px;animation:dept-sidebar-shimmer 1.5s ease-in-out infinite}.dept-sidebar__skeleton-text{flex:1;height:14px;border-radius:4px;background:var(--color-border, #e5e7eb);max-width:120px}.dept-sidebar__skeleton-badge{width:22px;height:22px;border-radius:11px;background:var(--color-border, #e5e7eb)}@keyframes dept-sidebar-shimmer{0%,to{opacity:1}50%{opacity:.4}}:root[data-theme=dark] .dept-sidebar__item:hover{background:var(--color-surface-hover, rgba(255, 255, 255, .05))}:root[data-theme=dark] .dept-sidebar__item--active{background:#2563eb1f;border-left-color:var(--color-primary, #3b82f6)}:root[data-theme=dark] .dept-sidebar__item--active:hover{background:#2563eb26}:root[data-theme=dark] .dept-sidebar__item--active .dept-sidebar__item-label{color:var(--color-primary-light, #93c5fd)}:root[data-theme=dark] .dept-sidebar__item-badge{background:#6b728033;color:var(--color-text-secondary, #9ca3af)}:root[data-theme=dark] .dept-sidebar__item--active .dept-sidebar__item-badge{background:var(--color-primary, #3b82f6);color:#fff}:root[data-theme=dark] .dept-sidebar__skeleton-text,:root[data-theme=dark] .dept-sidebar__skeleton-badge{background:var(--color-border, #374151)}@media(prefers-reduced-motion:reduce){.dept-sidebar__item{transition:none}.dept-sidebar__skeleton{animation:none}}@media(max-width:1024px){.dept-sidebar{gap:4px}.dept-sidebar__heading{font-size:.75rem;padding:0 4px;margin-bottom:2px}.dept-sidebar__list{flex-direction:row;gap:6px;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-border, #d1d5db) transparent}.dept-sidebar__list::-webkit-scrollbar{height:4px}.dept-sidebar__list::-webkit-scrollbar-track{background:transparent}.dept-sidebar__list::-webkit-scrollbar-thumb{background:var(--color-border, #d1d5db);border-radius:2px}.dept-sidebar__item{flex-shrink:0;padding:6px 12px;border-radius:20px;border:1px solid var(--color-border, #e5e7eb);background:var(--color-surface, #ffffff);gap:6px}.dept-sidebar__item--active{border-color:var(--color-primary, #2563eb);background:var(--color-primary-bg, #eff6ff);border-left-width:1px;padding-left:12px}.dept-sidebar__item-label{font-size:.75rem;white-space:nowrap}.dept-sidebar__item-badge{min-width:18px;height:18px;padding:0 5px;font-size:.65rem;border-radius:9px}.dept-sidebar__skeleton{flex-shrink:0;padding:6px 12px;border-radius:20px;border:1px solid var(--color-border, #e5e7eb);min-width:100px}.dept-sidebar__skeleton-text{max-width:60px;height:12px}.dept-sidebar__skeleton-badge{width:18px;height:18px}}@media(max-width:480px){.dept-sidebar__item-label{font-size:.7rem}.dept-sidebar__item{padding:5px 10px}}.doctor-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 12px 12px;border:2px solid var(--color-border, #e5e7eb);border-radius:12px;background:var(--color-surface, #ffffff);cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease,opacity .15s ease;-webkit-user-select:none;user-select:none;text-align:center;min-width:0}.doctor-card:hover:not(.doctor-card--disabled){border-color:var(--color-primary-light, #93c5fd);box-shadow:0 2px 8px #2563eb1a}.doctor-card:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.doctor-card--selected{border-color:var(--color-primary, #2563eb);background:var(--color-primary-bg, #eff6ff);box-shadow:0 0 0 1px var(--color-primary, #2563eb),0 2px 8px #2563eb26}.doctor-card--suggested{border-color:var(--color-warning, #f59e0b);box-shadow:0 0 0 1px var(--color-warning, #f59e0b),0 2px 8px #f59e0b1f}.doctor-card--disabled{opacity:.5;cursor:not-allowed;pointer-events:auto}.doctor-card--disabled:hover{border-color:var(--color-border, #e5e7eb);box-shadow:none}.doctor-card__suggested-badge{position:absolute;top:-10px;left:50%;transform:translate(-50%);padding:2px 10px;border-radius:10px;background:var(--color-warning, #f59e0b);color:#fff;font-size:.65rem;font-weight:600;white-space:nowrap;line-height:1.4;letter-spacing:.02em}.doctor-card__check{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center}.doctor-card__avatar{position:relative;border-radius:50%;overflow:hidden;flex-shrink:0}.doctor-card__avatar{width:var(--doctor-card-avatar-size, 64px);height:var(--doctor-card-avatar-size, 64px)}.doctor-card__avatar-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:600;z-index:0;background-color:var(--doctor-card-avatar-bg, #6b7280)}.doctor-card__avatar-initials{font-size:1.25rem;line-height:1;text-transform:uppercase}.doctor-card__identity{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;min-width:0}.doctor-card__code-fallback{display:inline-flex;padding:2px 8px;border-radius:4px;background:var(--color-info-light, #eff6ff);color:var(--color-info-dark, #1e40af);font-size:.7rem;font-weight:600;font-family:SF Mono,Cascadia Code,Consolas,monospace;white-space:nowrap}.doctor-card__name{font-size:.8125rem;font-weight:600;color:var(--color-text, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;line-height:1.3}.doctor-card__department{font-size:.7rem;color:var(--color-text-secondary, #6b7280);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;line-height:1.3}.doctor-card__shift{font-size:.7rem;color:var(--color-text-secondary, #6b7280);white-space:nowrap}.doctor-card__status{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:.7rem;font-weight:500;white-space:nowrap;line-height:1.4}.doctor-card__status-icon{display:inline-flex;align-items:center;justify-content:center;font-size:.625rem;line-height:1}.doctor-card__status--available{background:#dcfce7;color:#166534}.doctor-card__status--available .doctor-card__status-icon{color:#22c55e}.doctor-card__status--break{background:#fef3c7;color:#92400e;animation:doctor-card-break-pulse 2s ease-in-out infinite}.doctor-card__status--break .doctor-card__status-icon{font-size:.75rem}@keyframes doctor-card-break-pulse{0%,to{opacity:1}50%{opacity:.6}}.doctor-card__status--not-arrived{background:var(--color-hover, #f3f4f6);color:var(--color-text-secondary, #6b7280)}.doctor-card__status--not-arrived .doctor-card__status-icon{color:#9ca3af}.doctor-card__status--checked-out{background:#fee2e2;color:#991b1b}.doctor-card__status--checked-out .doctor-card__status-icon{color:#ef4444;font-weight:700}.doctor-card__status--off-shift{background:#fef3c7;color:#92400e;border:1px dashed #d97706}.doctor-card__status--off-shift .doctor-card__status-icon{color:#b45309;font-weight:700}.doctor-card__break-note{font-size:.65rem;color:var(--color-warning-dark, #d97706);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;line-height:1.3}.doctor-card__pills{display:flex;align-items:center;gap:6px;margin-top:2px}.doctor-card__pill{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:10px;font-size:.7rem;font-weight:500;white-space:nowrap;background:var(--color-hover, #f3f4f6);color:var(--color-text-secondary, #6b7280)}.doctor-card__pill--active{background:var(--color-warning-light, #fef3c7);color:var(--color-warning-dark, #92400e)}:root[data-theme=dark] .doctor-card{background:var(--color-surface, #1f2937);border-color:var(--color-border, #374151)}:root[data-theme=dark] .doctor-card:hover:not(.doctor-card--disabled){border-color:var(--color-primary-light, #60a5fa);box-shadow:0 2px 8px #60a5fa26}:root[data-theme=dark] .doctor-card--selected{background:#2563eb26;border-color:var(--color-primary, #3b82f6)}:root[data-theme=dark] .doctor-card--suggested{border-color:var(--color-warning, #f59e0b);box-shadow:0 0 0 1px var(--color-warning, #f59e0b),0 2px 8px #f59e0b26}:root[data-theme=dark] .doctor-card__status--available{background:#22c55e26;color:#86efac}:root[data-theme=dark] .doctor-card__status--break{background:#f59e0b26;color:#fcd34d}:root[data-theme=dark] .doctor-card__status--not-arrived{background:#6b728026;color:#9ca3af}:root[data-theme=dark] .doctor-card__status--checked-out{background:#ef444426;color:#fca5a5}:root[data-theme=dark] .doctor-card__pill{background:#6b728026;color:#9ca3af}:root[data-theme=dark] .doctor-card__pill--active{background:#f59e0b26;color:#fcd34d}:root[data-theme=dark] .doctor-card__code-fallback{background:#2563eb26;color:#93c5fd}@media(prefers-reduced-motion:reduce){.doctor-card{transition:none}.doctor-card__status--break{animation:none}}@media(max-width:640px){.doctor-card{padding:12px 8px 8px;gap:4px}.doctor-card__avatar-initials{font-size:1rem}}.doctor-grid{width:100%;min-width:0}.doctor-grid__cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.doctor-grid__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--color-text-secondary, #6b7280)}.doctor-grid__empty-icon{font-size:2.5rem;display:block;margin-bottom:12px}.doctor-grid__empty p{margin:0;font-size:.875rem;line-height:1.5;max-width:320px}.doctor-grid__skeleton{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 12px 12px;border:2px solid var(--color-border, #e5e7eb);border-radius:12px;background:var(--color-surface, #ffffff);animation:doctor-grid-shimmer 1.5s ease-in-out infinite}.doctor-grid__skeleton-avatar{width:56px;height:56px;border-radius:50%;background:var(--color-border, #e5e7eb)}.doctor-grid__skeleton-badge{width:48px;height:18px;border-radius:4px;background:var(--color-border, #e5e7eb)}.doctor-grid__skeleton-name{width:80%;height:14px;border-radius:4px;background:var(--color-border, #e5e7eb)}.doctor-grid__skeleton-dept{width:60%;height:12px;border-radius:4px;background:var(--color-border, #e5e7eb)}.doctor-grid__skeleton-shift{width:70px;height:12px;border-radius:4px;background:var(--color-border, #e5e7eb)}.doctor-grid__skeleton-status{width:72px;height:20px;border-radius:10px;background:var(--color-border, #e5e7eb)}.doctor-grid__skeleton-pills{display:flex;gap:6px}.doctor-grid__skeleton-pill{width:36px;height:18px;border-radius:10px;background:var(--color-border, #e5e7eb)}@keyframes doctor-grid-shimmer{0%,to{opacity:1}50%{opacity:.4}}:root[data-theme=dark] .doctor-grid__skeleton{background:var(--color-surface, #1f2937);border-color:var(--color-border, #374151)}:root[data-theme=dark] .doctor-grid__skeleton-avatar,:root[data-theme=dark] .doctor-grid__skeleton-badge,:root[data-theme=dark] .doctor-grid__skeleton-name,:root[data-theme=dark] .doctor-grid__skeleton-dept,:root[data-theme=dark] .doctor-grid__skeleton-shift,:root[data-theme=dark] .doctor-grid__skeleton-status,:root[data-theme=dark] .doctor-grid__skeleton-pill{background:var(--color-border, #374151)}@media(prefers-reduced-motion:reduce){.doctor-grid__skeleton{animation:none}}@media(max-width:640px){.doctor-grid__cards{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.doctor-grid__empty{padding:32px 16px}}@media(max-width:400px){.doctor-grid__cards{grid-template-columns:1fr}}.doctor-grid__off-shift-toggle{margin-top:1.5rem;padding-top:1rem;border-top:1px dashed var(--color-border, #d1d5db);display:flex;flex-direction:column;gap:.4rem}.doctor-grid__off-shift-button{align-self:flex-start;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--color-warning-dark, #92400e);background:var(--color-warning-bg, #fef3c7);border:1px solid var(--color-warning-border, #fcd34d);border-radius:.375rem;cursor:pointer;transition:background .15s ease}.doctor-grid__off-shift-button:hover{background:#fde68a}.doctor-grid__off-shift-button:disabled{opacity:.6;cursor:not-allowed}.doctor-grid__off-shift-helper{margin:0;font-size:.75rem;color:var(--color-text-muted, #6b7280);font-style:italic}.doctor-grid__off-shift-section{margin-top:1.25rem;padding-top:1rem;border-top:1px dashed var(--color-warning-border, #fcd34d)}.doctor-grid__off-shift-heading{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:var(--color-warning-dark, #92400e)}.doctor-grid__off-shift-status{font-size:.875rem;color:var(--color-text-muted, #6b7280);margin:0}.doctor-grid__off-shift-count{margin:.5rem 0 0;font-size:.75rem;color:var(--color-warning-dark, #92400e);font-style:italic}.attribution-selector{display:flex;flex-direction:column;gap:.5rem}.attribution-selector__header{display:flex;align-items:baseline}.attribution-selector__label{font-size:.8125rem;font-weight:600;color:var(--color-text, #111827);line-height:1.4}.attribution-selector__required{color:var(--color-error, #dc2626);font-weight:700}.attribution-selector__group{display:flex;gap:.75rem}.attribution-selector__group--error{border-radius:12px;box-shadow:0 0 0 1px var(--color-error-light, #fca5a5)}.attribution-selector__error{margin:0;font-size:.75rem;font-weight:500;color:var(--color-error, #dc2626);line-height:1.4}.attribution-card{flex:1;display:flex;align-items:flex-start;gap:.625rem;padding:.75rem 1rem;border:2px solid var(--color-border, #e5e7eb);border-radius:10px;background:var(--color-surface, #ffffff);cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;-webkit-user-select:none;user-select:none;min-width:0}.attribution-card:hover{border-color:var(--color-primary-light, #93c5fd);box-shadow:0 1px 4px #2563eb14}.attribution-card:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.attribution-card--selected{border-color:var(--color-primary, #2563eb);background:var(--color-primary-bg, #eff6ff);box-shadow:0 0 0 1px var(--color-primary, #2563eb),0 1px 4px #2563eb1f}.attribution-selector__group--error .attribution-card{border-color:var(--color-error-light, #fca5a5)}.attribution-selector__group--error .attribution-card:hover{border-color:var(--color-error, #dc2626)}.attribution-card__icon{flex-shrink:0;font-size:1.25rem;line-height:1;margin-top:.125rem}.attribution-card__text{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.attribution-card__label{font-size:.8125rem;font-weight:600;color:var(--color-text, #111827);line-height:1.3}.attribution-card__description{font-size:.7rem;color:var(--color-text-secondary, #6b7280);line-height:1.4}.attribution-card__indicator{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:18px;height:18px;margin-top:.125rem;border:2px solid var(--color-border, #d1d5db);border-radius:50%;transition:border-color .15s ease}.attribution-card__indicator--checked{border-color:transparent}@media(max-width:480px){.attribution-selector__group{flex-direction:column}}:root[data-theme=dark] .attribution-selector__label{color:var(--color-text, #f3f4f6)}:root[data-theme=dark] .attribution-card{background:var(--color-surface, #1f2937);border-color:var(--color-border, #374151)}:root[data-theme=dark] .attribution-card:hover{border-color:var(--color-primary-light, #60a5fa);box-shadow:0 1px 4px #60a5fa1f}:root[data-theme=dark] .attribution-card--selected{background:#2563eb26;border-color:var(--color-primary, #3b82f6)}:root[data-theme=dark] .attribution-card__label{color:var(--color-text, #f3f4f6)}:root[data-theme=dark] .attribution-card__description{color:var(--color-text-secondary, #9ca3af)}:root[data-theme=dark] .attribution-card__indicator{border-color:var(--color-border, #4b5563)}:root[data-theme=dark] .attribution-selector__group--error .attribution-card{border-color:var(--color-error-light, #f87171)}@media(prefers-reduced-motion:reduce){.attribution-card,.attribution-card__indicator{transition:none}}.returning-patient-banner{display:flex;align-items:flex-start;gap:.625rem;padding:.625rem .875rem;border-radius:8px;font-size:.8125rem;line-height:1.5;border:1px solid transparent}.returning-patient-banner--info{background:var(--color-info-bg, #eff6ff);border-color:var(--color-info-border, #bfdbfe);color:var(--color-info-text, #1e40af)}.returning-patient-banner--warning{background:var(--color-warning-bg, #fef3c7);border-color:var(--color-warning-border, #fde68a);color:var(--color-warning-text, #92400e)}.returning-patient-banner__icon{flex-shrink:0;font-size:1rem;line-height:1.5}.returning-patient-banner__content{flex:1;min-width:0}.returning-patient-banner__message{margin:0}.returning-patient-banner__date{opacity:.8}.returning-patient-banner__count{opacity:.7;font-size:.75rem}.returning-patient-banner__hint{margin:.25rem 0 0;font-size:.75rem;opacity:.85}.returning-patient-banner__action{flex-shrink:0;align-self:center;padding:.25rem .75rem;border:1px solid var(--color-info-border, #93c5fd);border-radius:6px;background:transparent;color:var(--color-info-text, #1e40af);font-size:.75rem;font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.returning-patient-banner__action:hover{background:var(--color-info-hover, #dbeafe);border-color:var(--color-info-text, #1e40af)}.returning-patient-banner__action:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px}.returning-patient-banner__dismiss{flex-shrink:0;align-self:flex-start;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--color-warning-text, #92400e);font-size:1.125rem;line-height:1;cursor:pointer;opacity:.6;transition:opacity .15s ease,background-color .15s ease}.returning-patient-banner__dismiss:hover{opacity:1;background:#0000000f}.returning-patient-banner__dismiss:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:2px;opacity:1}:root[data-theme=dark] .returning-patient-banner--info{background:#2563eb1f;border-color:#60a5fa4d;color:var(--color-info-text-dark, #93c5fd)}:root[data-theme=dark] .returning-patient-banner--warning{background:#f59e0b1f;border-color:#fbbf244d;color:var(--color-warning-text-dark, #fcd34d)}:root[data-theme=dark] .returning-patient-banner__action{border-color:#60a5fa66;color:var(--color-info-text-dark, #93c5fd)}:root[data-theme=dark] .returning-patient-banner__action:hover{background:#60a5fa26;border-color:var(--color-info-text-dark, #93c5fd)}:root[data-theme=dark] .returning-patient-banner__dismiss{color:var(--color-warning-text-dark, #fcd34d)}:root[data-theme=dark] .returning-patient-banner__dismiss:hover{background:#ffffff14}@media(max-width:480px){.returning-patient-banner{flex-wrap:wrap}.returning-patient-banner__action{margin-left:auto}}@media(prefers-reduced-motion:reduce){.returning-patient-banner__action,.returning-patient-banner__dismiss{transition:none}}.pharmacy-channel-selector{flex:1;display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.pharmacy-channel-selector__header{text-align:center}.pharmacy-channel-selector__title{margin:0;font-size:1rem;font-weight:600;color:var(--color-text-primary, #111827)}.pharmacy-channel-selector__subtitle{margin:.25rem 0 0;font-size:.8125rem;color:var(--color-text-secondary, #6b7280);line-height:1.4}.pharmacy-channel-selector__cards{display:flex;flex-direction:column;gap:.75rem}.pharmacy-channel-card{position:relative;display:flex;align-items:flex-start;gap:1rem;padding:1rem 1.25rem;border:2px solid var(--color-border, #e5e7eb);border-radius:.75rem;background:var(--color-surface, #ffffff);cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;-webkit-user-select:none;user-select:none}.pharmacy-channel-card:hover{border-color:var(--color-primary-300, #93c5fd);background:var(--color-primary-50, #eff6ff)}.pharmacy-channel-card:focus-visible{outline:2px solid var(--color-focus-ring, #3b82f6);outline-offset:2px}.pharmacy-channel-card--selected{border-color:var(--color-primary-500, #3b82f6);background:var(--color-primary-50, #eff6ff);box-shadow:0 0 0 1px var(--color-primary-500, #3b82f6)}.pharmacy-channel-card--selected:hover{border-color:var(--color-primary-600, #2563eb)}.pharmacy-channel-card__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:.625rem;background:var(--color-primary-100, #dbeafe);color:var(--color-primary-600, #2563eb);transition:background-color .15s ease,color .15s ease}.pharmacy-channel-card--selected .pharmacy-channel-card__icon{background:var(--color-primary-500, #3b82f6);color:#fff}.pharmacy-channel-card__content{flex:1;min-width:0}.pharmacy-channel-card__title{margin:0;font-size:.875rem;font-weight:600;color:var(--color-text-primary, #111827);line-height:1.4}.pharmacy-channel-card__desc{margin:.25rem 0 0;font-size:.75rem;color:var(--color-text-secondary, #6b7280);line-height:1.5}.pharmacy-channel-card__check{position:absolute;top:.5rem;right:.75rem;display:flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:50%;background:var(--color-primary-500, #3b82f6);color:#fff;font-size:.6875rem;font-weight:700}.pharmacy-channel-selector__note{margin:0;padding:.75rem 1rem;font-size:.75rem;color:var(--color-text-tertiary, #9ca3af);text-align:center;background:var(--color-surface-muted, #f9fafb);border-radius:.5rem;line-height:1.5}:root[data-theme=dark] .pharmacy-channel-selector__title{color:var(--color-text-primary-dark, #f3f4f6)}:root[data-theme=dark] .pharmacy-channel-selector__subtitle,:root[data-theme=dark] .pharmacy-channel-card__desc{color:var(--color-text-secondary-dark, #9ca3af)}:root[data-theme=dark] .pharmacy-channel-card{border-color:var(--color-border-dark, #374151);background:var(--color-surface-dark, #1f2937)}:root[data-theme=dark] .pharmacy-channel-card:hover{border-color:var(--color-primary-400, #60a5fa);background:var(--color-primary-900, #1e3a5f)}:root[data-theme=dark] .pharmacy-channel-card--selected{border-color:var(--color-primary-400, #60a5fa);background:var(--color-primary-900, #1e3a5f);box-shadow:0 0 0 1px var(--color-primary-400, #60a5fa)}:root[data-theme=dark] .pharmacy-channel-card__icon{background:var(--color-primary-800, #1e40af);color:var(--color-primary-200, #bfdbfe)}:root[data-theme=dark] .pharmacy-channel-card--selected .pharmacy-channel-card__icon{background:var(--color-primary-500, #3b82f6);color:#fff}:root[data-theme=dark] .pharmacy-channel-card__title{color:var(--color-text-primary-dark, #f3f4f6)}:root[data-theme=dark] .pharmacy-channel-selector__note{color:var(--color-text-tertiary-dark, #6b7280);background:var(--color-surface-muted-dark, #111827)}.doctor-selection-panel{display:flex;flex-direction:column;gap:.75rem;width:100%;position:relative}.doctor-selection-panel__connection-warning{position:fixed;top:0;left:50%;transform:translate(-50%);z-index:1000;display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:0 0 8px 8px;background:var(--color-warning-bg, #fef3c7);color:var(--color-warning-text, #92400e);font-size:.8125rem;line-height:1.4;box-shadow:0 2px 8px #00000026;opacity:1;transition:opacity .3s ease,transform .3s ease}.doctor-selection-panel__connection-warning--hidden{opacity:0;transform:translate(-50%) translateY(-100%);pointer-events:none}.doctor-selection-panel__connection-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--color-warning, #f59e0b);animation:doctor-selection-panel-pulse 1.5s ease-in-out infinite}@keyframes doctor-selection-panel-pulse{0%,to{opacity:1}50%{opacity:.4}}.doctor-selection-panel__banner{margin-bottom:.25rem}.doctor-selection-panel__layout{display:flex;gap:1rem;min-height:0}.doctor-selection-panel__sidebar{flex-shrink:0;width:240px}.doctor-selection-panel__grid{flex:1;min-width:0}@media(max-width:1023px){.doctor-selection-panel__layout{flex-direction:column}.doctor-selection-panel__sidebar{width:100%}}.doctor-selection-panel__attribution{padding-top:.25rem}.doctor-selection-panel__dispensary-placeholder{flex:1;display:flex;align-items:center;justify-content:center;min-height:200px}.doctor-selection-panel__dispensary-note{display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center;padding:2rem;color:var(--color-text-secondary, #6b7280);font-size:.875rem;line-height:1.5}.doctor-selection-panel__dispensary-note span{font-size:2rem}:root[data-theme=dark] .doctor-selection-panel__connection-warning{background:var(--color-warning-bg-dark, #78350f);color:var(--color-warning-text-dark, #fef3c7)}@media(prefers-reduced-motion:reduce){.doctor-selection-panel__connection-dot{animation:none}}.doctor-selection-panel__empty{display:flex;align-items:center;justify-content:center;flex:1;min-height:12rem;padding:2rem;font-size:.875rem;color:var(--color-text-secondary, #6b7280);background:var(--color-surface-muted, #f9fafb);border:1px dashed var(--color-border-strong, #d1d5db);border-radius:.5rem;text-align:center}:root[data-theme=dark] .doctor-selection-panel__empty{color:var(--color-text-secondary-dark, #9ca3af);background:var(--color-surface-muted-dark, #111827);border-color:var(--color-border-dark, #374151)}.patient-reg-page{max-width:900px;margin:0 auto;padding:24px}.page-header{margin-bottom:32px;text-align:center}.page-header h1{font-size:28px;font-weight:600;color:var(--text-primary, #1a202c);margin:0 0 8px}.page-header p{font-size:14px;color:var(--text-muted, #718096);margin:0}.search-section{max-width:600px;margin:0 auto}.search-hint{margin-top:16px;text-align:center}.search-hint p{font-size:13px;color:var(--text-muted, #a0aec0)}.register-section{animation:fadeIn .3s ease}.success-section{display:flex;justify-content:center;padding:40px 0;animation:fadeIn .3s ease}.success-card{background:var(--bg-card, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:12px;padding:40px;text-align:center;max-width:450px;width:100%;box-shadow:0 4px 20px #00000014}.success-icon{font-size:64px;margin-bottom:16px}.success-card h2{font-size:24px;font-weight:600;color:var(--text-primary, #1a202c);margin:0 0 24px}.success-details{background:var(--bg-details, #f7fafc);border-radius:8px;padding:20px;margin-bottom:24px}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.detail-row:not(:last-child){border-bottom:1px solid var(--border-color, #e2e8f0)}.detail-row .label{font-size:14px;color:var(--text-secondary, #4a5568)}.detail-row .value{font-weight:500;color:var(--text-primary, #1a202c)}.detail-row .value.hn{font-size:20px;font-weight:700;color:var(--primary-color, #3b82f6);font-family:monospace}.detail-row .value.patient-name{font-size:18px;font-weight:600;color:var(--text-primary, #1a202c)}.success-actions{display:flex;flex-direction:column;gap:12px}.btn-secondary,.btn-primary{padding:14px 24px;font-size:14px;font-weight:500;border-radius:8px;cursor:pointer;transition:all .15s}.btn-secondary{background:var(--bg-button, #fff);border:1px solid var(--border-color, #e2e8f0);color:var(--text-primary, #1a202c)}.btn-secondary:hover{background:var(--bg-hover, #f7fafc)}.btn-primary{background:var(--primary-color, #3b82f6);border:1px solid var(--primary-color, #3b82f6);color:#fff}.btn-primary:hover{background:var(--primary-hover, #2563eb)}.btn-outline{padding:14px 24px;font-size:14px;font-weight:500;border-radius:8px;cursor:pointer;transition:all .15s;background:transparent;border:1px solid var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}.btn-outline:hover{background:var(--primary-color, #3b82f6);color:#fff}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}[data-theme=dark] .page-header h1{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .success-card{background:var(--bg-card-dark, #2d3748);border-color:var(--border-color-dark, #4a5568)}[data-theme=dark] .success-card h2{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .success-details{background:var(--bg-details-dark, #4a5568)}[data-theme=dark] .detail-row .value{color:var(--text-primary-dark, #f7fafc)}[data-theme=dark] .btn-secondary{background:var(--bg-button-dark, #4a5568);border-color:var(--border-color-dark, #718096);color:var(--text-primary-dark, #f7fafc)}.cs-pending-registration{margin-top:1rem;padding:1rem 1.25rem;border:1px solid var(--color-primary, #2563eb);border-radius:.5rem;background-color:var(--color-primary-soft, #eff6ff)}.cs-pending-registration h3{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:var(--color-primary-text, #1e3a8a)}.cs-pending-registration p{margin:0 0 .75rem;font-size:.875rem;color:var(--color-text-secondary, #4b5563)}.cs-pending-registration__actions{display:flex;gap:.5rem;justify-content:flex-end}.cs-dashboard{max-width:1400px;margin:0 auto}.cs-dashboard__section-title{font-size:1.125rem;font-weight:600;color:var(--color-text, #111827);margin:0 0 16px}.cs-dashboard__stats{margin-bottom:32px}.cs-dashboard__stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.cs-dashboard__stat-card{background:var(--color-surface, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:12px;padding:20px;text-align:center}.cs-dashboard__stat-value{display:block;font-size:2rem;font-weight:700;color:var(--color-primary, #2563eb);margin-bottom:4px}.cs-dashboard__stat-label{display:block;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.cs-dashboard__stat-card.skeleton{animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-value{width:40%;height:2rem;margin:0 auto 8px;border-radius:4px;background:var(--color-border, #e5e7eb)}.skeleton-label{width:60%;height:.875rem;margin:0 auto;border-radius:4px;background:var(--color-border, #e5e7eb)}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:768px){.cs-dashboard__stats-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.cs-dashboard__stats-grid{grid-template-columns:1fr}}.cs-dashboard__main-panels{display:grid;grid-template-columns:1fr;gap:24px;margin-bottom:32px}.cs-dashboard__toolbar{display:flex;justify-content:flex-end;gap:.5rem;padding:.5rem 0 .75rem}.cs-dashboard__book-btn{appearance:none;border:1px solid var(--color-primary, #2563eb);background:var(--color-primary, #2563eb);color:#fff;border-radius:.375rem;padding:.5rem 1rem;font-size:.95rem;font-weight:600;cursor:pointer}.cs-dashboard__book-btn:hover{filter:brightness(1.05)}.cs-dashboard__book-btn:focus-visible{outline:2px solid var(--color-primary-strong, #1d4ed8);outline-offset:2px}@media(min-width:1280px){.cs-dashboard__main-panels{grid-template-columns:480px 1fr}}.cs-dashboard__roster-panel,.cs-dashboard__patient-panel{min-width:0}.cs-patient-type{border:1px solid var(--border-color, #e2e8f0);border-radius:8px;padding:16px;background:var(--surface-color, #fff)}.cs-patient-type__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.cs-patient-type__title{margin:0;font-size:1rem;font-weight:600}.cs-patient-type__muted{color:var(--text-muted, #64748b);margin:8px 0 0}.cs-patient-type__body{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:12px}.cs-patient-type__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-weight:700;font-size:.8rem;letter-spacing:.02em;background:var(--accent-soft, #eef2ff);color:var(--accent-strong, #3730a3)}.cs-patient-type__name{font-weight:600}.cs-patient-type__source{color:var(--text-muted, #64748b);font-size:.85rem}.cs-patient-type__reason{flex-basis:100%;margin:4px 0 0;color:var(--text-muted, #64748b);font-size:.85rem}.cs-patient-type__form{display:flex;flex-direction:column;gap:10px;margin-top:12px}.cs-patient-type__field{display:flex;flex-direction:column;gap:4px;font-size:.85rem}.cs-patient-type__field select,.cs-patient-type__field input{padding:6px 8px;border:1px solid var(--border-color, #cbd5e1);border-radius:6px}.cs-patient-type__hint{margin:0;color:var(--danger-color, #b91c1c);font-size:.8rem}.cs-patient-type__actions{display:flex;justify-content:flex-end;gap:8px}.cs-patient-type__btn{padding:6px 14px;border:1px solid var(--border-color, #cbd5e1);border-radius:6px;background:var(--surface-color, #fff);cursor:pointer;font-size:.85rem}.cs-patient-type__btn--primary{background:var(--accent-strong, #4f46e5);border-color:var(--accent-strong, #4f46e5);color:#fff}.cs-patient-type__btn:disabled{opacity:.6;cursor:not-allowed}.branch-hn-badges{display:inline-flex;flex-wrap:wrap;gap:.375rem;list-style:none;margin:0;padding:0}.branch-hn-badges--loading{min-height:2rem}.branch-hn-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.125rem .5rem;border-radius:999px;background-color:var(--color-surface-elevated, #f3f4f6);border:1px solid var(--color-border-subtle, #e5e7eb);font-size:.8125rem;line-height:1.25rem;color:var(--color-text-primary, #111827);white-space:nowrap}.branch-hn-badge__code{font-weight:600;font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary, #4b5563)}.branch-hn-badge__hn{font-variant-numeric:tabular-nums;font-weight:500}.branch-hn-badge__active-marker{color:var(--color-success, #10b981);font-size:.5rem;margin-left:.125rem}.branch-hn-badge--active{background-color:var(--color-primary-soft, #dbeafe);border-color:var(--color-primary, #2563eb);color:var(--color-primary-text, #1e3a8a)}.branch-hn-badge--missing{background-color:var(--color-surface-muted, #f9fafb);color:var(--color-text-tertiary, #9ca3af);border-style:dashed}.branch-hn-badge__placeholder-label{font-size:.6875rem;font-style:italic}.branch-hn-badge--actionable{padding:0;background:none;border:none}.branch-hn-badge__add-btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:.375rem;padding:.125rem .5rem;border-radius:999px;background-color:var(--color-surface-muted, #f9fafb);border:1px dashed var(--color-border, #d1d5db);color:var(--color-text-tertiary, #6b7280);font-size:.8125rem;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.branch-hn-badge__add-btn:hover:not(:disabled),.branch-hn-badge__add-btn:focus-visible{background-color:var(--color-primary-soft, #dbeafe);border-color:var(--color-primary, #2563eb);border-style:solid;color:var(--color-primary-text, #1e3a8a);outline:none}.branch-hn-badge__add-btn:disabled{cursor:not-allowed;opacity:.6}.branch-hn-badges__empty,.branch-hn-badges__legacy-hn{font-variant-numeric:tabular-nums;color:var(--color-text-tertiary, #6b7280)}.search-results{margin-top:16px}.search-results__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.search-results__count{font-size:.875rem;color:var(--color-text-secondary, #6b7280);margin:0}.search-results__loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;color:var(--color-text-secondary, #6b7280)}.search-results__spinner{width:32px;height:32px;border:3px solid var(--color-border, #e5e7eb);border-top-color:var(--color-primary, #2563eb);border-radius:50%;animation:search-spin .8s linear infinite}@keyframes search-spin{to{transform:rotate(360deg)}}.search-results__empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 16px;text-align:center}.search-results__empty-icon{font-size:2.5rem;opacity:.5}.search-results__empty h3{margin:0;font-size:1.125rem;color:var(--color-text, #111827)}.search-results__empty p{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280);max-width:400px}.search-results__table-wrapper{overflow-x:auto;border:1px solid var(--color-border, #e5e7eb);border-radius:8px;background:var(--color-surface, #ffffff)}.search-results__table{width:100%;border-collapse:collapse;font-size:.875rem}.search-results__table thead{background:var(--color-background-alt, #f9fafb);position:sticky;top:0;z-index:1}.search-results__table th{padding:10px 12px;text-align:left;font-weight:600;color:var(--color-text-secondary, #6b7280);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border, #e5e7eb);white-space:nowrap}.search-results__table td{padding:10px 12px;color:var(--color-text, #111827);border-bottom:1px solid var(--color-border-light, #f3f4f6);white-space:nowrap}.search-results__row{cursor:pointer;transition:background .15s ease}.search-results__row:hover{background:var(--color-hover, #f3f4f6)}.search-results__row:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:-2px}.search-results__hn{font-family:Fira Code,Consolas,monospace;font-weight:600;color:var(--color-primary, #2563eb)}.search-results__actions{display:flex;gap:6px;white-space:nowrap}.btn-sm{padding:4px 10px;font-size:.75rem;font-weight:500;border-radius:6px;border:1px solid transparent;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.btn-sm.btn-outline{background:transparent;border-color:var(--color-border, #e5e7eb);color:var(--color-text-secondary, #6b7280)}.btn-sm.btn-outline:hover{background:var(--color-hover, #f3f4f6);color:var(--color-text, #111827)}.btn-sm.btn-primary{background:var(--color-primary, #2563eb);color:#fff}.btn-sm.btn-primary:hover{background:var(--color-primary-dark, #1d4ed8)}.btn-sm.btn-secondary{background:var(--color-secondary, #7c3aed);color:#fff}.btn-sm.btn-secondary:hover{background:var(--color-secondary-dark, #6d28d9)}.cs-patient-search__error{margin-top:12px;padding:12px 16px;background:var(--color-error-light, #fef2f2);border:1px solid var(--color-error, #ef4444);border-radius:8px;color:var(--color-error, #dc2626);font-size:.875rem}.cs-patient-search__error p{margin:0}@media(max-width:768px){.search-results__table th:nth-child(3),.search-results__table td:nth-child(3){display:none}.search-results__table th:nth-child(5),.search-results__table td:nth-child(5){display:none}.search-results__table th:nth-child(6),.search-results__table td:nth-child(6){display:none}}[data-theme=dark] .search-results__table-wrapper{background:var(--color-surface-dark, #1f2937);border-color:var(--color-border-dark, #374151)}[data-theme=dark] .search-results__table thead{background:var(--color-background-dark, #111827)}[data-theme=dark] .search-results__table th{color:var(--color-text-muted-dark, #9ca3af);border-bottom-color:var(--color-border-dark, #374151)}[data-theme=dark] .search-results__table td{color:var(--color-text-dark, #f9fafb);border-bottom-color:var(--color-border-dark, #374151)}[data-theme=dark] .search-results__row:hover{background:var(--color-hover-dark, #374151)}[data-theme=dark] .search-results__empty h3{color:var(--color-text-dark, #f9fafb)}[data-theme=dark] .cs-patient-search__error{background:#ef44441a;border-color:#b91c1c;color:#fca5a5}.documents-page{padding:1.5rem;max-width:1200px;margin:0 auto}.documents-page__header{margin-bottom:2rem}.documents-page__header h1{font-size:1.75rem;font-weight:700;color:var(--color-text-primary, #1a1a2e);margin:0 0 .25rem}.documents-page__header p{color:var(--color-text-secondary, #666);margin:0;font-size:.95rem}.documents-page__search{margin-bottom:2rem}.documents-page__blank-forms{margin-bottom:2rem;padding:1.25rem;background:var(--color-surface-secondary, #f8fafc);border:1px solid var(--color-border, #e2e8f0);border-radius:10px}.documents-page__blank-forms h2{font-size:1.1rem;font-weight:600;margin:0 0 .25rem;color:var(--color-text-primary, #1a1a2e)}.documents-page__blank-forms-hint{font-size:.85rem;color:var(--color-text-secondary, #666);margin:0 0 1rem}.documents-page__blank-forms-grid{display:flex;flex-wrap:wrap;gap:.75rem}.blank-form-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.25rem;border:1px solid var(--color-border, #e2e8f0);border-radius:8px;background:var(--color-surface, #fff);font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .15s,border-color .15s,box-shadow .15s;color:var(--color-text-primary, #1a1a2e)}.blank-form-chip:hover:not(:disabled){background:var(--color-primary-light, #dbeafe);border-color:var(--color-primary, #2563eb);box-shadow:0 2px 8px #2563eb1a}.blank-form-chip:disabled{opacity:.6;cursor:not-allowed}.documents-page__search h2{font-size:1.1rem;font-weight:600;margin:0 0 .75rem;color:var(--color-text-primary, #1a1a2e)}.documents-page__selected-patient{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;margin-top:.75rem;background:var(--color-surface-success, #f0fdf4);border:1px solid var(--color-border-success, #bbf7d0);border-radius:8px}.selected-patient__info{display:flex;align-items:center;gap:1rem}.selected-patient__name{font-weight:600;color:var(--color-text-primary, #1a1a2e)}.selected-patient__hn{font-family:JetBrains Mono,Fira Code,monospace;font-size:.85rem;color:var(--color-text-secondary, #666);background:var(--color-surface-secondary, #f1f5f9);padding:.15rem .5rem;border-radius:4px}.selected-patient__clear{background:none;border:none;cursor:pointer;font-size:1.1rem;color:var(--color-text-secondary, #999);padding:.25rem;border-radius:4px;line-height:1;transition:color .15s}.selected-patient__clear:hover{color:var(--color-text-danger, #dc2626)}.documents-page__actions{margin-bottom:2rem}.documents-page__actions h2{font-size:1.1rem;font-weight:600;margin:0 0 1rem;color:var(--color-text-primary, #1a1a2e)}.documents-page__loading{text-align:center;padding:2rem;color:var(--color-text-secondary, #666)}.documents-page__action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.document-card{display:flex;flex-direction:column;padding:1.25rem;border:1px solid var(--color-border, #e2e8f0);border-radius:10px;background:var(--color-surface, #fff);transition:box-shadow .2s,border-color .2s}.document-card:hover{box-shadow:0 4px 12px #00000014;border-color:var(--color-primary-light, #93c5fd)}.document-card__icon{font-size:2rem;margin-bottom:.75rem}.document-card__content{flex:1;margin-bottom:1rem}.document-card__content h3{font-size:1rem;font-weight:600;margin:0 0 .35rem;color:var(--color-text-primary, #1a1a2e)}.document-card__content p{font-size:.85rem;color:var(--color-text-secondary, #666);margin:0;line-height:1.4}.document-card__action{width:100%;padding:.6rem 1rem;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .15s,opacity .15s}.document-card__action.btn-primary{background:var(--color-primary, #2563eb);color:#fff}.document-card__action.btn-primary:hover:not(:disabled){background:var(--color-primary-dark, #1d4ed8)}.document-card__action.btn-secondary{background:var(--color-surface-secondary, #f1f5f9);color:var(--color-text-secondary, #64748b)}.document-card__action.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover, #e2e8f0)}.document-card__action:disabled{opacity:.5;cursor:not-allowed}.documents-page__visits{margin-bottom:2rem}.documents-page__visits h2{font-size:1.1rem;font-weight:600;margin:0 0 .5rem;color:var(--color-text-primary, #1a1a2e)}.documents-page__visits-hint{font-size:.85rem;color:var(--color-text-secondary, #666);margin:0 0 1rem}.visit-list__loading,.visit-list__empty{text-align:center;padding:1.5rem;color:var(--color-text-secondary, #888)}.visit-list__table{width:100%;border-collapse:collapse;font-size:.875rem}.visit-list__table th{text-align:left;padding:.6rem .75rem;font-weight:600;color:var(--color-text-secondary, #64748b);border-bottom:2px solid var(--color-border, #e2e8f0);white-space:nowrap}.visit-list__table td{padding:.6rem .75rem;border-bottom:1px solid var(--color-border-light, #f1f5f9);color:var(--color-text-primary, #1a1a2e)}.visit-list__table tbody tr:hover{background:var(--color-surface-hover, #f8fafc)}.visit-list__actions{display:flex;gap:.35rem}.visit-list__actions .btn-sm{padding:.25rem .5rem;border:none;border-radius:4px;cursor:pointer;font-size:.8rem;transition:opacity .15s}.visit-list__actions .btn-sm:hover{opacity:.85}.visit-list__actions .btn-sm.btn-primary{background:var(--color-primary, #2563eb);color:#fff}.visit-list__actions .btn-sm.btn-secondary{background:var(--color-surface-secondary, #e2e8f0);color:var(--color-text-primary, #334155)}.visit-status{display:inline-block;padding:.15rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500;text-transform:capitalize}.visit-status--completed{background:#dcfce7;color:#166534}.visit-status--in-progress,.visit-status--active{background:#dbeafe;color:#1e40af}.visit-status--cancelled{background:#fef2f2;color:#991b1b}.visit-status--unknown{background:#f1f5f9;color:#64748b}.documents-page__templates{margin-bottom:2rem}.documents-page__templates h2{font-size:1.1rem;font-weight:600;margin:0 0 .75rem;color:var(--color-text-primary, #1a1a2e)}.documents-page__template-list{display:flex;flex-wrap:wrap;gap:.5rem}.template-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:6px;background:var(--color-surface, #fff);font-size:.85rem}.template-item__name{font-weight:500;color:var(--color-text-primary, #1a1a2e)}.template-item__desc{color:var(--color-text-secondary, #64748b);font-size:.8rem}.template-item__badge{display:inline-block;padding:.1rem .4rem;border-radius:4px;background:var(--color-primary-light, #dbeafe);color:var(--color-primary, #2563eb);font-size:.7rem;font-weight:600;text-transform:uppercase}.documents-page__empty{text-align:center;padding:4rem 2rem;color:var(--color-text-secondary, #888)}.documents-page__empty-icon{font-size:3rem;display:block;margin-bottom:1rem}.documents-page__empty p{font-size:1rem;margin:0}@media(max-width:768px){.documents-page{padding:1rem}.documents-page__action-grid{grid-template-columns:1fr}.documents-page__selected-patient{flex-direction:column;gap:.5rem;align-items:flex-start}.selected-patient__clear{align-self:flex-end}.visit-list__table{font-size:.8rem}.visit-list__table th,.visit-list__table td{padding:.4rem .5rem}}.visit-list__vn{font-family:JetBrains Mono,Fira Code,monospace;font-size:.8rem;font-weight:500;color:var(--color-primary, #2563eb)}.visit-list__pcn{font-family:JetBrains Mono,Fira Code,monospace;font-size:.8rem;color:var(--color-text-secondary, #64748b)}.apt-status-badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;font-weight:600;white-space:nowrap;line-height:1}.apt-status-badge--sm{padding:.125rem .5rem;font-size:.7rem}.apt-status-badge--md{padding:.25rem .625rem;font-size:.75rem}.apt-status-badge__icon{font-size:.75em}.apt-status-badge__label{text-transform:capitalize}.apt-status-badge{color:var(--badge-color, inherit);background-color:var(--badge-bg, transparent)}.apt-source-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .5rem;border-radius:.25rem;font-size:.75rem;font-weight:500;background-color:var(--color-bg-subtle, #f1f5f9);color:var(--color-text-secondary, #475569)}.apt-source-badge__icon{font-size:.8em}.apt-card{background:var(--color-bg-card, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;padding:.75rem 1rem;transition:box-shadow .15s ease,border-color .15s ease}.apt-card--clickable{cursor:pointer}.apt-card--clickable:hover,.apt-card--clickable:focus-visible{border-color:var(--color-primary, #2563eb);box-shadow:0 1px 4px #2563eb1f}.apt-card--compact .apt-card__body{gap:.25rem}.apt-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.apt-card__uid{font-size:.75rem;font-family:var(--font-mono, monospace);color:var(--color-text-muted, #94a3b8)}.apt-card__body{display:flex;flex-direction:column;gap:.375rem}.apt-card__patient{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.apt-card__patient-name{font-weight:600;font-size:.875rem;color:var(--color-text-primary, #1e293b)}.apt-card__patient-hn{font-size:.75rem;color:var(--color-text-muted, #94a3b8);font-family:var(--font-mono, monospace)}.apt-card__schedule{display:flex;gap:1rem;font-size:.8rem;color:var(--color-text-secondary, #475569)}.apt-card__doctor{display:flex;align-items:center;gap:.375rem;font-size:.8rem;color:var(--color-text-secondary, #475569)}.apt-card__doctor-code{font-size:.7rem;color:var(--color-text-muted, #94a3b8)}.apt-card__meta{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-text-muted, #94a3b8)}.apt-card__reason{font-size:.75rem;color:var(--color-text-secondary, #475569);font-style:italic}.apt-card__alert{font-size:.75rem;padding:.25rem .5rem;border-radius:.25rem;margin-top:.25rem}.apt-card__alert--doctor-change{background-color:#fef3c7;color:#92400e}.apt-filters{margin-bottom:1rem}.apt-filters__row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.apt-filters__search{flex:1;min-width:200px}.apt-filters__search-input{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.875rem;background:var(--color-bg-input, #fff);color:var(--color-text-primary, #1e293b);transition:border-color .15s ease}.apt-filters__search-input:focus{outline:none;border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb26}.apt-filters__select{padding:.5rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.875rem;background:var(--color-bg-input, #fff);color:var(--color-text-primary, #1e293b);cursor:pointer;min-width:140px}.apt-filters__select:focus{outline:none;border-color:var(--color-primary, #2563eb)}.apt-filters__date-range{display:flex;align-items:center;gap:.375rem}.apt-filters__date-input{padding:.5rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.8rem;background:var(--color-bg-input, #fff);color:var(--color-text-primary, #1e293b)}.apt-filters__date-input:focus{outline:none;border-color:var(--color-primary, #2563eb)}.apt-filters__date-separator{color:var(--color-text-muted, #94a3b8)}.apt-filters__reset-btn{padding:.5rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.8rem;background:transparent;color:var(--color-primary, #2563eb);cursor:pointer;white-space:nowrap;transition:background-color .15s ease}.apt-filters__reset-btn:hover{background-color:var(--color-bg-subtle, #f1f5f9)}@media(max-width:768px){.apt-filters__row{flex-direction:column;align-items:stretch}.apt-filters__search{min-width:auto}.apt-filters__date-range{flex-direction:column;align-items:stretch}.apt-filters__date-separator{display:none}}.apt-timeline{padding:.5rem 0}.apt-timeline--empty{color:var(--color-text-muted, #94a3b8);font-size:.875rem;font-style:italic}.apt-timeline__title{font-size:.875rem;font-weight:600;margin-bottom:.75rem;color:var(--color-text-primary, #1e293b)}.apt-timeline__list{list-style:none;margin:0;padding:0;position:relative}.apt-timeline__list:before{content:"";position:absolute;left:6px;top:12px;bottom:12px;width:2px;background:var(--color-border, #e2e8f0)}.apt-timeline__item{display:flex;gap:.75rem;padding-bottom:1rem;position:relative}.apt-timeline__item:last-child{padding-bottom:0}.apt-timeline__marker{flex-shrink:0;width:14px;height:14px;border-radius:50%;background:var(--color-primary, #2563eb);border:2px solid var(--color-bg-card, #fff);margin-top:2px;z-index:1}.apt-timeline__content{flex:1;min-width:0}.apt-timeline__status-row{display:flex;align-items:center;gap:.375rem;flex-wrap:wrap}.apt-timeline__arrow{color:var(--color-text-muted, #94a3b8);font-size:.8rem}.apt-timeline__meta{display:flex;gap:.5rem;margin-top:.25rem;font-size:.75rem;color:var(--color-text-muted, #94a3b8)}.apt-timeline__user{font-weight:500;color:var(--color-text-secondary, #475569)}.apt-timeline__reason{margin:.25rem 0 0;font-size:.75rem;color:var(--color-text-secondary, #475569);font-style:italic}.apt-detail-panel{display:flex;flex-direction:column;gap:1rem;padding:1rem}.apt-detail-panel__header{display:flex;flex-direction:column;gap:.5rem}.apt-detail-panel__title-row{display:flex;align-items:center;justify-content:space-between}.apt-detail-panel__uid{font-size:1rem;font-weight:700;font-family:var(--font-mono, monospace);color:var(--color-text-primary, #1e293b);margin:0}.apt-detail-panel__section{padding:.75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;background:var(--color-bg-card, #fff)}.apt-detail-panel__section--warning{border-color:#fbbf24;background:#fffbeb}.apt-detail-panel__section--alert{border-color:#f59e0b;background:#fef3c7}.apt-detail-panel__section-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted, #94a3b8);margin:0 0 .5rem}.apt-detail-panel__field{display:flex;justify-content:space-between;align-items:baseline;padding:.25rem 0;gap:.5rem}.apt-detail-panel__label{font-size:.8rem;color:var(--color-text-muted, #94a3b8);flex-shrink:0}.apt-detail-panel__value{font-size:.8rem;color:var(--color-text-primary, #1e293b);text-align:right;word-break:break-word}.apt-detail-panel__value--mono{font-family:var(--font-mono, monospace)}.apt-detail-panel__actions{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.5rem;border-top:1px solid var(--color-border, #e2e8f0)}.apt-detail-panel__action-btn{padding:.375rem .75rem;border:1px solid transparent;border-radius:.375rem;font-size:.8rem;font-weight:500;cursor:pointer;transition:background-color .15s ease,opacity .15s ease;white-space:nowrap}.apt-detail-panel__action-btn:hover{opacity:.85}.apt-detail-panel__action-btn--primary{background:var(--color-primary, #2563eb);color:#fff}.apt-detail-panel__action-btn--success{background:#16a34a;color:#fff}.apt-detail-panel__action-btn--warning{background:#d97706;color:#fff}.apt-detail-panel__action-btn--danger{background:#dc2626;color:#fff}.apt-skeleton{display:flex;flex-direction:column;gap:.75rem}.apt-skeleton__card{background:var(--color-bg-card, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;padding:.75rem 1rem}.apt-skeleton__header{display:flex;justify-content:space-between;margin-bottom:.5rem}.apt-skeleton__body{display:flex;flex-direction:column;gap:.375rem}.apt-skeleton__shimmer{border-radius:.25rem;background:linear-gradient(90deg,var(--color-bg-subtle, #f1f5f9) 0%,var(--color-border, #e2e8f0) 50%,var(--color-bg-subtle, #f1f5f9) 100%);background-size:200% 100%;animation:apt-shimmer 1.5s infinite ease-in-out}.apt-skeleton__uid{width:80px;height:14px}.apt-skeleton__badge{width:70px;height:20px;border-radius:9999px}.apt-skeleton__name{width:60%;height:16px}.apt-skeleton__line-short{width:40%;height:12px}.apt-skeleton__line-med{width:50%;height:12px}@keyframes apt-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.apt-confirm-badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;font-weight:600;white-space:nowrap;line-height:1}.apt-confirm-badge--sm{padding:.125rem .5rem;font-size:.7rem}.apt-confirm-badge--md{padding:.25rem .625rem;font-size:.75rem}.apt-confirm-badge__icon{font-size:.85em}.apt-confirm-badge__label{text-transform:none}.apt-confirm-badge{color:var(--badge-color, inherit);background-color:var(--badge-bg, transparent)}.apt-doctor-banner{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem .75rem;border-radius:.375rem;font-size:.8rem;line-height:1.4}.apt-doctor-banner--off{background-color:#ede9fe;border:1px solid #c4b5fd;color:#5b21b6}.apt-doctor-banner--shift{background-color:#fef3c7;border:1px solid #fbbf24;color:#92400e}.apt-doctor-banner__icon{flex-shrink:0;font-size:1rem;line-height:1}.apt-doctor-banner__content{display:flex;flex-direction:column;gap:.125rem}.apt-doctor-banner__title{font-weight:700}.apt-doctor-banner__detail{font-weight:400}.apt-doctor-banner__response{font-style:italic;opacity:.85}.apt-view-filters{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.apt-view-filters__date-row{display:flex;align-items:center;gap:.5rem}.apt-view-filters__nav-btn{padding:.375rem .625rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;background:var(--color-bg-card, #fff);color:var(--color-text-primary, #1e293b);cursor:pointer;font-size:.875rem;font-weight:600;transition:background-color .15s ease}.apt-view-filters__nav-btn:hover{background-color:var(--color-bg-subtle, #f1f5f9)}.apt-view-filters__date-input{padding:.375rem .5rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.875rem;color:var(--color-text-primary, #1e293b);background:var(--color-bg-card, #fff)}.apt-view-filters__today-btn{padding:.375rem .75rem;border:1px solid var(--color-primary, #2563eb);border-radius:.375rem;background:transparent;color:var(--color-primary, #2563eb);cursor:pointer;font-size:.8rem;font-weight:600;transition:background-color .15s ease,color .15s ease}.apt-view-filters__today-btn:hover{background-color:var(--color-primary, #2563eb);color:#fff}.apt-view-filters__filter-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.apt-view-filters__search{flex:1;min-width:180px}.apt-view-filters__search-input{width:100%;padding:.375rem .625rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.8rem;color:var(--color-text-primary, #1e293b);background:var(--color-bg-card, #fff)}.apt-view-filters__search-input::placeholder{color:var(--color-text-muted, #94a3b8)}.apt-view-filters__select{padding:.375rem .625rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.8rem;color:var(--color-text-primary, #1e293b);background:var(--color-bg-card, #fff);cursor:pointer}.apt-view-filters__reset-btn{padding:.375rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;background:transparent;color:var(--color-text-secondary, #475569);cursor:pointer;font-size:.8rem;transition:background-color .15s ease}.apt-view-filters__reset-btn:hover{background-color:var(--color-bg-subtle, #f1f5f9)}@media(max-width:768px){.apt-view-filters__filter-row{flex-direction:column;align-items:stretch}.apt-view-filters__search{min-width:100%}}.apt-view-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin-bottom:1rem}.apt-view-summary__card{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.75rem .5rem;background:var(--color-bg-card, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;text-align:center;transition:border-color .15s ease}.apt-view-summary__card--highlighted{border-color:#f97316;background-color:#fff7ed}.apt-view-summary__card--total{border-top:3px solid #6366f1}.apt-view-summary__card--confirmed{border-top:3px solid #16a34a}.apt-view-summary__card--pending{border-top:3px solid #2563eb}.apt-view-summary__card--call-required{border-top:3px solid #f97316}.apt-view-summary__card--no-email{border-top:3px solid #dc2626}.apt-view-summary__card--doctor-change{border-top:3px solid #7c3aed}.apt-view-summary__icon{font-size:1.25rem}.apt-view-summary__value{font-size:1.5rem;font-weight:700;color:var(--color-text-primary, #1e293b);line-height:1}.apt-view-summary__label{font-size:.7rem;font-weight:600;color:var(--color-text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.03em}@media(max-width:640px){.apt-view-summary{grid-template-columns:repeat(3,1fr)}}@media(max-width:400px){.apt-view-summary{grid-template-columns:repeat(2,1fr)}}.apt-notif-timeline{padding:.5rem 0}.apt-notif-timeline--empty{text-align:center;color:var(--color-text-muted, #94a3b8);font-size:.85rem;padding:1rem 0}.apt-notif-timeline--loading{display:flex;flex-direction:column;gap:.5rem}.apt-notif-timeline__shimmer{height:48px;border-radius:.375rem;background:linear-gradient(90deg,var(--color-bg-subtle, #f1f5f9) 0%,var(--color-border, #e2e8f0) 50%,var(--color-bg-subtle, #f1f5f9) 100%);background-size:200% 100%;animation:notif-shimmer 1.5s infinite ease-in-out}.apt-notif-timeline__title{font-size:.85rem;font-weight:700;color:var(--color-text-primary, #1e293b);margin-bottom:.5rem}.apt-notif-timeline__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.apt-notif-timeline__item{display:flex;gap:.5rem;align-items:flex-start;position:relative;padding-left:.25rem}.apt-notif-timeline__item:not(:last-child):after{content:"";position:absolute;left:.875rem;top:1.75rem;bottom:-.5rem;width:2px;background:var(--color-border, #e2e8f0)}.apt-notif-timeline__marker{flex-shrink:0;width:1.5rem;height:1.5rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;font-size:.7rem;z-index:1}.apt-notif-timeline__content{flex:1;min-width:0}.apt-notif-timeline__header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.apt-notif-timeline__type{font-weight:600;font-size:.8rem;color:var(--color-text-primary, #1e293b)}.apt-notif-timeline__status{font-size:.65rem;font-weight:600;padding:.0625rem .375rem;border-radius:9999px;text-transform:uppercase}.apt-notif-timeline__meta{display:flex;gap:.5rem;font-size:.7rem;color:var(--color-text-muted, #94a3b8);margin-top:.125rem}.apt-notif-timeline__channel{text-transform:uppercase;font-weight:600}.apt-notif-timeline__detail{display:block;font-size:.7rem;color:var(--color-text-secondary, #475569);margin-top:.125rem}.apt-notif-timeline__detail--response{color:#16a34a;font-weight:600}.apt-notif-timeline__detail--error{color:#dc2626}@keyframes notif-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.apt-notif-timeline__marker{background-color:var(--marker-bg, transparent);color:var(--marker-color, inherit)}.apt-notif-timeline__status{color:var(--status-color, inherit);background-color:var(--status-bg, transparent)}.apt-call-dialog__overlay{position:fixed;inset:0;background-color:#00000080;z-index:100;animation:apt-call-overlay-in .15s ease-out}.apt-call-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101;background:var(--color-bg-card, #fff);border-radius:.75rem;box-shadow:0 10px 40px #00000026;padding:1.5rem;width:min(90vw,420px);max-height:85vh;overflow-y:auto;animation:apt-call-dialog-in .2s ease-out}.apt-call-dialog__title{font-size:1rem;font-weight:700;color:var(--color-text-primary, #1e293b);margin:0 0 .25rem}.apt-call-dialog__description{font-size:.8rem;color:var(--color-text-muted, #94a3b8);margin:0 0 1rem}.apt-call-dialog__options{border:none;padding:0;margin:0 0 1rem;display:flex;flex-direction:column;gap:.5rem}.apt-call-dialog__legend{font-size:.8rem;font-weight:600;color:var(--color-text-secondary, #475569);margin-bottom:.5rem}.apt-call-dialog__option{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;cursor:pointer;transition:border-color .15s ease,background-color .15s ease;font-size:.85rem;color:var(--color-text-primary, #1e293b)}.apt-call-dialog__option:hover{border-color:var(--color-primary, #2563eb);background-color:var(--color-bg-subtle, #f8fafc)}.apt-call-dialog__option--selected{border-color:var(--color-primary, #2563eb);background-color:#eff6ff}.apt-call-dialog__radio{accent-color:var(--color-primary, #2563eb)}.apt-call-dialog__option-icon{font-size:1rem}.apt-call-dialog__option-label{flex:1}.apt-call-dialog__notes{margin-bottom:1rem}.apt-call-dialog__notes-label{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-secondary, #475569);margin-bottom:.375rem}.apt-call-dialog__notes-input{width:100%;padding:.5rem .625rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;font-size:.85rem;font-family:inherit;color:var(--color-text-primary, #1e293b);background:var(--color-bg-card, #fff);resize:vertical}.apt-call-dialog__notes-input::placeholder{color:var(--color-text-muted, #94a3b8)}.apt-call-dialog__notes-input:focus{outline:2px solid var(--color-primary, #2563eb);outline-offset:-1px}.apt-call-dialog__actions{display:flex;justify-content:flex-end;gap:.5rem}.apt-call-dialog__cancel-btn{padding:.5rem 1rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;background:transparent;color:var(--color-text-secondary, #475569);cursor:pointer;font-size:.85rem;transition:background-color .15s ease}.apt-call-dialog__cancel-btn:hover{background-color:var(--color-bg-subtle, #f1f5f9)}.apt-call-dialog__submit-btn{padding:.5rem 1rem;border:none;border-radius:.375rem;background:var(--color-primary, #2563eb);color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;transition:background-color .15s ease,opacity .15s ease}.apt-call-dialog__submit-btn:hover:not(:disabled){background-color:#1d4ed8}.apt-call-dialog__submit-btn:disabled{opacity:.5;cursor:not-allowed}@keyframes apt-call-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes apt-call-dialog-in{0%{opacity:0;transform:translate(-50%,-48%)}to{opacity:1;transform:translate(-50%,-50%)}}.apt-view-card{background:var(--color-bg-card, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;padding:.75rem 1rem;transition:border-color .15s ease}.apt-view-card--needs-call{border-left:3px solid #f97316}.apt-view-card__header{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem}.apt-view-card__time{font-weight:700;font-size:.9rem;color:var(--color-text-primary, #1e293b);white-space:nowrap}.apt-view-card__patient{display:flex;align-items:baseline;gap:.375rem;flex-wrap:wrap;flex:1;min-width:0}.apt-view-card__patient-name{font-weight:600;font-size:.875rem;color:var(--color-text-primary, #1e293b)}.apt-view-card__patient-hn{font-size:.75rem;color:var(--color-text-muted, #94a3b8);font-family:var(--font-mono, monospace)}.apt-view-card__badges{display:flex;align-items:center;gap:.375rem;flex-shrink:0}.apt-view-card__body{display:flex;flex-direction:column;gap:.375rem;margin-bottom:.5rem}.apt-view-card__doctor{display:flex;align-items:center;gap:.375rem;font-size:.8rem;color:var(--color-text-secondary, #475569)}.apt-view-card__doctor-code{font-size:.7rem;color:var(--color-text-muted, #94a3b8)}.apt-view-card__meta{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--color-text-muted, #94a3b8)}.apt-view-card__separator{color:var(--color-border, #e2e8f0)}.apt-view-card__reason{font-style:italic}.apt-view-card__call-alert{display:flex;align-items:center;gap:.375rem;padding:.375rem .5rem;border-radius:.25rem;background-color:#fff7ed;border:1px solid #fed7aa;font-size:.8rem;font-weight:600;color:#c2410c}.apt-view-card__response-time,.apt-view-card__call-info{font-size:.75rem;color:var(--color-text-secondary, #475569)}.apt-view-card__call-notes{font-style:italic}.apt-view-card__actions{display:flex;gap:.5rem;flex-wrap:wrap;padding-top:.5rem;border-top:1px solid var(--color-border, #e2e8f0)}.apt-view-card__action-btn{padding:.3rem .625rem;border:1px solid var(--color-border, #e2e8f0);border-radius:.375rem;background:transparent;color:var(--color-text-secondary, #475569);cursor:pointer;font-size:.75rem;font-weight:500;transition:background-color .15s ease,border-color .15s ease}.apt-view-card__action-btn:hover{background-color:var(--color-bg-subtle, #f1f5f9);border-color:var(--color-text-muted, #94a3b8)}.apt-view-card__action-btn--call{color:#c2410c;border-color:#fed7aa;background-color:#fff7ed}.apt-view-card__action-btn--call:hover{background-color:#ffedd5;border-color:#f97316}.apt-view-card__action-btn--view{color:var(--color-primary, #2563eb);border-color:#bfdbfe}.apt-view-card__action-btn--view:hover{background-color:#eff6ff;border-color:var(--color-primary, #2563eb)}.apt-view-card__notifications{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--color-border, #e2e8f0)}.apt-view-skeleton{display:flex;flex-direction:column;gap:.75rem}.apt-view-skeleton__summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.75rem;margin-bottom:.5rem}.apt-view-skeleton__summary-card{display:flex;flex-direction:column;align-items:center;gap:.375rem;padding:.75rem .5rem;background:var(--color-bg-card, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem}.apt-view-skeleton__summary-icon{width:1.25rem;height:1.25rem;border-radius:50%}.apt-view-skeleton__summary-value{width:2rem;height:1.5rem;border-radius:.25rem}.apt-view-skeleton__summary-label{width:4rem;height:.625rem;border-radius:.25rem}.apt-view-skeleton__card{background:var(--color-bg-card, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:.5rem;padding:.75rem 1rem}.apt-view-skeleton__card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.apt-view-skeleton__card-body{display:flex;flex-direction:column;gap:.375rem;margin-bottom:.5rem}.apt-view-skeleton__card-actions{display:flex;gap:.5rem;padding-top:.5rem;border-top:1px solid var(--color-border, #e2e8f0)}.apt-view-skeleton__time{width:80px;height:16px;border-radius:.25rem;flex-shrink:0}.apt-view-skeleton__name{width:160px;height:16px;border-radius:.25rem}.apt-view-skeleton__badge{width:90px;height:20px;border-radius:9999px;margin-left:auto}.apt-view-skeleton__line-med{width:45%;height:12px;border-radius:.25rem}.apt-view-skeleton__line-short{width:30%;height:12px;border-radius:.25rem}.apt-view-skeleton__action{width:60px;height:24px;border-radius:.375rem}.apt-view-skeleton__shimmer{background:linear-gradient(90deg,var(--color-bg-subtle, #f1f5f9) 0%,var(--color-border, #e2e8f0) 50%,var(--color-bg-subtle, #f1f5f9) 100%);background-size:200% 100%;animation:apt-view-shimmer 1.5s infinite ease-in-out}@keyframes apt-view-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.inv-page{display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.inv-page__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.inv-page__title{font-size:1.5rem;font-weight:600;margin:0}.inv-page__subtitle{margin:.25rem 0 0;color:var(--color-text-muted, #6b7280);font-size:.875rem}.inv-page__actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.inv-toolbar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.75rem;background:var(--color-surface-alt, #f9fafb);border-radius:6px;border:1px solid var(--color-border, #e5e7eb)}.inv-toolbar__search{flex:1 1 240px;min-width:200px;padding:.5rem .75rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;font-size:.875rem}.inv-toolbar__select{padding:.5rem .75rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;font-size:.875rem;background:#fff}.inv-toolbar__checkbox{display:inline-flex;align-items:center;gap:.35rem;font-size:.875rem;color:var(--color-text, #374151)}.inv-table-wrap{overflow-x:auto;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;background:#fff}.inv-table{width:100%;border-collapse:collapse;font-size:.875rem}.inv-table th,.inv-table td{padding:.625rem .75rem;text-align:left;border-bottom:1px solid var(--color-border, #e5e7eb);vertical-align:middle}.inv-table thead th{background:var(--color-surface-alt, #f9fafb);font-weight:600;color:var(--color-text, #374151);position:sticky;top:0}.inv-table tbody tr:hover{background:var(--color-surface-alt, #f9fafb)}.inv-table tbody tr:focus-visible{outline:2px solid var(--color-primary, #2563eb);outline-offset:-2px}.inv-table__row--inactive td{color:var(--color-text-muted, #9ca3af);font-style:italic}.inv-table__cell--num{text-align:right;font-variant-numeric:tabular-nums}.inv-table__actions{display:inline-flex;gap:.35rem}.inv-badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--color-surface-alt, #e5e7eb);color:var(--color-text, #374151)}.inv-badge--controlled{background:#fee2e2;color:#991b1b}.inv-badge--cold{background:#dbeafe;color:#1e40af}.inv-badge--formulary{background:#d1fae5;color:#065f46}.inv-badge--inactive{background:#f3f4f6;color:#6b7280}.inv-badge--type-MAIN{background:#fef3c7;color:#92400e}.inv-badge--type-BRANCH{background:#dbeafe;color:#1e40af}.inv-badge--type-DEPARTMENT{background:#ede9fe;color:#5b21b6}.inv-pagination{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding-top:.5rem}.inv-pagination__info{font-size:.875rem;color:var(--color-text-muted, #6b7280)}.inv-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem}.inv-form__field{display:flex;flex-direction:column;gap:.25rem}.inv-form__field--full{grid-column:1 / -1}.inv-form__label{font-size:.75rem;font-weight:600;color:var(--color-text, #374151);text-transform:uppercase;letter-spacing:.04em}.inv-form__label--required:after{content:" *";color:#dc2626}.inv-form__input,.inv-form__select,.inv-form__textarea{padding:.5rem .75rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;font-size:.875rem;width:100%;background:#fff}.inv-form__textarea{min-height:4rem;resize:vertical}.inv-form__inline{display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem}.inv-form__flags{display:flex;gap:1.25rem;flex-wrap:wrap;align-items:center}.inv-form__error{color:#dc2626;font-size:.75rem;margin-top:.25rem}.inv-empty{padding:2rem;text-align:center;color:var(--color-text-muted, #6b7280);font-size:.95rem}.inv-table__skeleton-announcement td{padding:0;border-bottom:0}.inv-table__skeleton-row td{height:3.125rem}.inv-skeleton{display:block;overflow:hidden;border-radius:4px;background:linear-gradient(90deg,#f3f4f6,#e5e7eb 38%,#f3f4f6 72%);background-size:200% 100%;animation:inv-skeleton-shimmer 1.35s ease-in-out infinite}.inv-skeleton--cell{width:min(100%,9rem);height:.875rem}.inv-skeleton--title{width:min(18rem,70vw);height:1.75rem}.inv-skeleton--subtitle{width:min(24rem,78vw);height:.875rem}.inv-skeleton--button{width:7.5rem;height:2.25rem;border-radius:6px}.inv-skeleton--field{height:2.375rem;border-radius:6px}.inv-detail-skeleton,.inv-detail-skeleton__heading{display:grid;gap:.75rem}.inv-detail-skeleton{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));padding:1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;background:var(--color-surface, #fff)}@keyframes inv-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.inv-table__num{text-align:right;font-variant-numeric:tabular-nums}.inv-pager{display:flex;gap:.75rem;align-items:center;justify-content:center;padding:1rem 0}.inv-pager__status{font-size:.875rem;color:var(--color-text-muted, #6b7280)}.inv-fifo{padding:1rem 0}.inv-fifo__summary{display:flex;gap:1.25rem;align-items:center;flex-wrap:wrap;padding:.75rem 1rem;background:#f9fafb;border-radius:6px;margin-bottom:.75rem;font-size:.875rem}.inv-fifo__short{color:#b45309}.inv-fifo__table{font-size:.875rem}.inv-badge--mvmt-GRN,.inv-badge--mvmt-RETURN,.inv-badge--mvmt-TRANSFER_IN,.inv-badge--mvmt-ADJUST_UP,.inv-badge--mvmt-ISSUE_REVERSAL{background:#dcfce7;color:#166534}.inv-badge--mvmt-ISSUE,.inv-badge--mvmt-WASTE,.inv-badge--mvmt-TRANSFER_OUT,.inv-badge--mvmt-ADJUST_DOWN,.inv-badge--mvmt-GRN_REVERSAL{background:#fee2e2;color:#991b1b}.inv-badge--grn-DRAFT{background:#fef3c7;color:#92400e}.inv-badge--grn-POSTED{background:#dcfce7;color:#166534}.inv-badge--grn-REVERSED{background:#e5e7eb;color:#374151}.inv-link{color:var(--color-primary, #2563eb);text-decoration:none}.inv-link:hover{text-decoration:underline}.inv-grn-actions{display:flex;gap:.5rem;flex-wrap:wrap}.inv-grn-reversal-banner{background:#fef3c7;border-left:4px solid #d97706;padding:.75rem 1rem;margin:1rem 0;border-radius:.25rem;color:#92400e}.inv-grn-form{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;padding:1rem;margin-bottom:1rem}.inv-grn-form__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;margin-bottom:.75rem}.inv-grn-form__row:last-child{margin-bottom:0}.inv-grn-form__field{display:flex;flex-direction:column;gap:.25rem}.inv-grn-form__field span{font-size:.875rem;font-weight:600;color:var(--color-text-muted, #6b7280)}.inv-grn-form__field input,.inv-grn-form__field select{padding:.5rem .625rem;border:1px solid var(--color-border, #d1d5db);border-radius:.375rem;font-size:.9375rem}.inv-grn-form__field--wide{grid-column:span 2}.inv-grn-lines{margin-top:1rem}.inv-grn-lines__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.inv-grn-lines__header h2{margin:0;font-size:1.125rem}.inv-badge--transfer-DRAFT{background:#fef3c7;color:#92400e}.inv-badge--transfer-IN_TRANSIT{background:#dbeafe;color:#1e40af}.inv-badge--transfer-RECEIVED{background:#dcfce7;color:#166534}.inv-badge--transfer-CANCELLED{background:#e5e7eb;color:#374151}.inv-transfer-actions{display:flex;gap:.5rem;flex-wrap:wrap}.inv-transfer-receive-banner{background:#fef3c7;border-left:4px solid #f59e0b;padding:.75rem 1rem;margin-bottom:1rem;border-radius:4px}.inv-transfer-form{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;padding:1rem;margin-bottom:1rem}.inv-transfer-form__row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}.inv-transfer-form__row:last-child{margin-bottom:0}.inv-transfer-form__field{display:flex;flex-direction:column;gap:.25rem}.inv-transfer-form__field span{font-size:.875rem;font-weight:600;color:var(--color-text-muted, #6b7280)}.inv-transfer-form__field input,.inv-transfer-form__field select{padding:.5rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;font-size:.95rem}.inv-transfer-form__field--wide{grid-column:span 2}.inv-transfer-lines{margin-top:1rem}.inv-transfer-lines__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.inv-transfer-lines__header h2{margin:0;font-size:1.125rem}.inv-badge--count-DRAFT{background:#fef3c7;color:#92400e}.inv-badge--count-COUNTING{background:#dbeafe;color:#1e40af}.inv-badge--count-REVIEW{background:#ede9fe;color:#5b21b6}.inv-badge--count-APPROVED{background:#dcfce7;color:#166534}.inv-badge--count-REJECTED{background:#fee2e2;color:#991b1b}.inv-stock-count-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.inv-stock-count-form{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;padding:1rem;margin-bottom:1rem}.inv-stock-count-form__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:.75rem}.inv-stock-count-form__field{display:flex;flex-direction:column;gap:.25rem}.inv-stock-count-form__field span{font-size:.8125rem;color:var(--color-text-muted, #6b7280)}.inv-stock-count-form__field input,.inv-stock-count-form__field select,.inv-stock-count-form__field textarea{padding:.5rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;font-size:.95rem;font-family:inherit}.inv-stock-count-form__field--wide{grid-column:1 / -1}.inv-stock-count-lines{margin-top:1rem}.inv-stock-count-lines__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.inv-stock-count-lines__header h2{margin:0;font-size:1.125rem}.inv-stock-count-variance-banner{background:#fee2e2;border-left:4px solid #dc2626;padding:.75rem 1rem;margin-top:.75rem;border-radius:4px}.inv-table__num-input{width:6rem;padding:.25rem .5rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;text-align:right;font-family:inherit}.inv-table__sub{font-size:.8125rem;color:var(--color-text-muted, #6b7280)}.inv-page--dashboard{gap:1.25rem}.inv-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.inv-section-header__title{margin:0;font-size:1.125rem;font-weight:600}.inv-section-header__subtitle{margin:.25rem 0 0;color:var(--color-text-muted, #6b7280);font-size:.875rem}.inv-section-header__actions{display:flex;gap:.5rem;flex-wrap:wrap}.inv-icon-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.25rem}.inv-near-expiry{display:flex;flex-direction:column;gap:1rem}.inv-dashboard-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}.inv-summary-metric{display:flex;flex-direction:column;gap:.25rem;min-height:5rem;padding:.875rem 1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;background:var(--color-surface, #fff)}.inv-summary-metric span{color:var(--color-text-muted, #6b7280);font-size:.8125rem}.inv-summary-metric strong{font-size:1.5rem;line-height:1.25;font-variant-numeric:tabular-nums}.inv-expiry-buckets{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.75rem}.inv-expiry-bucket{display:grid;grid-template-rows:auto auto 1fr;gap:.25rem;min-height:6rem;padding:.875rem 1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;background:var(--color-surface, #fff)}.inv-expiry-bucket__label{font-size:.8125rem;color:var(--color-text-muted, #6b7280)}.inv-expiry-bucket__value{font-size:1.75rem;line-height:1.15;font-variant-numeric:tabular-nums}.inv-expiry-bucket__meta{color:var(--color-text-muted, #6b7280);font-size:.8125rem;align-self:end}.inv-expiry-bucket--EXPIRED{border-left:4px solid #dc2626}.inv-expiry-bucket--DAYS_0_7{border-left:4px solid #f97316}.inv-expiry-bucket--DAYS_8_30{border-left:4px solid #d97706}.inv-expiry-bucket--DAYS_31_90{border-left:4px solid #2563eb}.inv-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.9fr);gap:1rem;align-items:start}.inv-dashboard-panel{display:flex;flex-direction:column;gap:.5rem;min-width:0}.inv-dashboard-panel__header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;min-height:2rem}.inv-dashboard-panel__header h3{margin:0;font-size:1rem;font-weight:600}.inv-dashboard-panel__header span{color:var(--color-text-muted, #6b7280);font-size:.8125rem}.inv-table--compact th,.inv-table--compact td{padding:.55rem .625rem}.inv-badge--expiry-EXPIRED{background:#fee2e2;color:#991b1b}.inv-badge--expiry-DAYS_0_7{background:#ffedd5;color:#9a3412}.inv-badge--expiry-DAYS_8_30{background:#fef3c7;color:#92400e}.inv-badge--expiry-DAYS_31_90{background:#dbeafe;color:#1e40af}@media(max-width:960px){.inv-dashboard-grid{grid-template-columns:1fr}}@media(max-width:640px){.inv-section-header__actions,.inv-icon-button{width:100%}}.inv-stock-movements__readonly-badge{display:inline-flex;align-items:center;padding:.25rem .75rem;border-radius:9999px;background:#eef2ff;color:#3730a3;font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;border:1px solid #c7d2fe}.inv-transfer-fifo{margin-top:1rem;padding:1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem}.inv-transfer-fifo__title{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:#1e293b}.inv-transfer-fifo__item{margin-top:.5rem;padding:.5rem .75rem;background:#fff;border:1px solid #e2e8f0;border-radius:.375rem}.inv-transfer-fifo__item>summary{cursor:pointer;font-weight:500;color:#334155}.report-shell{display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.report-shell__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.report-shell__title{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #111827)}.report-shell__subtitle{margin:.25rem 0 0;color:var(--color-text-muted, #6b7280);font-size:.875rem}.report-shell__actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.report-shell__toolbar{display:flex;align-items:end;gap:.75rem;flex-wrap:wrap;padding:.75rem;background:var(--color-surface-alt, #f9fafb);border:1px solid var(--color-border, #e5e7eb);border-radius:6px}.report-shell__filters{display:flex;align-items:end;gap:.75rem;flex-wrap:wrap;flex:1 1 auto}.report-shell__field{display:flex;flex-direction:column;gap:.25rem;min-width:9rem;font-size:.75rem;font-weight:600;color:var(--color-text, #374151)}.report-shell__field--report{min-width:15rem}.report-shell__select,.report-shell__input{width:100%;min-height:2.25rem;padding:.45rem .65rem;border:1px solid var(--color-border, #d1d5db);border-radius:4px;background:#fff;color:var(--color-text, #111827);font-size:.875rem}.report-shell__checkbox{display:inline-flex;align-items:center;gap:.4rem;min-height:2.25rem;color:var(--color-text, #374151);font-size:.875rem;font-weight:500}.report-shell__meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;color:var(--color-text-muted, #6b7280);font-size:.875rem}.report-shell__content{min-width:0}.report-shell__status{padding:2rem;text-align:center;color:var(--color-text-muted, #6b7280);background:#fff;border:1px solid var(--color-border, #e5e7eb);border-radius:6px}.report-shell__pager{display:flex;align-items:center;justify-content:center;gap:.75rem;padding-top:.75rem}.report-table__skeleton-announcement td{padding:0;border-bottom:0}.report-table__skeleton-row td{height:3.125rem}.report-skeleton{display:block;overflow:hidden;border-radius:4px;background:linear-gradient(90deg,#f3f4f6,#e5e7eb 38%,#f3f4f6 72%);background-size:200% 100%;animation:report-skeleton-shimmer 1.35s ease-in-out infinite}.report-skeleton--cell{width:min(100%,9rem);height:.875rem}.report-virtual-table{overflow-x:auto;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;background:#fff;font-size:.875rem}.report-virtual-table__header,.report-virtual-table__row{display:grid;min-width:58rem}.report-virtual-table--cols-5 .report-virtual-table__header,.report-virtual-table--cols-5 .report-virtual-table__row{grid-template-columns:repeat(5,minmax(7rem,1fr))}.report-virtual-table--cols-6 .report-virtual-table__header,.report-virtual-table--cols-6 .report-virtual-table__row{grid-template-columns:repeat(6,minmax(7rem,1fr))}.report-virtual-table--cols-7 .report-virtual-table__header,.report-virtual-table--cols-7 .report-virtual-table__row{grid-template-columns:repeat(7,minmax(7rem,1fr))}.report-virtual-table--cols-8 .report-virtual-table__header,.report-virtual-table--cols-8 .report-virtual-table__row{grid-template-columns:repeat(8,minmax(7rem,1fr))}.report-virtual-table--cols-9 .report-virtual-table__header,.report-virtual-table--cols-9 .report-virtual-table__row{grid-template-columns:repeat(9,minmax(7rem,1fr))}.report-virtual-table--cols-10 .report-virtual-table__header,.report-virtual-table--cols-10 .report-virtual-table__row{grid-template-columns:repeat(10,minmax(7rem,1fr))}.report-virtual-table__header{position:sticky;top:0;z-index:1;background:var(--color-surface-alt, #f9fafb);font-weight:600;color:var(--color-text, #374151)}.report-virtual-table__row{border-bottom:1px solid var(--color-border, #e5e7eb)}.report-virtual-table__row:hover{background:var(--color-surface-alt, #f9fafb)}.report-virtual-table__cell{min-width:0;padding:.625rem .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-virtual-table__cell--num{text-align:right;font-variant-numeric:tabular-nums}@keyframes report-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(max-width:720px){.report-shell{padding:1rem}.report-shell__field,.report-shell__field--report,.report-shell__filters{width:100%}}.access-denied-fallback{padding:2rem;text-align:center}#root{min-height:100vh;display:flex;flex-direction:column}@keyframes app-shell-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app-shell__boot-fallback{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.2rem;color:var(--color-text-secondary)}.app-shell__boot-fallback-spinner{width:2rem;height:2rem;animation:app-shell-spin 1.2s linear infinite}.app-shell__page-fallback{display:flex;justify-content:center;align-items:center;height:400px;font-size:1rem;color:var(--color-text-hint)}.app-shell__page-fallback-inner{text-align:center}.app-shell__page-fallback-icon{margin-bottom:.5rem;width:2rem;height:2rem;animation:app-shell-spin 1.2s linear infinite}.app-shell__not-found{display:flex;justify-content:center;align-items:center;height:400px;flex-direction:column;gap:1rem;color:var(--color-text-muted)}.app-shell__not-found-icon{width:3rem;height:3rem}
