:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body[data-theme=light],body:not([data-theme]){--bg-primary: #ffffff;--bg-secondary: #f7f8fa;--bg-hover: #e9ecef;--text-primary: #1a1a1a;--text-secondary: #6c757d;--border-color: #dee2e6;--bg-content: #f3f4f6;--bg-surface: #ffffff;--bg-surface-alt: #f9fafb;--bg-surface-hover: #f3f4f6;--border-default: #e5e7eb;--border-input: #d1d5db;--text-heading: #1f2937;--text-body: #374151;--text-muted: #6b7280;--text-faint: #9ca3af;--bg-input: #ffffff;--bg-disabled: #f3f4f6}body[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--bg-hover: #3a3a3a;--text-primary: #e9ecef;--text-secondary: #adb5bd;--border-color: #495057;--bg-content: #1e1e1e;--bg-surface: #252525;--bg-surface-alt: #2d2d2d;--bg-surface-hover: #333333;--border-default: #3d3d3d;--border-input: #555555;--text-heading: #f0f0f0;--text-body: #d4d4d4;--text-muted: #8b8b8b;--text-faint: #6b6b6b;--bg-input: #2a2a2a;--bg-disabled: #333333}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg-primary);color:var(--text-primary);transition:background-color .3s,color .3s}#root{width:100%;height:100vh}a{color:#667eea;text-decoration:none}a:hover{text-decoration:underline}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2)}.login-box{background:var(--bg-primary);border-radius:12px;box-shadow:0 10px 40px #0003;padding:40px;width:100%;max-width:450px;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:30px}.login-logo{width:80px;height:80px;margin-bottom:15px}.login-header h1{color:var(--text-primary);font-size:28px;margin:0 0 8px}.login-header p{color:var(--text-secondary);font-size:16px;margin:0}.login-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:var(--text-primary);font-size:14px;font-weight:600}.form-group input{padding:12px 16px;border:1px solid var(--border-color);border-radius:6px;font-size:14px;background:var(--bg-secondary);color:var(--text-primary);transition:all .2s}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.error-message{color:#ef4444;background:#ef44441a;padding:12px;border-radius:6px;font-size:14px;border:1px solid rgba(239,68,68,.2)}.login-button{padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;margin-top:10px}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 15px #667eea66}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:var(--bg-primary);border-bottom:1px solid var(--border-color);box-shadow:0 2px 4px #0000000d}.topbar-left{display:flex;align-items:center;gap:12px;flex:1}.topbar-logo{width:40px;height:40px}.topbar-title{color:var(--text-primary);font-size:20px;font-weight:600;margin:0}.topbar-center{flex:2;display:flex;justify-content:center}.topbar-server-url{display:inline-flex;align-items:center;gap:8px;background:var(--bg-secondary);padding:6px 14px;border-radius:20px;border:1px solid var(--border-color);color:var(--text-secondary);font-size:13px;max-width:400px}.topbar-server-url svg{flex-shrink:0;color:#10b981}.server-url-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-right{display:flex;align-items:center;gap:12px;flex:1;justify-content:flex-end}.topbar-button{padding:8px 16px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.topbar-button:hover{background:var(--bg-hover);border-color:#667eea}.topbar-button:active{transform:scale(.98)}@media(max-width:768px){.topbar{padding:10px 16px}.topbar-center{display:none}.topbar-title{font-size:16px}}.tab-navigation{display:flex;align-items:center;justify-content:space-between;background:var(--bg-surface);border-bottom:1px solid var(--border-default);padding:0 24px;gap:16px}.tab-list{display:flex;gap:4px;overflow-x:auto}.tab-button{background:transparent;border:none;padding:16px 20px;font-size:14px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease;white-space:nowrap}.tab-button:hover{color:var(--text-body);background:var(--bg-surface-alt)}.tab-button.active{color:#3b82f6;border-bottom-color:#3b82f6}.calendar-view-button{background:#3b82f6;color:#fff;border:none;padding:12px 24px;font-size:14px;font-weight:600;border-radius:6px;cursor:pointer;transition:background .2s ease;white-space:nowrap;flex-shrink:0}.calendar-view-button:hover{background:#2563eb}@media(max-width:1024px){.tab-navigation{padding:0 16px}.tab-button{padding:12px 14px;font-size:13px}.calendar-view-button{padding:10px 16px;font-size:13px}}@media(max-width:768px){.tab-navigation{flex-direction:column;padding:12px 16px;gap:12px}.tab-list{width:100%;justify-content:flex-start}.calendar-view-button{width:100%}}.calendar-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.calendar-controls{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.calendar-timezone{margin-left:auto}.calendar-timezone-select{padding:8px 12px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.calendar-timezone-select:hover{border-color:#667eea}.calendar-timezone-select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.calendar-btn{padding:8px 16px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.calendar-btn:hover{background:var(--bg-hover);border-color:#667eea}.calendar-nav{display:flex;gap:4px}.calendar-btn-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s;font-size:16px;padding:0}.calendar-btn-icon:hover{background:var(--bg-hover);border-color:#667eea}.calendar-date-range{font-size:18px;font-weight:600;color:var(--text-primary)}.calendar-month-picker-container{position:relative}.calendar-month-picker-btn{display:flex;align-items:center;gap:6px}.calendar-month-picker-dropdown{position:absolute;top:100%;left:0;margin-top:4px;display:flex;gap:8px;padding:12px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:9999}.calendar-month-select,.calendar-year-select{padding:8px 12px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.calendar-month-select:hover,.calendar-year-select:hover{border-color:#667eea}.calendar-month-select:focus,.calendar-year-select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.calendar-content{flex:1;overflow:auto;background:var(--bg-primary)}.calendar-daily,.calendar-day-column{display:flex;flex-direction:column;height:100%}.calendar-sticky-header{position:sticky;top:0;z-index:10;background:var(--bg-secondary)}.calendar-day-header{padding:16px 24px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.calendar-day-date{font-size:16px;font-weight:600;color:var(--text-primary)}.calendar-hours{position:relative;flex:1}.calendar-hours-grid{display:flex;flex-direction:column}.calendar-hour-row{display:flex;border-bottom:1px solid var(--border-color);height:60px}.calendar-hour-label{width:80px;padding:8px 12px;font-size:12px;color:var(--text-secondary);text-align:right;border-right:1px solid var(--border-color);flex-shrink:0}.calendar-hour-slot{flex:1}.calendar-events-overlay{position:absolute;inset:0;pointer-events:none}.calendar-events-overlay>*{pointer-events:auto}.calendar-weekly{display:flex;flex-direction:column;height:100%}.calendar-week-header{display:grid;grid-template-columns:80px repeat(7,1fr);border-bottom:2px solid var(--border-color);background:var(--bg-secondary)}.calendar-time-column-header{border-right:1px solid var(--border-color)}.calendar-day-header{padding:12px;text-align:center;border-right:1px solid var(--border-color)}.calendar-day-name{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase}.calendar-day-number{font-size:20px;font-weight:700;color:var(--text-primary);margin-top:4px}.calendar-week-content{position:relative;flex:1}.calendar-week-grid{display:flex;flex-direction:column}.calendar-week-row{display:grid;grid-template-columns:80px repeat(7,1fr);border-bottom:1px solid var(--border-color);height:60px}.calendar-week-cell{border-right:1px solid var(--border-color)}.calendar-week-events-overlay{position:absolute;inset:0;pointer-events:none}.calendar-week-day-events{position:absolute;top:0;bottom:0;pointer-events:none}.calendar-week-day-events>*{pointer-events:auto}.calendar-monthly{display:flex;flex-direction:column;height:100%}.calendar-month-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.calendar-month-day-name{padding:12px;text-align:center;font-size:14px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;border-right:1px solid var(--border-color)}.calendar-month-day-name:last-child{border-right:none}.calendar-month-grid{flex:1;display:flex;flex-direction:column}.calendar-month-row{flex:1;display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--border-color)}.calendar-month-row:last-child{border-bottom:none}.calendar-month-cell{padding:8px;border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden;min-height:100px;background:var(--bg-primary)}.calendar-month-cell:last-child{border-right:none}.calendar-month-cell-other{background:var(--bg-secondary);opacity:.5}.calendar-month-cell-today{background:#667eea0d}.calendar-month-cell-today .calendar-month-date{background:#667eea;color:#fff}.calendar-month-date{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.calendar-month-events{display:flex;flex-direction:column;gap:2px;overflow:hidden}.calendar-event{padding:4px 8px;background:#667eea;color:#fff;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s;overflow:hidden}.calendar-event:hover{background:#5568d3;box-shadow:0 2px 8px #0003;z-index:10}.calendar-event-timed{position:absolute;padding:6px 8px;border-left:3px solid #5568d3;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;overflow-y:auto}.calendar-event-week{padding:4px 6px;margin:0;width:100%}.calendar-event-small{padding:2px 4px;font-size:11px;white-space:nowrap;text-overflow:ellipsis}.calendar-event-month{padding:2px 6px;font-size:11px;white-space:nowrap;text-overflow:ellipsis}.calendar-event-time{font-size:10px;opacity:.95;margin-bottom:2px;white-space:nowrap}.calendar-event-title{font-weight:600;font-size:13px;line-height:1.3;word-break:break-word}.calendar-event-location{font-size:11px;opacity:.9;margin-top:2px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.calendar-event-more{font-size:11px;color:var(--text-secondary);padding:2px 6px;text-align:center}.calendar-all-day-section{display:flex;align-items:stretch;border-bottom:2px solid var(--border-color);background:var(--bg-secondary);min-height:40px;flex-shrink:0}.calendar-all-day-label{width:80px;padding:12px 12px 8px;font-size:12px;color:var(--text-secondary);text-align:right;border-right:1px solid var(--border-color);flex-shrink:0;display:flex;align-items:flex-start;justify-content:flex-end}.calendar-all-day-events{flex:1;display:flex;flex-wrap:wrap;gap:4px;padding:6px 8px;align-content:flex-start}.calendar-event-all-day{background:#667eea;color:#fff;padding:4px 12px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s;white-space:nowrap}.calendar-event-all-day:hover{background:#5568d3;box-shadow:0 2px 8px #0003}.calendar-event-all-day .calendar-event-title{font-weight:600;font-size:12px}.calendar-event-all-day .calendar-event-location{font-size:10px;opacity:.9;margin-top:2px}.calendar-week-all-day-row{display:grid;grid-template-columns:80px repeat(7,1fr);border-bottom:2px solid var(--border-color);background:var(--bg-secondary);min-height:40px;flex-shrink:0}.calendar-week-all-day-row .calendar-all-day-label{align-items:flex-start;padding-top:10px}.calendar-week-all-day-cell{border-right:1px solid var(--border-color);padding:4px;display:flex;flex-direction:column;gap:2px;min-height:32px}.calendar-week-all-day-cell:last-child{border-right:none}.calendar-week-all-day-cell .calendar-event-all-day{padding:2px 6px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-backdrop{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--bg-surface);border-radius:8px;box-shadow:0 4px 6px #0000001a;min-width:400px;max-width:600px;max-height:80vh;overflow-y:auto}.modal-large{max-width:900px;min-width:700px}.modal-xlarge{max-width:1200px;min-width:900px;width:90vw}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--border-default)}.modal-header h2{margin:0;font-size:1.5rem;color:var(--text-heading)}.modal-close{background:none;border:none;font-size:2rem;color:var(--text-muted);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px}.modal-close:hover{background-color:var(--bg-surface-hover);color:var(--text-heading)}.modal-body{padding:20px}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-weight:500;color:var(--text-body)}.form-group input,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--border-input);border-radius:4px;font-size:14px;box-sizing:border-box;background:var(--bg-input);color:var(--text-body)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-group textarea{min-height:80px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border-default)}.btn{padding:8px 16px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:1px solid transparent}.btn-primary{background-color:#3b82f6;color:#fff;border-color:#3b82f6}.btn-primary:hover{background-color:#2563eb;border-color:#2563eb}.btn-primary:disabled{background-color:#9ca3af;border-color:#9ca3af;cursor:not-allowed}.btn-secondary{background-color:var(--bg-surface);color:var(--text-body);border-color:var(--border-input)}.btn-secondary:hover{background-color:var(--bg-surface-alt);border-color:var(--text-faint)}.timezone-hint{font-weight:400;font-size:12px;color:var(--text-muted)}.form-group-checkbox{display:flex;align-items:center;margin-bottom:16px}.form-group-checkbox input[type=checkbox]{width:18px;height:18px;margin-right:10px;cursor:pointer;flex-shrink:0}.form-group-checkbox label{margin-bottom:0;cursor:pointer}.json-editor-container{border:1px solid var(--border-input);border-radius:4px;margin-bottom:16px;overflow:hidden}.json-editor-header{display:flex;align-items:center;padding:10px 12px;background-color:var(--bg-surface-alt);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.json-editor-header:hover{background-color:var(--bg-surface-hover)}.json-editor-toggle{margin-right:8px;color:var(--text-muted);font-size:12px;transition:transform .2s}.json-editor-label{flex:1;font-weight:500;color:var(--text-body);margin:0;cursor:pointer}.json-error-indicator{color:#ef4444;font-size:18px;margin-left:8px}.json-editor-content{padding:12px;background-color:var(--bg-surface)}.json-editor-help{font-size:12px;color:var(--text-muted);margin-bottom:8px;font-style:italic}.json-editor-textarea{width:100%;padding:8px 12px;border:1px solid var(--border-input);border-radius:4px;font-family:Courier New,monospace;font-size:13px;line-height:1.5;resize:vertical;box-sizing:border-box;background-color:var(--bg-surface-alt);color:var(--text-body)}.json-editor-textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;background-color:var(--bg-input)}.json-editor-textarea.json-editor-error{border-color:#ef4444;background-color:#fef2f2}.json-editor-textarea.json-editor-error:focus{border-color:#ef4444;box-shadow:0 0 0 3px #ef44441a}.json-error-message{margin-top:6px;font-size:13px;color:#ef4444;font-family:Courier New,monospace}.timestamp-group{margin-top:24px;padding-top:16px;border-top:1px solid var(--border-default)}.timestamp-group h3{font-size:14px;font-weight:600;color:var(--text-muted);margin:0 0 12px;text-transform:uppercase;letter-spacing:.5px}.timestamp-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.timestamp-field{margin-bottom:0}.timestamp-field label{display:block;margin-bottom:6px;font-weight:500;color:var(--text-muted);font-size:13px}.timestamp-field input{width:100%;padding:8px 12px;border:1px solid var(--border-input);border-radius:4px;font-size:13px;background-color:var(--bg-surface-alt);color:var(--text-muted);box-sizing:border-box;font-family:Courier New,monospace}.alert-modal{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 0}.alert-icon{margin-bottom:16px}.alert-modal-error .alert-icon{color:#dc2626}.alert-modal-warning .alert-icon{color:#d97706}.alert-modal-info .alert-icon{color:#2563eb}.alert-modal-success .alert-icon{color:#16a34a}.alert-message{font-size:15px;color:var(--text-body);margin:0 0 24px;line-height:1.5;word-break:break-word}.alert-actions{display:flex;gap:12px;width:100%;justify-content:center}.btn-alert{color:#fff;border:none;padding:10px 32px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s}.btn-error{background:#dc2626}.btn-error:hover{background:#b91c1c}.btn-warning{background:#d97706}.btn-warning:hover{background:#b45309}.btn-info{background:#2563eb}.btn-info:hover{background:#1d4ed8}.btn-success{background:#16a34a}.btn-success:hover{background:#15803d}.loading-text{padding:12px;color:var(--text-secondary, #666);font-style:italic}.principal-selector{display:flex;flex-direction:column;gap:12px}.selected-principals{display:flex;flex-direction:column;gap:8px;max-height:200px;overflow-y:auto}.selected-principal-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background-color:#f0f7ff;border:1px solid #c5ddf8;border-radius:4px;transition:all .2s ease}.selected-principal-item:hover{background-color:#e3f0ff;border-color:#a8cef1}.selected-principal-item .principal-name{font-weight:500;color:var(--text-primary, #333)}.remove-principal-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;transition:all .2s ease}.remove-principal-btn:hover{background-color:#fee2e2;color:#dc2626}.remove-principal-btn svg{flex-shrink:0}.principal-search-container{position:relative}.principal-search-input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:4px;font-size:14px;box-sizing:border-box;transition:border-color .2s ease,box-shadow .2s ease}.principal-search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.principal-search-input::placeholder{color:#9ca3af}.principal-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:#fff;border:1px solid #d1d5db;border-top:none;border-radius:0 0 4px 4px;box-shadow:0 4px 6px #0000001a;z-index:9999}.dropdown-item{padding:10px 12px;cursor:pointer;transition:background-color .15s ease;color:var(--text-primary, #333)}.dropdown-item:hover{background-color:#f3f4f6}.dropdown-item:active{background-color:#e5e7eb}.help-text{font-size:.85em;color:var(--text-secondary, #666)}[data-theme=dark] .selected-principal-item{background-color:#1e3a5f;border-color:#2d4a6f}[data-theme=dark] .selected-principal-item:hover{background-color:#254b73;border-color:#3d5a7f}[data-theme=dark] .principal-search-input{background-color:var(--bg-secondary, #2d2d2d);border-color:var(--border-color, #444);color:var(--text-primary, #fff)}[data-theme=dark] .principal-dropdown{background-color:var(--bg-secondary, #2d2d2d);border-color:var(--border-color, #444)}[data-theme=dark] .dropdown-item:hover{background-color:#3d3d3d}[data-theme=dark] .remove-principal-btn:hover{background-color:#4a1c1c}.principal-search{display:flex;flex-direction:column;gap:20px}.search-form{padding-bottom:15px;border-bottom:1px solid var(--border-color, #e0e0e0)}.search-input-group{display:flex;gap:10px}.search-input-group input{flex:1}.search-results{min-height:200px;max-height:400px;overflow-y:auto}.search-status{padding:20px;text-align:center;color:var(--text-secondary, #666);font-style:italic}.results-header{padding:10px 0;font-weight:600;color:var(--text-primary, #333);border-bottom:1px solid var(--border-color, #e0e0e0);margin-bottom:10px}.results-list{display:flex;flex-direction:column;gap:5px}.result-item{padding:12px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;cursor:pointer;transition:all .2s ease}.result-item:hover{background-color:var(--hover-bg, #f5f5f5);border-color:var(--primary-color, #007bff);transform:translate(2px)}.result-name{font-weight:600;color:var(--text-primary, #333);margin-bottom:4px}.result-details{display:flex;gap:15px;font-size:.85em;color:var(--text-secondary, #666)}.result-email{color:var(--primary-color, #007bff)}.result-id{font-family:monospace;color:var(--text-tertiary, #999)}.find-availability,.availability-form{display:flex;flex-direction:column;gap:20px}.form-section h3{margin:0 0 15px;font-size:1em;font-weight:600;color:var(--text-primary, #333);border-bottom:1px solid var(--border-color, #e0e0e0);padding-bottom:8px;display:flex;justify-content:space-between;align-items:center}.selection-actions{font-size:.85em;font-weight:400}.selection-actions .btn-link{background:none;border:none;color:var(--primary-color, #007bff);cursor:pointer;padding:0;font-size:.9em}.selection-actions .btn-link:hover{text-decoration:underline}.action-separator{margin:0 8px;color:var(--text-secondary, #666)}.loading-calendars{padding:20px;text-align:center;color:var(--text-secondary, #666);font-style:italic}.calendars-by-principal{display:flex;flex-direction:column;gap:12px;max-height:300px;overflow-y:auto}.principal-calendars-group{border:1px solid var(--border-color, #e0e0e0);border-radius:4px;background-color:#fff;overflow:hidden}.principal-group-header{padding:8px 12px;background-color:var(--primary-color, #007bff);color:#fff;font-weight:600;font-size:.9em}.calendars-list{padding:10px;display:flex;flex-direction:column;gap:4px}.calendar-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 0}.calendar-checkbox input[type=checkbox]{cursor:pointer;width:16px;height:16px}.calendar-name{font-size:.9em;color:var(--text-primary, #333)}.search-results{margin-top:20px;padding:15px;border:2px solid var(--primary-color, #007bff);border-radius:4px;background-color:var(--results-bg, #f0f8ff)}.search-results h3{margin:0 0 15px;font-size:1.1em;font-weight:600;color:var(--primary-color, #007bff)}.no-results{padding:20px;text-align:center;color:var(--text-secondary, #666);font-style:italic}.slots-list{display:flex;flex-direction:column;gap:10px;max-height:400px;overflow-y:auto}.slot-item{padding:12px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;background-color:#fff;display:flex;gap:15px;align-items:flex-start}.slot-time{font-weight:600;color:var(--primary-color, #007bff);min-width:150px;padding:4px 8px;background-color:#e3f2fd;border-radius:4px;font-size:.9em}.slot-principals{flex:1;display:flex;flex-direction:column;gap:8px}.slot-principal{display:flex;flex-direction:column;gap:4px}.slot-principal .principal-name{font-weight:600;color:var(--text-primary, #333);font-size:.9em}.calendar-chips{display:flex;flex-wrap:wrap;gap:6px;margin-left:10px}.calendar-chip{display:inline-block;padding:4px 10px;background-color:var(--success-bg, #d4edda);color:var(--success-color, #155724);border-radius:12px;font-size:.85em;border:1px solid var(--success-color, #28a745)}.calendar-chip.clickable{cursor:pointer;transition:all .2s ease}.calendar-chip.clickable:hover{background-color:var(--success-color, #28a745);color:#fff;transform:scale(1.05)}.principals-list{display:flex;flex-direction:column;gap:10px;max-height:300px;overflow-y:auto}.principal-item{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;background-color:#fff}.principal-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:600}.principal-checkbox input[type=checkbox]{cursor:pointer;width:18px;height:18px}.delete-confirm-modal{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 0}.delete-warning-icon{color:#dc2626;margin-bottom:16px}.delete-message{font-size:16px;color:var(--text-body);margin:0 0 8px}.entity-name{font-size:14px;font-weight:600;color:var(--text-heading);background:var(--bg-surface-hover);padding:8px 16px;border-radius:4px;margin:8px 0;word-break:break-all}.delete-warning{font-size:13px;color:var(--text-muted);margin:8px 0 24px}.delete-actions{display:flex;gap:12px;width:100%;justify-content:center}.delete-actions .btn-cancel{background:var(--bg-surface);color:var(--text-body);border:1px solid var(--border-input);padding:10px 24px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.delete-actions .btn-cancel:hover{background:var(--bg-surface-hover);border-color:var(--text-faint)}.delete-actions .btn-delete{background:#dc2626;color:#fff;border:none;padding:10px 24px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s}.delete-actions .btn-delete:hover{background:#b91c1c}.manage-availability{display:flex;flex-direction:column;gap:20px;min-height:400px}.loading{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-secondary, #666)}.availability-header{display:flex;flex-direction:column;gap:12px;padding-bottom:15px;border-bottom:1px solid var(--border-color, #e0e0e0)}.availability-header-actions{display:flex;align-items:center;justify-content:space-between;gap:15px}.availability-description{margin:0;color:var(--text-secondary, #666);font-size:.9em}.timezone-selector{display:flex;align-items:center;gap:8px}.timezone-selector label{font-size:.85em;color:var(--text-secondary, #666);white-space:nowrap}.timezone-selector select{padding:6px 10px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;font-size:.85em;background-color:#fff;color:var(--text-primary, #333);cursor:pointer}.timezone-selector select:focus{outline:none;border-color:var(--primary-color, #007bff)}.no-calendars,.no-records{padding:40px 20px;text-align:center;color:var(--text-secondary, #666);font-style:italic;background-color:var(--section-bg, #fafafa);border-radius:4px;border:1px dashed var(--border-color, #e0e0e0)}.availability-list{display:flex;flex-direction:column;gap:10px;max-height:400px;overflow-y:auto}.availability-item{display:flex;justify-content:space-between;align-items:center;padding:15px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;background-color:#fff;transition:all .2s ease}.availability-item:hover{border-color:var(--primary-color, #007bff);box-shadow:0 2px 4px #007bff1a}.availability-item.inactive{opacity:.6;background-color:var(--section-bg, #fafafa)}.availability-info{display:flex;flex-direction:column;gap:6px;flex:1}.availability-name{font-weight:600;color:var(--text-primary, #333);font-size:1em;display:flex;align-items:center;gap:8px}.inactive-badge{font-size:.75em;font-weight:400;color:var(--text-secondary, #666);background-color:var(--bg-secondary, #e9ecef);padding:2px 8px;border-radius:3px}.availability-details{display:flex;align-items:center;gap:8px;font-size:.85em;color:var(--text-secondary, #666);flex-wrap:wrap}.detail-calendar{color:var(--primary-color, #007bff);font-weight:500}.detail-separator{color:var(--border-color, #e0e0e0)}.detail-time{font-family:monospace}.detail-days{color:var(--text-primary, #333)}.availability-actions{display:flex;gap:8px}.availability-form{display:flex;flex-direction:column;gap:20px}.form-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:15px;border-bottom:1px solid var(--border-color, #e0e0e0)}.form-header h3{margin:0;font-size:1.1em;color:var(--text-primary, #333)}.form-section{padding:15px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;background-color:var(--section-bg, #fafafa)}.form-section h4{margin:0 0 15px;font-size:.95em;font-weight:600;color:var(--text-primary, #333)}.form-row{display:flex;gap:15px}.form-row .form-group{flex:1}.form-group{margin-bottom:15px}.form-group:last-child{margin-bottom:0}.form-group label{display:block;margin-bottom:6px;font-weight:500;font-size:.9em;color:var(--text-primary, #333)}.form-group input[type=text],.form-group input[type=time],.form-group select{width:100%;padding:8px 12px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;font-size:.95em;background-color:#fff;color:var(--text-primary, #333);transition:border-color .2s ease;box-sizing:border-box}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--primary-color, #007bff);box-shadow:0 0 0 2px #007bff1a}.days-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:12px}.day-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;padding:8px 12px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;background-color:#fff;transition:all .2s ease}.day-checkbox:hover{border-color:var(--primary-color, #007bff)}.day-checkbox input[type=checkbox]{cursor:pointer;width:16px;height:16px}.day-checkbox input[type=checkbox]:checked+.day-name{color:var(--primary-color, #007bff);font-weight:500}.day-name{font-size:.9em;color:var(--text-primary, #333)}.day-shortcuts{display:flex;gap:12px;flex-wrap:wrap}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.95em}.checkbox-label input[type=checkbox]{cursor:pointer;width:18px;height:18px}.btn{padding:8px 16px;border:none;border-radius:4px;font-size:.9em;cursor:pointer;transition:all .2s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--primary-color, #007bff);color:#fff}.btn-primary:hover:not(:disabled){background-color:#0056b3}.btn-secondary{background-color:var(--bg-secondary, #e9ecef);color:var(--text-primary, #333)}.btn-secondary:hover:not(:disabled){background-color:#dee2e6}.btn-danger{background-color:#dc3545;color:#fff}.btn-danger:hover:not(:disabled){background-color:#c82333}.btn-small{padding:5px 10px;font-size:.85em}.btn-link{background:none;color:var(--primary-color, #007bff);padding:4px 8px;text-decoration:underline}.btn-link:hover{color:#0056b3}.btn-icon{background:#fff;border:1px solid var(--border-color, #d1d5db);padding:8px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary, #6b7280)}.btn-icon:hover:not(:disabled){background:var(--bg-secondary, #f3f4f6);border-color:#9ca3af;color:var(--text-primary, #374151)}.btn-icon svg.spinning{animation:ma-spin 1s linear infinite}@keyframes ma-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:15px;border-top:1px solid var(--border-color, #e0e0e0)}[data-theme=dark] .availability-item{background-color:var(--bg-secondary, #2d2d2d)}[data-theme=dark] .form-group input,[data-theme=dark] .form-group select{background-color:var(--bg-secondary, #2d2d2d);color:var(--text-primary, #fff)}[data-theme=dark] .day-checkbox{background-color:var(--bg-secondary, #2d2d2d)}[data-theme=dark] .timezone-selector select{background-color:var(--bg-secondary, #2d2d2d);color:var(--text-primary, #fff)}.manage-calendar-maps{display:flex;flex-direction:column;gap:20px;min-height:400px}.maps-header{padding-bottom:15px;border-bottom:1px solid var(--border-color, #e0e0e0)}.maps-description{margin:0;color:var(--text-secondary, #666);font-size:.9em;line-height:1.5}.section-label{display:block;font-weight:600;font-size:.9em;color:var(--text-primary, #333);margin-bottom:8px}.view-mode-section{padding:15px;background-color:var(--section-bg, #fafafa);border:1px solid var(--border-color, #e0e0e0);border-radius:4px}.view-mode-toggle{display:flex;gap:24px}.radio-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.95em;color:var(--text-primary, #333)}.radio-label input[type=radio]{cursor:pointer;width:18px;height:18px;accent-color:var(--primary-color, #007bff)}.radio-label input[type=radio]:checked+span{color:var(--primary-color, #007bff);font-weight:500}.primary-selector{display:flex;flex-direction:column}.selector-dropdown{width:100%;padding:10px 12px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;font-size:.95em;background-color:#fff;color:var(--text-primary, #333);cursor:pointer;transition:border-color .2s ease}.selector-dropdown:focus{outline:none;border-color:var(--primary-color, #007bff);box-shadow:0 0 0 2px #007bff1a}.mapped-items-section{display:flex;flex-direction:column;gap:15px;padding:15px;background-color:var(--section-bg, #fafafa);border:1px solid var(--border-color, #e0e0e0);border-radius:4px}.mapped-items-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.mapped-items-header h4{margin:0;font-size:.95em;font-weight:600;color:var(--text-primary, #333)}.manage-calendar-maps .btn-icon{background:#fff;border:1px solid var(--border-color, #d1d5db);padding:6px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary, #6b7280)}.manage-calendar-maps .btn-icon:hover:not(:disabled){background:var(--bg-secondary, #f3f4f6);border-color:#9ca3af;color:var(--text-primary, #374151)}.manage-calendar-maps .btn-icon svg.spinning{animation:mcm-spin 1s linear infinite}@keyframes mcm-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mapped-items-list{display:flex;flex-direction:column;gap:8px;max-height:200px;overflow-y:auto}.mapped-item{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;background-color:#fff;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;transition:all .2s ease}.mapped-item:hover{border-color:var(--primary-color, #007bff);box-shadow:0 2px 4px #007bff1a}.mapped-item-info{display:flex;flex-direction:column;gap:2px}.mapped-item-name{font-weight:500;color:var(--text-primary, #333)}.mapped-item-email{font-size:.85em;color:var(--text-secondary, #666)}.mapped-item-actions{display:flex;align-items:center;gap:12px}.mapped-item-role{display:inline-flex;align-items:center;gap:6px;font-size:.85em;color:var(--text-secondary, #666)}.mapped-item-role-label{font-weight:500}.mapped-item-role select{padding:4px 8px;border:1px solid var(--border-color, #ccc);border-radius:4px;background-color:#fff;color:var(--text-primary, #333);font-size:.9em;cursor:pointer}.mapped-item-role select:disabled{opacity:.6;cursor:not-allowed}[data-theme=dark] .mapped-item-role select{background-color:var(--surface-color, #2a2a2a);color:var(--text-primary, #eee);border-color:var(--border-color, #444)}.manage-calendar-maps .loading{display:flex;align-items:center;justify-content:center;padding:30px;color:var(--text-secondary, #666)}.no-mappings,.no-selection{padding:30px 20px;text-align:center;color:var(--text-secondary, #666);font-style:italic;background-color:#fff;border:1px dashed var(--border-color, #e0e0e0);border-radius:4px}.add-mapping-section{padding-top:15px;border-top:1px solid var(--border-color, #e0e0e0)}.add-search-container{position:relative;margin-top:8px}.add-search-input{width:100%;padding:10px 12px;border:1px solid var(--border-color, #e0e0e0);border-radius:4px;font-size:.95em;box-sizing:border-box;transition:border-color .2s ease,box-shadow .2s ease}.add-search-input:focus{outline:none;border-color:var(--primary-color, #007bff);box-shadow:0 0 0 3px #007bff1a}.add-search-input:disabled{background-color:var(--section-bg, #fafafa);cursor:not-allowed}.add-search-input::placeholder{color:#9ca3af}.add-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:#fff;border:1px solid var(--border-color, #e0e0e0);border-top:none;border-radius:0 0 4px 4px;box-shadow:0 4px 6px #0000001a;z-index:9999}.add-dropdown .dropdown-item{display:flex;flex-direction:column;gap:2px;padding:10px 12px;cursor:pointer;transition:background-color .15s ease;color:var(--text-primary, #333)}.add-dropdown .dropdown-item:hover{background-color:#f3f4f6}.add-dropdown .dropdown-item:active{background-color:#e5e7eb}.dropdown-item-name{font-weight:500}.dropdown-item-email{font-size:.85em;color:var(--text-secondary, #666)}.dropdown-empty{padding:12px;text-align:center;color:#9ca3af;font-style:italic}.adding-indicator{margin-top:8px;font-size:.85em;color:var(--text-secondary, #666);font-style:italic}.manage-calendar-maps .btn{padding:8px 16px;border:none;border-radius:4px;font-size:.9em;cursor:pointer;transition:all .2s ease}.manage-calendar-maps .btn:disabled{opacity:.5;cursor:not-allowed}.manage-calendar-maps .btn-small{padding:5px 10px;font-size:.85em}.manage-calendar-maps .btn-danger{background-color:#dc3545;color:#fff}.manage-calendar-maps .btn-danger:hover:not(:disabled){background-color:#c82333}[data-theme=dark] .view-mode-section,[data-theme=dark] .mapped-items-section{background-color:var(--bg-secondary, #2d2d2d)}[data-theme=dark] .mapped-item{background-color:var(--bg-primary, #1a1a1a)}[data-theme=dark] .selector-dropdown,[data-theme=dark] .add-search-input{background-color:var(--bg-secondary, #2d2d2d);color:var(--text-primary, #fff)}[data-theme=dark] .add-dropdown{background-color:var(--bg-secondary, #2d2d2d)}[data-theme=dark] .add-dropdown .dropdown-item:hover{background-color:#3d3d3d}[data-theme=dark] .no-mappings,[data-theme=dark] .no-selection{background-color:var(--bg-primary, #1a1a1a)}.calendar-workspace{display:flex;flex-direction:column;height:100%;background:var(--bg-primary)}.cw-toolbar{display:flex;align-items:center;gap:24px;padding:12px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-wrap:wrap}.cw-back-button{display:flex;align-items:center;gap:6px;background:#fff;color:#374151;border:1px solid #d1d5db;padding:8px 12px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s;white-space:nowrap}.cw-back-button svg{flex-shrink:0}.cw-back-button:hover{background:#f3f4f6;border-color:#9ca3af}.cw-controls{display:flex;align-items:center;gap:24px;flex:1;flex-wrap:wrap}.cw-section{display:flex;align-items:center;gap:8px}.cw-section label{color:var(--text-primary);font-size:14px;font-weight:600;white-space:nowrap}.cw-section select{padding:8px 12px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;font-size:14px;min-width:180px;cursor:pointer;transition:border-color .15s}.cw-section select:hover:not(:disabled){border-color:#667eea}.cw-section select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.cw-section select:disabled{opacity:.5;cursor:not-allowed}.cw-icon-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;font-size:16px;cursor:pointer;transition:all .15s;padding:0}.cw-icon-btn:hover:not(:disabled){background:var(--bg-hover);border-color:#667eea}.cw-icon-btn:disabled{opacity:.5;cursor:not-allowed}.cw-actions{display:flex;gap:8px;flex-wrap:wrap}.cw-action-btn{padding:8px 16px;background:#667eea;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.cw-action-btn:hover:not(:disabled){background:#5568d3}.cw-action-btn:disabled{opacity:.5;cursor:not-allowed}.cw-content{flex:1;overflow:auto;padding:0}.cw-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);text-align:center;padding:40px}.cw-empty h2{margin:0 0 12px;font-size:24px;color:var(--text-primary)}.cw-empty p{margin:0;font-size:16px}.cw-loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:16px}@media(max-width:1024px){.cw-toolbar{padding:12px 16px}.cw-section select{min-width:150px}}@media(max-width:768px){.cw-toolbar,.cw-controls{flex-direction:column;align-items:stretch}.cw-section{flex-wrap:wrap}.cw-section select{flex:1;min-width:auto}.cw-actions{justify-content:center}}.copyable-id{display:inline-flex;align-items:center;gap:6px}.copyable-id-value{white-space:nowrap;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:13px}.copyable-id-empty{color:var(--text-faint)}.copyable-id-btn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;padding:2px;border-radius:3px;cursor:pointer;color:var(--text-faint);transition:all .15s;flex-shrink:0}.copyable-id-btn:hover{background:var(--bg-surface-hover);color:var(--text-body)}.copyable-id-btn.copied{color:#10b981}.copyable-id-btn.copied:hover{color:#10b981;background:#d1fae5}.dt-container{background:var(--bg-surface);border-radius:8px;box-shadow:0 1px 3px #0000001a}.dt-table-wrapper{overflow-x:auto;border-radius:0 0 8px 8px}.dt-table{width:100%;border-collapse:collapse;font-size:14px}.dt-table th{background:var(--bg-surface-alt);padding:12px 16px;text-align:left;font-weight:600;color:var(--text-body);border-bottom:1px solid var(--border-default);white-space:nowrap;vertical-align:top}.dt-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.dt-table th.sortable:hover{background:var(--bg-surface-hover)}.th-content{display:flex;align-items:center;gap:6px;margin-bottom:8px}.sort-indicator{color:var(--text-faint);font-size:12px}.sort-indicator.active{color:#3b82f6}.column-filter{width:100%;padding:6px 10px;border:1px solid var(--border-input);border-radius:4px;font-size:12px;box-sizing:border-box;background:var(--bg-input);color:var(--text-body)}.column-filter:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}.actions-header{width:80px;text-align:center}.dt-table td{padding:14px 16px;border-bottom:1px solid var(--border-default);color:var(--text-body)}.dt-table tbody tr:hover{background:var(--bg-surface-alt)}.empty-cell{text-align:center;padding:40px 16px!important;color:var(--text-muted)}.skeleton-row td{padding:14px 16px;border-bottom:1px solid var(--border-default)}.skeleton-cell{display:flex;align-items:center}.skeleton-bar{height:16px;background:linear-gradient(90deg,var(--border-default) 25%,var(--bg-surface-hover) 50%,var(--border-default) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:4px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.actions-cell{text-align:center;position:relative}.context-menu-container{position:relative;display:inline-block}.context-menu-trigger{background:var(--bg-surface);border:1px solid var(--border-input);padding:6px 12px;font-size:16px;font-weight:700;border-radius:4px;cursor:pointer;transition:all .2s;color:var(--text-body)}.context-menu-trigger:hover{background:var(--bg-surface-hover);border-color:var(--text-faint)}.dt-context-menu{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:6px;box-shadow:0 4px 12px #00000026;min-width:120px;overflow:hidden}.dt-context-menu button{display:block;width:100%;padding:10px 16px;border:none;background:var(--bg-surface);text-align:left;font-size:14px;color:var(--text-body);cursor:pointer;transition:background .15s}.dt-context-menu button:hover{background:var(--bg-surface-hover)}.dt-context-menu button:not(:last-child){border-bottom:1px solid var(--border-default)}.dt-context-menu button.delete-action{color:#dc2626}.dt-context-menu button.delete-action:hover{background:#fee2e2}.dt-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-surface-alt);border-bottom:1px solid var(--border-default);border-radius:8px 8px 0 0;gap:16px;flex-wrap:wrap}.dt-toolbar-left{flex:1;display:flex;align-items:center;gap:12px}.dt-refresh-btn{background:var(--bg-surface);border:1px solid var(--border-input);padding:6px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--text-muted)}.dt-refresh-btn:hover:not(:disabled){background:var(--bg-surface-hover);border-color:var(--text-faint);color:var(--text-body)}.dt-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.dt-refresh-btn svg.spinning{animation:dt-spin 1s linear infinite}@keyframes dt-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.record-count{font-size:13px;color:var(--text-muted)}.dt-toolbar-center{flex:1;display:flex;justify-content:center}.page-size-control{display:flex;align-items:center;gap:8px}.page-size-control label{font-size:13px;color:var(--text-muted)}.page-size-control input{width:60px;padding:6px 10px;border:1px solid var(--border-input);border-radius:4px;font-size:13px;text-align:center;background:var(--bg-input);color:var(--text-body)}.page-size-control input:focus{outline:none;border-color:#3b82f6}.dt-toolbar-right{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:16px}.pagination-controls{display:flex;align-items:center;gap:4px}.pagination-btn{background:var(--bg-surface);border:1px solid var(--border-input);padding:6px 10px;font-size:14px;border-radius:4px;cursor:pointer;transition:all .15s;color:var(--text-body)}.pagination-btn:hover:not(:disabled){background:var(--bg-surface-hover);border-color:var(--text-faint)}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.page-info{font-size:13px;color:var(--text-body);padding:0 8px;white-space:nowrap}.jump-to-page{display:flex;align-items:center;gap:4px}.jump-to-page input{width:70px;padding:6px 10px;border:1px solid var(--border-input);border-radius:4px;font-size:13px;background:var(--bg-input);color:var(--text-body)}.jump-to-page input:focus{outline:none;border-color:#3b82f6}.jump-to-page button{background:#3b82f6;color:#fff;border:none;padding:6px 12px;font-size:13px;border-radius:4px;cursor:pointer;transition:background .15s}.jump-to-page button:hover{background:#2563eb}@media(max-width:768px){.dt-toolbar{flex-direction:column;align-items:stretch}.dt-toolbar-left,.dt-toolbar-center,.dt-toolbar-right{justify-content:center}.dt-table th,.dt-table td{padding:10px 12px;font-size:12px}.column-filter{font-size:11px;padding:4px 8px}}.view-json-modal{display:flex;flex-direction:column}.view-json-title{display:inline-flex;align-items:center;gap:10px}.title-copy-btn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;padding:4px;border-radius:4px;cursor:pointer;color:var(--text-faint);transition:all .15s}.title-copy-btn:hover{background:var(--bg-surface-hover);color:var(--text-body)}.title-copy-btn.copied{color:#10b981}.title-copy-btn.copied:hover{color:#10b981;background:#d1fae5}.json-content{background:#1f2937;color:#e5e7eb;padding:16px;border-radius:6px;overflow:auto;max-height:60vh;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.5;margin:0;white-space:pre-wrap;word-break:break-word}.searchable-select{position:relative;width:100%}.searchable-select.disabled{opacity:.6;pointer-events:none}.searchable-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--border-input);border-radius:6px;background:var(--bg-input);cursor:pointer;min-height:42px;transition:border-color .15s,box-shadow .15s}.searchable-select.open .searchable-select-trigger{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.searchable-select-trigger:hover{border-color:var(--text-faint)}.searchable-select-trigger .placeholder{color:var(--text-faint);font-size:14px}.searchable-select-trigger .has-value{color:var(--text-body);font-size:14px}.searchable-select-arrow{color:var(--text-muted);flex-shrink:0;margin-left:8px;transition:transform .2s}.searchable-select.open .searchable-select-arrow{transform:rotate(180deg)}.searchable-select-tags{display:flex;flex-wrap:wrap;gap:4px;flex:1}.searchable-select-tag{display:inline-flex;align-items:center;gap:4px;background:var(--bg-hover);color:var(--text-body);padding:2px 8px;border-radius:4px;font-size:13px}.searchable-select-tag-remove{background:none;border:none;padding:0;margin-left:2px;cursor:pointer;color:var(--text-muted);font-size:16px;line-height:1}.searchable-select-tag-remove:hover{color:#dc2626}.searchable-select-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--bg-surface);border:1px solid var(--border-input);border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:9999;max-height:300px;display:flex;flex-direction:column}.searchable-select-search{padding:8px;border-bottom:1px solid var(--border-default)}.searchable-select-search input{width:100%;padding:8px 10px;border:1px solid var(--border-input);border-radius:4px;font-size:14px;box-sizing:border-box;background:var(--bg-input);color:var(--text-body)}.searchable-select-search input:focus{outline:none;border-color:#3b82f6}.searchable-select-options{overflow-y:auto;max-height:220px}.searchable-select-option{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-size:14px;color:var(--text-body);transition:background .1s}.searchable-select-option:hover{background:var(--bg-surface-hover)}.searchable-select-option.selected{background:#eff6ff;color:#1d4ed8}.searchable-select-checkbox{width:16px;height:16px;border:1px solid var(--border-input);border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.searchable-select-option.selected .searchable-select-checkbox{background:#3b82f6;border-color:#3b82f6;color:#fff}.searchable-select-option-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.searchable-select-no-results{padding:16px;text-align:center;color:var(--text-muted);font-size:14px}.entity-form{display:flex;flex-direction:column;gap:24px}.form-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-fields-full-width{display:flex;flex-direction:column;gap:16px;border-top:1px solid var(--border-default);padding-top:16px;margin-top:8px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.full-width{width:100%}.form-group.has-error input,.form-group.has-error select,.form-group.has-error textarea{border-color:#dc2626}.form-group label{font-size:14px;font-weight:500;color:var(--text-body)}.form-group label .required{color:#dc2626;margin-left:2px}.form-group input[type=text],.form-group input[type=email],.form-group input[type=number],.form-group input[type=datetime-local],.form-group select{padding:10px 12px;border:1px solid var(--border-input);border-radius:6px;font-size:14px;color:var(--text-body);background:var(--bg-input);transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background:var(--bg-disabled);color:var(--text-faint);cursor:not-allowed}.checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;padding:8px 0}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer;flex-shrink:0;margin-right:8px}.checkbox-label span{font-size:14px;color:var(--text-body)}.json-textarea{padding:10px 12px;border:1px solid var(--border-input);border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;color:var(--text-body);background:var(--bg-input);resize:vertical;min-height:80px}.form-group.full-width .json-textarea{min-height:100px}.error-message{font-size:12px;color:#dc2626}.form-actions{display:flex;justify-content:flex-end;gap:12px;padding-top:16px;border-top:1px solid var(--border-default)}.form-actions .btn-cancel{background:var(--bg-surface);color:var(--text-body);border:1px solid var(--border-input);padding:10px 20px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.form-actions .btn-cancel:hover{background:var(--bg-surface-hover);border-color:var(--text-faint)}.form-actions .btn-submit{background:#3b82f6;color:#fff;border:none;padding:10px 20px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s}.form-actions .btn-submit:hover:not(:disabled){background:#2563eb}.form-actions .btn-submit:disabled{background:#9ca3af;cursor:not-allowed}@media(max-width:768px){.form-fields{grid-template-columns:1fr}}.tab-container{padding:24px;height:100%;display:flex;flex-direction:column;overflow:auto}.tab-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.tab-header h2{margin:0;font-size:24px;font-weight:600;color:var(--text-heading)}.tab-description{color:var(--text-muted);font-size:14px;margin:0 0 20px;line-height:1.5}.tab-create-btn{background:#3b82f6;color:#fff;border:none;padding:10px 20px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s;white-space:nowrap}.tab-create-btn:hover{background:#2563eb}@media(max-width:768px){.tab-container{padding:16px}.tab-header{flex-direction:column;align-items:flex-start;gap:12px}.tab-header h2{font-size:20px}.tab-create-btn{width:100%}}.google-oauth-tab .tab-header{display:flex;justify-content:space-between;align-items:center}.goauth-add-btn{background:#3b82f6;color:#fff;border:none;padding:10px 20px;font-size:14px;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s}.goauth-add-btn:hover{background:#2563eb}.goauth-description{color:var(--text-muted);font-size:14px;margin:0 0 20px}.goauth-loading,.goauth-empty{text-align:center;padding:40px;color:var(--text-muted);background:var(--bg-surface-alt);border-radius:8px}.goauth-filter{display:flex;align-items:center;gap:16px;margin-bottom:16px}.goauth-filter input{flex:1;max-width:400px;padding:10px 14px;border:1px solid var(--border-input);border-radius:6px;font-size:14px;background:var(--bg-input);color:var(--text-body)}.goauth-filter input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.goauth-filter-count{font-size:13px;color:var(--text-muted)}.goauth-refresh-btn{background:var(--bg-surface);border:1px solid var(--border-input);padding:8px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--text-muted)}.goauth-refresh-btn:hover:not(:disabled){background:var(--bg-surface-hover);border-color:var(--text-faint);color:var(--text-body)}.goauth-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.goauth-refresh-btn svg.spinning{animation:goauth-spin 1s linear infinite}@keyframes goauth-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.goauth-table-container{background:var(--bg-surface);border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow-x:auto}.goauth-table{width:100%;border-collapse:collapse;font-size:14px}.goauth-table th{background:var(--bg-surface-alt);padding:12px 16px;text-align:left;font-weight:600;color:var(--text-body);border-bottom:1px solid var(--border-default);white-space:nowrap}.goauth-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.goauth-table th.sortable:hover{background:var(--bg-surface-hover)}.goauth-table td{padding:14px 16px;border-bottom:1px solid var(--border-default);color:var(--text-body)}.goauth-table tbody tr:hover{background:var(--bg-surface-alt)}.goauth-table tbody tr.inactive{opacity:.6}.email-cell{font-family:monospace}.auth-badge,.status-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500;text-align:center;min-width:70px;box-sizing:border-box}.auth-badge.authorized{background:#dbeafe;color:#1d4ed8}.auth-badge.unauthorized{background:#fef3c7;color:#b45309}.status-badge.active{background:#d1fae5;color:#059669}.status-badge.inactive{background:#fee2e2;color:#dc2626}.sync-cell{font-size:12px}.sync-success{color:#059669}.sync-failed{color:#dc2626;cursor:help}.sync-never{color:var(--text-faint)}.actions-cell{position:relative}.context-menu-wrapper{position:relative;display:inline-block}.context-menu-btn{background:var(--bg-surface);border:1px solid var(--border-input);padding:6px 12px;font-size:16px;font-weight:700;border-radius:4px;cursor:pointer;transition:all .15s;color:var(--text-body)}.context-menu-btn:hover{background:var(--bg-surface-hover);border-color:var(--text-faint)}.goauth-context-menu{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:6px;box-shadow:0 4px 12px #00000026;min-width:160px;overflow:hidden}.goauth-context-menu button{display:block;width:100%;padding:10px 16px;border:none;background:var(--bg-surface);text-align:left;font-size:14px;color:var(--text-body);cursor:pointer;transition:background .15s}.goauth-context-menu button:hover{background:var(--bg-surface-hover)}.goauth-context-menu button:not(:last-child){border-bottom:1px solid var(--border-default)}.goauth-form .form-group{margin-bottom:16px}.goauth-form label{display:block;margin-bottom:6px;font-size:14px;font-weight:500;color:var(--text-body)}.goauth-form input,.goauth-form select{width:100%;padding:10px 12px;border:1px solid var(--border-input);border-radius:6px;font-size:14px;box-sizing:border-box;background:var(--bg-input);color:var(--text-body)}.goauth-form input:focus,.goauth-form select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.goauth-form input:disabled,.goauth-form select:disabled{background:var(--bg-disabled);cursor:not-allowed}.goauth-form .form-hint{display:block;margin-top:4px;font-size:12px;color:var(--text-muted)}.goauth-form .form-group-checkbox{display:flex;align-items:center;gap:8px;margin-bottom:20px}.goauth-form .form-group-checkbox input{width:auto;margin-right:8px}.goauth-form .form-actions{display:flex;justify-content:flex-end;gap:12px;padding-top:16px;border-top:1px solid var(--border-default)}.goauth-form .btn-cancel{background:var(--bg-surface);color:var(--text-body);border:1px solid var(--border-input);padding:10px 20px;font-size:14px;border-radius:6px;cursor:pointer}.goauth-form .btn-cancel:hover{background:var(--bg-surface-hover)}.goauth-form .btn-submit{background:#3b82f6;color:#fff;border:none;padding:10px 20px;font-size:14px;border-radius:6px;cursor:pointer}.goauth-form .btn-submit:hover{background:#2563eb}.metadata-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.metadata-modal{background:var(--bg-surface);border-radius:8px;max-width:600px;width:90%;max-height:80vh;display:flex;flex-direction:column}.metadata-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-default)}.metadata-header h3{margin:0;font-size:18px;color:var(--text-heading)}.metadata-actions{display:flex;gap:8px}.metadata-actions .copy-btn,.metadata-actions .close-btn{background:transparent;border:1px solid var(--border-input);padding:6px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.metadata-actions .copy-btn:hover,.metadata-actions .close-btn:hover{background:var(--bg-surface-hover)}.metadata-actions .close-btn{font-size:20px;line-height:1}.metadata-body{padding:16px 20px;overflow:auto}.metadata-body pre{margin:0;background:#1f2937;color:#e5e7eb;padding:16px;border-radius:6px;font-size:13px;overflow:auto}.dashboard{display:flex;flex-direction:column;height:100vh;overflow:hidden}.dashboard-content{flex:1;overflow:auto;background:var(--bg-content)}.oauth-callback{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:#f5f5f5;padding:20px}.oauth-callback-card{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:40px;text-align:center;max-width:400px;width:100%}.oauth-callback-card h2{margin:20px 0 10px;color:#333}.oauth-callback-card p{color:#666;margin:10px 0}.oauth-spinner{width:50px;height:50px;border:4px solid #e0e0e0;border-top:4px solid #4285f4;border-radius:50%;margin:0 auto;animation:spin 1s linear infinite}.oauth-success-icon{width:60px;height:60px;background-color:#34a853;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto}.oauth-error-icon{width:60px;height:60px;background-color:#ea4335;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto}.oauth-redirect-message{color:#999;font-size:14px}.oauth-error-message{color:#ea4335;margin-bottom:20px}.oauth-callback .btn{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px}.oauth-callback .btn-primary{background-color:#4285f4;color:#fff}.oauth-callback .btn-primary:hover{background-color:#3367d6}.portal-availability{padding:0}.portal-availability-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.portal-availability-header h3{margin:0;font-size:16px;color:#333}.timezone-selector{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:13px;color:#666}.timezone-selector select{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.portal-empty{text-align:center;padding:40px 20px;color:#666}.portal-empty p{margin:8px 0}.availability-cards{display:flex;flex-direction:column;gap:12px}.availability-card{border:1px solid #e0e0e0;border-radius:8px;padding:16px;background:#fff;transition:box-shadow .2s}.availability-card:hover{box-shadow:0 2px 8px #00000014}.availability-card.inactive{opacity:.6;background:#f8f9fa}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.card-name{font-weight:600;color:#333}.card-status{font-size:12px;padding:2px 8px;border-radius:12px}.card-status.active{background:#d4edda;color:#155724}.card-status.inactive{background:#f8d7da;color:#721c24}.card-times{font-size:14px;color:#333;margin-bottom:4px}.card-days{font-size:13px;color:#666;margin-bottom:12px}.card-actions{display:flex;gap:8px}.card-actions button{padding:6px 12px;font-size:13px;border:1px solid #ddd;border-radius:4px;background:#fff;cursor:pointer;transition:all .2s}.card-actions button:hover{background:#f0f0f0}.portal-availability-form{padding:0}.portal-availability-form h3{margin:0 0 20px;font-size:16px}.portal-availability .form-group{margin-bottom:16px}.portal-availability .form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#333}.portal-availability .form-group input[type=text],.portal-availability .form-group input[type=time]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;box-sizing:border-box}.portal-availability .form-row{display:flex;gap:16px}.portal-availability .form-row .form-group{flex:1}.day-presets{display:flex;gap:8px;margin-bottom:12px}.day-presets button{padding:6px 12px;font-size:12px;border:1px solid #ddd;border-radius:4px;background:#f8f9fa;cursor:pointer}.day-presets button:hover{background:#e9ecef}.day-toggles{display:flex;gap:6px;flex-wrap:nowrap}.day-toggle{padding:8px 10px;font-size:13px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;transition:all .2s;flex:1;text-align:center;min-width:0}.day-toggle.selected{background:#667eea;border-color:#667eea;color:#fff}.day-toggle:hover:not(.selected){background:#f0f0f0}.checkbox-group label{display:flex;align-items:center;gap:8px;cursor:pointer}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.portal-btn{padding:10px 20px;font-size:14px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;transition:all .2s}.portal-btn:hover{background:#f0f0f0}.portal-btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff}.portal-btn-primary:hover{opacity:.9;background:linear-gradient(135deg,#667eea,#764ba2)}.portal-loading{text-align:center;padding:40px;color:#666}.portal-availability .portal-error{background:#f8d7da;color:#721c24;padding:12px 16px;border-radius:6px;margin-bottom:16px;font-size:14px}.portal-tabs{display:flex;flex-direction:column}.portal-calendar-list{display:flex;flex-direction:column;gap:16px}.portal-section-header h3{margin:0 0 4px}.portal-section-help{margin:0;color:#666;font-size:.9em;line-height:1.4}.portal-calendar-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.portal-calendar-row{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border:1px solid #e3e3e3;border-radius:6px;background:#fff;gap:16px;flex-wrap:wrap}.portal-calendar-row-main{display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-width:200px}.portal-calendar-name{font-weight:600;color:#222}.portal-calendar-meta{font-size:.85em;color:#666;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.portal-calendar-meta em{color:#999}.portal-auth-pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.75em;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.portal-auth-pill.authorized{background:#e3f6e8;color:#1f7a3a}.portal-auth-pill.unauthorized{background:#fdecea;color:#a12626}.portal-calendar-row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.portal-auth-buttons{display:flex;gap:8px;width:100%;flex-basis:100%}.portal-auth-buttons>button{flex:1 1 0;min-width:0;width:auto;margin-bottom:0}.portal-role-picker{display:inline-flex;align-items:center;gap:6px;font-size:.85em;color:#555}.portal-role-picker select{padding:4px 8px;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.9em}.portal-role-picker select:disabled{opacity:.6;cursor:not-allowed}.portal-empty{padding:20px;text-align:center;color:#777;background:#fafafa;border-radius:6px}.portal-loading{padding:20px;text-align:center;color:#777}.portal-error{display:flex;justify-content:space-between;align-items:center;background:#fdecea;border:1px solid #f5b5b2;color:#8a1f1f;padding:8px 12px;border-radius:4px;font-size:.9em}.portal-error-dismiss{background:none;border:none;font-size:1.3em;line-height:1;cursor:pointer;color:#8a1f1f;padding:0 4px}.portal-add-calendar{margin-top:8px}.portal-add-calendar-trigger{align-self:flex-start}.portal-form-actions{display:flex;justify-content:flex-end;gap:12px;align-items:center;margin-top:12px}.portal-tabs-header{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid #e0e0e0}.portal-tab{flex:1;padding:14px 16px;border:none;background:none;font-size:14px;font-weight:500;color:#666;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s ease}.portal-tab:hover{color:#333;background:#f8f9fa}.portal-tab.active{color:#667eea;border-bottom-color:#667eea}.portal-tab-content{min-height:350px}[data-theme=dark] .portal-tabs-header{border-bottom-color:#444}[data-theme=dark] .portal-tab{color:#aaa}[data-theme=dark] .portal-tab:not(.active):hover{color:#fff;background:#2a2a2a}[data-theme=dark] .portal-section-header h3{color:#fff}[data-theme=dark] .portal-section-help{color:#aaa}[data-theme=dark] .portal-calendar-row{background:#2d2d2d;border-color:#444}[data-theme=dark] .portal-calendar-name{color:#fff}[data-theme=dark] .portal-calendar-meta{color:#aaa}[data-theme=dark] .portal-calendar-meta em{color:#777}[data-theme=dark] .portal-role-picker{color:#aaa}[data-theme=dark] .portal-role-picker select{background:#1e1e1e;color:#fff;border-color:#555}[data-theme=dark] .portal-auth-pill.authorized{background:#1e3a23;color:#6dd887}[data-theme=dark] .portal-auth-pill.unauthorized{background:#3a1e20;color:#ee7d7d}[data-theme=dark] .portal-empty{background:#1e1e1e;color:#888}[data-theme=dark] .portal-loading{color:#888}[data-theme=dark] .portal-error{background:#3a1e20;border-color:#5e2d30;color:#ee7d7d}[data-theme=dark] .portal-error-dismiss{color:#ee7d7d}.portal-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.portal-box{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;padding:40px;max-width:420px;width:100%;transition:max-width .3s ease}.portal-box.portal-box-wide{max-width:600px}.portal-header{text-align:center;margin-bottom:30px}.portal-logo{width:80px;height:80px;margin-bottom:16px}.portal-header h1{margin:0;font-size:24px;color:#333}.portal-header p{margin:8px 0 0;color:#666;font-size:14px}.portal-footer{text-align:center;margin-top:24px;padding-top:16px;border-top:1px solid #eee}.portal-footer p{margin:0;font-size:12px;color:#888}.portal-form .form-group{margin-bottom:20px}.portal-form label{display:block;margin-bottom:8px;font-weight:500;color:#333}.portal-form input{width:100%;padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:border-color .2s;box-sizing:border-box}.portal-form input:focus{outline:none;border-color:#667eea}.portal-form input:disabled{background:#f5f5f5;cursor:not-allowed}.form-hint{display:block;margin-top:8px;font-size:12px;color:#888}.portal-error{background:#fee;border:1px solid #fcc;color:#c33;padding:12px;border-radius:8px;margin-bottom:20px;font-size:14px}.portal-button{width:100%;padding:14px 20px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;margin-bottom:10px}.portal-button:last-child{margin-bottom:0}.portal-button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.portal-button.primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.portal-button.secondary{background:#f5f5f5;color:#333;border:2px solid #e0e0e0}.portal-button.secondary:hover:not(:disabled){background:#eee}.portal-button.danger{background:#dc3545;color:#fff}.portal-button.danger:hover:not(:disabled){background:#c82333}.portal-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.portal-status{text-align:center}.status-card{background:#f8f9fa;border-radius:12px;padding:30px;margin-bottom:20px}.status-email{font-size:14px;color:#666;margin-bottom:16px;word-break:break-all}.portal-status .status-badge{display:inline-block;padding:8px 20px;border-radius:20px;font-weight:600;font-size:14px;margin-bottom:20px}.portal-status .status-badge.authorized{background:#d4edda;color:#155724}.portal-status .status-badge.not-authorized{background:#fff3cd;color:#856404}.status-info{background:#e7f3ff;border:1px solid #b8daff;color:#004085;padding:12px;border-radius:8px;margin-bottom:20px;font-size:14px}.status-warning{background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:12px;border-radius:8px;margin-bottom:20px;font-size:14px}.status-description{color:#666;margin-bottom:24px}.status-description p{margin:0}.status-actions{display:flex;flex-direction:column;gap:12px}.portal-back-link{background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;padding:8px;margin-top:8px}.portal-back-link:hover{text-decoration:underline}.oauth-complete{text-align:center;padding:20px 0}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.success-icon{width:60px;height:60px;background:#d4edda;color:#155724;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 20px}.error-icon{width:60px;height:60px;background:#f8d7da;color:#721c24;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 20px}.oauth-complete h2{margin:0 0 12px;color:#333}.oauth-complete p{margin:0 0 16px;color:#666}.oauth-complete .error-text{color:#c33}.redirect-message{font-size:14px;color:#888}.close-message{font-size:14px;color:#666;font-weight:500;margin-top:20px;padding-top:16px;border-top:1px solid #eee}[data-theme=dark] .portal-box{background:#1e1e1e}[data-theme=dark] .portal-header h1{color:#fff}[data-theme=dark] .portal-header p{color:#aaa}[data-theme=dark] .portal-form label{color:#fff}[data-theme=dark] .portal-form input{background:#2d2d2d;border-color:#444;color:#fff}[data-theme=dark] .portal-form input:focus{border-color:#667eea}[data-theme=dark] .status-card{background:#2d2d2d}[data-theme=dark] .status-email,[data-theme=dark] .status-description{color:#aaa}[data-theme=dark] .oauth-complete h2{color:#fff}[data-theme=dark] .oauth-complete p{color:#aaa}[data-theme=dark] .portal-footer{border-top-color:#444}[data-theme=dark] .portal-footer p{color:#666}.wizard-progress{display:flex;justify-content:center;gap:24px;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.wizard-step{display:flex;flex-direction:column;align-items:center;gap:8px}.wizard-step-number{width:32px;height:32px;border-radius:50%;background:#e0e0e0;color:#999;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;transition:all .3s ease}.wizard-step.active .wizard-step-number{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.wizard-step.completed .wizard-step-number{background:#28a745;color:#fff}.wizard-step-label{font-size:12px;color:#999;transition:color .3s ease}.wizard-step.active .wizard-step-label{color:#333;font-weight:500}.wizard-step.completed .wizard-step-label{color:#28a745}.wizard-navigation{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding-top:16px;border-top:1px solid #eee}.wizard-nav-right{display:flex;gap:12px}.wizard-availability-intro{text-align:center;margin-bottom:20px}.wizard-availability-intro h3{margin:0 0 8px;color:#333;font-size:18px}.wizard-availability-intro p{margin:0;color:#666;font-size:14px}[data-theme=dark] .wizard-progress{border-bottom-color:#444}[data-theme=dark] .wizard-step-number{background:#444;color:#888}[data-theme=dark] .wizard-step.active .wizard-step-label{color:#fff}[data-theme=dark] .wizard-navigation{border-top-color:#444}[data-theme=dark] .wizard-availability-intro h3{color:#fff}[data-theme=dark] .wizard-availability-intro p{color:#aaa}
