@font-face {
    font-family: "Noto Sans Khmer";
    src: url("/assets/fonts/noto-sans-khmer-400.ttf") format("truetype");
    font-style: normal;
    font-weight: 400;
    font-display: swap;
}

@font-face {
    font-family: "Noto Sans Khmer";
    src: url("/assets/fonts/noto-sans-khmer-700.ttf") format("truetype");
    font-style: normal;
    font-weight: 700;
    font-display: swap;
}

:root {
    --red-950: #53101d;
    --red-900: #6f1423;
    --red-800: #861628;
    --red-700: #a21b30;
    --gold-500: #d4a017;
    --gold-300: #e8c966;
    --gold-100: #f8edc9;
    --ink: #211d1e;
    --muted: #6d6566;
    --paper: #fbf8f1;
    --cream: #f3ecdd;
    --white: #fff;
    --border: rgba(83, 16, 29, .16);
    --shadow: 0 28px 80px rgba(52, 20, 24, .14);
    --radius: 1.25rem;
    --wrap: min(1180px, calc(100% - 2rem));
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
    margin: 0;
    overflow-x: clip;
    color: var(--ink);
    background: var(--paper);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

:lang(km) { font-family: "Noto Sans Khmer", "Khmer OS", sans-serif; }

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-underline-offset: .2em; }
button, input, textarea, select { font: inherit; }
.wrap { width: var(--wrap); margin-inline: auto; }

.skip-link {
    position: fixed;
    z-index: 999;
    left: 1rem;
    top: 1rem;
    padding: .75rem 1rem;
    background: var(--white);
    color: var(--red-900);
    border-radius: .5rem;
    transform: translateY(-180%);
}
.skip-link:focus { transform: none; }

.topline { background: var(--red-950); color: #f7e9c0; font-size: .73rem; letter-spacing: .08em; text-transform: uppercase; }
.topline__inner { min-height: 2.25rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.topline span { display: flex; align-items: center; gap: .55rem; }
.topline i { width: 3px; height: 3px; background: var(--gold-500); border-radius: 50%; }
.topline a { color: var(--white); text-decoration: none; font-weight: 700; }

.site-header {
    position: sticky;
    z-index: 50;
    top: 0;
    background: rgba(251, 248, 241, .94);
    border-bottom: 1px solid var(--border);
    backdrop-filter: blur(16px);
}
.site-header__inner { min-height: 7.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; }
.brand { flex: 0 0 auto; width: 210px; text-decoration: none; }
.brand img { width: 100%; max-height: 6.75rem; object-fit: contain; }
.primary-nav { display: flex; align-items: center; gap: clamp(.55rem, 1vw, 1rem); font-size: .76rem; font-weight: 800; }
.primary-nav > a { text-decoration: none; white-space: nowrap; }
.primary-nav > a:not(.button) { padding-block: .55rem; border-bottom: 2px solid transparent; }
.primary-nav > a[aria-current="page"], .primary-nav > a:not(.button):hover { color: var(--red-800); border-color: var(--gold-500); }
.menu-toggle { display: none; }

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .7rem;
    min-height: 3.25rem;
    padding: .78rem 1.3rem;
    background: var(--red-800);
    color: var(--white);
    border: 1px solid var(--red-800);
    border-radius: 999px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 10px 24px rgba(134, 22, 40, .16);
    transition: transform .2s ease, background .2s ease;
}
.button:hover { transform: translateY(-2px); background: var(--red-950); }
.button--small { min-height: 2.55rem; padding: .55rem 1rem; font-size: .8rem; }
.text-link { color: var(--red-800); font-weight: 800; text-decoration-thickness: 1px; }
.button:focus-visible, .text-link:focus-visible, .primary-nav a:focus-visible, .brand:focus-visible, .circle-link:focus-visible { outline: 3px solid var(--gold-500); outline-offset: 4px; }

.hero { position: relative; overflow: hidden; padding: clamp(3.25rem, 7vw, 6.5rem) 0 4.5rem; background: linear-gradient(135deg, var(--paper) 0 67%, #efe4cf 67%); }
.hero::before { content: ""; position: absolute; width: 30rem; height: 30rem; border: 1px solid rgba(212, 160, 23, .22); border-radius: 50%; left: -20rem; top: -12rem; box-shadow: 0 0 0 5rem rgba(212, 160, 23, .04), 0 0 0 10rem rgba(212, 160, 23, .025); }
.hero__grid { position: relative; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr); gap: clamp(2.5rem, 7vw, 6.5rem); align-items: center; }
.eyebrow { margin: 0 0 1rem; color: var(--red-800); font-size: .77rem; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }
.hero h1 { margin: 0; max-width: 760px; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(3.35rem, 7vw, 6.2rem); font-weight: 400; letter-spacing: -.055em; line-height: .92; }
.hero h1 em { color: var(--gold-500); font-style: normal; }
.hero__lead { max-width: 650px; margin: 1.6rem 0 0; color: #51494a; font-size: clamp(1.05rem, 1.6vw, 1.25rem); line-height: 1.65; }
.button-row { display: flex; align-items: center; flex-wrap: wrap; gap: 1.25rem; margin-top: 2rem; }
.hero__proof { display: grid; grid-template-columns: repeat(3, 1fr); gap: .9rem; margin: 3rem 0 0; padding: 1.35rem 0 0; border-top: 1px solid var(--border); list-style: none; }
.hero__proof strong, .hero__proof span { display: block; }
.hero__proof strong { color: var(--red-900); font-size: .82rem; }
.hero__proof span { margin-top: .2rem; color: var(--muted); font-size: .72rem; line-height: 1.35; }
.hero__visual { position: relative; padding: 0 1.5rem 1.5rem 0; }
.hero__image-frame { position: relative; overflow: hidden; aspect-ratio: 4 / 5; border-radius: 15rem 15rem 1.5rem 1.5rem; box-shadow: var(--shadow); }
.hero__image-frame::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(42, 15, 21, .2), transparent 45%); pointer-events: none; }
.hero__image-frame img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hero__visual::before { content: ""; position: absolute; inset: 1.4rem 0 0 1.4rem; border: 2px solid var(--gold-500); border-radius: 15rem 15rem 1.5rem 1.5rem; }
.hero__note { position: absolute; right: -.25rem; bottom: 2.8rem; min-width: 210px; padding: 1rem 1.2rem; background: var(--white); border-left: 4px solid var(--gold-500); box-shadow: 0 16px 42px rgba(45, 22, 25, .18); }
.hero__note span { display: block; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; }
.hero__note strong { display: block; margin-top: .2rem; color: var(--red-900); }

.promise { padding: clamp(4rem, 8vw, 7rem) 0; background: var(--red-900); color: var(--white); }
.promise__grid { display: grid; grid-template-columns: .85fr 1.15fr auto; gap: clamp(2rem, 6vw, 5rem); align-items: center; }
.promise .eyebrow { color: var(--gold-300); }
.promise h2 { margin: 0; max-width: 530px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 5vw, 4.6rem); font-weight: 400; line-height: 1; letter-spacing: -.04em; }
.promise__grid > p { color: #f0dfe2; font-size: 1.08rem; }
.circle-link { width: 8.5rem; aspect-ratio: 1; display: grid; place-content: center; position: relative; flex: 0 0 auto; background: var(--gold-500); color: var(--red-950); border-radius: 50%; font-size: .82rem; font-weight: 900; line-height: 1.2; text-align: center; text-decoration: none; text-transform: uppercase; letter-spacing: .05em; }
.circle-link b { position: absolute; top: 1.2rem; right: 1.4rem; font-size: 1.2rem; }

.section { padding: clamp(4.5rem, 8vw, 7.5rem) 0; }
.section--cream { background: var(--cream); }
.section--dark { background: var(--red-950); color: var(--white); }
.section--dark .eyebrow { color: var(--gold-300); }
.section--dark p { color: #eadcdf; }
.section-heading { max-width: 830px; margin-bottom: 2.6rem; }
.section-heading--split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(270px, .72fr); gap: clamp(2rem, 7vw, 6rem); max-width: none; align-items: end; }
.section-heading h2,
.intro-statement h2,
.two-column h2,
.campus-intro h2,
.visit-cta h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.35rem, 5vw, 4.4rem); font-weight: 400; letter-spacing: -.045em; line-height: 1.02; }
.section-heading > p,
.section-heading--split > p { margin: 0; color: var(--muted); font-size: 1.06rem; }

.feature-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 1rem; }
.feature-card { min-height: 29rem; display: flex; flex-direction: column; padding: clamp(1.5rem, 3vw, 2.3rem); background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 14px 40px rgba(52,20,24,.06); }
.feature-card > span,
.feature-card div > span,
.process-grid span,
.principle-grid span,
.support-grid article > span { color: var(--gold-500); font-size: .76rem; font-weight: 900; letter-spacing: .12em; }
.feature-card h3 { margin: auto 0 .8rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 2rem; font-weight: 400; line-height: 1.05; }
.feature-card p { margin: 0 0 1rem; color: var(--muted); }
.feature-card a { margin-top: auto; color: var(--red-800); font-weight: 800; }
.feature-card--photo { overflow: hidden; position: relative; justify-content: flex-end; padding: 0; color: var(--white); }
.feature-card--photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.feature-card--photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(54,9,20,.93), transparent 62%); }
.feature-card--photo > div { z-index: 1; padding: 2rem; }
.feature-card--photo h3 { color: var(--white); }
.feature-card--photo p { color: #f2e8ea; }
.feature-card--gold { background: var(--gold-100); }

.pathway-band { background: var(--red-900); color: var(--white); }
.pathway-band__grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(360px, 1.05fr); gap: clamp(3rem, 8vw, 7.5rem); align-items: center; }
.pathway-band .eyebrow { color: var(--gold-300); }
.pathway-band h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.7rem, 5.3vw, 5rem); font-weight: 400; letter-spacing: -.05em; line-height: .98; }
.pathway-band__copy > p:not(.eyebrow) { color: #f1e0e3; font-size: 1.06rem; }
.button--light { background: var(--white); color: var(--red-900); border-color: var(--white); box-shadow: none; }
.button--light:hover { background: var(--gold-100); }
.pathway-steps { margin: 0; padding: 0; counter-reset: pathway; list-style: none; border-top: 1px solid rgba(255,255,255,.2); }
.pathway-steps li { display: grid; grid-template-columns: 7.5rem 1fr; column-gap: 1.5rem; padding: 1.5rem 0; border-bottom: 1px solid rgba(255,255,255,.2); }
.pathway-steps b { grid-row: 1 / span 2; color: var(--gold-300); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; }
.pathway-steps strong { font-family: Georgia, "Times New Roman", serif; font-size: 1.45rem; font-weight: 400; }
.pathway-steps span { color: #e5d6d8; font-size: .9rem; }

.support-story__grid { display: grid; grid-template-columns: minmax(320px, .9fr) minmax(0, 1.1fr); gap: clamp(3rem, 8vw, 7rem); align-items: center; }
.support-story__image { position: relative; }
.support-story__image img { width: 100%; aspect-ratio: 5 / 4; object-fit: cover; border-radius: 45% 45% var(--radius) var(--radius); box-shadow: var(--shadow); }
.support-story__image p { position: absolute; right: -1rem; bottom: 1.8rem; max-width: 230px; margin: 0; padding: 1rem 1.2rem; background: var(--gold-500); color: var(--red-950); font-weight: 900; box-shadow: 0 18px 40px rgba(48,20,24,.2); }
.support-story__copy h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 5vw, 4.5rem); font-weight: 400; letter-spacing: -.05em; line-height: 1; }
.support-story__copy > p:not(.eyebrow) { color: var(--muted); font-size: 1.05rem; }
.check-list { margin: 1.5rem 0; padding: 0; list-style: none; }
.check-list li { position: relative; margin: .65rem 0; padding-left: 1.8rem; }
.check-list li::before { content: "✓"; position: absolute; left: 0; color: var(--red-800); font-weight: 900; }

.programmes-preview { background: #fffdf8; }
.programme-list { border-top: 1px solid var(--border); }
.programme-list a { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; padding: 1.25rem .5rem; border-bottom: 1px solid var(--border); text-decoration: none; }
.programme-list span { color: var(--gold-500); font-size: .78rem; font-weight: 900; }
.programme-list strong { color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.5rem, 3vw, 2.4rem); font-weight: 400; }
.programme-list b { color: var(--muted); font-size: .82rem; }
.programme-list a:hover strong { color: var(--red-800); }

.page-hero { position: relative; overflow: hidden; padding: clamp(4.5rem, 9vw, 8rem) 0; background: linear-gradient(135deg, var(--cream), var(--paper)); }
.page-hero::after { content: ""; position: absolute; width: 28rem; height: 28rem; right: -16rem; top: -14rem; border: 1px solid rgba(212,160,23,.28); border-radius: 50%; box-shadow: 0 0 0 5rem rgba(212,160,23,.05); }
.page-hero__grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, .88fr); gap: clamp(3rem, 8vw, 7rem); align-items: center; }
.page-hero__narrow { position: relative; z-index: 1; max-width: 900px; }
.page-hero h1 { margin: 0; max-width: 980px; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(3.1rem, 7vw, 6.5rem); font-weight: 400; letter-spacing: -.055em; line-height: .94; }
.page-hero__lead { max-width: 760px; margin: 1.5rem 0 0; color: #5b5052; font-size: clamp(1.05rem, 1.8vw, 1.25rem); }
.breadcrumbs { display: flex; gap: .6rem; margin: 0 0 2.2rem; color: var(--muted); font-size: .78rem; }
.breadcrumbs a { font-weight: 800; }
.page-hero__image { overflow: hidden; position: relative; aspect-ratio: 4 / 5; border-radius: 12rem 12rem var(--radius) var(--radius); box-shadow: var(--shadow); }
.page-hero__image--landscape { aspect-ratio: 4 / 3; border-radius: var(--radius); }
.page-hero__image img { width: 100%; height: 100%; object-fit: cover; }
.page-hero--compact { padding-block: clamp(4rem, 7vw, 6.5rem); }
.page-hero--compact h1 { font-size: clamp(3rem, 6vw, 5.5rem); }
.page-hero--dark { background: var(--red-950); color: var(--white); }
.page-hero--dark h1 { color: var(--white); }
.page-hero--dark .page-hero__lead { color: #e9dcdf; }
.page-hero--dark .eyebrow { color: var(--gold-300); }
.page-hero--dark .breadcrumbs { color: #cdbdc0; }

.intro-statement__grid { display: grid; grid-template-columns: .42fr 1.1fr .8fr; gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.intro-statement__grid > p:last-child { margin: 0; color: var(--muted); font-size: 1.05rem; }
.card-grid { display: grid; gap: 1rem; }
.card-grid--3 { grid-template-columns: repeat(3, 1fr); }
.statement-card { min-height: 24rem; padding: 2rem; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); }
.statement-card > span { color: var(--gold-500); font-size: .76rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.statement-card h2 { margin: 4rem 0 1rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2rem, 3.2vw, 3.1rem); font-weight: 400; line-height: 1.03; }
.statement-card p { color: var(--muted); }
.principle-grid,
.process-grid,
.support-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.principle-grid article,
.process-grid article,
.support-grid article { padding: 1.75rem; border-top: 3px solid var(--gold-500); background: var(--white); box-shadow: 0 10px 30px rgba(52,20,24,.05); }
.principle-grid h3,
.process-grid h3,
.support-grid h2,
.support-grid h3 { margin: 2.5rem 0 .75rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.55rem; font-weight: 400; line-height: 1.08; }
.principle-grid p,
.process-grid p,
.support-grid p { color: var(--muted); }
.quote-band { padding: 5rem 0; background: var(--gold-500); color: var(--red-950); text-align: center; }
.quote-band p { max-width: 900px; margin: 0 auto; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.2rem, 5vw, 4rem); line-height: 1.05; }
.quote-band span { display: block; margin-top: 1rem; font-size: .76rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }

.image-split { display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; }
.image-split__image img { width: 100%; height: 100%; min-height: 34rem; object-fit: cover; }
.image-split__copy { padding: clamp(2rem, 6vw, 5rem); }
.image-split__copy h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 5vw, 4.4rem); font-weight: 400; line-height: 1; }
.image-split__copy > p:not(.eyebrow) { color: var(--muted); }
.subject-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.subject-grid article { padding: 1.65rem; background: rgba(255,255,255,.72); border: 1px solid var(--border); border-radius: .8rem; }
.subject-grid h3 { margin-top: 0; color: var(--red-950); }
.subject-grid p { margin-bottom: 0; color: var(--muted); }
.two-column { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(3rem, 9vw, 8rem); align-items: start; }
.two-column > div:last-child { color: var(--muted); font-size: 1.05rem; }

.pathway-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
.pathway-panel { min-height: 33rem; padding: clamp(2rem, 5vw, 4rem); border-radius: var(--radius); }
.pathway-panel > span { font-size: .76rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.pathway-panel h2 { margin: 4rem 0 1rem; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 4vw, 4rem); font-weight: 400; line-height: 1; }
.pathway-panel ul { padding-left: 1.2rem; }
.pathway-panel--red { background: var(--red-900); color: var(--white); }
.pathway-panel--red span { color: var(--gold-300); }
.pathway-panel--gold { background: var(--gold-100); color: var(--red-950); }
.faq-list { border-top: 1px solid var(--border); }
.faq-list details { border-bottom: 1px solid var(--border); }
.faq-list summary { display: flex; justify-content: space-between; gap: 2rem; padding: 1.35rem .25rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.25rem, 2vw, 1.65rem); cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { content: "+"; color: var(--gold-500); font-family: sans-serif; font-weight: 400; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { max-width: 850px; margin: 0 0 1.5rem; color: var(--muted); }

.notice-band { padding: 1.25rem 0; background: var(--gold-100); }
.notice-band .wrap { display: grid; grid-template-columns: 12rem 1fr; gap: 2rem; align-items: center; }
.notice-band strong { color: var(--red-900); font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }
.notice-band p { margin: 0; }
.notice-band--red { background: var(--red-900); color: var(--white); }
.notice-band--red strong { color: var(--gold-300); }
.programme-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.programme-cards article { min-height: 25rem; padding: 2rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--white); }
.programme-cards article:nth-child(2n) { background: var(--cream); }
.programme-cards span { color: var(--gold-500); font-size: .75rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.programme-cards h2 { margin: 4rem 0 1rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 2.1rem; font-weight: 400; line-height: 1.04; }
.programme-cards p { color: var(--muted); }
.programme-cards b { display: block; margin-top: 2rem; color: var(--red-800); }
.number-list { margin: 0; padding: 0; list-style: none; }
.number-list li { display: grid; grid-template-columns: 10rem 1fr; gap: 1.5rem; padding: 1rem 0; border-bottom: 1px solid var(--border); }
.number-list b { color: var(--red-900); }
.number-list span { color: var(--muted); }

.admissions-steps { margin-block: 0; padding: 0; list-style: none; border-top: 1px solid var(--border); }
.admissions-steps li { display: grid; grid-template-columns: 8rem 1fr; gap: 2rem; padding: 1.8rem .5rem; border-bottom: 1px solid var(--border); }
.admissions-steps > li > span { color: var(--gold-500); font-size: 1.2rem; font-weight: 900; }
.admissions-steps h3 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 2rem; font-weight: 400; }
.admissions-steps p { max-width: 760px; margin-bottom: 0; color: var(--muted); }

.campus-intro { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(2rem, 6vw, 5rem); align-items: center; margin-bottom: 4rem; }
.campus-intro img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--radius); box-shadow: var(--shadow); }
.campus-intro p:not(.eyebrow) { color: var(--muted); }
.contact-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.contact-grid article { min-height: 20rem; padding: 1.6rem; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); }
.contact-grid article > span { color: var(--gold-500); font-size: .74rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.contact-grid h2 { margin: 3rem 0 1rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.65rem; font-weight: 400; }
.contact-grid a:not(.button) { display: block; overflow-wrap: anywhere; color: var(--red-800); font-weight: 800; }
.contact-grid address,
.contact-grid p { color: var(--muted); font-style: normal; }
.enquiry-grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(360px, 1.15fr); gap: clamp(3rem, 9vw, 8rem); align-items: start; }
.enquiry-grid h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 4.5vw, 4.2rem); font-weight: 400; line-height: 1; }
.privacy-note { margin-top: 1.5rem; padding: 1rem; background: var(--gold-100); border-left: 4px solid var(--gold-500); }
.enquiry-form { display: grid; gap: 1rem; padding: clamp(1.5rem, 4vw, 2.5rem); background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); }
.enquiry-form > label { display: grid; gap: .35rem; color: var(--red-950); font-size: .82rem; font-weight: 800; }
.enquiry-form input,
.enquiry-form select { width: 100%; min-height: 3rem; padding: .65rem .8rem; color: var(--ink); background: #fffefb; border: 1px solid rgba(83,16,29,.3); border-radius: .5rem; }
.enquiry-form input:focus,
.enquiry-form select:focus { outline: 3px solid rgba(212,160,23,.35); border-color: var(--red-800); }
.form-consent { display: grid !important; grid-template-columns: auto 1fr; align-items: start; gap: .7rem !important; font-weight: 500 !important; }
.form-consent input { width: 1.2rem; min-height: 1.2rem; margin-top: .2rem; accent-color: var(--red-800); }
.form-status { min-height: 1.5rem; margin: 0; color: var(--red-800); font-weight: 800; }

.legal-copy__grid { display: grid; grid-template-columns: 15rem minmax(0, 1fr); gap: clamp(3rem, 8vw, 7rem); }
.legal-copy nav { position: sticky; top: 12rem; align-self: start; display: grid; }
.legal-copy nav a { padding: .65rem 0; border-bottom: 1px solid var(--border); color: var(--red-900); font-weight: 800; }
.legal-copy section { scroll-margin-top: 12rem; margin-bottom: 3.5rem; }
.legal-copy h2 { color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 2.25rem; font-weight: 400; }
.legal-copy p { color: var(--muted); }

.visit-cta { padding: clamp(4rem, 8vw, 7rem) 0; background: var(--gold-100); }
.visit-cta__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(260px, .55fr); gap: clamp(2rem, 7vw, 6rem); align-items: center; }
.visit-cta p:not(.eyebrow) { max-width: 700px; color: var(--muted); }
.visit-cta__actions { display: grid; gap: 1rem; justify-items: start; }
.visit-cta__actions > a:not(.button) { color: var(--red-900); font-weight: 800; }

.library-hero { position: relative; overflow: hidden; padding: clamp(4.5rem, 9vw, 8rem) 0; color: var(--white); background: radial-gradient(circle at 82% 20%, rgba(212,160,23,.2), transparent 26rem), var(--red-950); }
.library-hero::after { content: ""; position: absolute; width: 30rem; height: 30rem; right: -16rem; bottom: -22rem; border: 1px solid rgba(232,201,102,.28); border-radius: 50%; box-shadow: 0 0 0 5rem rgba(212,160,23,.04); }
.library-hero__grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) 19rem; gap: clamp(3rem, 8vw, 7rem); align-items: end; }
.library-hero .breadcrumbs { color: #cfbdc0; }
.library-hero .eyebrow { color: var(--gold-300); }
.library-hero h1 { margin: 0; max-width: 900px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(3.2rem, 7vw, 6.5rem); font-weight: 400; letter-spacing: -.055em; line-height: .94; }
.library-hero .page-hero__lead { color: #eadddf; }
.library-hero__proof { display: grid; gap: .6rem; padding: 1rem 0; border-block: 1px solid rgba(255,255,255,.16); }
.library-hero__proof span { display: grid; grid-template-columns: 3.5rem 1fr; gap: .8rem; align-items: baseline; color: #d8cacc; font-size: .78rem; line-height: 1.35; }
.library-hero__proof strong { color: var(--gold-300); font-family: Georgia, "Times New Roman", serif; font-size: 2.1rem; font-weight: 400; }
.library-start { padding: clamp(3.5rem, 7vw, 6rem) 0; background: var(--paper); }
.library-start__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .8rem; }
.library-start__grid a { display: grid; min-height: 13rem; align-content: space-between; gap: 1rem; padding: 1.35rem; color: var(--ink); background: var(--white); border: 1px solid var(--border); border-top: .3rem solid var(--gold-500); border-radius: .9rem; text-decoration: none; transition: transform .2s ease, box-shadow .2s ease; }
.library-start__grid a:hover { transform: translateY(-3px); box-shadow: 0 16px 36px rgba(52,20,24,.09); }
.library-start__grid span { color: var(--red-800); font-size: .7rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.library-start__grid strong { color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.45rem; font-weight: 400; line-height: 1.1; }
.library-start__grid small { color: var(--muted); font-size: .7rem; line-height: 1.45; }
.library-controls { padding: clamp(3.5rem, 7vw, 5.5rem) 0 2rem; background: var(--cream); border-bottom: 1px solid var(--border); }
.library-filter { display: grid; grid-template-columns: minmax(14rem, 1.4fr) repeat(3, minmax(9rem, .7fr)) auto; gap: .8rem; align-items: end; }
.library-filter label { display: grid; gap: .35rem; color: var(--red-950); font-size: .74rem; font-weight: 850; }
.library-filter input,
.library-filter select { width: 100%; min-height: 3.3rem; padding: .65rem .8rem; color: var(--ink); background: #fffefb; border: 1px solid rgba(83,16,29,.3); border-radius: .7rem; }
.library-filter input:focus,
.library-filter select:focus { outline: 3px solid rgba(212,160,23,.35); border-color: var(--red-800); }
.library-filter .text-link { align-self: center; justify-self: center; grid-column: 1 / -1; }
.library-result-count { margin: 1.4rem 0 0; color: var(--muted); font-size: .86rem; }
.library-result-count strong { color: var(--red-900); }
.library-catalog { padding-top: 3.5rem; }
.library-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.book-card { display: grid; grid-template-columns: 9.2rem minmax(0, 1fr); min-height: 27rem; overflow: hidden; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 16px 44px rgba(52,20,24,.06); }
.book-card[hidden] { display: none; }
.book-cover { position: relative; display: flex; min-height: 100%; flex-direction: column; justify-content: space-between; padding: 1.3rem 1rem; color: var(--white); background: var(--red-900); border-right: .35rem solid var(--gold-500); }
.book-cover::after { content: ""; position: absolute; inset: .5rem; border: 1px solid rgba(255,255,255,.28); pointer-events: none; }
.book-cover span,
.book-cover b,
.book-cover i { position: relative; z-index: 1; }
.book-cover span { color: var(--gold-300); font-size: .58rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.book-cover b { font-family: Georgia, "Times New Roman", serif; font-size: 1.35rem; font-weight: 400; line-height: 1.05; }
.book-cover i { font-size: .66rem; font-style: normal; line-height: 1.3; }
.book-cover--gold { color: var(--red-950); background: #e7c45f; border-color: var(--red-900); }
.book-cover--gold span { color: var(--red-900); }
.book-cover--gold::after { border-color: rgba(83,16,29,.28); }
.book-cover--green { background: #285c4d; }
.book-cover--blue { background: #315e78; }
.book-cover--ink { background: #2c2829; }
.book-card__body { display: flex; min-width: 0; flex-direction: column; padding: 1.5rem; }
.book-card__meta { display: flex; flex-wrap: wrap; gap: .35rem; }
.book-card__meta span { padding: .25rem .5rem; color: var(--red-900); background: var(--gold-100); border-radius: 99px; font-size: .61rem; font-weight: 850; }
.book-card h2 { margin: 1rem 0 .1rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.8rem; font-weight: 400; line-height: 1.06; }
.book-card h2:lang(km),
.book-cover b:lang(km) { font-family: "Noto Sans Khmer", "Khmer OS", sans-serif; line-height: 1.55; }
.book-card__author { margin: 0 0 .75rem !important; color: var(--red-800) !important; font-size: .78rem; font-weight: 800; }
.book-card__body > p { margin: 0; color: var(--muted); font-size: .88rem; }
.book-card__guidance { margin-top: .8rem !important; padding: .7rem; background: #f8f1e1; border-left: 3px solid var(--gold-500); font-size: .74rem !important; }
.book-card__guidance strong { color: var(--red-900); }
.book-card__actions { display: grid; gap: .65rem; align-items: start; justify-items: start; margin-top: auto; padding-top: 1.2rem; }
.book-card__actions small { color: var(--muted); font-size: .62rem; line-height: 1.35; }
.library-empty { grid-column: 1 / -1; max-width: 760px; margin-inline: auto; padding: clamp(2rem, 5vw, 4rem); text-align: center; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); }
.library-empty h1,
.library-empty h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.2rem, 5vw, 4rem); font-weight: 400; line-height: 1; }
.library-empty p { color: var(--muted); }
.library-principles { display: grid; grid-template-columns: .75fr 1.25fr; gap: clamp(3rem, 8vw, 7rem); }
.library-principles h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 5vw, 4.5rem); font-weight: 400; line-height: 1; }
.library-principles__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.library-principles__list article { padding: 1.3rem; background: rgba(255,255,255,.65); border-top: 3px solid var(--gold-500); }
.library-principles__list b { color: var(--red-900); }
.library-principles__list p { margin-bottom: 0; color: var(--muted); font-size: .88rem; }

.reader-page { background: #ede7dc; }
.reader-shell { --reader-shell: #fffdf8; min-height: calc(100vh - 9.75rem); color: var(--ink); background: var(--reader-shell); }
.reader-shell[data-reader-theme="sepia"] { --reader-shell: #f4ead7; }
.reader-shell[data-reader-theme="night"] { --reader-shell: #201c1d; color: #eee7df; }
.reader-topbar { position: sticky; z-index: 8; top: 7.5rem; display: flex; min-height: 4.5rem; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem max(1rem, calc((100% - 1180px) / 2)); color: var(--ink); background: rgba(255,253,248,.96); border-bottom: 1px solid var(--border); backdrop-filter: blur(14px); }
.reader-shell[data-reader-theme="night"] .reader-topbar { color: #eee7df; background: rgba(32,28,29,.96); border-color: rgba(255,255,255,.12); }
.reader-shell[data-reader-theme="night"] .reader-panel,
.reader-shell[data-reader-theme="night"] .reader-source,
.reader-shell[data-reader-theme="night"] .reader-contents { color: #d9d0c9; background: #292326; border-color: rgba(255,255,255,.12); }
.reader-shell[data-reader-theme="night"] .reader-contents > strong,
.reader-shell[data-reader-theme="night"] .reader-book-title small { color: #e5ddd6; }
.reader-shell[data-reader-theme="night"] .reader-tools button,
.reader-shell[data-reader-theme="night"] .reader-panel button,
.reader-shell[data-reader-theme="night"] .reader-bottom button,
.reader-shell[data-reader-theme="night"] .reader-contents button { color: #f0d780; border-color: rgba(240,215,128,.45); }
.reader-shell[data-reader-theme="night"] .reader-panel [aria-pressed="true"] { color: #201c1d; background: #f0d780; }
.reader-book-title { display: flex; min-width: 0; align-items: center; gap: 1rem; }
.reader-book-title > a { flex: 0 0 auto; color: var(--red-800); font-size: .78rem; font-weight: 850; text-decoration: none; }
.reader-book-title div { display: grid; min-width: 0; max-width: min(34rem, 40vw); }
.reader-book-title h1 { margin: 0; font: inherit; font-weight: 700; white-space: normal; }
.reader-shell[data-book-language="km"] .reader-book-title h1 { font-family: "Noto Sans Khmer", "Khmer OS", sans-serif; }
.reader-book-title small { color: var(--muted); }
.reader-tools { display: flex; gap: .5rem; }
.reader-tools button,
.reader-panel button,
.reader-bottom button,
.reader-contents button { min-height: 2.55rem; padding: .5rem .8rem; color: var(--red-900); background: transparent; border: 1px solid rgba(83,16,29,.25); border-radius: 999px; font-size: .74rem; font-weight: 850; cursor: pointer; }
.reader-tools button:hover,
.reader-panel button:hover,
.reader-bottom button:hover,
.reader-contents button:hover { background: var(--gold-100); }
.reader-panel { position: sticky; z-index: 7; top: 12rem; display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; padding: .8rem 1rem; background: var(--cream); border-bottom: 1px solid var(--border); }
.reader-panel[hidden] { display: none; }
.reader-panel div { display: flex; align-items: center; gap: .45rem; }
.reader-panel span { margin-right: .3rem; color: var(--red-900); font-size: .7rem; font-weight: 850; }
.reader-panel [aria-pressed="true"] { color: var(--white); background: var(--red-800); }
.reader-layout { display: grid; grid-template-columns: auto minmax(0, 1fr); min-height: 46rem; }
.reader-contents { width: min(22rem, 80vw); max-height: calc(100vh - 12rem); overflow: auto; padding: 1.2rem; background: var(--white); border-right: 1px solid var(--border); }
.reader-contents[hidden] { display: none; }
.reader-contents > strong { display: block; margin-bottom: 1rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.4rem; }
.reader-contents div { display: grid; gap: .35rem; }
.reader-contents button { width: 100%; height: auto; min-height: 2.5rem; text-align: left; border-radius: .5rem; }
.reader-stage-wrap { position: relative; min-width: 0; padding: 1rem clamp(.5rem, 3vw, 2rem); }
.reader-stage { width: min(68rem, 100%); height: min(54rem, max(42rem, calc(100vh - 15rem))); margin-inline: auto; overflow: hidden; background: var(--reader-shell); box-shadow: 0 18px 55px rgba(45,22,25,.12); }
.reader-status { position: absolute; z-index: 2; inset: 1rem clamp(.5rem, 3vw, 2rem) auto; width: min(58rem, calc(100% - 1rem)); margin-inline: auto; padding: 2rem; color: var(--muted); background: var(--reader-shell); text-align: center; }
.reader-status[hidden] { display: none; }
.reader-status.is-error { color: var(--red-900); }
.reader-bottom { display: grid; grid-template-columns: auto minmax(8rem, 28rem) auto; gap: 1rem; align-items: center; justify-content: center; max-width: 68rem; margin: 1rem auto 0; }
.reader-bottom > div { display: flex; align-items: center; gap: .5rem; }
.reader-bottom progress { width: 100%; accent-color: var(--red-800); }
.reader-bottom span { min-width: 2.5rem; color: var(--muted); font-size: .7rem; }
.reader-source { display: flex; justify-content: space-between; gap: 2rem; padding: 1rem max(1rem, calc((100% - 1180px) / 2)); color: var(--muted); background: var(--cream); border-top: 1px solid var(--border); font-size: .7rem; }
.reader-source p { margin: 0; }
.reader-source details { display: grid; max-width: 54rem; gap: .45rem; }
.reader-source summary { color: var(--red-900); font-weight: 850; cursor: pointer; }
.reader-source > div { display: grid; align-content: start; justify-items: end; gap: .4rem; text-align: right; }
.reader-source a { color: var(--red-800); font-weight: 800; }

.process-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.location-mark { position: relative; display: grid; min-height: 21rem; align-content: center; justify-items: center; overflow: hidden; padding: 2rem; color: var(--white); background: radial-gradient(circle at 75% 20%, rgba(232,201,102,.28), transparent 12rem), var(--red-950); border-radius: var(--radius); text-align: center; }
.location-mark::before { content: ""; position: absolute; width: 18rem; height: 18rem; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; }
.location-mark span, .location-mark b, .location-mark small { position: relative; z-index: 1; }
.location-mark span { color: var(--gold-300); font-size: .7rem; font-weight: 900; letter-spacing: .18em; }
.location-mark b { font-family: Georgia, "Times New Roman", serif; font-size: 7rem; font-weight: 400; line-height: .9; }
.location-mark small { color: #dfd0d2; font-size: .8rem; line-height: 1.5; }

.programme-directory { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.programme-tile { display: flex; min-height: 27rem; flex-direction: column; padding: clamp(1.5rem, 3vw, 2.3rem); background: var(--white); border: 1px solid var(--border); border-top: 4px solid var(--gold-500); border-radius: var(--radius); box-shadow: 0 16px 44px rgba(52,20,24,.05); }
.programme-tile > div:first-child { display: flex; justify-content: space-between; gap: 1rem; color: var(--red-800); font-size: .68rem; font-weight: 850; }
.programme-tile > div:first-child span { color: var(--gold-700); text-transform: uppercase; letter-spacing: .08em; }
.programme-tile h2 { margin: 2.6rem 0 .8rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2rem, 4vw, 3.2rem); font-weight: 400; line-height: 1; }
.programme-tile > p { color: var(--muted); }
.programme-tile dl { display: grid; gap: .45rem; margin: auto 0 1.5rem; padding-top: 2rem; }
.programme-tile dl div { display: grid; grid-template-columns: 8rem 1fr; gap: 1rem; padding-top: .45rem; border-top: 1px solid var(--border); }
.programme-tile dt { color: var(--muted); font-size: .68rem; }
.programme-tile dd { margin: 0; color: var(--red-900); font-size: .78rem; font-weight: 850; }

.programme-hero { position: relative; overflow: hidden; padding: clamp(4.5rem, 9vw, 8rem) 0; color: var(--white); background: radial-gradient(circle at 80% 25%, rgba(212,160,23,.2), transparent 26rem), var(--red-950); }
.programme-hero::after { content: ""; position: absolute; width: 34rem; height: 34rem; right: -18rem; bottom: -24rem; border: 1px solid rgba(232,201,102,.24); border-radius: 50%; box-shadow: 0 0 0 5rem rgba(212,160,23,.035); }
.programme-hero__grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(18rem, .55fr); gap: clamp(3rem, 8vw, 7rem); align-items: end; }
.programme-hero .breadcrumbs { color: #cfbdc0; }
.programme-hero .breadcrumbs a { color: inherit; }
.programme-hero .eyebrow { color: var(--gold-300); }
.programme-hero h1 { margin: 0; max-width: 850px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(3.2rem, 6.8vw, 6.3rem); font-weight: 400; letter-spacing: -.055em; line-height: .94; }
.programme-hero .page-hero__lead { max-width: 770px; color: #eadddf; }
.programme-facts { padding: 1.5rem; color: var(--ink); background: var(--cream); border-top: 5px solid var(--gold-500); border-radius: var(--radius); }
.programme-facts > span { color: var(--red-800); font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.programme-facts > strong { display: block; margin: .6rem 0 1.5rem; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: 2.2rem; font-weight: 400; line-height: 1.05; }
.programme-facts dl { margin: 0; }
.programme-facts dl div { padding: .7rem 0; border-top: 1px solid var(--border); }
.programme-facts dt { color: var(--muted); font-size: .65rem; }
.programme-facts dd { margin: .15rem 0 0; color: var(--red-900); font-size: .82rem; font-weight: 800; }
.programme-detail-grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(3rem, 8vw, 7rem); }
.programme-detail-grid h2, .safety-callout h2 { margin: 0; color: var(--red-950); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 5vw, 4.4rem); font-weight: 400; line-height: 1; }
.programme-method { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.programme-method article { padding: 1.5rem; background: var(--cream); border-top: 3px solid var(--gold-500); }
.programme-method span { color: var(--red-800); font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.programme-method h2 { margin: 1rem 0 .7rem; font-size: 2.1rem; }
.programme-method p { color: var(--muted); }
.safety-callout { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(3rem, 8vw, 7rem); align-items: center; }
.safety-callout > p { padding: 1.5rem; color: var(--red-950); background: rgba(255,255,255,.7); border-left: 4px solid var(--gold-500); font-size: 1.05rem; }

.site-footer { padding: 4.5rem 0 1.5rem; background: #1e191a; color: #efe7e1; }
.footer-grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr .8fr; gap: 2.25rem; }
.footer-grid h2 { margin: 0 0 .9rem; color: var(--gold-300); font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }
.footer-grid a, .footer-grid address { display: block; margin: .38rem 0; color: #efe7e1; font-size: .9rem; font-style: normal; text-decoration-color: rgba(239, 231, 225, .38); }
.footer-brand img { width: 250px; padding: .65rem; background: #fbf8f1; border-radius: .7rem; filter: drop-shadow(0 5px 20px rgba(0,0,0,.25)); }
.footer-brand p { max-width: 340px; color: #cfc3c4; font-family: Georgia, "Times New Roman", serif; font-size: 1.15rem; }
.footer-base { display: flex; justify-content: space-between; gap: 1rem; margin-top: 3.5rem; padding-top: 1.2rem; border-top: 1px solid rgba(255,255,255,.12); color: #9f9394; font-size: .72rem; }

@media (max-width: 1040px) {
    .site-header__inner { min-height: 6.8rem; }
    .brand { width: 180px; }
    .menu-toggle { display: flex; position: relative; width: 3.2rem; height: 3.2rem; flex-direction: column; justify-content: center; align-items: center; gap: 5px; color: var(--red-900); background: transparent; border: 1px solid var(--border); border-radius: 50%; cursor: pointer; }
    .menu-toggle span { width: 18px; height: 2px; background: currentColor; transition: transform .2s ease, opacity .2s ease; }
    .menu-toggle b { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    .menu-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    .menu-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
    .menu-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
    .primary-nav { position: absolute; inset: calc(100% + 1px) 0 auto; display: none; padding: 1.1rem max(1rem, calc((100% - 1180px) / 2)); background: var(--paper); border-bottom: 1px solid var(--border); box-shadow: 0 20px 34px rgba(58, 24, 29, .1); }
    .primary-nav.is-open { display: grid; }
    .primary-nav a { padding: .7rem .15rem; }
    .primary-nav .button { margin-top: .5rem; }
    .hero__grid { grid-template-columns: 1fr 390px; gap: 2.5rem; }
    .hero__proof { grid-template-columns: 1fr; }
    .promise__grid { grid-template-columns: 1fr 1fr; }
    .circle-link { grid-column: 2; justify-self: end; }
    .footer-grid { grid-template-columns: 1.4fr 1fr 1fr; }
    .footer-grid > :last-child { grid-column: 2 / -1; }
    .feature-grid { grid-template-columns: 1fr 1fr; }
    .feature-card--photo { grid-row: span 2; }
    .principle-grid, .process-grid, .support-grid { grid-template-columns: 1fr 1fr; }
    .programme-cards { grid-template-columns: 1fr 1fr; }
    .process-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .contact-grid { grid-template-columns: 1fr 1fr; }
    .library-start__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .library-filter { grid-template-columns: 1.3fr 1fr 1fr 1fr; }
    .library-filter .button { grid-column: 1 / -1; justify-self: start; }
    .book-card { grid-template-columns: 8rem minmax(0, 1fr); }
    .reader-topbar { top: 6.8rem; }
    .reader-panel { top: 11.3rem; }
}

@media (max-width: 760px) {
    :root { --wrap: min(100% - 1.25rem, 1180px); }
    .topline__inner { min-height: 2rem; justify-content: center; }
    .topline span { font-size: .62rem; }
    .topline span i, .topline__inner > a { display: none; }
    .site-header__inner { min-height: 6.25rem; }
    .brand { width: 165px; }
    .hero { padding-top: 2.8rem; background: var(--paper); }
    .hero__grid { grid-template-columns: 1fr; }
    .hero h1 { font-size: clamp(3.05rem, 15vw, 4.8rem); }
    .hero__lead { font-size: 1rem; }
    .button-row { align-items: stretch; flex-direction: column; }
    .button-row .button { width: 100%; }
    .button-row .text-link { align-self: center; }
    .hero__proof { grid-template-columns: repeat(3, 1fr); gap: .65rem; }
    .hero__visual { max-width: 500px; margin: .5rem auto 0; padding-right: .8rem; }
    .hero__visual::before { inset: .8rem 0 0 .8rem; }
    .hero__note { right: -.1rem; bottom: 2.1rem; }
    .promise__grid { grid-template-columns: 1fr; }
    .circle-link { grid-column: auto; justify-self: start; width: 7.5rem; }
    .footer-grid { grid-template-columns: 1fr 1fr; }
    .footer-grid > :first-child, .footer-grid > :last-child { grid-column: 1 / -1; }
    .footer-base { flex-direction: column; }
    .section-heading--split,
    .pathway-band__grid,
    .support-story__grid,
    .page-hero__grid,
    .intro-statement__grid,
    .pathway-compare,
    .image-split,
    .two-column,
    .campus-intro,
    .enquiry-grid,
    .legal-copy__grid,
    .visit-cta__grid { grid-template-columns: 1fr; }
    .feature-grid,
    .card-grid--3,
    .subject-grid,
    .programme-cards { grid-template-columns: 1fr; }
    .programme-directory,
    .programme-hero__grid,
    .programme-detail-grid,
    .safety-callout { grid-template-columns: 1fr; }
    .programme-method { grid-template-columns: 1fr; }
    .programme-tile { min-height: 24rem; }
    .programme-hero h1 { font-size: clamp(3rem, 14vw, 4.7rem); }
    .feature-card { min-height: 23rem; }
    .feature-card--photo { grid-row: auto; }
    .page-hero__image { max-width: 560px; width: 100%; aspect-ratio: 4 / 3; border-radius: var(--radius); }
    .pathway-steps li { grid-template-columns: 6rem 1fr; }
    .image-split__image img { min-height: 22rem; }
    .contact-grid { grid-template-columns: 1fr; }
    .contact-grid article { min-height: 0; }
    .legal-copy nav { position: static; }
    .notice-band .wrap { grid-template-columns: 1fr; gap: .4rem; }
    .library-hero__grid,
    .library-principles { grid-template-columns: 1fr; }
    .library-hero h1 { font-size: clamp(3rem, 15vw, 4.7rem); }
    .library-hero__proof { max-width: 28rem; }
    .library-filter { grid-template-columns: 1fr; }
    .library-filter .button { width: 100%; grid-column: auto; }
    .library-grid { grid-template-columns: 1fr; }
    .book-card { grid-template-columns: 7.2rem minmax(0, 1fr); min-height: 28rem; }
    .book-card__body { padding: 1.2rem; }
    .library-principles__list { grid-template-columns: 1fr; }
    .library-start__grid { grid-template-columns: 1fr 1fr; }
    .reader-topbar { top: 6.25rem; flex-wrap: wrap; align-items: center; }
    .reader-book-title { flex: 1 1 100%; width: 100%; min-width: 100%; }
    .reader-book-title div { max-width: none; }
    .reader-book-title small { display: none; }
    .reader-book-title > a span { display: none; }
    .reader-tools button { width: 2.7rem; overflow: hidden; padding-inline: .2rem; font-size: 0; }
    .reader-tools button::before { font-size: 1rem; }
    .reader-tools [data-reader-toc]::before { content: "☰"; }
    .reader-tools [data-reader-settings]::before { content: "Aa"; font-family: Georgia, serif; }
    .reader-panel { top: 13.25rem; gap: .6rem; justify-content: flex-start; }
    .reader-layout { min-height: 38rem; }
    .reader-stage-wrap { padding-inline: 0; }
    .reader-stage { width: 100%; height: 36rem; box-shadow: none; }
    .reader-bottom { grid-template-columns: 1fr 1fr; padding-inline: .5rem; }
    .reader-bottom > div { grid-column: 1 / -1; grid-row: 1; }
    .reader-bottom [data-reader-next] { justify-self: end; }
    .reader-source { flex-direction: column; gap: .5rem; }
    .reader-source > div { justify-items: start; text-align: left; }
}

@media (max-width: 460px) {
    .hero__proof { grid-template-columns: 1fr; }
    .hero__proof li { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
    .footer-grid { grid-template-columns: 1fr; }
    .footer-grid > * { grid-column: auto !important; }
    .principle-grid, .process-grid, .support-grid { grid-template-columns: 1fr; }
    .programme-list a { grid-template-columns: 2.5rem 1fr; }
    .programme-list b { grid-column: 2; }
    .admissions-steps li { grid-template-columns: 3rem 1fr; gap: 1rem; }
    .pathway-steps li { grid-template-columns: 1fr; }
    .pathway-steps b { grid-row: auto; }
    .number-list li { grid-template-columns: 1fr; gap: .25rem; }
    .book-card { grid-template-columns: 1fr; }
    .library-start__grid { grid-template-columns: 1fr; }
    .book-cover { min-height: 10rem; border-right: 0; border-bottom: .35rem solid var(--gold-500); }
    .book-cover b { max-width: 16rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
