*{box-sizing:border-box;margin:0;padding:0}:root{--primary-color:#2196f3;--primary-hover:#1976d2;--primary-dark:#1565c0;--error-color:#ff0c3e;--success-color:#4caf50;--warning-color:#ff9800;--info-color:#2196f3;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--bg-paper:#fff;--bg-default:#fafafa;--text-primary:#000000e6;--text-secondary:#0009;--font-family:"Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-size-base:16px;--line-height-base:1.5;--spacing-1:8px;--spacing-2:16px;--spacing-3:24px;--spacing-4:32px;--spacing-5:40px;--spacing-6:48px;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:.75rem;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--transition-fast:.15s ease-in-out;--transition-base:.2s ease-in-out}html,body{height:100%;font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--text-primary);background-color:var(--bg-default)}#root,#app-container{flex-direction:column;height:100%;min-height:100vh;display:flex}.app-header{width:100%;height:42px;box-shadow:var(--shadow-md);z-index:100;padding:0 var(--spacing-2);background-color:#1a2332;border-bottom:2px solid #2c3e50;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.header-left{align-items:center;display:flex}.header-logo-group{align-items:center;gap:var(--spacing-1);display:flex}.header-logo-link{align-items:center;gap:var(--spacing-1);cursor:pointer;text-decoration:none;display:inline-flex}.header-logo-evoke{width:auto;height:20px}.header-logo-by{color:#ffffff80;margin:0 2px;font-size:.6875rem;font-weight:300}.header-logo-firefly{width:auto;height:30px}.header-logo-divider{color:#ffffff4d;margin:0 calc(var(--spacing-1)/2);font-size:1.25rem;font-weight:300}.header-title,a.header-title{color:#fff;letter-spacing:.01em;font-size:.9375rem;font-weight:500;text-decoration:none}.header-right{align-items:center;gap:var(--spacing-1);display:flex}.header-divider{width:1px;height:24px;margin:0 var(--spacing-1);background-color:#fff3}.header-user{color:#ffffffe6;padding:0 var(--spacing-1);font-size:.8125rem}.credit-balance,.credit-balance-error{color:#ffffffbf;margin-left:var(--spacing-2);font-size:.75rem}.credit-balance-error{color:#ffffff8c;font-style:italic}.header-btn{border-radius:var(--radius-sm);color:#fff;cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast);background:#ffffff1a;border:1px solid #fff3;align-items:center;gap:4px;padding:5px 10px;font-size:.8125rem;display:flex}.header-btn:hover{background-color:#ffffff26;border-color:#ffffff4d}.header-btn--text{background:0 0;border:none;padding:5px 8px}.header-btn--text:hover{background-color:#ffffff1a}.header-btn .material-icons{font-size:16px}.header-nav{align-items:center;gap:4px;margin-left:16px;display:flex}.header-nav-link{color:#ffffffb3;border-radius:var(--radius-sm);transition:background-color var(--transition-fast), color var(--transition-fast);white-space:nowrap;padding:6px 12px;font-size:.8125rem;font-weight:500;text-decoration:none}.header-nav-link:hover{color:#fff;background-color:#ffffff1a}.header-nav-link--active{color:#fff;background-color:#ffffff26}.main-content{padding:var(--spacing-5);background-color:var(--bg-default);flex-grow:1;min-height:calc(100vh - 42px);overflow:auto}.page-content{background-color:var(--bg-paper);max-width:1400px;padding:var(--spacing-4);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:0 auto}.app-footer{padding:var(--spacing-2);background-color:var(--bg-paper);border-top:1px solid var(--gray-200);flex-shrink:0;justify-content:center;align-items:center;min-height:60px;display:flex;box-shadow:0 -2px 4px #0000000d}.footer-content{align-items:center;gap:var(--spacing-4);color:var(--text-secondary);font-size:.875rem;display:flex}.text-link{color:var(--primary-color);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0}.text-link:hover{text-decoration:underline}.modal{z-index:1000;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal.show{display:flex}.modal-overlay{background-color:#00000080;position:absolute;inset:0}.modal-content{background:var(--bg-paper);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:500px;max-height:90vh;position:relative;overflow:auto}.modal-header{padding:var(--spacing-3);border-bottom:1px solid var(--gray-200);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:1.25rem;font-weight:500}.modal-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;font-size:1.5rem;line-height:1}.modal-close:hover{color:var(--text-primary)}.modal-body{padding:var(--spacing-3)}.modal-body p{margin-bottom:var(--spacing-2)}.modal-body a{color:var(--primary-color)}.loading-screen,.error-screen{justify-content:center;align-items:center;gap:var(--spacing-2);background-color:var(--bg-default);flex-direction:column;height:100vh;display:flex}.spinner{border:4px solid var(--gray-200);border-top-color:var(--primary-color);border-radius:50%;width:50px;height:50px;animation:.8s linear infinite spin}.spinner-small{border-width:2px;width:20px;height:20px}.spinner-large{border-width:6px;width:80px;height:80px}@keyframes spin{to{transform:rotate(360deg)}}.error-screen .error-icon,.error-boundary .error-icon{color:var(--error-color);font-size:64px}.error-boundary{background-color:var(--bg-default);justify-content:center;align-items:center;height:100vh;display:flex}.error-boundary-content{text-align:center;padding:var(--spacing-4);background:var(--bg-paper);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);max-width:500px}.error-boundary-content h1{margin:var(--spacing-2) 0;font-size:1.5rem;font-weight:500}.error-boundary-content p{color:var(--text-secondary);margin-bottom:var(--spacing-3)}.error-details{text-align:left;margin:var(--spacing-3) 0;padding:var(--spacing-2);background:var(--gray-100);border-radius:var(--radius-md)}.error-details summary{cursor:pointer;font-weight:500}.error-details pre{margin-top:var(--spacing-1);font-size:.875rem;overflow-x:auto}.error-actions{gap:var(--spacing-2);justify-content:center;display:flex}.btn{justify-content:center;align-items:center;gap:var(--spacing-1);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast), transform var(--transition-fast);font-size:.9375rem;font-weight:500;font-family:var(--font-family);border:none;padding:10px 20px;text-decoration:none;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--primary-hover)}.btn-secondary{background-color:var(--gray-200);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background-color:var(--gray-300)}.btn:disabled{opacity:.5;cursor:not-allowed!important}.btn .material-icons{font-size:18px}.btn-sm{padding:6px 12px;font-size:.8125rem}.btn-sm .material-icons{font-size:16px}.btn-icon{border-radius:var(--radius-md);cursor:pointer;width:36px;height:36px;color:var(--text-secondary);transition:background-color var(--transition-fast), color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.btn-icon:hover{background-color:var(--gray-100);color:var(--text-primary)}.btn-icon.primary{color:var(--primary-color)}.btn-icon.primary:hover{background-color:#2196f31a}.page-header{margin-bottom:var(--spacing-4);justify-content:space-between;align-items:flex-start;display:flex}.page-header-content{flex:1}.page-header-content:has(.page-header-title-section){justify-content:space-between;align-items:flex-start;gap:var(--spacing-4);display:flex}.page-header-title-section{flex:1}.page-header-actions{align-items:center;gap:var(--spacing-2);flex-shrink:0;display:flex}.page-title{align-items:center;gap:var(--spacing-1);color:var(--text-primary);margin-bottom:var(--spacing-1);font-size:1.75rem;font-weight:500;display:flex}.page-title .material-icons{color:var(--primary-color);font-size:28px}.page-subtitle{color:var(--text-secondary);font-size:1rem}.page-actions{gap:var(--spacing-2);display:flex}.stats-grid{gap:var(--spacing-3);margin-bottom:var(--spacing-4);grid-template-columns:repeat(4,1fr);display:grid}.stat-card{align-items:center;gap:var(--spacing-2);padding:var(--spacing-3);background:var(--bg-paper);border:1px solid var(--gray-200);border-radius:var(--radius-md);display:flex}.stat-icon{border-radius:var(--radius-md);justify-content:center;align-items:center;width:48px;height:48px;display:flex}.stat-icon .material-icons{color:#fff;font-size:24px}.stat-icon.pending{background-color:var(--warning-color)}.stat-icon.in-review{background-color:var(--info-color)}.stat-icon.completed{background-color:var(--success-color)}.stat-icon.total{background-color:var(--gray-600)}.stat-content{flex-direction:column;display:flex}.stat-value{color:var(--text-primary);font-size:1.5rem;font-weight:500}.stat-label{color:var(--text-secondary);font-size:.875rem}.result-count{color:var(--text-secondary);margin-bottom:var(--spacing-2);font-size:.875rem;font-weight:500}.table-container{margin-bottom:var(--spacing-3);background:var(--bg-paper);border:1px solid var(--gray-200);border-radius:var(--radius-lg);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9375rem}.data-table th,.data-table td{padding:var(--spacing-2);text-align:left;border-bottom:1px solid var(--gray-200)}.data-table th{color:var(--text-secondary);background-color:var(--gray-50);white-space:nowrap;font-weight:500}.data-table tbody tr:hover{background-color:var(--gray-50)}.session-id{font-family:monospace;font-weight:500}.patient-info{flex-direction:column;display:flex}.patient-name{font-weight:500}.patient-id{color:var(--text-secondary);font-size:.8125rem}.report-code{color:var(--gray-700);font-family:monospace;font-size:.875rem;font-weight:500}.gender-cell{text-align:center;color:var(--text-secondary);font-weight:500}.text-muted{color:var(--gray-400);font-size:1rem}.action-buttons{gap:var(--spacing-1);justify-content:flex-start;display:flex}.expand-toggle{cursor:pointer;margin-right:var(--spacing-1);color:var(--primary-color);vertical-align:middle;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.expand-toggle:hover{color:var(--primary-dark)}.row-expanded{background-color:var(--blue-50,#e3f2fd)}.expandable-row td{padding:var(--spacing-2) var(--spacing-3);background-color:var(--gray-50);border-bottom:2px solid var(--gray-200)}.expandable-row:hover td{background-color:var(--gray-50)}.expand-loading{align-items:center;gap:var(--spacing-1);padding:var(--spacing-1) 0;color:var(--text-secondary);font-size:.875rem;display:flex}.loading-spinner-sm{border-width:2px;width:16px;height:16px}.expand-empty{color:var(--text-secondary);margin:0;font-size:.875rem;font-style:italic}.nested-reports{padding:var(--spacing-3)}.reports-grid{gap:var(--spacing-3);grid-template-columns:1fr 1fr;max-width:1200px;margin:0 auto;display:grid}.reports-column{gap:var(--spacing-2);padding:var(--spacing-2);border:1px solid var(--gray-200);border-radius:var(--radius-md,6px);background-color:#fff;flex-direction:column;display:flex}.reports-column-title{color:var(--text-primary);margin:0 0 var(--spacing-1) 0;padding-bottom:var(--spacing-1);border-bottom:2px solid var(--gray-200);font-size:.875rem;font-weight:600}.report-item{border-bottom:1px solid var(--gray-100,#f0f0f0);padding-bottom:var(--spacing-2)}.report-item:last-child{border-bottom:none;padding-bottom:0}.report-download-link{align-items:center;gap:var(--spacing-2);width:100%;padding:var(--spacing-2);border-radius:var(--radius-md,6px);text-align:left;cursor:pointer;background-color:#0000;border:none;font-family:inherit;transition:background-color .15s;display:flex}.report-download-link:hover:not(:disabled){background-color:var(--gray-50)}.report-download-link:disabled{opacity:.5;cursor:wait}.report-icon{object-fit:contain;flex-shrink:0;width:32px;height:32px}.report-label{color:var(--text-primary);font-size:.9375rem;line-height:1.4}.no-reports-column-message{color:var(--text-secondary);padding:var(--spacing-2);font-size:.875rem;font-style:italic}@media (width<=768px){.reports-grid{grid-template-columns:1fr}}.status-badge,.priority-badge{white-space:nowrap;border-radius:20px;padding:4px 12px;font-size:.8125rem;font-weight:500;display:inline-block}.status-pending{color:#856404;background-color:#fff3cd}.status-in-progress{color:#004085;background-color:#cce5ff}.status-submitted{color:#155724;background-color:#d4edda}.status-in-review{color:#004085;background-color:#cce5ff}.status-completed{color:#155724;background-color:#d4edda}.priority-high{color:#721c24;background-color:#f8d7da}.priority-normal{background-color:var(--gray-100);color:var(--gray-700)}.priority-low{color:#0c5460;background-color:#d1ecf1}.info-banner{align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);color:#1565c0;background-color:#e3f2fd;border:1px solid #90caf9;display:flex}.info-banner .material-icons{font-size:20px}.info-banner p{margin:0;font-size:.875rem}@media (width<=1200px){.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.stats-grid{grid-template-columns:1fr}.page-header{gap:var(--spacing-2);flex-direction:column}.page-actions{justify-content:flex-start;width:100%}.header-nav{display:none}}.filter-panel{background:var(--gray-50);border-radius:var(--radius-lg);padding:var(--spacing-3);margin-bottom:var(--spacing-3);border:1px solid var(--gray-200)}.filter-grid{gap:var(--spacing-2);margin-bottom:var(--spacing-2);flex-direction:column;display:flex}.filter-row{gap:var(--spacing-2);grid-template-columns:repeat(5,1fr);display:grid}.filter-field{gap:var(--spacing-1);flex-direction:column;display:flex}.filter-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em;align-items:center;gap:4px;font-size:.75rem;font-weight:500;display:flex}.filter-icon{width:16px;height:16px;color:var(--gray-400);justify-content:center;align-items:center;font-size:14px;display:flex}.filter-input{width:100%;color:var(--text-primary);background-color:var(--bg-paper);border:1px solid var(--gray-300);border-radius:var(--radius-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:.875rem;font-family:var(--font-family);padding:8px 12px}.filter-input:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #2196f31a}.filter-input::placeholder{color:var(--gray-400)}.filter-input[type=date]{cursor:pointer}.filter-actions{padding-top:var(--spacing-1);gap:12px;display:flex}@media (width<=1200px){.filter-row{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.filter-row{grid-template-columns:1fr}}.review-page{gap:var(--spacing-3);flex-direction:column;display:flex}.breadcrumb{margin-bottom:var(--spacing-1)}.breadcrumb-link{color:var(--primary-color);cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition-fast);background:0 0;border:none;align-items:center;gap:4px;margin-left:-8px;padding:4px 8px;font-size:.875rem;font-weight:500;display:inline-flex}.breadcrumb-link:hover{background-color:#2196f31a}.breadcrumb-link .material-icons{font-size:18px}.session-id-highlight{color:var(--primary-color);border-radius:var(--radius-sm);background-color:#2196f31a;padding:2px 8px;font-family:monospace;font-weight:600}.signal-chart-container{background:var(--bg-paper);border:1px solid var(--gray-200);border-radius:var(--radius-lg);min-height:700px;overflow:hidden}.navigator-container{background-color:var(--gray-50);border-top:1px solid var(--gray-200)}.navigator-container .selection{fill:var(--primary-color);fill-opacity:.2;stroke:var(--primary-color);stroke-width:1px}.navigator-container .handle{fill:var(--primary-color);stroke:var(--primary-dark)}d3fc-group{flex-direction:column;height:100%;display:flex}d3fc-group>d3fc-svg.plot-area,d3fc-group>d3fc-canvas.plot-area{flex:1}d3fc-svg.x-axis,d3fc-svg.y-axis{flex-shrink:0}.cartesian-chart .x-axis text,.cartesian-chart .y-axis text{fill:var(--text-secondary);font-size:11px}.cartesian-chart .x-axis line,.cartesian-chart .x-axis path,.cartesian-chart .y-axis line,.cartesian-chart .y-axis path{stroke:var(--gray-300)}.gridline-y{stroke:var(--gray-200);stroke-dasharray:2 2}.annotation-tooltip .annotation-note-bg{fill:#fffffff2;stroke:var(--gray-300);stroke-width:1px;rx:4px}.annotation-tooltip .annotation-note-title{fill:var(--text-primary);font-size:12px;font-weight:600}.annotation-tooltip .annotation-note-label{fill:var(--text-secondary);font-size:11px}.annotation-tooltip .annotation-connector path{stroke:var(--gray-400);stroke-width:1px}.annotation-tooltip .annotation-subject circle{fill:var(--primary-color);stroke:#fff;stroke-width:2px}.loading-container{padding:var(--spacing-6);color:var(--text-secondary);justify-content:center;align-items:center;gap:var(--spacing-2);flex-direction:column;display:flex}.loading-spinner{border:3px solid var(--gray-200);border-top-color:var(--primary-color);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}.error-banner{align-items:center;gap:var(--spacing-2);padding:var(--spacing-3);border-radius:var(--radius-md);color:#dc2626;margin-bottom:var(--spacing-3);background-color:#fef2f2;border:1px solid #fecaca;display:flex}.error-banner .material-icons{flex-shrink:0;font-size:24px}.error-banner p{flex:1;margin:0;font-size:.9375rem}.pagination{justify-content:center;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3) 0;border-top:1px solid var(--gray-200);margin-top:var(--spacing-2);display:flex}.pagination-info{color:var(--text-secondary);font-size:.875rem;font-weight:500}.empty-state{text-align:center;color:var(--text-secondary);font-size:.9375rem;padding:var(--spacing-6)!important}.recording-types{background-color:var(--gray-100);border-radius:var(--radius-sm);color:var(--gray-700);padding:4px 10px;font-family:monospace;font-size:.8125rem;font-weight:500;display:inline-block}.profile-form{gap:var(--spacing-4);flex-direction:column;display:flex}.form-section{background:var(--bg-paper);border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:var(--spacing-4)}.form-section-title{color:var(--text-primary);margin-bottom:var(--spacing-3);padding-bottom:var(--spacing-2);border-bottom:1px solid var(--gray-200);font-size:1.125rem;font-weight:500}.form-grid{gap:var(--spacing-3);margin-bottom:var(--spacing-3);grid-template-columns:repeat(2,1fr);display:grid}.form-field{gap:var(--spacing-1);flex-direction:column;display:flex}.form-label{color:var(--text-secondary);font-size:.875rem;font-weight:500}.form-label .required{color:var(--error-color)}.form-input{width:100%;color:var(--text-primary);background-color:var(--bg-paper);border:1px solid var(--gray-300);border-radius:var(--radius-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:.9375rem;font-family:var(--font-family);padding:10px 12px}.form-input:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #2196f31a}.form-input:disabled{background-color:var(--gray-50);color:var(--text-secondary);cursor:not-allowed}.form-input--readonly{background-color:var(--gray-50);border-color:var(--gray-200)}.form-help{color:var(--text-secondary);margin-top:4px;font-size:.8125rem}.info-grid{gap:var(--spacing-3);grid-template-columns:repeat(3,1fr);display:grid}.info-item{gap:var(--spacing-1);flex-direction:column;display:flex}.info-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em;font-size:.75rem;font-weight:500}.info-value{color:var(--text-primary);font-size:.9375rem;font-weight:500}.form-actions{gap:var(--spacing-2);padding-top:var(--spacing-2);justify-content:flex-start;display:flex}.success-banner{align-items:center;gap:var(--spacing-2);padding:var(--spacing-3);border-radius:var(--radius-md);color:#15803d;margin-bottom:var(--spacing-3);background-color:#f0fdf4;border:1px solid #86efac;display:flex}.success-banner .material-icons{flex-shrink:0;font-size:24px}.success-banner p{flex:1;margin:0;font-size:.9375rem}@media (width<=768px){.form-grid,.info-grid{grid-template-columns:1fr}}.edit-phi-modal-loading{text-align:center;padding:2rem}.admin-form{flex-direction:column;display:flex}.admin-form-row{gap:16px;display:flex}.admin-form-row .admin-form-group{flex:1}.admin-form-group{margin-bottom:20px}.admin-form-group label{color:var(--gray-700,#334155);margin-bottom:6px;font-size:.875rem;font-weight:500;display:block}.admin-form-actions{gap:12px;margin-top:24px;display:flex}
