:root{--primary: #4F46E5;--primary-hover: #4338CA;--primary-light: #EEF2FF;--secondary: #64748B;--success: #059669;--warning: #D97706;--danger: #DC2626;--bg-primary: #FAFAFA;--bg-secondary: #FFFFFF;--bg-tertiary: #F3F4F6;--text-primary: #1E293B;--text-secondary: #64748B;--text-tertiary: #94A3B8;--border: #E2E8F0;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--transition: .25s cubic-bezier(.4, 0, .2, 1)}body.dark{--primary: #818CF8;--primary-hover: #6366F1;--primary-light: #312E81;--secondary: #94A3B8;--success: #34D399;--warning: #FBBF24;--danger: #F87171;--bg-primary: #0F172A;--bg-secondary: #1E293B;--bg-tertiary: #334155;--text-primary: #F1F5F9;--text-secondary: #94A3B8;--text-tertiary: #64748B;--border: #334155;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Plus Jakarta Sans,-apple-system,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Crimson Pro,serif;font-weight:600;line-height:1.2}.card{background:var(--bg-secondary);border-radius:12px;padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition);font-family:inherit}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.btn-primary{background:var(--primary);color:#fff}.btn.btn-primary:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px)}.btn.btn-secondary{background:var(--secondary);color:#fff}.btn.btn-success{background:var(--success);color:#fff}.btn.btn-danger{background:var(--danger);color:#fff}.btn.btn-outline{background:transparent;border:1.5px solid var(--border);color:var(--text-primary)}.btn.btn-outline:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.btn.btn-sm{padding:6px 12px;font-size:13px}.btn.btn-block{width:100%}.btn.btn-icon{padding:10px}.btn.btn-link{background:none;border:none;color:var(--primary);padding:8px;text-decoration:underline}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:500;font-size:14px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:12px 16px;border:1.5px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;background:var(--bg-secondary);color:var(--text-primary);transition:all var(--transition)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51a}.form-group select{cursor:pointer}.form-group select option{background:var(--bg-secondary);color:var(--text-primary)}.form-group textarea{resize:vertical;min-height:100px}.form-group .form-hint{margin-top:6px;font-size:12px;color:var(--text-tertiary)}.badge{display:inline-flex;padding:4px 12px;border-radius:6px;font-size:12px;font-weight:500}.badge.badge-planned{background:#dbeafe;color:#1e40af}.badge.badge-recording{background:#fef3c7;color:#92400e}.badge.badge-complete{background:#d1fae5;color:#065f46}.badge.badge-canceled{background:#fee2e2;color:#991b1b}.badge.badge-admin{background:#e0e7ff;color:#3730a3}.badge.badge-clinician{background:#ddd6fe;color:#5b21b6}.badge.badge-viewer{background:#e0e7ff;color:#4338ca}.alert{padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px}.alert.alert-success{background:#d1fae5;color:#065f46;border:1px solid #10B981}.alert.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #EF4444}.alert.alert-info{background:#dbeafe;color:#1e40af;border:1px solid #3B82F6}.modal{display:none;position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;align-items:center;justify-content:center}.modal.active{display:flex}.modal .modal-content{background:var(--bg-secondary);border-radius:16px;padding:32px;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal .modal-wide{max-width:900px}.modal .modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.modal .modal-header .modal-title{font-size:24px}.modal .modal-header .close-btn{background:none;border:none;font-size:28px;cursor:pointer;color:var(--text-secondary);padding:0;width:32px;height:32px;border-radius:6px}.modal .modal-header .close-btn:hover{background:var(--bg-tertiary)}.modal .modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.spinner{border:3px solid var(--border);border-top:3px solid var(--primary);border-radius:50%;width:24px;height:24px;animation:spin 1s linear infinite}.loading-container{display:flex;align-items:center;gap:8px}.loading-container .spinner{width:16px;height:16px;border-width:2px}.loading-state,.empty-state{text-align:center;padding:60px 20px;color:var(--text-secondary)}.table-container{overflow-x:auto}.table-container table{width:100%;border-collapse:collapse}.table-container table th,.table-container table td{padding:12px;text-align:left;border-bottom:1px solid var(--border)}.table-container table th{font-weight:600;background:var(--bg-tertiary)}.table-container table tr:hover{background:var(--bg-tertiary)}.actions{display:flex;gap:8px;flex-wrap:wrap}.mono{font-family:Courier New,monospace;font-size:13px;background:var(--bg-tertiary);padding:2px 6px;border-radius:4px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
