* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: "Avenir Next", Avenir, "Segoe UI", system-ui, sans-serif; font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; }
h1, h2, h3, p, figure, blockquote { margin-top: 0; }
.skip-link { position: fixed; left: 12px; top: -60px; z-index: 9999; padding: 9px 13px; background: white; color: #17243b; border-radius: 8px; }
.skip-link:focus { top: 12px; }
.demo-notice { min-height: 34px; display: flex; align-items: center; justify-content: center; gap: 14px; padding: 6px 18px; background: #111b2e; color: white; font-size: .72rem; letter-spacing: .04em; }
.demo-notice strong { color: #73dbc7; }
.demo-notice span:last-child { opacity: .68; }

/* Willow: calm editorial narrative */
.theme-willow { background: #f2ede1; color: #294235; }
.w-wrap { width: min(1160px, calc(100% - 42px)); margin-inline: auto; }
.w-header { min-height: 94px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 30px; }
.w-brand { font-family: Georgia, serif; font-size: 1.45rem; font-style: italic; font-weight: 700; letter-spacing: -.04em; }
.w-header nav { display: flex; gap: 30px; color: #617168; font-size: .78rem; font-weight: 700; }
.w-header-cta { justify-self: end; padding: 11px 18px; border: 1px solid #294235; border-radius: 999px; font-size: .76rem; font-weight: 800; }
.w-hero { min-height: 650px; display: grid; grid-template-columns: .9fr 1.1fr; gap: 80px; align-items: center; padding: 58px 0 95px; }
.w-hero-copy > p, .w-story > p, .w-program-heading > p { margin-bottom: 18px; color: #9b6549; font-size: .7rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.w-hero h1 { max-width: 560px; margin-bottom: 28px; font-family: Georgia, serif; font-size: clamp(4.3rem, 7.4vw, 7rem); font-weight: 500; letter-spacing: -.065em; line-height: .91; }
.w-hero-copy > span { display: block; max-width: 540px; color: #657269; font-size: 1.04rem; line-height: 1.75; }
.w-hero-copy > a { display: inline-block; margin-top: 32px; padding-bottom: 4px; border-bottom: 1px solid #294235; font-size: .82rem; font-weight: 850; }
.w-hero figure { position: relative; margin: 0; }
.w-hero figure img { aspect-ratio: .88; object-fit: cover; object-position: 68% center; border-radius: 52% 52% 14px 52%; box-shadow: 0 28px 65px rgba(41,66,53,.15); }
.w-hero figcaption { position: absolute; left: -34px; bottom: 34px; padding: 16px 20px; border-radius: 12px; background: #fffdf7; box-shadow: 0 14px 35px rgba(41,66,53,.15); font-size: .78rem; font-weight: 800; }
.w-hero figcaption small { display: block; color: #9b6549; font-size: .58rem; letter-spacing: .1em; text-transform: uppercase; }
.w-story { display: grid; grid-template-columns: .35fr 1.25fr .8fr; gap: 50px; align-items: start; padding: 100px 0; border-block: 1px solid rgba(41,66,53,.17); }
.w-story h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(2.8rem, 5vw, 4.8rem); font-weight: 500; letter-spacing: -.055em; line-height: 1.02; }
.w-story > div { display: grid; gap: 24px; color: #66736a; font-size: .94rem; }
.w-story > div span { padding-left: 20px; border-left: 2px solid #c6a277; }
.w-programs { background: #fffdf7; }
.w-programs > div { display: grid; grid-template-columns: .8fr 1.2fr; gap: 90px; padding-block: 110px; }
.w-program-heading h2 { font-family: Georgia, serif; font-size: clamp(2.7rem, 4.6vw, 4.3rem); font-weight: 500; letter-spacing: -.05em; line-height: 1.05; }
.w-program-list { border-top: 1px solid rgba(41,66,53,.18); }
.w-program-list article { display: grid; grid-template-columns: 50px 1fr; gap: 25px; padding: 28px 0; border-bottom: 1px solid rgba(41,66,53,.18); }
.w-program-list article > span { color: #9b6549; font-size: .68rem; font-weight: 850; }
.w-program-list small { color: #7a857d; font-size: .66rem; text-transform: uppercase; }
.w-program-list h3 { margin: 2px 0 5px; font-family: Georgia, serif; font-size: 1.55rem; font-weight: 500; }
.w-program-list p { margin: 0; color: #68746c; font-size: .86rem; }
.w-quote { padding: 125px 0; text-align: center; }
.w-quote blockquote { max-width: 920px; margin: 0 auto; font-family: Georgia, serif; font-size: clamp(2.2rem, 4.3vw, 4.2rem); letter-spacing: -.05em; line-height: 1.12; }
.w-quote p { margin: 24px 0 0; color: #7c867f; font-size: .7rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.w-visit { background: #294235; color: #fffdf7; }
.w-visit > div { min-height: 330px; display: flex; align-items: center; justify-content: space-between; gap: 60px; }
.w-visit small { color: #c8b992; text-transform: uppercase; }
.w-visit h2 { margin: 8px 0; font-family: Georgia, serif; font-size: clamp(2.8rem, 5vw, 5rem); font-weight: 500; letter-spacing: -.055em; }
.w-visit p { margin: 0; color: #b8c6bd; }
.w-visit a { padding: 14px 22px; border-radius: 999px; background: #f2ede1; color: #294235; font-size: .8rem; font-weight: 850; }
.w-footer { min-height: 105px; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; color: #6e7b73; font-size: .7rem; }
.w-footer strong { color: #294235; font-family: Georgia, serif; font-size: 1.1rem; font-style: italic; }
.w-footer span:nth-child(2) { text-align: center; }
.w-footer span:last-child { text-align: right; }

/* Confetti: playful campaign page */
.theme-confetti { overflow-x: hidden; background: #fff1e8; color: #3d2864; }
.c-wrap { width: min(1180px, calc(100% - 42px)); margin-inline: auto; }
.c-header { min-height: 88px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 28px; }
.c-brand { justify-self: start; font-size: 1.15rem; font-weight: 950; letter-spacing: .02em; transform: rotate(-2deg); }
.c-header nav { display: flex; gap: 26px; font-size: .76rem; font-weight: 850; }
.c-cta { justify-self: end; padding: 11px 16px; background: #f04f45; color: white; box-shadow: 5px 5px 0 #ffd346; font-size: .72rem; font-weight: 950; transform: rotate(1deg); }
.c-hero { position: relative; min-height: 590px; display: grid; align-content: center; justify-items: center; padding: 75px 0; text-align: center; }
.c-hero > p { margin-bottom: 16px; font-size: .76rem; font-weight: 950; letter-spacing: .16em; text-transform: uppercase; }
.c-hero h1 { margin: 0; font-size: clamp(5rem, 11vw, 10rem); font-weight: 950; letter-spacing: -.085em; line-height: .76; }
.c-burst { position: absolute; right: 8%; top: 12%; display: grid; place-items: center; width: 110px; height: 110px; border-radius: 50%; background: #70c7eb; color: white; font-size: 3rem; transform: rotate(12deg); }
.c-hero-bottom { width: min(720px, 100%); display: flex; align-items: center; justify-content: space-between; gap: 25px; margin-top: 52px; text-align: left; }
.c-hero-bottom > span { max-width: 480px; color: #735f7b; }
.c-hero-bottom a { padding: 13px 20px; background: #3d2864; color: white; font-size: .78rem; font-weight: 900; transform: rotate(-2deg); }
.c-photo-band { position: relative; height: 420px; overflow: hidden; border-block: 8px solid #3d2864; background: #ffd346; }
.c-photo-band img { height: 100%; object-fit: cover; object-position: center 48%; filter: saturate(1.08); }
.c-photo-band > span { position: absolute; padding: 10px 14px; border: 3px solid #3d2864; background: white; font-size: .75rem; font-weight: 950; }
.c-photo-band > span:nth-of-type(1) { left: 8%; top: 12%; transform: rotate(-7deg); }
.c-photo-band > span:nth-of-type(2) { right: 10%; top: 17%; background: #ffd346; transform: rotate(6deg); }
.c-photo-band > span:nth-of-type(3) { right: 24%; bottom: 10%; background: #8c75de; color: white; transform: rotate(-4deg); }
.c-day { padding: 110px 0; }
.c-title { display: grid; grid-template-columns: .35fr 1.65fr; gap: 45px; align-items: start; }
.c-title > p { font-size: .72rem; font-weight: 950; text-transform: uppercase; }
.c-title h2, .c-team h2, .c-join h2 { margin: 0; font-size: clamp(3.2rem, 6vw, 6rem); font-weight: 950; letter-spacing: -.075em; line-height: .9; }
.c-timeline { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 58px; }
.c-timeline article { min-height: 230px; padding: 25px; border: 3px solid #3d2864; background: white; box-shadow: 7px 7px 0 #3d2864; }
.c-timeline article:nth-child(2) { background: #ffd346; transform: translateY(18px) rotate(1deg); }
.c-timeline article:nth-child(3) { background: #70c7eb; transform: rotate(-1deg); }
.c-timeline article:nth-child(4) { background: #8c75de; color: white; transform: translateY(18px); }
.c-timeline b { font-size: .72rem; }
.c-timeline h3 { margin: 80px 0 5px; font-size: 1.25rem; }
.c-timeline p { margin: 0; font-size: .82rem; }
.c-play { padding: 100px 0; background: #3d2864; }
.c-mosaic { display: grid; grid-template-columns: 1.25fr .75fr; grid-template-rows: 300px 300px; gap: 14px; }
.c-tile { padding: 35px; }
.c-tile small { font-weight: 950; }
.c-tile h2 { max-width: 560px; margin: 55px 0 10px; font-size: clamp(2.2rem, 4vw, 4rem); font-weight: 950; letter-spacing: -.065em; line-height: .92; }
.c-tile p { max-width: 520px; margin: 0; }
.c-yellow { background: #ffd346; }
.c-blue { background: #70c7eb; }
.c-purple { background: #8c75de; color: white; }
.c-white { background: white; }
.c-team { display: grid; grid-template-columns: 1fr 1fr auto; gap: 65px; align-items: end; padding: 110px 0; }
.c-team > div > span { font-size: .7rem; font-weight: 950; text-transform: uppercase; }
.c-team > p { margin: 0 0 8px; color: #735f7b; }
.c-team > a { padding: 12px 18px; border: 3px solid #3d2864; font-size: .76rem; font-weight: 950; }
.c-join { padding: 110px 24px; background: #f04f45; color: white; text-align: center; }
.c-join > p { font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.c-join h2 { max-width: 900px; margin-inline: auto; }
.c-join > a { display: inline-block; margin-top: 35px; padding: 14px 22px; background: #ffd346; color: #3d2864; font-weight: 950; box-shadow: 6px 6px 0 #3d2864; }
.c-join > span { display: block; margin-top: 28px; font-size: .72rem; }
.c-footer { min-height: 105px; display: flex; align-items: center; justify-content: space-between; font-size: .72rem; }
.c-footer strong { font-size: 1rem; }

/* Northstar: institutional admissions site */
.theme-northstar { background: #f1f4f6; color: #0f2942; }
.n-wrap { width: min(1180px, calc(100% - 42px)); margin-inline: auto; }
.n-utility { background: #0f2942; color: #d8e0e7; font-size: .68rem; }
.n-utility > div { min-height: 38px; display: flex; align-items: center; justify-content: space-between; }
.n-header { min-height: 92px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 35px; }
.n-brand { font-weight: 950; letter-spacing: .11em; }
.n-brand small { display: block; color: #7a8895; font-size: .48rem; letter-spacing: .17em; }
.n-header nav { display: flex; gap: 28px; color: #5e6e7e; font-size: .76rem; font-weight: 750; }
.n-header > a:last-child { justify-self: end; padding: 10px 20px; background: #0f2942; color: white; font-size: .72rem; font-weight: 850; }
.n-hero { background: #0f2942; color: white; }
.n-hero-grid { min-height: 620px; display: grid; grid-template-columns: 1.25fr .75fr; gap: 95px; align-items: center; }
.n-hero-grid > div > p { color: #e1bd78; font-size: .7rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.n-hero h1 { max-width: 720px; margin-bottom: 28px; font-family: Georgia, serif; font-size: clamp(4.3rem, 7vw, 7rem); font-weight: 500; letter-spacing: -.06em; line-height: .94; }
.n-hero-grid > div > span { display: block; max-width: 640px; color: #bac6d0; font-size: 1.02rem; }
.n-hero aside { padding: 34px; border: 1px solid rgba(255,255,255,.24); background: rgba(255,255,255,.05); }
.n-hero aside > small { color: #e1bd78; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.n-hero aside h2 { margin: 14px 0 22px; font-family: Georgia, serif; font-size: 2.1rem; font-weight: 500; }
.n-hero dl { margin: 0 0 24px; }
.n-hero dl > div { display: flex; justify-content: space-between; gap: 20px; padding: 12px 0; border-top: 1px solid rgba(255,255,255,.16); }
.n-hero dt { color: #9fb0be; }
.n-hero dd { margin: 0; font-weight: 800; }
.n-hero aside > a { display: block; padding: 12px; background: #e1bd78; color: #0f2942; text-align: center; font-size: .76rem; font-weight: 900; }
.n-metrics { display: grid; grid-template-columns: repeat(4, 1fr); border-inline: 1px solid rgba(15,41,66,.17); }
.n-metrics > div { min-height: 160px; display: flex; flex-direction: column; justify-content: center; padding: 25px; border-right: 1px solid rgba(15,41,66,.17); }
.n-metrics > div:last-child { border-right: 0; }
.n-metrics strong { font-family: Georgia, serif; font-size: 2.8rem; font-weight: 500; }
.n-metrics span { max-width: 170px; color: #687989; font-size: .72rem; }
.n-model { display: grid; grid-template-columns: .75fr 1.25fr; gap: 95px; padding: 115px 0; }
.n-section-title > span, .n-outcomes > div > div > span, .n-admissions > div > span { color: #9a6f31; font-size: .68rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.n-section-title h2, .n-outcomes h2, .n-admissions h2 { margin: 18px 0; font-family: Georgia, serif; font-size: clamp(2.8rem, 4.7vw, 4.6rem); font-weight: 500; letter-spacing: -.05em; line-height: 1.02; }
.n-section-title p { color: #667788; }
.n-matrix { border: 1px solid #cbd4db; background: white; }
.n-matrix > div { display: grid; grid-template-columns: repeat(4, 1fr); }
.n-matrix > div > * { min-height: 58px; display: flex; align-items: center; padding: 12px; border-right: 1px solid #d8e0e5; border-bottom: 1px solid #d8e0e5; font-size: .75rem; }
.n-matrix > div > *:last-child { border-right: 0; }
.n-matrix > div:last-child > * { border-bottom: 0; }
.n-matrix-head { background: #dce4ea; font-weight: 850; }
.n-outcomes { background: #dce4ea; }
.n-outcomes > div { display: grid; grid-template-columns: .7fr 1.3fr; gap: 90px; padding: 105px 0; }
.n-outcomes ol { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; list-style: none; padding: 0; margin: 0; background: #bcc9d2; }
.n-outcomes li { min-height: 180px; padding: 25px; background: #f1f4f6; }
.n-outcomes li b { font-family: Georgia, serif; font-size: 1.5rem; font-weight: 500; }
.n-outcomes li p { margin: 50px 0 0; color: #677888; font-size: .82rem; }
.n-admissions { padding: 115px 0; }
.n-admissions > div { max-width: 720px; }
.n-admissions ol { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; list-style: none; padding: 0; margin: 50px 0 35px; }
.n-admissions li { min-height: 135px; padding: 20px; border-top: 3px solid #b88738; background: white; }
.n-admissions li b, .n-admissions li span { display: block; }
.n-admissions li b { color: #b88738; }
.n-admissions li span { margin-top: 35px; font-size: .82rem; font-weight: 800; }
.n-admissions > a { display: inline-block; padding: 13px 20px; background: #0f2942; color: white; font-size: .78rem; font-weight: 850; }
.n-footer { background: #0f2942; color: #9cabb8; }
.n-footer > div { min-height: 120px; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; font-size: .7rem; }
.n-footer strong { color: white; }
.n-footer span:nth-child(2) { text-align: center; }
.n-footer span:last-child { text-align: right; }

/* Sunroom: photo-led open house */
.theme-sunroom { background: #fff7cf; color: #563c18; }
.s-wrap { width: min(1160px, calc(100% - 42px)); margin-inline: auto; }
.s-header { min-height: 92px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 28px; }
.s-brand { font-size: .98rem; font-weight: 900; letter-spacing: .12em; }
.s-header nav { display: flex; gap: 28px; font-size: .76rem; font-weight: 750; }
.s-header > a:last-child { justify-self: end; padding: 11px 18px; border-radius: 999px; background: #dc6035; color: white; font-size: .74rem; font-weight: 850; }
.s-hero { position: relative; min-height: 540px; display: grid; place-content: center; justify-items: center; text-align: center; overflow: hidden; }
.s-hero::before { content: ""; position: absolute; z-index: -1; width: 410px; height: 410px; border-radius: 50%; background: #f5c449; }
.s-hero > p { font-size: .72rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.s-hero h1 { margin: 0; font-family: Georgia, serif; font-size: clamp(5rem, 10vw, 9.5rem); font-weight: 500; letter-spacing: -.08em; line-height: .76; }
.s-hero > span { max-width: 630px; margin-top: 45px; color: #806b47; }
.s-panorama { position: relative; width: min(1340px, calc(100% - 50px)); height: 470px; margin: 0 auto; }
.s-panorama img { height: 100%; object-fit: cover; object-position: center 45%; border-radius: 240px 240px 18px 18px; }
.s-panorama figcaption { position: absolute; left: 50%; bottom: 22px; display: flex; align-items: center; gap: 14px; padding: 12px 18px; border-radius: 999px; background: #fffdf2; transform: translateX(-50%); font-size: .75rem; }
.s-panorama figcaption b { color: #dc6035; text-transform: uppercase; }
.s-welcome { display: grid; grid-template-columns: .3fr 1.1fr .8fr; gap: 55px; align-items: start; padding: 110px 0; }
.s-welcome small, .s-section-heading > p { color: #dc6035; font-size: .7rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.s-welcome h2, .s-section-heading h2, .s-visit h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(2.8rem, 5vw, 4.8rem); font-weight: 500; letter-spacing: -.055em; line-height: 1.02; }
.s-welcome p { margin: 5px 0 0; color: #7e6b48; }
.s-rhythm { padding: 105px 0; background: #fffdf2; }
.s-section-heading { display: grid; grid-template-columns: .35fr 1.65fr; gap: 45px; }
.s-rhythm-line { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; margin-top: 65px; }
.s-rhythm-line::before { content: ""; position: absolute; left: 0; right: 0; top: 21px; height: 2px; background: #e4c976; }
.s-rhythm-line article { position: relative; padding: 55px 28px 0 0; }
.s-rhythm-line article::before { content: ""; position: absolute; left: 0; top: 13px; width: 18px; height: 18px; border: 5px solid #fffdf2; border-radius: 50%; background: #dc6035; box-shadow: 0 0 0 1px #dc6035; }
.s-rhythm-line time { color: #dc6035; font-weight: 850; }
.s-rhythm-line h3 { margin: 9px 0 5px; font-family: Georgia, serif; font-size: 1.3rem; font-weight: 500; }
.s-rhythm-line p { margin: 0; color: #7e6b48; font-size: .82rem; }
.s-spaces { padding: 110px 0; }
.s-space-grid { display: grid; grid-template-columns: 1.25fr .75fr; grid-template-rows: 260px 260px; gap: 16px; margin-top: 55px; }
.s-space-grid article { padding: 30px; border-radius: 120px 120px 18px 18px; background: #f5c449; }
.s-space-grid article:nth-child(2) { background: #ffdcb0; }
.s-space-grid article:nth-child(3) { background: #cfe5cd; }
.s-space-grid article > span { font-size: .68rem; font-weight: 900; letter-spacing: .12em; }
.s-space-grid h3 { max-width: 420px; margin: 85px 0 4px; font-family: Georgia, serif; font-size: 2rem; font-weight: 500; }
.s-space-grid p { margin: 0; font-size: .78rem; }
.s-space-wide { grid-row: span 2; }
.s-space-wide h3 { margin-top: 300px; font-size: 2.6rem; }
.s-space-quote { display: grid; align-content: center; border-radius: 18px !important; background: #dc6035 !important; color: white; text-align: center; }
.s-space-quote blockquote { margin: 0; font-family: Georgia, serif; font-size: 1.75rem; line-height: 1.15; }
.s-space-quote p { margin-top: 14px; }
.s-visit { min-height: 360px; display: grid; grid-template-columns: 1fr auto; align-content: center; align-items: end; gap: 25px 60px; padding: 60px max(24px, calc((100vw - 1160px) / 2)); background: #563c18; color: #fffdf2; }
.s-visit > a { padding: 14px 20px; border-radius: 999px; background: #f5c449; color: #563c18; font-size: .76rem; font-weight: 850; }
.s-visit > span { grid-column: 1 / -1; color: #d5c7a4; font-size: .74rem; }
.s-footer { min-height: 100px; display: flex; align-items: center; justify-content: space-between; font-size: .72rem; }

/* Storybook: chapter-based narrative */
.theme-storybook { background: #173c34; color: #f7eedc; }
.sb-wrap { width: min(1100px, calc(100% - 42px)); margin-inline: auto; }
.sb-header { min-height: 92px; display: flex; align-items: center; justify-content: space-between; gap: 35px; }
.sb-brand { font-family: Georgia, serif; font-size: 1.45rem; font-style: italic; font-weight: 700; }
.sb-header nav { display: flex; gap: 28px; color: #cad4ca; font-size: .76rem; }
.sb-cover { position: relative; min-height: 720px; display: grid; align-items: center; overflow: hidden; }
.sb-cover::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 19%; background: #a14431; }
.sb-cover > div { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr .82fr; gap: 90px; align-items: center; padding: 70px 0 100px; }
.sb-cover-copy > p { color: #ddb873; font-size: .72rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.sb-cover h1 { margin-bottom: 30px; font-family: Georgia, serif; font-size: clamp(4.2rem, 7vw, 7rem); font-weight: 500; letter-spacing: -.065em; line-height: .88; }
.sb-cover-copy > span { display: block; max-width: 560px; color: #c6d0c5; }
.sb-cover-copy > a { display: inline-block; margin-top: 30px; padding: 12px 19px; background: #a14431; color: white; font-size: .76rem; font-weight: 850; }
.sb-cover figure { position: relative; margin: 0; }
.sb-cover img { aspect-ratio: .74; object-fit: cover; object-position: 68% center; border: 10px solid #f7eedc; border-radius: 50% 50% 8px 8px; }
.sb-cover figcaption { position: absolute; right: -25px; bottom: 25px; padding: 10px 14px; background: #ddb873; color: #173c34; font-size: .72rem; font-weight: 800; transform: rotate(-3deg); }
.sb-opening { display: grid; grid-template-columns: .3fr 1.7fr; gap: 60px; padding: 95px 0; border-block: 1px solid rgba(247,238,220,.2); }
.sb-opening > span { color: #ddb873; font-size: .72rem; text-transform: uppercase; }
.sb-opening > p { max-width: 880px; margin: 0; font-family: Georgia, serif; font-size: clamp(2rem, 3.8vw, 3.7rem); letter-spacing: -.045em; line-height: 1.15; }
.sb-chapters { padding: 110px 0; }
.sb-chapter-title { display: grid; grid-template-columns: .35fr 1.65fr; gap: 50px; margin-bottom: 55px; }
.sb-chapter-title small, .sb-shelf small { color: #ddb873; text-transform: uppercase; }
.sb-chapter-title h2, .sb-shelf h2, .sb-ending h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(3rem, 5vw, 5rem); font-weight: 500; letter-spacing: -.055em; line-height: .98; }
.sb-chapters > article { display: grid; grid-template-columns: .8fr 1fr 70px; gap: 55px; align-items: center; min-height: 180px; padding: 25px 0; border-top: 1px solid rgba(247,238,220,.22); }
.sb-chapters > article:last-child { border-bottom: 1px solid rgba(247,238,220,.22); }
.sb-chapters article span { color: #ddb873; font-size: .66rem; text-transform: uppercase; }
.sb-chapters article h3 { margin: 4px 0; font-family: Georgia, serif; font-size: 2rem; font-weight: 500; }
.sb-chapters article p { margin: 0; color: #c3cdc3; }
.sb-chapters article > b { color: rgba(247,238,220,.18); font-family: Georgia, serif; font-size: 3.5rem; font-weight: 500; text-align: right; }
.sb-storytime { padding: 120px 0; background: #f7eedc; color: #29433b; }
.sb-storytime span { color: #a14431; font-size: .7rem; font-weight: 850; text-transform: uppercase; }
.sb-storytime h2 { max-width: 920px; margin: 22px 0; font-family: Georgia, serif; font-size: clamp(3.2rem, 6vw, 6rem); font-weight: 500; letter-spacing: -.06em; line-height: .98; }
.sb-storytime p { max-width: 620px; color: #69766f; }
.sb-shelf { display: grid; grid-template-columns: .7fr 1.3fr; gap: 85px; padding: 110px 0; }
.sb-shelf ul { list-style: none; padding: 0; margin: 0; border-top: 1px solid rgba(247,238,220,.22); }
.sb-shelf li { display: grid; grid-template-columns: 45px 1fr; gap: 20px; padding: 22px 0; border-bottom: 1px solid rgba(247,238,220,.22); font-family: Georgia, serif; font-size: 1.25rem; }
.sb-shelf li span { color: #ddb873; font-family: "Avenir Next", sans-serif; font-size: .65rem; }
.sb-quote { padding: 100px 0; border-top: 1px solid rgba(247,238,220,.2); text-align: center; }
.sb-quote blockquote { max-width: 850px; margin: 0 auto; font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 4rem); line-height: 1.12; }
.sb-quote > span { display: block; margin-top: 24px; color: #ddb873; font-size: .72rem; text-transform: uppercase; }
.sb-ending { background: #a14431; }
.sb-ending > div { min-height: 420px; display: grid; place-content: center; justify-items: center; text-align: center; }
.sb-ending p { letter-spacing: .12em; text-transform: uppercase; }
.sb-ending a { margin-top: 30px; padding: 13px 20px; background: #f7eedc; color: #29433b; font-size: .76rem; font-weight: 850; }
.sb-ending span { margin-top: 24px; font-size: .72rem; }
.sb-footer { min-height: 105px; display: flex; align-items: center; justify-content: space-between; color: #c5cec4; font-size: .72rem; }
.sb-footer strong { color: #f7eedc; font-family: Georgia, serif; font-size: 1.05rem; font-style: italic; }

/* Sprout: minimal Montessori catalog with sidebar */
.theme-sprout { background: #fbfcf7; color: #253d2d; }
.sp-shell { display: grid; grid-template-columns: 235px 1fr; }
.sp-sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; padding: 44px 34px; border-right: 1px solid #d9e2d8; background: #f1f5ed; }
.sp-brand { font-size: 1.05rem; font-weight: 900; letter-spacing: .22em; }
.sp-sidebar > p { margin: 3px 0 0; color: #718073; font-size: .66rem; }
.sp-sidebar nav { display: grid; gap: 18px; margin-top: 95px; color: #536657; font-size: .72rem; font-weight: 750; }
.sp-sidebar > span { margin-top: auto; color: #718073; font-size: .68rem; }
.sp-main { min-width: 0; }
.sp-hero { min-height: 720px; display: grid; grid-template-columns: .8fr 1.2fr; gap: 80px; align-items: center; padding: 75px max(35px, calc((100vw - 235px - 1050px) / 2)); }
.sp-hero > div > p { color: #71886a; font-size: .7rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.sp-hero h1 { margin-bottom: 28px; font-size: clamp(4.4rem, 8vw, 7.4rem); font-weight: 350; letter-spacing: -.075em; line-height: .84; }
.sp-hero > div > span { display: block; color: #6b786e; }
.sp-hero > div > a { display: inline-block; margin-top: 30px; padding-bottom: 3px; border-bottom: 1px solid #253d2d; font-size: .78rem; font-weight: 800; }
.sp-hero figure { margin: 0; }
.sp-hero img { aspect-ratio: .9; object-fit: cover; object-position: 68% center; filter: saturate(.72); }
.sp-intro { display: grid; grid-template-columns: .25fr 1.75fr; gap: 55px; padding: 95px max(35px, calc((100vw - 235px - 1050px) / 2)); background: #e4ebe0; }
.sp-intro > span { color: #71886a; font-size: .7rem; text-transform: uppercase; }
.sp-intro > p { max-width: 900px; margin: 0; font-size: clamp(1.8rem, 3vw, 3.1rem); font-weight: 350; line-height: 1.25; }
.sp-principles, .sp-environments, .sp-rhythm { display: grid; grid-template-columns: .42fr 1.58fr; gap: 65px; padding: 110px max(35px, calc((100vw - 235px - 1050px) / 2)); border-bottom: 1px solid #d9e2d8; }
.sp-principles header > span, .sp-environments header > span, .sp-rhythm header > span { color: #71886a; font-size: .68rem; }
.sp-principles h2, .sp-environments h2, .sp-rhythm h2 { margin: 12px 0 0; font-size: 1.2rem; font-weight: 500; }
.sp-principles > div { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: #ccd7c9; }
.sp-principles article { min-height: 205px; padding: 28px; background: #fbfcf7; }
.sp-principles article b { font-size: 1.05rem; font-weight: 600; }
.sp-principles article p { margin: 85px 0 0; color: #6a786e; font-size: .82rem; }
.sp-env-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.sp-env-grid article { padding: 27px; border: 1px solid #ced8cc; }
.sp-env-grid small { color: #71886a; }
.sp-env-grid h3 { min-height: 75px; margin: 65px 0 15px; font-size: 1.35rem; font-weight: 450; }
.sp-env-grid ul { list-style: none; padding: 0; margin: 0; color: #6a786e; font-size: .78rem; }
.sp-env-grid li { padding: 8px 0; border-top: 1px solid #d9e2d8; }
.sp-rhythm table { width: 100%; border-collapse: collapse; }
.sp-rhythm th, .sp-rhythm td { padding: 19px 0; border-bottom: 1px solid #d9e2d8; text-align: left; }
.sp-rhythm th { width: 110px; color: #71886a; font-weight: 600; }
.sp-rhythm td { color: #536457; }
.sp-testimonial { padding: 120px max(35px, calc((100vw - 235px - 1050px) / 2)); background: #253d2d; color: #f5f7f0; }
.sp-testimonial blockquote { max-width: 900px; margin: 0; font-size: clamp(2.2rem, 4.2vw, 4.2rem); font-weight: 350; letter-spacing: -.05em; line-height: 1.12; }
.sp-testimonial > span { display: block; margin-top: 25px; color: #b9c8b9; font-size: .7rem; text-transform: uppercase; }
.sp-apply { min-height: 410px; display: grid; align-content: center; padding: 70px max(35px, calc((100vw - 235px - 1050px) / 2)); }
.sp-apply > span { color: #71886a; font-size: .7rem; text-transform: uppercase; }
.sp-apply h2 { margin: 20px 0 0; font-size: clamp(3.5rem, 6vw, 6rem); font-weight: 350; letter-spacing: -.065em; }
.sp-apply p { color: #68766c; }
.sp-apply a { width: max-content; margin-top: 15px; padding: 13px 19px; background: #253d2d; color: white; font-size: .76rem; font-weight: 800; }

/* Daybreak: operations-first family site */
.theme-daybreak { background: #fff4e5; color: #4b2741; }
.d-wrap { width: min(1180px, calc(100% - 42px)); margin-inline: auto; }
.d-header { background: #fffaf3; border-bottom: 1px solid #ead8cd; }
.d-header > div { min-height: 90px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 35px; }
.d-brand { font-size: 1.45rem; font-weight: 900; letter-spacing: -.07em; }
.d-quick { display: flex; gap: 24px; color: #846d7d; font-size: .72rem; }
.d-header > div > a:last-child { justify-self: end; padding: 11px 17px; border-radius: 999px; background: #8d3f60; color: white; font-size: .72rem; font-weight: 850; }
.d-hero { padding: 75px 0; background: linear-gradient(135deg, #ffd8c2, #fff4e5 58%); }
.d-hero-grid { min-height: 570px; display: grid; grid-template-columns: 1.15fr .65fr; gap: 90px; align-items: center; }
.d-hero-grid > div > p, .d-section-heading > p, .d-enroll p { color: #b34d58; font-size: .7rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.d-hero h1 { max-width: 760px; margin-bottom: 28px; font-size: clamp(4.4rem, 7.5vw, 7.4rem); font-weight: 900; letter-spacing: -.085em; line-height: .88; }
.d-hero-grid > div > span { display: block; max-width: 620px; color: #785f70; }
.d-hero-grid > div > div { display: flex; gap: 22px; margin-top: 32px; }
.d-hero-grid > div > div a:first-child { padding: 12px 19px; border-radius: 999px; background: #8d3f60; color: white; font-size: .76rem; font-weight: 850; }
.d-hero-grid > div > div a:last-child { align-self: center; border-bottom: 1px solid #4b2741; font-size: .75rem; font-weight: 800; }
.d-hero aside { padding: 32px; border-radius: 26px; background: #fffaf3; box-shadow: 0 24px 55px rgba(75,39,65,.13); }
.d-hero aside > small { color: #b34d58; font-weight: 850; text-transform: uppercase; }
.d-hero aside h2 { margin: 10px 0 22px; font-size: 1.65rem; }
.d-hero aside ul { list-style: none; padding: 0; margin: 0 0 23px; }
.d-hero aside li { display: flex; justify-content: space-between; gap: 20px; padding: 12px 0; border-top: 1px solid #ead8cd; font-size: .8rem; }
.d-hero aside li b { color: #b34d58; }
.d-hero aside > a { display: block; padding: 12px; border-radius: 999px; background: #f7bd55; text-align: center; font-size: .76rem; font-weight: 850; }
.d-family-bar { background: #8d3f60; color: white; }
.d-family-bar > div { display: grid; grid-template-columns: repeat(4, 1fr); }
.d-family-bar span { min-height: 115px; display: flex; flex-direction: column; justify-content: center; padding: 20px; border-right: 1px solid rgba(255,255,255,.18); color: #f0dce7; font-size: .72rem; }
.d-family-bar span:last-child { border-right: 0; }
.d-family-bar b { color: white; font-size: .82rem; }
.d-schedule { padding: 110px 0; }
.d-section-heading { display: grid; grid-template-columns: .35fr 1.65fr; gap: 50px; }
.d-section-heading h2, .d-enroll h2 { margin: 0; max-width: 820px; font-size: clamp(3rem, 5.3vw, 5.2rem); font-weight: 900; letter-spacing: -.075em; line-height: .92; }
.d-clock { margin-top: 60px; padding-left: 95px; }
.d-clock article { position: relative; display: grid; grid-template-columns: 130px 1fr; gap: 30px; min-height: 115px; padding: 0 0 28px 35px; border-left: 3px solid #f0b94f; }
.d-clock article::before { content: ""; position: absolute; left: -10px; top: 0; width: 17px; height: 17px; border-radius: 50%; background: #b34d58; box-shadow: 0 0 0 6px #fff4e5; }
.d-clock time { color: #b34d58; font-weight: 900; }
.d-clock h3 { margin: 0 0 4px; font-size: 1.25rem; }
.d-clock p { margin: 0; color: #7e6878; }
.d-tools { padding: 105px 0; background: #fffaf3; }
.d-tool-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 50px; }
.d-tool-grid article { min-height: 270px; padding: 28px; border-radius: 24px; background: #ffd8c2; }
.d-tool-grid article:nth-child(2) { background: #f7bd55; }
.d-tool-grid article:nth-child(3) { background: #eadce6; }
.d-tool-grid b { color: #b34d58; font-size: .72rem; }
.d-tool-grid h3 { margin: 95px 0 6px; font-size: 1.2rem; }
.d-tool-grid p { margin: 0; color: #6f5a69; font-size: .82rem; }
.d-proof { display: grid; grid-template-columns: .55fr 1.45fr; gap: 80px; align-items: center; padding: 115px 0; }
.d-proof > div { display: flex; flex-direction: column; }
.d-proof > div strong { font-size: 5.5rem; font-weight: 900; letter-spacing: -.08em; line-height: 1; }
.d-proof > div span { max-width: 180px; color: #7b6676; font-size: .78rem; }
.d-proof blockquote { margin: 0; font-size: clamp(2.2rem, 4vw, 4rem); font-weight: 700; letter-spacing: -.055em; line-height: 1.1; }
.d-proof blockquote small { display: block; margin-top: 22px; color: #b34d58; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; }
.d-enroll { background: #4b2741; color: white; }
.d-enroll > div { min-height: 330px; display: flex; align-items: center; justify-content: space-between; gap: 60px; }
.d-enroll h2 { max-width: 760px; }
.d-enroll > div > a { padding: 14px 20px; border-radius: 999px; background: #f7bd55; color: #4b2741; font-size: .76rem; font-weight: 850; }
.d-footer { min-height: 105px; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; color: #7d6877; font-size: .72rem; }
.d-footer strong { color: #4b2741; font-size: 1.1rem; }
.d-footer span:nth-child(2) { text-align: center; }
.d-footer span:last-child { text-align: right; }

/* Patchwork: creative collage */
.theme-patchwork { background: #f5f1ff; color: #282052; }
.p-wrap { width: min(1180px, calc(100% - 42px)); margin-inline: auto; }
.p-header { min-height: 92px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 30px; }
.p-brand { font-size: 1rem; font-weight: 950; letter-spacing: .08em; }
.p-header nav { display: flex; gap: 28px; font-size: .76rem; font-weight: 850; }
.p-header > a:last-child { justify-self: end; padding: 10px 14px; border: 3px solid #282052; background: #ffd147; box-shadow: 5px 5px 0 #282052; font-size: .7rem; font-weight: 950; }
.p-hero { display: grid; grid-template-columns: 1.15fr .85fr; grid-template-rows: 440px 150px; gap: 14px; padding: 35px 0 80px; }
.p-block { border: 4px solid #282052; }
.p-copy { padding: 46px; background: white; box-shadow: 10px 10px 0 #ed5448; transform: rotate(-.7deg); }
.p-copy > p { font-size: .72rem; font-weight: 950; text-transform: uppercase; }
.p-copy h1 { margin-bottom: 25px; font-size: clamp(4.6rem, 8vw, 7.8rem); font-weight: 950; letter-spacing: -.09em; line-height: .78; }
.p-copy > span { display: block; max-width: 570px; color: #665d7c; }
.p-image { overflow: hidden; background: #74c7b5; transform: rotate(1.2deg); }
.p-image img { height: 100%; object-fit: cover; object-position: 68% center; }
.p-sticker { display: grid; place-content: center; background: #8069d8; color: white; font-size: 1.5rem; font-weight: 950; letter-spacing: .06em; text-align: center; transform: rotate(1deg); }
.p-button { display: grid; place-content: center; background: #ffd147; font-size: 1.2rem; font-weight: 950; text-align: center; transform: rotate(-1deg); }
.p-values { padding: 100px 0; }
.p-value-title { display: grid; grid-template-columns: .35fr 1.65fr; gap: 45px; }
.p-value-title > span { font-size: .72rem; font-weight: 950; text-transform: uppercase; }
.p-value-title h2, .p-projects h2, .p-people h2, .p-tour h2 { margin: 0; font-size: clamp(3.2rem, 5.8vw, 5.8rem); font-weight: 950; letter-spacing: -.08em; line-height: .9; }
.p-value-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 55px; }
.p-value-grid article { min-height: 280px; padding: 28px; border: 3px solid #282052; }
.p-value-grid b { font-size: .72rem; }
.p-value-grid h3 { margin: 125px 0 6px; font-size: 1.35rem; }
.p-value-grid p { margin: 0; font-size: .84rem; }
.p-red { background: #ed5448; color: white; }
.p-yellow { background: #ffd147; transform: translateY(18px); }
.p-blue { background: #74c7b5; }
.p-purple { background: #8069d8; color: white; transform: translateY(18px); }
.p-support { padding: 110px 0; background: #282052; color: white; }
.p-support > div { display: grid; grid-template-columns: .3fr 1fr .7fr; gap: 55px; }
.p-support > div > p { font-size: .72rem; font-weight: 950; text-transform: uppercase; }
.p-support h2 { margin: 0; font-size: clamp(3rem, 5vw, 5rem); font-weight: 950; letter-spacing: -.075em; line-height: .92; }
.p-support ul { list-style: none; padding: 0; margin: 0; }
.p-support li { padding: 13px 0; border-bottom: 1px solid rgba(255,255,255,.25); font-size: .82rem; }
.p-projects { display: grid; grid-template-columns: .55fr 1.45fr; gap: 75px; padding: 110px 0; }
.p-projects small, .p-people > div > span { font-weight: 950; text-transform: uppercase; }
.p-project-strip { display: grid; gap: 12px; }
.p-project-strip article { padding: 26px; border: 3px solid #282052; background: white; box-shadow: 7px 7px 0 #282052; }
.p-project-strip article:nth-child(2) { background: #ffd147; transform: rotate(1deg); }
.p-project-strip span { font-size: .66rem; font-weight: 950; }
.p-project-strip h3 { margin: 28px 0 5px; font-size: 1.25rem; }
.p-project-strip p { margin: 0; color: #665d7c; font-size: .82rem; }
.p-people { display: grid; grid-template-columns: 1fr 1fr; gap: 75px; padding: 100px 0; border-top: 3px solid #282052; }
.p-person-list { display: grid; gap: 12px; }
.p-person-list article { display: grid; grid-template-columns: 62px 1fr; gap: 18px; align-items: center; padding: 14px; border: 3px solid #282052; background: white; }
.p-person-list article > b { display: grid; place-items: center; width: 62px; height: 62px; border-radius: 50%; background: #74c7b5; }
.p-person-list article:nth-child(2) > b { background: #ffd147; }
.p-person-list article:nth-child(3) > b { background: #ed5448; color: white; }
.p-person-list span, .p-person-list strong { display: block; }
.p-tour { padding: 110px 0; background: #ed5448; color: white; text-align: center; }
.p-tour > div > span { font-weight: 950; text-transform: uppercase; }
.p-tour h2 { margin-top: 24px; }
.p-tour a { display: inline-block; margin-top: 30px; padding: 13px 19px; border: 3px solid #282052; background: #ffd147; color: #282052; box-shadow: 6px 6px 0 #282052; font-weight: 950; }
.p-tour p { margin: 25px 0 0; }
.p-footer { min-height: 105px; display: flex; align-items: center; justify-content: space-between; font-size: .72rem; }

/* Atlas: exploratory route map */
.theme-atlas { background: #0d3151; color: #e9f7f4; }
.a-wrap { width: min(1160px, calc(100% - 42px)); margin-inline: auto; }
.a-header { min-height: 92px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 30px; }
.a-brand { display: inline-flex; align-items: center; gap: 9px; font-size: .94rem; font-weight: 900; letter-spacing: .14em; }
.a-brand span { color: #f2c45c; font-size: 1.6rem; }
.a-header nav { display: flex; gap: 28px; color: #acd0d0; font-size: .75rem; }
.a-header > a:last-child { justify-self: end; padding: 10px 17px; border: 1px solid #62c7bd; border-radius: 999px; color: #62c7bd; font-size: .7rem; font-weight: 900; }
.a-hero { position: relative; min-height: 670px; display: grid; grid-template-columns: 1fr .82fr; gap: 85px; align-items: center; background-image: radial-gradient(rgba(255,255,255,.13) 1px, transparent 1px); background-size: 22px 22px; }
.a-hero > div > p { color: #f2c45c; font-size: .7rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.a-hero h1 { margin-bottom: 30px; font-family: Georgia, serif; font-size: clamp(4.4rem, 7vw, 7rem); font-weight: 500; letter-spacing: -.065em; line-height: .89; }
.a-hero > div > span { display: block; max-width: 620px; color: #aac2ca; }
.a-hero > div > a { display: inline-block; margin-top: 32px; padding: 13px 20px; border-radius: 999px; background: #f2c45c; color: #0d3151; font-size: .76rem; font-weight: 900; }
.a-hero figure { position: relative; margin: 0; }
.a-hero img { aspect-ratio: 1; object-fit: cover; object-position: 68% center; border: 8px solid #62c7bd; border-radius: 50%; }
.a-hero figcaption { position: absolute; right: -20px; bottom: 35px; padding: 13px 16px; border-radius: 10px; background: #f6efd9; color: #0d3151; font-size: .7rem; font-weight: 800; transform: rotate(3deg); }
.a-route { padding: 110px 0; }
.a-route header, .a-labs header { display: grid; grid-template-columns: .35fr 1.65fr; gap: 45px; }
.a-route header span, .a-labs header span, .a-programs > div > span { color: #f2c45c; font-size: .68rem; font-weight: 850; letter-spacing: .1em; }
.a-route h2, .a-labs h2, .a-programs h2, .a-passport h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(3rem, 5.2vw, 5.2rem); font-weight: 500; letter-spacing: -.055em; line-height: .98; }
.a-map { position: relative; display: grid; grid-template-columns: repeat(5, 1fr); gap: 20px; margin-top: 70px; }
.a-map > i { position: absolute; left: 5%; right: 5%; top: 30px; height: 2px; border-top: 2px dashed #62c7bd; }
.a-map article { position: relative; padding-top: 70px; }
.a-map article::before { content: ""; position: absolute; left: 0; top: 19px; width: 18px; height: 18px; border: 5px solid #0d3151; border-radius: 50%; background: #f2c45c; box-shadow: 0 0 0 2px #f2c45c; }
.a-map b { color: #f2c45c; font-size: .68rem; }
.a-map h3 { margin: 8px 0 5px; font-family: Georgia, serif; font-size: 1.4rem; font-weight: 500; }
.a-map p { margin: 0; color: #a8c1c8; font-size: .8rem; }
.a-labs { padding: 110px 0; background: #f6efd9; color: #0d3151; }
.a-labs header span { color: #977520; }
.a-lab-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 60px; }
.a-lab-grid article { min-height: 240px; padding: 28px; border: 1px solid #cfc5a7; }
.a-lab-grid article:nth-child(2), .a-lab-grid article:nth-child(3) { background: #e0efeb; }
.a-lab-grid small { color: #477f7a; font-weight: 900; }
.a-lab-grid h3 { margin: 90px 0 5px; font-family: Georgia, serif; font-size: 1.55rem; font-weight: 500; }
.a-lab-grid p { margin: 0; color: #657477; font-size: .82rem; }
.a-programs { display: grid; grid-template-columns: .7fr 1.3fr; gap: 80px; padding: 110px 0; }
.a-programs > div:last-child { border-top: 1px solid rgba(233,247,244,.2); }
.a-programs article { display: grid; grid-template-columns: .65fr .55fr 1fr; gap: 25px; padding: 25px 0; border-bottom: 1px solid rgba(233,247,244,.2); }
.a-programs article b { color: #f2c45c; }
.a-programs article span, .a-programs article p { color: #a8c1c8; font-size: .8rem; }
.a-programs article p { margin: 0; }
.a-quote { padding: 115px max(25px, calc((100vw - 1060px) / 2)); background: #092844; text-align: center; }
.a-quote blockquote { max-width: 950px; margin: 0 auto; font-family: Georgia, serif; font-size: clamp(2.3rem, 4.5vw, 4.4rem); letter-spacing: -.05em; line-height: 1.12; }
.a-quote span { display: block; margin-top: 25px; color: #62c7bd; font-size: .7rem; text-transform: uppercase; }
.a-passport { display: grid; grid-template-columns: 1fr .55fr; gap: 90px; align-items: center; padding: 110px 0; }
.a-passport-card { padding: 45px; border: 2px solid #f2c45c; border-radius: 18px; background: #f6efd9; color: #0d3151; box-shadow: 12px 12px 0 #62c7bd; transform: rotate(-1deg); }
.a-passport-card > small { color: #477f7a; font-weight: 900; letter-spacing: .12em; }
.a-passport-card ol { list-style: none; padding: 0; margin: 35px 0; }
.a-passport-card li { display: grid; grid-template-columns: 45px 1fr; padding: 14px 0; border-top: 1px solid #cfc5a7; }
.a-passport-card li b { color: #977520; }
.a-passport-card a { display: inline-block; padding: 12px 19px; border-radius: 999px; background: #0d3151; color: white; font-size: .76rem; font-weight: 850; }
.a-stamp { justify-self: center; display: grid; place-content: center; width: 220px; height: 220px; border: 5px double #f2c45c; border-radius: 50%; color: #f2c45c; font-size: 1.25rem; font-weight: 900; letter-spacing: .14em; text-align: center; transform: rotate(10deg); }
.a-footer { min-height: 110px; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; color: #9db9c0; font-size: .7rem; }
.a-footer strong { color: white; }
.a-footer span:nth-child(2) { text-align: center; }
.a-footer span:last-child { text-align: right; }

/* Hearth: neighborhood newspaper */
.theme-hearth { background: #ead7c1; color: #522e25; }
.h-wrap { width: min(1120px, calc(100% - 42px)); margin-inline: auto; }
.h-masthead { min-height: 135px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 30px; border-bottom: 1px solid rgba(82,46,37,.35); font-size: .66rem; text-transform: uppercase; }
.h-masthead > span:last-child { text-align: right; }
.h-brand { text-align: center; font-family: Georgia, serif; font-size: 2.2rem; font-weight: 700; letter-spacing: -.05em; text-transform: none; }
.h-brand i { color: #a54833; font-weight: 500; }
.h-brand small { display: block; margin-top: 2px; font-family: "Avenir Next", sans-serif; font-size: .48rem; letter-spacing: .15em; }
.h-nav { border-bottom: 1px solid rgba(82,46,37,.35); }
.h-nav > div { min-height: 50px; display: flex; align-items: center; justify-content: center; gap: 40px; font-size: .72rem; font-weight: 750; }
.h-lead { display: grid; grid-template-columns: .9fr 1.1fr; gap: 75px; align-items: center; padding: 75px 0 90px; }
.h-lead figure { margin: 0; }
.h-lead img { aspect-ratio: .83; object-fit: cover; object-position: 67% center; border: 10px solid #f9f0e5; border-radius: 50% 50% 2px 2px; filter: sepia(.12) saturate(.88); }
.h-lead figcaption { margin-top: 10px; color: #80675d; font-family: Georgia, serif; font-size: .78rem; font-style: italic; text-align: center; }
.h-lead > div > p { color: #a54833; font-size: .7rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.h-lead h1 { margin-bottom: 28px; font-family: Georgia, serif; font-size: clamp(4.1rem, 7vw, 6.8rem); font-weight: 500; letter-spacing: -.065em; line-height: .89; }
.h-lead > div > span { display: block; color: #80675d; }
.h-lead > div > a { display: inline-block; margin-top: 30px; padding: 12px 18px; background: #a54833; color: white; font-size: .76rem; font-weight: 850; }
.h-brief { display: grid; grid-template-columns: repeat(3, 1fr); border-block: 1px solid rgba(82,46,37,.35); }
.h-brief > div { min-height: 110px; display: flex; flex-direction: column; justify-content: center; padding: 20px 28px; border-right: 1px solid rgba(82,46,37,.35); }
.h-brief > div:last-child { border-right: 0; }
.h-brief small { color: #a54833; text-transform: uppercase; }
.h-brief strong { margin-top: 3px; font-family: Georgia, serif; font-size: 1.05rem; }
.h-story { display: grid; grid-template-columns: .7fr 1.3fr; gap: 85px; padding: 110px 0; }
.h-story header small, .h-teachers header small, .h-calendar header small, .h-programs header small, .h-visit small { color: #a54833; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.h-story h2, .h-teachers h2, .h-calendar h2, .h-programs h2, .h-visit h2 { margin: 12px 0; font-family: Georgia, serif; font-size: clamp(2.8rem, 5vw, 4.8rem); font-weight: 500; letter-spacing: -.055em; line-height: 1; }
.h-history { border-top: 1px solid rgba(82,46,37,.35); }
.h-history article { display: grid; grid-template-columns: 100px 1fr; gap: 28px; padding: 22px 0; border-bottom: 1px solid rgba(82,46,37,.35); }
.h-history time { color: #a54833; font-weight: 850; }
.h-history p { margin: 0; color: #785e55; }
.h-teachers { padding: 105px 0; background: #f9f0e5; }
.h-teachers > div { display: grid; grid-template-columns: .7fr 1.3fr; gap: 85px; }
.h-teachers header p { max-width: 430px; color: #80675d; }
.h-teacher-list { display: grid; gap: 12px; }
.h-teacher-list article { display: grid; grid-template-columns: 70px 1fr; gap: 20px; align-items: center; padding: 15px; border: 1px solid #d9c4ad; }
.h-teacher-list article > b { display: grid; place-items: center; width: 70px; height: 70px; border-radius: 50%; background: #a54833; color: white; font-family: Georgia, serif; }
.h-teacher-list h3 { margin: 0; font-family: Georgia, serif; font-size: 1.3rem; font-weight: 500; }
.h-teacher-list span { color: #80675d; font-size: .75rem; }
.h-calendar { padding: 110px 0; }
.h-calendar > div { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-top: 45px; }
.h-calendar article { min-height: 230px; padding: 26px; border-top: 5px solid #a54833; background: #f9f0e5; }
.h-calendar time { color: #a54833; font-weight: 850; }
.h-calendar h3 { margin: 95px 0 5px; font-family: Georgia, serif; font-size: 1.25rem; font-weight: 500; }
.h-calendar span { color: #80675d; font-size: .74rem; }
.h-programs { display: grid; grid-template-columns: .5fr 1.5fr; gap: 85px; padding: 105px 0; border-top: 1px solid rgba(82,46,37,.35); }
.h-programs dl { margin: 0; border-top: 1px solid rgba(82,46,37,.35); }
.h-programs dl > div { display: grid; grid-template-columns: .6fr .35fr 1.05fr; gap: 25px; padding: 22px 0; border-bottom: 1px solid rgba(82,46,37,.35); }
.h-programs dt { font-family: Georgia, serif; font-size: 1.2rem; }
.h-programs dd { margin: 0; color: #785e55; font-size: .82rem; }
.h-quote { padding: 110px 0; border-top: 1px solid rgba(82,46,37,.35); text-align: center; }
.h-quote blockquote { max-width: 850px; margin: 0 auto; font-family: Georgia, serif; font-size: clamp(2.1rem, 4vw, 4rem); letter-spacing: -.045em; line-height: 1.12; }
.h-quote > span { display: block; margin-top: 24px; color: #a54833; font-size: .7rem; text-transform: uppercase; }
.h-visit { background: #a54833; color: #f9f0e5; }
.h-visit > div { min-height: 340px; display: flex; align-items: center; justify-content: space-between; gap: 60px; }
.h-visit small { color: #f0c7aa; }
.h-visit a { padding: 13px 19px; background: #f9f0e5; color: #522e25; font-size: .76rem; font-weight: 850; }
.h-footer { min-height: 105px; display: flex; align-items: center; justify-content: space-between; color: #80675d; font-size: .72rem; }
.h-footer strong { color: #522e25; font-family: Georgia, serif; }

@media (max-width: 900px) {
  .w-header, .c-header, .n-header, .s-header, .p-header, .a-header { grid-template-columns: 1fr auto; }
  .w-header nav, .c-header nav, .n-header nav, .s-header nav, .p-header nav, .a-header nav { display: none; }
  .w-hero, .n-hero-grid, .d-hero-grid, .a-hero, .h-lead { grid-template-columns: 1fr; gap: 45px; }
  .w-hero figure, .a-hero figure { max-width: 660px; }
  .w-story, .w-programs > div, .n-model, .n-outcomes > div, .s-welcome, .sb-shelf, .d-proof, .p-support > div, .p-projects, .p-people, .a-programs, .h-story, .h-teachers > div, .h-programs { grid-template-columns: 1fr; gap: 40px; }
  .c-team { grid-template-columns: 1fr; gap: 30px; }
  .c-timeline, .n-metrics, .n-admissions ol, .s-rhythm-line, .d-family-bar > div, .d-tool-grid, .a-map, .h-calendar > div { grid-template-columns: 1fr 1fr; }
  .c-mosaic, .s-space-grid { grid-template-columns: 1fr; grid-template-rows: auto; }
  .c-tile, .s-space-grid article, .s-space-wide { min-height: 280px; grid-row: auto; }
  .s-space-wide h3 { margin-top: 100px; }
  .sb-cover > div { grid-template-columns: 1fr; }
  .sb-cover figure { max-width: 580px; }
  .sp-shell { grid-template-columns: 1fr; }
  .sp-sidebar { position: static; height: auto; flex-direction: row; align-items: center; gap: 20px; padding: 25px; }
  .sp-sidebar nav, .sp-sidebar > span, .sp-sidebar > p { display: none; }
  .sp-hero { grid-template-columns: 1fr; }
  .sp-hero figure { max-width: 650px; }
  .sp-intro, .sp-principles, .sp-environments, .sp-rhythm { grid-template-columns: 1fr; }
  .p-hero { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .p-copy, .p-image { grid-column: 1 / -1; }
  .p-image { height: 420px; }
  .a-map > i { display: none; }
  .a-map article { padding: 20px; border: 1px solid rgba(255,255,255,.18); }
  .a-map article::before { display: none; }
  .a-passport { grid-template-columns: 1fr; }
  .a-stamp { justify-self: center; }
}

@media (max-width: 620px) {
  .demo-notice { gap: 8px; font-size: .6rem; }
  .demo-notice span:last-child { display: none; }
  .w-wrap, .c-wrap, .n-wrap, .s-wrap, .sb-wrap, .d-wrap, .p-wrap, .a-wrap, .h-wrap { width: calc(100% - 28px); }
  .w-header, .c-header, .n-header, .s-header, .p-header, .a-header { min-height: 74px; }
  .w-header-cta, .c-cta, .n-header > a:last-child, .s-header > a:last-child, .p-header > a:last-child, .a-header > a:last-child { display: none; }
  .w-hero, .n-hero-grid, .d-hero-grid, .a-hero { min-height: 0; padding-block: 52px 70px; }
  .w-hero h1, .c-hero h1, .n-hero h1, .s-hero h1, .sb-cover h1, .sp-hero h1, .d-hero h1, .p-copy h1, .a-hero h1, .h-lead h1 { font-size: clamp(3.5rem, 18vw, 5rem); }
  .w-hero figcaption, .a-hero figcaption { position: relative; left: auto; right: auto; bottom: auto; width: calc(100% - 24px); margin: -28px auto 0; transform: none; }
  .w-story, .w-programs > div, .w-quote, .n-model, .n-admissions, .s-welcome, .s-spaces, .sb-chapters, .sb-shelf, .sb-quote, .d-schedule, .d-proof, .p-values, .p-projects, .p-people, .a-route, .a-programs, .a-passport, .h-story, .h-calendar, .h-programs, .h-quote { padding-block: 75px; }
  .w-visit > div, .d-enroll > div, .h-visit > div { min-height: 330px; align-items: flex-start; flex-direction: column; justify-content: center; }
  .w-footer, .n-footer > div, .d-footer, .a-footer { grid-template-columns: 1fr; gap: 4px; padding-block: 28px; }
  .w-footer span:nth-child(2), .w-footer span:last-child, .n-footer span:nth-child(2), .n-footer span:last-child, .d-footer span:nth-child(2), .d-footer span:last-child, .a-footer span:nth-child(2), .a-footer span:last-child { text-align: left; }
  .c-hero { min-height: 520px; }
  .c-burst { width: 70px; height: 70px; right: 0; font-size: 2rem; }
  .c-hero-bottom { align-items: flex-start; flex-direction: column; }
  .c-photo-band { height: 300px; }
  .c-title, .c-timeline, .n-metrics, .n-outcomes ol, .n-admissions ol, .s-section-heading, .s-rhythm-line, .d-section-heading, .d-family-bar > div, .d-tool-grid, .p-value-title, .p-value-grid, .a-route header, .a-labs header, .a-lab-grid, .a-map, .h-brief, .h-calendar > div { grid-template-columns: 1fr; }
  .c-timeline article:nth-child(2), .c-timeline article:nth-child(4), .p-yellow, .p-purple { transform: none; }
  .c-mosaic { display: block; }
  .c-tile { min-height: 300px; margin-bottom: 12px; }
  .n-utility { display: none; }
  .n-hero aside { padding: 25px; }
  .n-matrix { overflow-x: auto; }
  .n-matrix > div { min-width: 640px; }
  .s-hero { min-height: 500px; }
  .s-panorama { width: calc(100% - 20px); height: 330px; }
  .s-rhythm-line::before { display: none; }
  .s-rhythm-line article { padding: 20px; border-bottom: 1px solid #eadba8; }
  .s-rhythm-line article::before { display: none; }
  .s-visit { grid-template-columns: 1fr; align-items: start; }
  .sb-cover::before { width: 10%; }
  .sb-cover > div { padding-block: 55px 80px; }
  .sb-opening, .sb-chapter-title { grid-template-columns: 1fr; }
  .sb-chapters > article { grid-template-columns: 1fr; gap: 15px; }
  .sb-chapters article > b { display: none; }
  .sp-sidebar { min-height: 72px; }
  .sp-hero, .sp-intro, .sp-principles, .sp-environments, .sp-rhythm, .sp-testimonial, .sp-apply { padding-inline: 20px; }
  .sp-principles > div, .sp-env-grid { grid-template-columns: 1fr; }
  .sp-rhythm th { width: 75px; }
  .d-quick { display: none; }
  .d-header > div { grid-template-columns: 1fr auto; }
  .d-clock { padding-left: 10px; }
  .d-clock article { grid-template-columns: 75px 1fr; }
  .p-hero { grid-template-columns: 1fr; }
  .p-copy, .p-image { grid-column: auto; }
  .p-image { height: 300px; }
  .p-block { transform: none; }
  .p-support ul { margin-top: 20px; }
  .a-programs article { grid-template-columns: 1fr; gap: 5px; }
  .a-passport-card { padding: 28px; }
  .a-stamp { width: 170px; height: 170px; }
  .h-masthead { min-height: 105px; grid-template-columns: 1fr; justify-items: center; padding-block: 20px; }
  .h-masthead > span { display: none; }
  .h-nav > div { justify-content: flex-start; gap: 24px; overflow-x: auto; }
  .h-lead { padding-block: 55px 75px; }
  .h-brief > div { border-right: 0; border-bottom: 1px solid rgba(82,46,37,.35); }
  .h-brief > div:last-child { border-bottom: 0; }
  .h-teachers > div { padding-block: 75px; }
  .h-programs dl > div { grid-template-columns: 1fr; gap: 6px; }
  .h-footer { align-items: flex-start; flex-direction: column; justify-content: center; gap: 5px; padding-block: 25px; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
