.container { width: 100%; } /* Header */ .header { margin-bottom: 2rem; } .headerContent { display: flex; justify-content: space-between; align-items: flex-start; gap: 2rem; flex-wrap: wrap; } .header h1 { font-size: 2.25rem; font-weight: 700; color: var(--text-primary, #1a1612); margin-bottom: 0.5rem; font-family: var(--font-playfair), 'Playfair Display', serif; } .subtitle { font-size: 1rem; color: var(--text-secondary, #5c564d); margin: 0; line-height: 1.6; max-width: 60ch; } .headerActions { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; } /* Phase Tabs */ .phaseTabs { display: flex; gap: 0; margin-bottom: 1.5rem; border: 1px solid var(--border-color, #e5dfd5); border-radius: 8px; overflow: hidden; width: fit-content; } .phaseTab { padding: 0.625rem 1.5rem; font-size: 0.9375rem; font-weight: 500; background: var(--bg-card, white); color: var(--text-secondary, #5c564d); border: none; cursor: pointer; transition: all 0.15s ease; font-family: inherit; } .phaseTab:not(:last-child) { border-right: 1px solid var(--border-color, #e5dfd5); } .phaseTab:hover { background: var(--bg-secondary, #f3ede4); } .phaseTabActive { background: var(--accent-coral-dark, #b04a2e); color: white; font-weight: 600; } .phaseTabActive:hover { background: var(--accent-coral-darker, #9c3f26); } /* Sticky school bar — column identity while scrolling; horizontal scroll on narrow screens. Offset by the sticky site header's height (Navigation is position: sticky, top: 0) so this bar pins just below it instead of sliding underneath and being hidden. Header ≈ 65px desktop / 57px mobile. */ .schoolBar { position: sticky; top: 65px; z-index: 10; background: var(--bg-primary, #faf7f2); display: flex; gap: 0.75rem; overflow-x: auto; padding: 0.75rem 0; border-bottom: 1px solid var(--border-light, #e5dfd5); -webkit-overflow-scrolling: touch; } .schoolChip { flex: 1 1 0; min-width: 180px; background: var(--bg-card, white); border: 1px solid var(--border-light, #e5dfd5); border-top: 3px solid var(--accent-coral, #e07256); border-radius: 8px; box-shadow: var(--shadow-soft, 0 2px 8px rgba(26, 22, 18, 0.06)); padding: 0.55rem 0.75rem; display: flex; gap: 0.55rem; align-items: center; } .chipDot { width: 11px; height: 11px; border-radius: 50%; flex: none; } .chipText { min-width: 0; } .chipName { display: block; font-weight: 600; font-size: 0.92rem; line-height: 1.25; color: var(--text-primary, #1a1612); text-decoration: none; } .chipName:hover { color: var(--accent-coral-dark, #b04a2e); } /* Full name on desktop, short name on the compact mobile pills. */ .chipNameShort { display: none; } .chipMeta { display: block; font-size: 0.78rem; color: var(--text-muted, #6d685f); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .chipRemove { margin-left: auto; border: none; background: var(--bg-secondary, #f3ede4); color: var(--text-muted, #6d685f); border-radius: 50%; width: 22px; height: 22px; cursor: pointer; flex: none; font-size: 0.9rem; line-height: 1; } .footnote { font-size: 0.78rem; color: var(--text-muted, #6d685f); margin-top: 2.5rem; border-top: 1px solid var(--border-light, #e5dfd5); padding-top: 1rem; max-width: 75ch; } /* Mobile: the sticky school bar becomes compact, horizontally-scrollable pills with short names (matching the mobile mockup) instead of full-width cards whose names wrap to several lines. */ @media (max-width: 640px) { /* The mobile Navigation header is shorter (≈57px). */ .schoolBar { top: 57px; } .schoolChip { flex: 0 0 auto; min-width: 0; border-top-width: 2px; border-radius: 999px; padding: 0.35rem 0.7rem; box-shadow: none; } .chipName { font-size: 0.85rem; white-space: nowrap; } .chipNameFull { display: none; } .chipNameShort { display: inline; } .chipMeta { display: none; } .chipRemove { width: 18px; height: 18px; font-size: 0.75rem; } }