:root{--color-bg: #1c1d22;--color-bg-page: #16171b;--color-bg-elevated: #1c1d22;--color-card: #323338;--color-border: #3f4147;--color-text: #dbdee1;--color-text-muted: #949ba4;--color-accent: #5865f2;--color-accent-hover: #4752c4;--color-error: #f87171;--color-success: #4ade80;--font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--sidebar-width: 240px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-card: 0 2px 6px rgba(0, 0, 0, .2);--shadow-panel: 0 1px 3px rgba(0, 0, 0, .25), 0 4px 12px rgba(0, 0, 0, .15);--topbar-height: 64px;--row-height: 92px;--row-gap: 8px;--timeline-row-height: 64px;--timeline-row-gap: 4px;--timeline-day-gap: calc(var(--timeline-row-gap) * 4);--header-height: 32px;--week-grid-header-height: 52px;--avatar-size: 36px;--avatar-overlap: 8px;--avail-green: #3d8b5a;--avail-olive: #5a6640;--avail-brown: #8b5a40;--avail-red-muted: #a84848;--avail-red: #d64550;--avail-pill-bg: #b8e6c8;--avail-pill-text: #1a2e22}*{box-sizing:border-box}body{margin:0;font-family:var(--font-family);background:var(--color-bg-page);color:var(--color-text);min-height:100vh}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}#root{min-height:100vh}.appShell{display:flex;min-height:100vh}.appContentColumn{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--color-bg-page);min-height:100vh}.pageLayout{display:flex;flex-direction:column;flex:1;min-height:0}.topBar{position:sticky;top:0;z-index:10;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--topbar-height);padding:.75rem 1.5rem;background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border)}.topBarHeading{min-width:0}.topBarTitle{margin:0;font-size:1.125rem;font-weight:600;line-height:1.3}.topBarSubtitle{margin:.15rem 0 0;font-size:.8125rem;color:var(--color-text-muted)}.topBarActions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.pageLayoutContent{flex:1;padding:1.5rem;overflow-y:auto}.timetableToolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.75rem 1rem;margin-bottom:1rem}.timetableToolbar .memberFilter{flex:1;min-width:0}.timetableToolbar .timetableWeekNav{flex-shrink:0;margin-left:auto}.timetableWeekNav{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.weekNavIconBtn{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;padding-left:.5rem;padding-right:.5rem}.pagePanel{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);padding:1.25rem 1.5rem}.pagePanel+.pagePanel{margin-top:1rem}.pagePanelNarrow{max-width:720px;margin-left:auto;margin-right:auto}.sidebar{width:var(--sidebar-width);flex-shrink:0;display:flex;flex-direction:column;background:var(--color-bg-elevated);border-right:1px solid var(--color-border);min-height:100vh;position:sticky;top:0;height:100vh}.sidebarBrand{display:flex;align-items:center;gap:.6rem;padding:1.25rem 1rem 1rem;font-weight:600;font-size:1.125rem;color:var(--color-text)}.sidebarLogoIcon{width:1.35rem;height:1.35rem;color:var(--color-accent);flex-shrink:0}.sidebarNav{display:flex;flex-direction:column;gap:.15rem;padding:0 .75rem;flex:1}.sidebarSectionLabel{margin:0 0 .35rem .5rem;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.sidebarLink{display:flex;align-items:center;gap:.6rem;padding:.6rem .75rem;border-radius:var(--radius-md);color:var(--color-text-muted);font-size:.875rem;text-decoration:none}.sidebarLink:hover{color:var(--color-text);background:color-mix(in srgb,var(--color-card) 40%,transparent);text-decoration:none}.sidebarLinkActive{background:var(--color-card);color:var(--color-text)}.sidebarNavIcon{width:1.125rem;height:1.125rem;flex-shrink:0;opacity:.85}.sidebarFooter{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.sidebarProfileCard{display:flex;align-items:center;gap:.65rem;padding:.65rem .75rem;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:0}.sidebarProfileInfo{display:flex;flex-direction:column;min-width:0}.sidebarProfileName{font-size:.8125rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebarProfileHandle{font-size:.75rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebarLogout{padding:.45rem .75rem;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:.8125rem;font-family:inherit;cursor:pointer;text-align:left}.sidebarLogout:hover{color:var(--color-text);background:color-mix(in srgb,var(--color-card) 50%,transparent)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;background:var(--color-accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;cursor:pointer;font-family:inherit}.btn:hover{background:var(--color-accent-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.btnSecondary{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border)}.btnSecondary:hover{background:var(--color-border)}.btnSmall{padding:.35rem .65rem;font-size:.8125rem}.btnBlock{width:100%}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.25rem 1.5rem}.cardTitle{font-size:1rem;font-weight:600;margin:0 0 .5rem}.cardHint{font-size:.875rem;color:var(--color-text-muted);margin:0 0 1rem}.form{display:flex;flex-direction:column;gap:1rem}.formLabel{display:flex;flex-direction:column;gap:.35rem;font-size:.875rem;font-weight:500}.formInput{padding:.5rem .75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:inherit;font-size:.875rem;font-family:inherit}.formInput:focus{outline:none;border-color:var(--color-accent)}.formActions{display:flex;gap:.75rem;flex-wrap:wrap}.errorMsg{color:var(--color-error);font-size:.875rem}.successMsg{color:var(--color-success);font-size:.875rem;margin-top:.75rem}.loginPage{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--color-bg-page)}.loginCard{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);padding:2rem;max-width:400px;width:100%;text-align:center}.loginCard h1{margin:0 0 .5rem;font-size:1.5rem}.loginCard p{color:var(--color-text-muted);margin:0 0 1.5rem}.topBarTabs{display:inline-flex;gap:.25rem;padding:.2rem;background:var(--color-bg-page);border:1px solid var(--color-border);border-radius:var(--radius-md)}.topBarTab{padding:.35rem .75rem;background:none;border:none;border-radius:calc(var(--radius-md) - 2px);color:var(--color-text-muted);font-size:.8125rem;cursor:pointer;font-family:inherit;white-space:nowrap}.topBarTab:hover{color:var(--color-text)}.topBarTabActive{background:var(--color-card);color:var(--color-text)}.timetableEmpty,.timetableLoading{color:var(--color-text-muted);font-size:.875rem}.timetableLegend{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--color-border);font-size:.8125rem;color:var(--color-text-muted);display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem}.memberFilter{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:0}.memberChip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .55rem .25rem .3rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;color:var(--color-text);font-size:.8125rem;cursor:pointer;font-family:inherit}.memberChipSelected{border-color:var(--color-text-muted)}.memberChip:not(.memberChipSelected){opacity:.55}.avatar{border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--color-card)}.avatarSm{width:24px;height:24px}.avatarMd{width:var(--avatar-size);height:var(--avatar-size)}.avatarStack{display:flex;align-items:center;flex-shrink:0}.avatarStack .avatar{margin-left:calc(-1 * var(--avatar-overlap));border:2px solid var(--color-card)}.avatarStack .avatar:first-child{margin-left:0}.availabilityChart{margin-bottom:0;padding-bottom:0}.availabilityWeek{display:grid;gap:.75rem}.availabilityDayColumn{min-width:0;display:flex;flex-direction:column}.availabilityDayColumnLabel{font-size:.8125rem;font-weight:600;color:var(--color-text);text-align:center;margin-bottom:.5rem}.availabilityDayColumnBars{flex:1}.availabilityDayColumnAxis{display:flex;justify-content:space-between;margin-top:.35rem;padding:0 .1rem}.availabilityChartHour{font-size:.75rem;color:var(--color-text-muted)}.availabilityChartBars{display:flex;align-items:flex-end;gap:1px;height:120px;border-bottom:1px solid color-mix(in srgb,var(--color-border) 60%,transparent);padding-bottom:.25rem}.availabilityChartBarWrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}.availabilityChartBar{width:100%;min-height:0;border-radius:4px 4px 0 0;transition:filter .15s ease}.availabilityChartBarWrap:hover .availabilityChartBar{filter:brightness(1.12)}.weekTimelineGridWrap{overflow:hidden;margin-top:0;border-radius:var(--radius-sm)}.weekTimelineGrid{display:flex;flex-direction:column;gap:var(--timeline-day-gap);width:100%}.weekTimelineHeader{display:grid;grid-template-columns:72px 1fr;border-bottom:1px solid var(--color-border)}.weekTimelineCorner{background:var(--color-bg)}.weekTimelineHourHeader{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:var(--header-height);background:var(--color-bg)}.weekTimelineTrack .eventCard{top:4px;height:calc(100% - 8px)}.weekTimelineDaySection{position:relative;display:grid;grid-template-columns:72px 1fr}.weekTimelineDayBody{grid-column:2;position:relative;display:flex;flex-direction:column;gap:var(--timeline-row-gap);background:var(--color-bg)}.weekTimelineGridOverlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.weekTimelineDaySection:before{content:"";position:absolute;left:72px;top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--color-border) 35%,transparent);pointer-events:none;z-index:0}.weekTimelineDayLabel{grid-column:1;grid-row:1 / -1;position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.1rem;padding:.5rem .35rem;background:var(--color-bg)}.weekTimelineDayLabel:after{content:"";position:absolute;right:0;top:.5rem;width:1px;height:2.5rem;background:var(--color-border);pointer-events:none}.weekTimelineDayName{font-size:.8125rem;font-weight:600;color:var(--color-text)}.weekTimelineDayDate{font-size:.75rem;color:var(--color-text-muted)}.weekTimelineTrack{position:relative;z-index:1;height:var(--timeline-row-height)}.weekTimelineTrackEmpty{min-height:40px;height:40px}.timelineHourHeader{display:grid;height:var(--header-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);position:relative}.timelineHourLabel{display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--color-text-muted)}.timelineGridLine{position:absolute;top:0;bottom:0;width:1px;background:var(--color-border);opacity:.3;pointer-events:none}.eventCard{position:absolute;top:0;height:100%;display:flex;align-items:center;gap:.5rem;padding:0 .65rem;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;text-align:left;font-family:inherit;overflow:hidden;min-width:48px}.eventCard:hover{filter:brightness(1.06)}.eventCardTitle{font-size:.875rem;font-weight:400;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.3}.weekGridWrap{overflow-x:auto;border-radius:var(--radius-sm)}.weekGrid{display:grid;width:max-content;min-width:100%;background:var(--color-bg)}.weekGridCorner{background:var(--color-bg);min-width:72px;min-height:var(--week-grid-header-height, 52px);border-bottom:1px solid var(--color-border)}.weekGridDayHeader{position:relative;padding:.5rem .35rem;font-size:.8125rem;background:var(--color-bg);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.1rem;border-bottom:1px solid var(--color-border);overflow:visible;min-height:var(--week-grid-header-height, 52px)}.weekGridDayHeader:after{content:"";position:absolute;left:0;top:.5rem;width:1px;height:2.5rem;background:var(--color-border);pointer-events:none}.weekGridDayName{font-weight:600;color:var(--color-text)}.weekGridDayDate{font-size:.75rem;color:var(--color-text-muted)}.weekGridTimeLabel{display:flex;align-items:center;justify-content:center;padding:.2rem .35rem;font-size:.75rem;color:var(--color-text-muted);background:var(--color-bg);border-top:1px solid color-mix(in srgb,var(--color-border) 30%,transparent);text-align:center}.weekGridDayColumn{position:relative;background:var(--color-bg);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--timeline-row-height) - 1px),color-mix(in srgb,var(--color-border) 30%,transparent) calc(var(--timeline-row-height) - 1px),color-mix(in srgb,var(--color-border) 30%,transparent) var(--timeline-row-height))}.weekGridDayColumn .eventCard{left:4px;right:4px;width:auto;align-items:flex-start;padding-top:.35rem;padding-bottom:.35rem}.weekGridDayColumn .eventCardTitle{-webkit-line-clamp:2}.weekGridEventBody{display:flex;flex-direction:column;gap:.1rem;min-width:0;width:100%}.weekGridEventTime{font-size:.7rem;color:var(--color-text-muted);line-height:1.2}.weekGridEventMeta{font-size:.7rem;color:var(--color-text-muted);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eventPopupOverlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.eventPopup{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);max-width:420px;width:100%;padding:1rem 1.25rem}.eventPopupHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem}.eventPopupTitle{margin:0;font-size:1rem}.eventPopupClose{background:none;border:none;color:var(--color-text-muted);font-size:1.5rem;line-height:1;cursor:pointer;padding:0}.eventPopupBody{margin:0;font-size:.875rem}.eventPopupBody dt{color:var(--color-text-muted);margin-top:.5rem}.eventPopupBody dd{margin:.15rem 0 0}.eventPopupDescription{white-space:pre-wrap}@media (max-width: 767px){.appShell{flex-direction:column}.sidebar{width:100%;height:auto;min-height:unset;position:relative}.sidebarBrand{padding:.75rem 1rem}.sidebarNav{padding:0 .75rem .5rem;flex:unset}.sidebarSectionLabel{display:none}.sidebarNav{flex-direction:row;flex-wrap:wrap}.sidebarFooter{flex-direction:row;align-items:center;justify-content:space-between;padding:.75rem 1rem 1rem}.sidebarProfileCard{flex:1;min-width:0}.sidebarLogout{flex-shrink:0}.topBar{padding:.75rem 1rem}.pageLayoutContent{padding:1rem}.topBarActions{width:100%}}
