*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-elevated: #f1f5f9;--color-text: #020617;--color-text-muted: #475569;--color-text-light: #64748b;--color-border: #cbd5e1;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #dbeafe;--color-busy: #2563eb;--color-busy-bg: #dbeafe;--color-tentative: #d97706;--color-tentative-bg: #fef3c7;--color-free: #16a34a;--color-free-bg: #dcfce7;--color-oof: #7c3aed;--color-oof-bg: #ede9fe;--color-workingelsewhere: #0891b2;--color-workingelsewhere-bg: #cffafe;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-current: 0 0 0 2px var(--color-primary), 0 4px 16px rgb(37 99 235 / .15);--radius-sm: 6px;--radius: 10px;--radius-lg: 16px}@media(prefers-color-scheme:dark){:root{--color-bg: #0f172a;--color-surface: #1e293b;--color-surface-elevated: #334155;--color-text: #f1f5f9;--color-text-muted: #94a3b8;--color-text-light: #64748b;--color-border: #334155;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-light: rgba(59, 130, 246, .15);--color-busy: #3b82f6;--color-busy-bg: rgba(59, 130, 246, .15);--color-tentative: #fbbf24;--color-tentative-bg: rgba(251, 191, 36, .15);--color-free: #34d399;--color-free-bg: rgba(52, 211, 153, .15);--color-oof: #a78bfa;--color-oof-bg: rgba(167, 139, 250, .15);--color-workingelsewhere: #22d3ee;--color-workingelsewhere-bg: rgba(34, 211, 238, .15);--shadow-sm: 0 1px 3px rgb(0 0 0 / .3);--shadow-md: 0 4px 12px rgb(0 0 0 / .4);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .3), 0 4px 6px -4px rgb(0 0 0 / .3);--shadow-current: 0 0 0 2px var(--color-primary), 0 0 20px rgb(59 130 246 / .25)}}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}body{min-height:100dvh}#app{max-width:800px;margin:0 auto;padding:24px 16px}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:50vh;color:var(--color-text-muted);font-size:1rem}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.header{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin-bottom:24px;flex-wrap:wrap}.header-left{display:flex;align-items:center;gap:12px;flex:1;min-width:280px}.picker{position:relative;flex:1}.picker input{width:100%;padding:10px 14px;border:2px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;outline:none;transition:border-color .15s;background:var(--color-bg);color:var(--color-text)}.picker input:focus{border-color:var(--color-primary)}.picker input::placeholder{color:var(--color-text-muted)}.dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:400px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:100}.group-label{padding:10px 14px 4px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-light);position:sticky;top:0;background:var(--color-surface)}.option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 14px;border:none;background:none;font-size:.9rem;cursor:pointer;text-align:left;color:var(--color-text);transition:background .1s;gap:12px}.option.selected{border-left:3px solid var(--color-primary);background:var(--color-surface-elevated);font-weight:500}.option:hover,.option.highlighted{background:var(--color-primary-light)}.option-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-dashboard{font-weight:600;color:var(--color-primary)}.option-email{font-size:.8rem;color:var(--color-text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}.no-results{padding:16px;text-align:center;color:var(--color-text-muted);font-size:.9rem}.date-picker{display:flex;align-items:center;gap:4px}.weekday{font-weight:700;font-size:.9rem;color:var(--color-text);margin-right:8px;white-space:nowrap}.date-picker input[type=date]{padding:8px 12px;border:2px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;outline:none;background:var(--color-bg);color:var(--color-text);transition:border-color .15s}.date-picker input[type=date]:focus{border-color:var(--color-primary)}.nav-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:var(--color-bg);border-radius:var(--radius-sm);cursor:pointer;font-size:1.4rem;color:var(--color-text-muted);transition:all .15s;line-height:1}.nav-btn:hover{background:var(--color-primary-light);color:var(--color-primary)}.today-btn{padding:8px 14px;border:none;background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s;margin-left:4px}.today-btn:hover{background:var(--color-primary-hover)}.calendar-loading,.calendar-error,.calendar-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:200px;color:var(--color-text-muted);font-size:1rem}.calendar-error{color:#dc2626}.calendar-list{display:flex;flex-direction:column}.calendar-list>div{position:relative}.calendar-list>.gap-contiguous{margin-top:4px}.calendar-list>.gap-separate{margin-top:30px}.calendar-list>.gap-separate:before{content:"";position:absolute;left:52px;top:-30px;width:2px;height:30px;background:var(--color-border);border-radius:1px}.calendar-list>.gap-contiguous:before{content:"";position:absolute;left:52px;top:-4px;width:2px;height:4px;background:var(--color-border);border-radius:1px}.appointment{display:grid;grid-template-columns:100px 1fr;gap:16px;background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--color-border);border-left:5px solid var(--color-busy);padding:16px 20px;transition:all .25s ease}.appointment:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.appointment.tentative{border-left-color:var(--color-tentative)}.appointment.free{border-left-color:var(--color-free)}.appointment.oof{border-left-color:var(--color-oof)}.appointment.workingelsewhere{border-left-color:var(--color-workingelsewhere)}.time-block{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;border-radius:var(--radius-sm);background:var(--color-busy-bg)}.appointment.tentative .time-block{background:var(--color-tentative-bg)}.appointment.free .time-block{background:var(--color-free-bg)}.appointment.oof .time-block{background:var(--color-oof-bg)}.appointment.workingelsewhere .time-block{background:var(--color-workingelsewhere-bg)}.time-start{font-size:1.1rem;font-weight:800;color:var(--color-text);font-variant-numeric:tabular-nums}.time-end{font-size:1.1rem;font-weight:600;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.time-allday{font-size:.95rem;font-weight:700;color:var(--color-text)}.duration{font-size:.75rem;color:var(--color-text-light);margin-top:2px}.remaining{font-size:.75rem;font-weight:700;color:var(--color-primary);margin-top:2px}.details{display:flex;flex-direction:column}.details-body{flex:1}.details-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:2px}.details-body{display:flex;gap:12px;align-items:flex-end}.details-content{flex:1;min-width:0}.details .subject{font-size:1.1rem;font-weight:600;line-height:1.4}.details .location{font-size:.95rem;color:var(--color-text-muted);margin-bottom:4px}.status-pill{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:4px;white-space:nowrap;flex-shrink:0}.status-pill.busy{background:var(--color-busy-bg);color:var(--color-busy)}.status-pill.tentative{background:var(--color-tentative-bg);color:var(--color-tentative)}.status-pill.free{background:var(--color-free-bg);color:var(--color-free)}.status-pill.oof{background:var(--color-oof-bg);color:var(--color-oof)}.status-pill.workingelsewhere{background:var(--color-workingelsewhere-bg);color:var(--color-workingelsewhere)}.appointment.past .time-start,.appointment.past .time-end,.appointment.past .subject{color:var(--color-text-muted)}.appointment.past .duration,.appointment.past .location{color:var(--color-text-light)}.appointment.past{border-left-color:var(--color-border)}.appointment.past .time-block{background:var(--color-bg)}.appointment.past .status-pill{background:var(--color-bg);color:var(--color-text-light)}.appointment.past:hover{transform:none;box-shadow:var(--shadow-sm)}.appointment.current{border-left-width:6px;box-shadow:var(--shadow-current);background:var(--color-surface-elevated)}.appointment.cancelled{opacity:.4}.appointment.cancelled .subject{text-decoration:line-through}.attendees{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:flex-end;flex-shrink:0;max-width:50%}.attendee-avatar{cursor:default;position:relative}.more-attendees{font-size:.75rem;font-weight:600;color:var(--color-text-muted);background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:14px;padding:2px 8px;cursor:pointer;transition:all .15s;width:28px;height:28px;display:flex;align-items:center;justify-content:center}.more-attendees:hover{background:var(--color-primary-light);color:var(--color-primary);border-color:var(--color-primary)}.avatar{border-radius:50%;object-fit:cover;flex-shrink:0}.avatar.fallback{display:flex;align-items:center;justify-content:center;background:var(--color-primary-light);color:var(--color-primary);font-weight:600;border-radius:50%}.avatar.hidden{display:none}.selected-name{font-weight:600;font-size:1rem;white-space:nowrap}.meeting-link{display:inline-block;margin-top:10px;padding:5px 14px;background:var(--color-primary-light);color:var(--color-primary);text-decoration:none;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;transition:all .15s}.meeting-link:hover{background:var(--color-primary);color:#fff}.empty-state{display:flex;align-items:center;justify-content:center;min-height:300px;color:var(--color-text-muted);font-size:1.1rem}.room-dashboard-title{font-size:1.1rem;font-weight:700;color:var(--color-text-muted);margin-bottom:16px}.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;max-width:750px}.room-card{display:flex;flex-direction:column;align-items:flex-start;padding:16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;text-align:left;font:inherit;color:var(--color-text);transition:all .2s ease;border-top:4px solid var(--color-border)}.room-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.room-card.free{border-top-color:var(--color-free)}.room-card.busy{border-top-color:var(--color-busy)}.room-name{font-size:.9rem;font-weight:700;margin-bottom:8px;line-height:1.3}.room-status-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:4px;margin-bottom:6px}.room-free-label{background:var(--color-free-bg);color:var(--color-free)}.room-busy-label{background:var(--color-busy-bg);color:var(--color-busy)}.room-error{background:var(--color-bg);color:var(--color-text-light)}.room-info-row{display:flex;gap:6px;font-size:.8rem;line-height:1.4;margin-top:2px}.room-info-label{color:var(--color-text-light);flex-shrink:0;min-width:32px}.room-info-value{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-free-value{color:var(--color-free);font-weight:600}.room-gap{font-size:.75rem;font-weight:600;color:var(--color-tentative);margin-top:8px;padding-top:6px;border-top:1px solid var(--color-border)}.private .subject{font-style:italic}@media(max-width:600px){#app{padding:12px 8px}.header{padding:12px;gap:12px}.header-left{min-width:200px}.appointment{grid-template-columns:1fr;gap:8px;padding:12px 14px}.time-block{flex-direction:row;gap:8px;justify-content:flex-start;padding:6px 10px}.duration{margin-top:0}.calendar-list>.gap-contiguous,.calendar-list>.gap-separate{margin-top:8px}.calendar-list>.gap-contiguous:before,.calendar-list>.gap-separate:before{display:none}}
