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