/** * Care Book Ultimate - Admin Interface Styles * * Modern WordPress admin interface with exceptional UX * - Responsive design for all screen sizes * - Accessibility compliance (WCAG 2.1) * - Dark mode support * - Performance optimized * * @package CareBook\Ultimate * @since 1.0.0 */ /* ========================================== CSS CUSTOM PROPERTIES & VARIABLES ========================================== */ :root { /* Color System - Light Theme */ --cbu-primary: #0073aa; --cbu-primary-hover: #005a87; --cbu-primary-light: #e8f4f8; --cbu-secondary: #646970; --cbu-secondary-light: #f6f7f7; --cbu-success: #00a32a; --cbu-success-light: #e6f7e6; --cbu-warning: #dba617; --cbu-warning-light: #fcf9e8; --cbu-error: #d63638; --cbu-error-light: #fcebeb; --cbu-info: #72aee6; --cbu-info-light: #e8f4f8; /* Neutral Colors */ --cbu-white: #ffffff; --cbu-gray-50: #f9fafb; --cbu-gray-100: #f3f4f6; --cbu-gray-200: #e5e7eb; --cbu-gray-300: #d1d5db; --cbu-gray-400: #9ca3af; --cbu-gray-500: #6b7280; --cbu-gray-600: #4b5563; --cbu-gray-700: #374151; --cbu-gray-800: #1f2937; --cbu-gray-900: #111827; /* Typography */ --cbu-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; --cbu-font-size-xs: 0.75rem; /* 12px */ --cbu-font-size-sm: 0.875rem; /* 14px */ --cbu-font-size-base: 1rem; /* 16px */ --cbu-font-size-lg: 1.125rem; /* 18px */ --cbu-font-size-xl: 1.25rem; /* 20px */ --cbu-font-size-2xl: 1.5rem; /* 24px */ --cbu-font-size-3xl: 1.875rem; /* 30px */ --cbu-font-weight-normal: 400; --cbu-font-weight-medium: 500; --cbu-font-weight-semibold: 600; --cbu-font-weight-bold: 700; --cbu-line-height-tight: 1.25; --cbu-line-height-snug: 1.375; --cbu-line-height-normal: 1.5; --cbu-line-height-relaxed: 1.625; /* Spacing */ --cbu-space-1: 0.25rem; /* 4px */ --cbu-space-2: 0.5rem; /* 8px */ --cbu-space-3: 0.75rem; /* 12px */ --cbu-space-4: 1rem; /* 16px */ --cbu-space-5: 1.25rem; /* 20px */ --cbu-space-6: 1.5rem; /* 24px */ --cbu-space-8: 2rem; /* 32px */ --cbu-space-10: 2.5rem; /* 40px */ --cbu-space-12: 3rem; /* 48px */ --cbu-space-16: 4rem; /* 64px */ /* Borders */ --cbu-border-width: 1px; --cbu-border-width-2: 2px; --cbu-border-color: var(--cbu-gray-200); --cbu-border-color-hover: var(--cbu-gray-300); /* Border Radius */ --cbu-radius-sm: 0.25rem; /* 4px */ --cbu-radius: 0.375rem; /* 6px */ --cbu-radius-md: 0.5rem; /* 8px */ --cbu-radius-lg: 0.75rem; /* 12px */ --cbu-radius-xl: 1rem; /* 16px */ --cbu-radius-full: 9999px; /* Shadows */ --cbu-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --cbu-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); --cbu-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --cbu-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); --cbu-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* Transitions */ --cbu-transition-fast: all 150ms ease-in-out; --cbu-transition: all 300ms ease-in-out; --cbu-transition-slow: all 500ms ease-in-out; /* Z-index Scale */ --cbu-z-auto: auto; --cbu-z-0: 0; --cbu-z-10: 10; --cbu-z-20: 20; --cbu-z-30: 30; --cbu-z-40: 40; --cbu-z-50: 50; --cbu-z-modal: 1000; --cbu-z-toast: 1100; --cbu-z-tooltip: 1200; } /* Dark Theme Variables */ [data-cbu-theme="dark"] { --cbu-primary: #4f94cd; --cbu-primary-hover: #6ba3db; --cbu-primary-light: #1e3a5f; --cbu-secondary: #a7aaad; --cbu-secondary-light: #2c3338; --cbu-success: #00d084; --cbu-success-light: #1a3d2e; --cbu-warning: #f0c33c; --cbu-warning-light: #3d2f1a; --cbu-error: #f56565; --cbu-error-light: #3d1a1a; --cbu-info: #63b3ed; --cbu-info-light: #1e3a5f; --cbu-white: #1e1e1e; --cbu-gray-50: #2c2c2c; --cbu-gray-100: #383838; --cbu-gray-200: #4a4a4a; --cbu-gray-300: #5c5c5c; --cbu-gray-400: #737373; --cbu-gray-500: #8a8a8a; --cbu-gray-600: #a1a1a1; --cbu-gray-700: #b8b8b8; --cbu-gray-800: #cfcfcf; --cbu-gray-900: #e6e6e6; --cbu-border-color: var(--cbu-gray-200); --cbu-border-color-hover: var(--cbu-gray-300); } /* ========================================== BASE STYLES & RESET ========================================== */ .care-book-ultimate-admin { font-family: var(--cbu-font-family); font-size: var(--cbu-font-size-base); line-height: var(--cbu-line-height-normal); color: var(--cbu-gray-900); background-color: var(--cbu-white); } .care-book-ultimate-admin *, .care-book-ultimate-admin *::before, .care-book-ultimate-admin *::after { box-sizing: border-box; } .care-book-ultimate-admin button { font-family: inherit; } /* Screen Reader Only */ .screen-reader-text { position: absolute !important; clip-path: inset(50%); width: 1px; height: 1px; overflow: hidden; } /* ========================================== HEADER SECTION ========================================== */ .cbu-header { background: linear-gradient(135deg, var(--cbu-primary) 0%, var(--cbu-primary-hover) 100%); color: var(--cbu-white); padding: var(--cbu-space-6) var(--cbu-space-8); margin: 0 -20px var(--cbu-space-8) -20px; border-radius: 0 0 var(--cbu-radius-xl) var(--cbu-radius-xl); position: relative; overflow: hidden; } .cbu-header::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Cg fill-opacity='0.1'%3E%3Cpolygon fill='%23ffffff' points='50 0 60 40 100 50 60 60 50 100 40 60 0 50 40 40'/%3E%3C/g%3E%3C/svg%3E") repeat; opacity: 0.1; z-index: 1; } .cbu-header-content { display: flex; justify-content: space-between; align-items: flex-start; position: relative; z-index: 2; } .cbu-header-title h1 { display: flex; align-items: center; gap: var(--cbu-space-3); margin: 0; font-size: var(--cbu-font-size-3xl); font-weight: var(--cbu-font-weight-bold); color: var(--cbu-white); } .cbu-logo { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; background: rgba(255, 255, 255, 0.2); border-radius: var(--cbu-radius-lg); backdrop-filter: blur(10px); } .cbu-version { display: inline-block; padding: var(--cbu-space-1) var(--cbu-space-3); background: rgba(255, 255, 255, 0.2); border-radius: var(--cbu-radius-full); font-size: var(--cbu-font-size-sm); font-weight: var(--cbu-font-weight-medium); margin-left: var(--cbu-space-3); } .cbu-subtitle { margin: var(--cbu-space-2) 0 0 0; font-size: var(--cbu-font-size-lg); opacity: 0.9; } .cbu-header-actions { display: flex; align-items: center; gap: var(--cbu-space-4); } .cbu-help-toggle { background: rgba(255, 255, 255, 0.2) !important; color: var(--cbu-white) !important; border: 1px solid rgba(255, 255, 255, 0.3) !important; backdrop-filter: blur(10px); transition: var(--cbu-transition-fast); } .cbu-help-toggle:hover { background: rgba(255, 255, 255, 0.3) !important; transform: translateY(-2px); } /* Theme Toggle */ .cbu-theme-toggle { display: flex; align-items: center; gap: var(--cbu-space-2); } .cbu-toggle-switch { position: relative; display: flex; align-items: center; gap: var(--cbu-space-2); cursor: pointer; } .cbu-toggle-switch input { position: absolute; opacity: 0; pointer-events: none; } .cbu-toggle-slider { position: relative; display: block; width: 48px; height: 24px; background: rgba(255, 255, 255, 0.2); border: 1px solid rgba(255, 255, 255, 0.3); border-radius: var(--cbu-radius-full); transition: var(--cbu-transition-fast); } .cbu-toggle-slider::after { content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; background: var(--cbu-white); border-radius: 50%; transition: var(--cbu-transition-fast); } .cbu-toggle-switch input:checked + .cbu-toggle-slider { background: rgba(255, 255, 255, 0.3); } .cbu-toggle-switch input:checked + .cbu-toggle-slider::after { transform: translateX(24px); } .cbu-toggle-label { font-size: var(--cbu-font-size-sm); font-weight: var(--cbu-font-weight-medium); color: var(--cbu-white); } /* Help Panel */ .cbu-help-panel { position: absolute; top: 100%; left: var(--cbu-space-8); right: var(--cbu-space-8); background: var(--cbu-white); border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius-lg); box-shadow: var(--cbu-shadow-xl); padding: var(--cbu-space-6); margin-top: var(--cbu-space-4); z-index: var(--cbu-z-40); transform: translateY(-10px); opacity: 0; visibility: hidden; transition: var(--cbu-transition); } .cbu-help-panel[aria-hidden="false"] { transform: translateY(0); opacity: 1; visibility: visible; } .cbu-help-content h3 { margin: 0 0 var(--cbu-space-4) 0; font-size: var(--cbu-font-size-xl); font-weight: var(--cbu-font-weight-semibold); color: var(--cbu-gray-900); } .cbu-help-steps { display: grid; gap: var(--cbu-space-3); } .cbu-help-step { display: flex; align-items: flex-start; gap: var(--cbu-space-3); padding: var(--cbu-space-3); background: var(--cbu-gray-50); border-radius: var(--cbu-radius); } .cbu-step-number { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: var(--cbu-primary); color: var(--cbu-white); border-radius: 50%; font-size: var(--cbu-font-size-sm); font-weight: var(--cbu-font-weight-semibold); flex-shrink: 0; } .cbu-help-footer { margin: var(--cbu-space-4) 0 0 0; padding: var(--cbu-space-4); background: var(--cbu-primary-light); border-radius: var(--cbu-radius); text-align: center; color: var(--cbu-primary); } /* ========================================== STATUS DASHBOARD ========================================== */ .cbu-status-dashboard { margin-bottom: var(--cbu-space-8); } .cbu-status-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--cbu-space-4); } .cbu-status-card { display: flex; align-items: center; gap: var(--cbu-space-4); padding: var(--cbu-space-6); background: var(--cbu-white); border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius-lg); box-shadow: var(--cbu-shadow-sm); transition: var(--cbu-transition-fast); } .cbu-status-card:hover { box-shadow: var(--cbu-shadow-md); transform: translateY(-2px); } .cbu-status-icon { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: var(--cbu-radius-lg); flex-shrink: 0; } .cbu-card-doctors .cbu-status-icon { background: var(--cbu-info-light); color: var(--cbu-info); } .cbu-card-services .cbu-status-icon { background: var(--cbu-warning-light); color: var(--cbu-warning); } .cbu-card-cache .cbu-status-icon { background: var(--cbu-success-light); color: var(--cbu-success); } .cbu-card-performance .cbu-status-icon { background: var(--cbu-primary-light); color: var(--cbu-primary); } .cbu-status-number { font-size: var(--cbu-font-size-2xl); font-weight: var(--cbu-font-weight-bold); color: var(--cbu-gray-900); line-height: var(--cbu-line-height-tight); } .cbu-status-label { font-size: var(--cbu-font-size-sm); color: var(--cbu-gray-600); font-weight: var(--cbu-font-weight-medium); } /* ========================================== NAVIGATION TABS ========================================== */ .cbu-nav-tabs { display: flex; margin-bottom: var(--cbu-space-8); border-bottom: var(--cbu-border-width) solid var(--cbu-border-color); overflow-x: auto; -webkit-overflow-scrolling: touch; } .cbu-nav-tab { display: flex; align-items: center; gap: var(--cbu-space-2); padding: var(--cbu-space-4) var(--cbu-space-6); background: transparent; border: none; border-bottom: 3px solid transparent; color: var(--cbu-gray-600); font-size: var(--cbu-font-size-base); font-weight: var(--cbu-font-weight-medium); cursor: pointer; transition: var(--cbu-transition-fast); white-space: nowrap; position: relative; } .cbu-nav-tab:hover { color: var(--cbu-primary); background: var(--cbu-primary-light); } .cbu-nav-tab.cbu-nav-tab-active, .cbu-nav-tab[aria-selected="true"] { color: var(--cbu-primary); border-bottom-color: var(--cbu-primary); background: var(--cbu-primary-light); } .cbu-nav-tab .dashicons { font-size: 18px; } .cbu-tab-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 var(--cbu-space-2); background: var(--cbu-gray-200); border-radius: var(--cbu-radius-full); font-size: var(--cbu-font-size-xs); font-weight: var(--cbu-font-weight-semibold); line-height: 1; } .cbu-nav-tab-active .cbu-tab-badge, .cbu-nav-tab[aria-selected="true"] .cbu-tab-badge { background: var(--cbu-primary); color: var(--cbu-white); } /* ========================================== TAB PANELS ========================================== */ .cbu-tab-panel { display: none; } .cbu-tab-panel.cbu-tab-panel-active, .cbu-tab-panel[aria-hidden="false"] { display: block; } /* ========================================== TOOLBAR ========================================== */ .cbu-toolbar { display: flex; justify-content: space-between; align-items: center; padding: var(--cbu-space-4) 0; margin-bottom: var(--cbu-space-6); border-bottom: var(--cbu-border-width) solid var(--cbu-border-color); gap: var(--cbu-space-4); } .cbu-toolbar-left, .cbu-toolbar-right { display: flex; align-items: center; gap: var(--cbu-space-3); flex-wrap: wrap; } /* Search Box */ .cbu-search-box { position: relative; display: flex; align-items: center; } .cbu-search-input { width: 280px; padding: var(--cbu-space-3) var(--cbu-space-4); padding-right: 40px; border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius); font-size: var(--cbu-font-size-sm); transition: var(--cbu-transition-fast); } .cbu-search-input:focus { outline: none; border-color: var(--cbu-primary); box-shadow: 0 0 0 3px rgba(0, 115, 170, 0.1); } .cbu-search-clear { position: absolute; right: var(--cbu-space-2); top: 50%; transform: translateY(-50%); background: none; border: none; padding: var(--cbu-space-1); cursor: pointer; color: var(--cbu-gray-400); transition: var(--cbu-transition-fast); opacity: 0; visibility: hidden; } .cbu-search-input:not(:placeholder-shown) + .cbu-search-clear { opacity: 1; visibility: visible; } .cbu-search-clear:hover { color: var(--cbu-gray-600); } /* Filter Controls */ .cbu-filter-controls { display: flex; align-items: center; gap: var(--cbu-space-2); } .cbu-select { padding: var(--cbu-space-2) var(--cbu-space-4); border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius); font-size: var(--cbu-font-size-sm); background: var(--cbu-white); cursor: pointer; transition: var(--cbu-transition-fast); } .cbu-select:focus { outline: none; border-color: var(--cbu-primary); box-shadow: 0 0 0 3px rgba(0, 115, 170, 0.1); } /* Buttons */ .cbu-button-refresh { display: flex; align-items: center; gap: var(--cbu-space-2); } .cbu-bulk-actions { display: flex; align-items: center; gap: var(--cbu-space-2); } .cbu-button-bulk-block, .cbu-button-bulk-unblock { display: flex; align-items: center; gap: var(--cbu-space-2); opacity: 0.6; transition: var(--cbu-transition-fast); } .cbu-button-bulk-block:not([disabled]), .cbu-button-bulk-unblock:not([disabled]) { opacity: 1; } .cbu-button-bulk-block { background: var(--cbu-error) !important; border-color: var(--cbu-error) !important; color: var(--cbu-white) !important; } .cbu-button-bulk-block:hover:not([disabled]) { background: #b91c1c !important; } .cbu-button-bulk-unblock { background: var(--cbu-success) !important; border-color: var(--cbu-success) !important; color: var(--cbu-white) !important; } .cbu-button-bulk-unblock:hover:not([disabled]) { background: #166534 !important; } /* ========================================== TABLE STYLES ========================================== */ .cbu-table-container { background: var(--cbu-white); border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius-lg); overflow: hidden; box-shadow: var(--cbu-shadow-sm); } .cbu-table { width: 100%; border-collapse: collapse; font-size: var(--cbu-font-size-sm); } .cbu-table thead { background: var(--cbu-gray-50); } .cbu-table th, .cbu-table td { padding: var(--cbu-space-4); text-align: left; border-bottom: var(--cbu-border-width) solid var(--cbu-border-color); } .cbu-table th { font-weight: var(--cbu-font-weight-semibold); color: var(--cbu-gray-700); user-select: none; cursor: pointer; position: relative; } .cbu-table th[data-sort] { padding-right: var(--cbu-space-8); } .cbu-table th:hover { background: var(--cbu-gray-100); } .cbu-sort-indicator { position: absolute; right: var(--cbu-space-3); top: 50%; transform: translateY(-50%); opacity: 0.5; transition: var(--cbu-transition-fast); } .cbu-sort-indicator::after { content: '↕'; font-size: var(--cbu-font-size-sm); } .cbu-table th[data-sort-direction="asc"] .cbu-sort-indicator::after { content: '↑'; opacity: 1; } .cbu-table th[data-sort-direction="desc"] .cbu-sort-indicator::after { content: '↓'; opacity: 1; } .cbu-table tbody tr { transition: var(--cbu-transition-fast); } .cbu-table tbody tr:hover { background: var(--cbu-gray-50); } .cbu-table tbody tr.cbu-row-blocked { background: var(--cbu-error-light); } .cbu-table tbody tr.cbu-row-blocked:hover { background: #fecaca; } /* Table Columns */ .cbu-table-checkbox { width: 40px; text-align: center; } .cbu-table-name { min-width: 200px; } .cbu-table-email { min-width: 180px; } .cbu-table-status { width: 120px; } .cbu-table-actions { width: 120px; text-align: center; } /* Checkbox Styling */ .cbu-checkbox-label { position: relative; display: flex; align-items: center; cursor: pointer; } .cbu-checkbox-label input { position: absolute; opacity: 0; pointer-events: none; } .cbu-checkbox-custom { position: relative; display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; border: 2px solid var(--cbu-border-color); border-radius: var(--cbu-radius-sm); transition: var(--cbu-transition-fast); } .cbu-checkbox-custom::after { content: ''; width: 10px; height: 6px; border: 2px solid var(--cbu-white); border-top: none; border-right: none; transform: rotate(-45deg) scale(0); transition: var(--cbu-transition-fast); } .cbu-checkbox-label input:checked + .cbu-checkbox-custom { background: var(--cbu-primary); border-color: var(--cbu-primary); } .cbu-checkbox-label input:checked + .cbu-checkbox-custom::after { transform: rotate(-45deg) scale(1); } .cbu-checkbox-label:hover .cbu-checkbox-custom { border-color: var(--cbu-primary); } /* Status Badges */ .cbu-status-badge { display: inline-flex; align-items: center; padding: var(--cbu-space-1) var(--cbu-space-3); border-radius: var(--cbu-radius-full); font-size: var(--cbu-font-size-xs); font-weight: var(--cbu-font-weight-semibold); text-transform: uppercase; letter-spacing: 0.025em; } .cbu-status-available { background: var(--cbu-success-light); color: var(--cbu-success); } .cbu-status-blocked { background: var(--cbu-error-light); color: var(--cbu-error); } /* Toggle Buttons */ .cbu-toggle-button { display: flex; align-items: center; gap: var(--cbu-space-2); padding: var(--cbu-space-2) var(--cbu-space-4); border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius); background: var(--cbu-white); font-size: var(--cbu-font-size-xs); font-weight: var(--cbu-font-weight-medium); cursor: pointer; transition: var(--cbu-transition-fast); } .cbu-toggle-block { border-color: var(--cbu-error); color: var(--cbu-error); } .cbu-toggle-block:hover { background: var(--cbu-error); color: var(--cbu-white); } .cbu-toggle-unblock { border-color: var(--cbu-success); color: var(--cbu-success); } .cbu-toggle-unblock:hover { background: var(--cbu-success); color: var(--cbu-white); } /* Primary Row Content */ .cbu-table-primary { font-weight: var(--cbu-font-weight-medium); } .cbu-row-title strong { color: var(--cbu-gray-900); } .cbu-row-actions { margin-top: var(--cbu-space-1); opacity: 0; transition: var(--cbu-transition-fast); } .cbu-table-row:hover .cbu-row-actions { opacity: 1; } .cbu-view-services { color: var(--cbu-primary); text-decoration: none; font-size: var(--cbu-font-size-xs); } .cbu-view-services:hover { text-decoration: underline; } /* Empty State */ .cbu-empty-state { text-align: center; } .cbu-empty-state-content { padding: var(--cbu-space-16) var(--cbu-space-8); color: var(--cbu-gray-600); } .cbu-empty-icon { margin-bottom: var(--cbu-space-4); color: var(--cbu-gray-400); } .cbu-empty-icon .dashicons { font-size: 48px; } .cbu-empty-state h3 { margin: 0 0 var(--cbu-space-2) 0; font-size: var(--cbu-font-size-lg); font-weight: var(--cbu-font-weight-semibold); color: var(--cbu-gray-700); } .cbu-empty-state p { margin: 0; color: var(--cbu-gray-600); } /* ========================================== PAGINATION ========================================== */ .cbu-pagination { display: flex; justify-content: space-between; align-items: center; padding: var(--cbu-space-4); border-top: var(--cbu-border-width) solid var(--cbu-border-color); background: var(--cbu-gray-50); } .cbu-pagination-info { font-size: var(--cbu-font-size-sm); color: var(--cbu-gray-600); } .cbu-pagination-controls { display: flex; align-items: center; gap: var(--cbu-space-1); } .cbu-pagination-btn { display: flex; align-items: center; justify-content: center; min-width: 32px; height: 32px; padding: 0 var(--cbu-space-2); background: var(--cbu-white); border: var(--cbu-border-width) solid var(--cbu-border-color); border-radius: var(--cbu-radius); font-size: var(--cbu-font-size-sm); cursor: pointer; transition: var(--cbu-transition-fast); } .cbu-pagination-btn:hover:not([disabled]) { background: var(--cbu-primary); border-color: var(--cbu-primary); color: var(--cbu-white); } .cbu-pagination-btn.cbu-current { background: var(--cbu-primary); border-color: var(--cbu-primary); color: var(--cbu-white); } .cbu-pagination-btn[disabled] { opacity: 0.5; cursor: not-allowed; } /* ========================================== LOADING & OVERLAYS ========================================== */ .cbu-loading-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.9); display: flex; align-items: center; justify-content: center; z-index: var(--cbu-z-modal); opacity: 0; visibility: hidden; transition: var(--cbu-transition); backdrop-filter: blur(4px); } .cbu-loading-overlay[aria-hidden="false"] { opacity: 1; visibility: visible; } .cbu-loading-content { text-align: center; padding: var(--cbu-space-8); } .cbu-loading-spinner { width: 40px; height: 40px; border: 4px solid var(--cbu-gray-200); border-top-color: var(--cbu-primary); border-radius: 50%; animation: cbu-spin 1s linear infinite; margin: 0 auto var(--cbu-space-4) auto; } @keyframes cbu-spin { to { transform: rotate(360deg); } } .cbu-loading-text { font-size: var(--cbu-font-size-lg); color: var(--cbu-gray-700); margin: 0; } /* ========================================== TOAST NOTIFICATIONS ========================================== */ .cbu-toast-container { position: fixed; top: var(--cbu-space-6); right: var(--cbu-space-6); z-index: var(--cbu-z-toast); max-width: 400px; pointer-events: none; } .cbu-toast { display: flex; align-items: flex-start; gap: var(--cbu-space-3); padding: var(--cbu-space-4); background: var(--cbu-white); border: var(--cbu-border-width) solid var(--cbu-border-color); border-left: 4px solid var(--cbu-info); border-radius: var(--cbu-radius-lg); box-shadow: var(--cbu-shadow-lg); margin-bottom: var(--cbu-space-3); transform: translateX(100%); opacity: 0; transition: var(--cbu-transition); pointer-events: auto; } .cbu-toast.cbu-toast-show { transform: translateX(0); opacity: 1; } .cbu-toast.cbu-toast-success { border-left-color: var(--cbu-success); } .cbu-toast.cbu-toast-error { border-left-color: var(--cbu-error); } .cbu-toast.cbu-toast-warning { border-left-color: var(--cbu-warning); } .cbu-toast-icon { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; margin-top: 2px; } .cbu-toast-success .cbu-toast-icon { background: var(--cbu-success-light); color: var(--cbu-success); } .cbu-toast-error .cbu-toast-icon { background: var(--cbu-error-light); color: var(--cbu-error); } .cbu-toast-warning .cbu-toast-icon { background: var(--cbu-warning-light); color: var(--cbu-warning); } .cbu-toast-info .cbu-toast-icon { background: var(--cbu-info-light); color: var(--cbu-info); } .cbu-toast-content { flex: 1; } .cbu-toast-title { font-size: var(--cbu-font-size-sm); font-weight: var(--cbu-font-weight-semibold); color: var(--cbu-gray-900); margin: 0 0 var(--cbu-space-1) 0; } .cbu-toast-message { font-size: var(--cbu-font-size-sm); color: var(--cbu-gray-600); margin: 0; } .cbu-toast-close { background: none; border: none; padding: var(--cbu-space-1); cursor: pointer; color: var(--cbu-gray-400); transition: var(--cbu-transition-fast); } .cbu-toast-close:hover { color: var(--cbu-gray-600); } /* ========================================== MODALS ========================================== */ .cbu-modal-backdrop { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: var(--cbu-z-modal); opacity: 0; visibility: hidden; transition: var(--cbu-transition); padding: var(--cbu-space-4); } .cbu-modal-backdrop[aria-hidden="false"] { opacity: 1; visibility: visible; } .cbu-modal { background: var(--cbu-white); border-radius: var(--cbu-radius-xl); box-shadow: var(--cbu-shadow-xl); max-width: 600px; max-height: 90vh; overflow: hidden; transform: scale(0.9); transition: var(--cbu-transition); display: flex; flex-direction: column; } .cbu-modal-backdrop[aria-hidden="false"] .cbu-modal { transform: scale(1); } .cbu-modal-header { display: flex; justify-content: space-between; align-items: center; padding: var(--cbu-space-6); border-bottom: var(--cbu-border-width) solid var(--cbu-border-color); } .cbu-modal-title { font-size: var(--cbu-font-size-xl); font-weight: var(--cbu-font-weight-semibold); color: var(--cbu-gray-900); margin: 0; } .cbu-modal-close { background: none; border: none; padding: var(--cbu-space-2); cursor: pointer; color: var(--cbu-gray-400); transition: var(--cbu-transition-fast); border-radius: var(--cbu-radius); } .cbu-modal-close:hover { color: var(--cbu-gray-600); background: var(--cbu-gray-100); } .cbu-modal-content { flex: 1; padding: var(--cbu-space-6); overflow-y: auto; } .cbu-modal-footer { display: flex; justify-content: flex-end; gap: var(--cbu-space-3); padding: var(--cbu-space-6); border-top: var(--cbu-border-width) solid var(--cbu-border-color); } /* ========================================== RESPONSIVE DESIGN ========================================== */ /* Tablet and Small Desktop */ @media (max-width: 1024px) { .cbu-header { padding: var(--cbu-space-4) var(--cbu-space-6); } .cbu-header-content { flex-direction: column; align-items: flex-start; gap: var(--cbu-space-4); } .cbu-header-actions { width: 100%; justify-content: flex-end; } .cbu-status-cards { grid-template-columns: repeat(2, 1fr); } .cbu-toolbar { flex-direction: column; align-items: flex-start; gap: var(--cbu-space-4); } .cbu-toolbar-left, .cbu-toolbar-right { width: 100%; justify-content: space-between; } .cbu-search-input { width: 200px; } } /* Mobile Devices */ @media (max-width: 768px) { .care-book-ultimate-admin { margin: 0 -20px; } .cbu-header { margin: 0 0 var(--cbu-space-6) 0; border-radius: 0; } .cbu-status-cards { grid-template-columns: 1fr; } .cbu-nav-tabs { margin: 0 -20px var(--cbu-space-6) -20px; padding: 0 var(--cbu-space-4); } .cbu-nav-tab { padding: var(--cbu-space-3) var(--cbu-space-4); font-size: var(--cbu-font-size-sm); } .cbu-nav-tab .dashicons { font-size: 16px; } .cbu-tab-badge { min-width: 16px; height: 16px; font-size: 10px; } .cbu-toolbar-left, .cbu-toolbar-right { flex-direction: column; width: 100%; } .cbu-search-input { width: 100%; } .cbu-filter-controls { width: 100%; } .cbu-select { flex: 1; } .cbu-bulk-actions { width: 100%; justify-content: center; } .cbu-table-container { overflow-x: auto; -webkit-overflow-scrolling: touch; } .cbu-table { min-width: 600px; } .cbu-pagination { flex-direction: column; gap: var(--cbu-space-3); text-align: center; } .cbu-modal { margin: var(--cbu-space-4); max-width: none; } .cbu-toast-container { top: var(--cbu-space-4); right: var(--cbu-space-4); left: var(--cbu-space-4); max-width: none; } } /* Small Mobile */ @media (max-width: 480px) { .cbu-header-title h1 { font-size: var(--cbu-font-size-2xl); } .cbu-subtitle { font-size: var(--cbu-font-size-base); } .cbu-status-card { padding: var(--cbu-space-4); } .cbu-status-icon { width: 40px; height: 40px; } .cbu-nav-tabs { gap: 0; } .cbu-nav-tab { flex: 1; text-align: center; padding: var(--cbu-space-3) var(--cbu-space-2); } .cbu-nav-tab span:not(.cbu-tab-badge):not(.dashicons) { display: none; } } /* ========================================== ACCESSIBILITY ENHANCEMENTS ========================================== */ /* Focus Styles */ .cbu-nav-tab:focus, .cbu-search-input:focus, .cbu-select:focus, .cbu-checkbox-label:focus-within .cbu-checkbox-custom, .cbu-toggle-button:focus, .cbu-pagination-btn:focus { outline: none; box-shadow: 0 0 0 3px rgba(0, 115, 170, 0.1); } /* High Contrast Mode Support */ @media (prefers-contrast: high) { :root { --cbu-border-color: #000000; --cbu-border-color-hover: #000000; --cbu-gray-600: #000000; --cbu-gray-700: #000000; --cbu-gray-900: #000000; } } /* Reduced Motion Support */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .cbu-loading-spinner { animation: none; } } /* ========================================== PRINT STYLES ========================================== */ @media print { .cbu-header-actions, .cbu-toolbar, .cbu-nav-tabs, .cbu-pagination, .cbu-modal-backdrop, .cbu-toast-container, .cbu-loading-overlay { display: none !important; } .care-book-ultimate-admin { background: white !important; color: black !important; } .cbu-table-container { box-shadow: none; border: 1px solid #000; } .cbu-table th, .cbu-table td { border-bottom: 1px solid #000; } } /* ========================================== UTILITY CLASSES ========================================== */ /* Spacing Utilities */ .cbu-m-0 { margin: 0 !important; } .cbu-mt-4 { margin-top: var(--cbu-space-4) !important; } .cbu-mb-4 { margin-bottom: var(--cbu-space-4) !important; } .cbu-p-4 { padding: var(--cbu-space-4) !important; } /* Text Utilities */ .cbu-text-center { text-align: center !important; } .cbu-text-right { text-align: right !important; } .cbu-font-semibold { font-weight: var(--cbu-font-weight-semibold) !important; } .cbu-text-sm { font-size: var(--cbu-font-size-sm) !important; } /* Color Utilities */ .cbu-text-gray-600 { color: var(--cbu-gray-600) !important; } .cbu-text-primary { color: var(--cbu-primary) !important; } .cbu-text-success { color: var(--cbu-success) !important; } .cbu-text-error { color: var(--cbu-error) !important; } /* Display Utilities */ .cbu-hidden { display: none !important; } .cbu-block { display: block !important; } .cbu-flex { display: flex !important; } .cbu-grid { display: grid !important; } /* Position Utilities */ .cbu-relative { position: relative !important; } .cbu-absolute { position: absolute !important; } .cbu-fixed { position: fixed !important; } /* Flexbox Utilities */ .cbu-justify-between { justify-content: space-between !important; } .cbu-justify-center { justify-content: center !important; } .cbu-items-center { align-items: center !important; } .cbu-items-start { align-items: flex-start !important; } /* Border Utilities */ .cbu-border { border: var(--cbu-border-width) solid var(--cbu-border-color) !important; } .cbu-border-t { border-top: var(--cbu-border-width) solid var(--cbu-border-color) !important; } .cbu-rounded { border-radius: var(--cbu-radius) !important; } .cbu-rounded-lg { border-radius: var(--cbu-radius-lg) !important; } /* Shadow Utilities */ .cbu-shadow { box-shadow: var(--cbu-shadow) !important; } .cbu-shadow-md { box-shadow: var(--cbu-shadow-md) !important; } .cbu-shadow-lg { box-shadow: var(--cbu-shadow-lg) !important; }