/* Public presentation layer. Loaded after the original page styles. */
.mobile-nav-panel {display:contents}
:root {
  --ink: #30232a;
  --muted: #65545c;
  --cream: #fffcf8;
  --accent: #853e55;
  --line: #e7d7dc;
  --shadow: 0 18px 42px -20px #70203940, 0 4px 12px #7020390a;
  --surface-shadow: 0 12px 32px -16px #70203930, 0 2px 5px #70203908;
}
body {font-size:18px;line-height:1.8;background:var(--cream)}
h1,h2,h3 {text-wrap:balance}
h2 {font-size:clamp(36px,3.7vw,54px)}
p {text-wrap:pretty}
a:hover {color:var(--primary)}
.container {max-width:1360px}
.section,.courses-area,.about-area,.staff-directory {padding-block:clamp(64px,7.5vw,112px)}
.section-heading {margin-bottom:48px;gap:32px}
.section-heading>p {max-width:420px}
.about-copy p,.section-heading>p,.academic-card p,.activity-copy p,
.community-copy p,.featured-news p,.news-item p,.admissions-copy p,
.about-title-section p,.about-title-section-2 p,.courses-details-sidebar-area>p,
.faculty-bio p,.faculty-designation p,.sports-info p,.lab-info p,
.staff-directory .section-heading p {font-size:18px;line-height:1.85}
.activity-copy p,.community-copy p,.admissions-copy p {max-width:560px}
.eyebrow,.hero .eyebrow {font-size:12px;letter-spacing:2px;color:var(--primary)}
.button,.button-small,.text-link,.hero-actions .button,.hero-actions .text-link,
.card-link,.news-item .text-link,.filter,.gallery-btn,
.events-details-form .btn,a.btn.btn-primary {font-size:15px;min-height:46px}
.button {border-radius:9px;padding:17px 25px;box-shadow:0 8px 18px #70203924,inset 0 1px #ffffff25}
.button:hover,.button:focus-visible {color:#fff;box-shadow:0 14px 26px #70203930}
.button-gold:hover {color:#432d2b}
.text-link,.card-link {color:var(--primary)}
.utility-bar {font-size:12px;color:#fff4f5}
.utility-inner {min-height:38px}
.site-header {background:#fffcf8f5;box-shadow:0 4px 22px #70203908;border-bottom-color:#e7d7dc}
.header-inner {min-height:104px;gap:20px}
.site-header nav {font-size:14px;gap:18px}
.brand strong {font-size:23px}
.brand small {font-size:10px;letter-spacing:1px}
.dropdown {min-width:250px;border-radius:12px;padding:12px;box-shadow:0 20px 48px #50203222}
.dropdown a {padding:11px 13px;line-height:1.5}
.dropdown a[aria-current=page] {color:var(--primary);background:#f7e9ed;font-weight:700}
.hero {background:radial-gradient(ellipse at 88% 25%,#f6dfcd 0,transparent 48%),radial-gradient(ellipse at 12% 85%,#f5e2e8 0,transparent 55%),#fffaf6;border-bottom:1px solid #ead9dd}
.hero-grid {padding-block:clamp(48px,6vw,88px);gap:60px}
.hero h1 {font-size:clamp(44px,5.2vw,76px);letter-spacing:-2px;color:var(--deep)}
.hero-copy>p {font-size:20px;max-width:560px;line-height:1.8}
.page-breadcrumb {font-size:14px;flex-wrap:wrap;line-height:1.5;margin-bottom:26px}
.hero-affiliation strong {font-size:14px}
.hero-affiliation div>span {font-size:13px}
.seal {background:#fff9f5;box-shadow:0 4px 12px #7020390d}
.hero-photo {border:6px solid #fffaf7;border-radius:100px 20px 20px 20px;box-shadow:12px 14px 0 #ecd7dc,0 28px 50px -20px #70203955;transform:rotate(1deg);transition:transform .55s,box-shadow .55s}
.hero-photo:after {inset:50% 0 0;background:linear-gradient(transparent,#381524e8)}
.hero-photo figcaption strong {font-size:clamp(28px,2.7vw,38px)}
.photo-kicker {font-size:12px;color:#fff2db}
.hero-emblem {background:radial-gradient(circle at 35% 20%,#fff 0,#fff5ed 60%,#efd5de);box-shadow:inset 0 2px 3px #fff,0 22px 50px -22px #70203955;transform:perspective(1000px) rotateY(-7deg);transition:transform .5s}
.hero-emblem strong {font-size:29px;max-width:260px}
.hero-emblem span {font-size:12px;letter-spacing:1.3px}
.hero-emblem .icon {width:48px;height:48px}
/* Keep campus photography luminous; concentrate contrast behind the copy. */
.campus-shade {background:linear-gradient(180deg,#42172922 0%,#42172910 48%,#321020b8 100%)}
.campus-welcome {position:relative;isolation:isolate;filter:none;padding-block:64px}
.campus-welcome:before {content:'';position:absolute;inset:18px -30px 0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,#351020bd 0%,#35102085 44%,transparent 72%)}
.campus-welcome h1 {font-size:clamp(50px,6.3vw,92px);text-shadow:0 3px 20px #210b2290}
.campus-welcome h1 em {color:#ffe1a9}
.campus-welcome p {font-size:20px;max-width:640px;color:#fff;line-height:1.75;text-shadow:0 2px 6px #210b22}
.campus-eyebrow {font-size:13px;color:#ffe6bd;letter-spacing:2px}
.campus-topline {font-size:12px;color:#fff;text-shadow:0 1px 5px #210b22}
.campus-actions .button,.campus-outline {font-size:16px;border-radius:9px;min-height:56px;padding:17px 25px}
.campus-outline {background:#34152480;border-color:#fff9;color:#fff}
.campus-outline:hover {color:#fff;background:#702039cc}
.campus-baseline,.campus-photo-caption {font-size:14px;color:#fff}
.campus-photo-index {font-size:12px}
.campus-picker {background:#3515249c;border-radius:9px}
.campus-picker img {opacity:1;border-radius:5px}
.campus-picker>span {font-size:11px;color:#ffe1a9}
.campus-picker b {font-size:13px;color:#fff}
.campus-picker.is-selected {background:#702039c9}
.campus-pathways {background:linear-gradient(115deg,var(--primary),var(--deep));box-shadow:0 12px 30px #70203920}
.campus-pathways-inner>a {padding-block:32px;color:#fff}
.campus-pathways-inner small {font-size:11px;letter-spacing:1.2px;color:#ffe3eb}
.campus-pathways-inner strong {font-size:25px}
.pathway-number {font-size:36px;color:#f1c9ad}
.notice-strip,.notice-strip>a,.notice-action {font-size:15px}
.notice-label {font-size:12px}
.pillar h2 {font-size:16px;letter-spacing:0}
.pillar p {font-size:14px}
.pillars {padding-block:40px}
.academic-grid,.activity-grid {gap:28px}
.academic-card,.featured-news,.faculty-wrapper,.sports-wrapper,.lab-wrapper,
.staff-card,.gallery-card,.image-card,.events-details-form,.widget {
  border-radius:18px;border-color:var(--line);background:#fffdfb;
  box-shadow:var(--surface-shadow);
  transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s,border-color .4s;
}
.academic-card {padding:34px;background:linear-gradient(145deg,#fff,#fff7f1)}
.academic-card h3,.activity-copy h3,.news-item h3 {font-size:29px}
.academic-icon {box-shadow:4px 5px 0 #e9ced7,0 12px 20px -10px #70203940}
.card-number,.news-tag,.news-category,.featured-news time,.date-block>span {font-size:12px}
.academic-bottom,.about-values,.more-life {font-size:15px}
.activity-card {background:#fffdfb;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--surface-shadow);transition:transform .4s,box-shadow .4s}
.activity-image {border-radius:0;box-shadow:none}
.activity-copy {padding:26px}
.activity-image>img {height:300px}
.image-tag {font-size:11px;padding:8px 12px;border-radius:6px}
.circle-arrow {width:44px;height:44px}
.campus-photo,.image-card img,.sports-thumb img,.lab-thumb img {border-radius:12px;box-shadow:var(--surface-shadow)}
.campus-photo {border-radius:18px 18px 80px 18px}
.about-visual {perspective:1200px;padding-right:0}
.about-visual .campus-photo {transition:transform .5s,box-shadow .5s}
.about-plaque {
  /* Keep shared photo captions in flow, independent of image height and tilt. */
  position:relative;inset:auto;margin-top:20px;
  border-radius:12px;box-shadow:0 15px 35px #7020391c;
  width:100%;max-width:100%;overflow-wrap:anywhere;
  padding:clamp(12px,2.2vw,24px) 48px clamp(12px,2.2vw,24px) clamp(14px,2.6vw,22px);
}
.about-plaque>span,.image-caption {font-size:13px}
.about-plaque>span {font-size:clamp(8px,1.6vw,11px)}
.about-plaque strong {font-size:clamp(16px,3.4vw,26px)}
.about-plaque>.icon {top:clamp(10px,2vw,18px);right:clamp(10px,2vw,15px);width:clamp(13px,2.4vw,17px)}
.community-copy h2 {font-size:clamp(36px,3.7vw,52px)}
.community-copy .eyebrow,.admissions-copy .eyebrow {color:#ffe4b8;font-size:12px}
.community-copy p,.admissions-copy p {color:#fff0f3}
.community-copy .text-link {color:#ffe2ae}
.admissions-card {border-radius:22px;background:radial-gradient(ellipse at top right,#b54261,transparent 65%),var(--deep);box-shadow:0 24px 50px -20px #70203966}
.admissions-phone {font-size:15px;color:#fff}
.admissions-phone:hover {color:#ffe2ae}
.mark-ring>span {font-size:10px;letter-spacing:1px}
.mark-ring {background:#ffffff05;box-shadow:inset 0 2px 14px #ffffff14,0 20px 35px #30102130}
.animated-list li,.vision-list li {font-size:17px;line-height:1.9}
.widget {background:#fffdfb!important}
.widget-title {font-size:26px}
.courses-list>h3 {font-size:28px}
.faculty-name h4,.sports-info h2,.lab-info h3 {font-size:28px;line-height:1.3}
.faculty-contact a,.faculty-wrapper-bottom a {font-size:15px;min-height:44px;overflow-wrap:anywhere}
.staff-card-body {padding:24px}
.staff-card-name {font-size:24px}
.staff-card-designation {font-size:13px}
.staff-card-qualification,.staff-card-department {font-size:16px}
.staff-card-contact a {font-size:14px;min-height:44px;padding:9px 20px}
.staff-card-contact a:hover {color:#fff}
.gallery-body {padding:24px}
.gallery-btn {font-size:23px}
.gallery-img {height:280px}
.gallery-img img,.staff-card-photo img,.lab-thumb img,.sports-thumb img {transition:transform .6s}
.staff-card-photo,.lab-thumb,.sports-thumb {overflow:hidden;border-radius:10px}
/* Premium staff card: gold top accent + soft vignette so the 3D tilt (below) reads as a lifted, framed portrait. */
.staff-card {position:relative}
.staff-card:before {content:'';position:absolute;top:0;left:0;right:0;height:4px;z-index:1;background:linear-gradient(90deg,var(--gold),var(--primary));opacity:0;transition:opacity .4s}
.staff-card:hover:before {opacity:1}
.staff-card-photo {position:relative}
.staff-card-photo:after {content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 65%,#23151c55 100%);pointer-events:none}
table.table {font-size:16px;box-shadow:var(--surface-shadow)}
table.table th,table.table td {padding:17px 20px;vertical-align:middle}
table.table thead th {font-size:13px;letter-spacing:.3px}
.table-custom {border-radius:12px}
.contact-text h5 {font-size:18px}
.contact-text span {font-size:17px;overflow-wrap:anywhere}
.events-details-form h2 {font-size:34px}
.events-details-form input,.events-details-form textarea {font-size:17px;padding:16px;border-radius:9px}
footer {padding-top:76px;background:linear-gradient(135deg,#351a28,#23151c)}
.footer-grid {gap:32px}
.footer-grid h2 {font-size:16px;line-height:1.5}
.footer-grid>div>a:not(.brand),.footer-brand p,.footer-contact address {font-size:15px}
.footer-grid>div>a:not(.brand) {min-height:32px}
.footer-affiliation,.footer-bottom,footer .developer-credit {font-size:13px}
.footer-brand .brand strong {font-size:21px}
.footer-brand .brand small {font-size:10px}
.footer-contact address a {overflow-wrap:anywhere}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  .academic-card:hover,.activity-card:hover,.featured-news:hover,.faculty-wrapper:hover,
  .sports-wrapper:hover,.lab-wrapper:hover,.staff-card:hover,.gallery-card:hover,.image-card:hover {
    transform:perspective(1200px) translateY(-7px) rotateX(1.4deg) rotateY(-1deg);
    box-shadow:0 28px 48px -20px #70203945,0 8px 16px #7020390c;border-color:#d1a4b1;
  }
  .hero-photo:hover {transform:rotate(0) rotateY(-3deg) translateY(-5px);box-shadow:16px 20px 0 #ecd7dc,0 34px 56px -20px #70203955}
  .hero-emblem:hover {transform:perspective(1000px) rotateY(0) translateY(-5px)}
  .about-visual:hover .campus-photo {transform:rotateY(2deg) translateY(-4px)}
  .gallery-card:hover .gallery-img img,.staff-card:hover .staff-card-photo img,
  .lab-wrapper:hover .lab-thumb img,.sports-wrapper:hover .sports-thumb img {transform:scale(1.035)}
}
.activity-card:focus-visible,.academic-card:focus-visible,.featured-news:focus-visible {box-shadow:var(--shadow)}
@media (min-width:1051px) and (max-width:1350px) {
  .header-inner {flex-wrap:wrap;justify-content:center;padding-block:15px;gap:6px}
  .site-header nav {justify-content:center;gap:24px}
  .site-header nav>a:not(.button),.site-header summary {padding-block:10px}
}
@media (max-width:1050px) {
  .hero-grid {gap:36px}
  .site-header nav {font-size:16px}
  .academic-grid {grid-template-columns:1fr}
  .academic-card {padding:30px}
  .footer-grid {grid-template-columns:1fr 1fr}
  .campus-pathways-inner strong {font-size:22px}
  .campus-pathways-inner small {font-size:10px}
  .campus-photo {height:340px}
}
@media (max-width:760px) {
  body {font-size:17px}
  .container {width:calc(100% - 40px)}
  .header-inner {min-height:86px;gap:10px}
  .site-header .brand {flex-shrink:1;min-width:0;max-width:calc(100% - 54px)}
  .site-header .brand strong {font-size:18px;line-height:1.2}
  .site-header .brand small {font-size:8px;letter-spacing:.35px;line-height:1.6}
  .menu-toggle {flex-shrink:0}
  .utility-inner {font-size:11px;min-height:32px}
  .hero-grid {padding-block:44px;gap:34px}
  .hero h1 {font-size:clamp(40px,10vw,60px);letter-spacing:-1.5px}
  .hero-copy>p,.campus-welcome p {font-size:18px}
  .hero-photo {border-top-left-radius:70px;height:420px}
  .hero-emblem {max-width:260px}
  .hero-emblem strong {font-size:24px}
  .hero-emblem span {font-size:11px}
  .campus-welcome {padding:48px 0}
  .campus-welcome h1 {font-size:clamp(45px,11vw,68px);letter-spacing:-1.5px}
  .campus-welcome:before {inset:0 -20px;background:radial-gradient(ellipse,#351020c4 0%,#35102085 50%,transparent 78%)}
  .campus-topline {font-size:10px;letter-spacing:.8px}
  .campus-eyebrow {font-size:11px;letter-spacing:1px;gap:8px}
  .campus-actions {width:100%;gap:12px}
  .campus-actions .button,.campus-outline {font-size:15px;padding:16px 20px}
  .campus-photo-caption {font-size:13px}
  .campus-picker>span {font-size:10px}
  .campus-picker b {font-size:11px}
  .campus-pathways-inner>a,.campus-pathways-inner>a:first-child,.campus-pathways-inner>a:last-child {padding-block:22px}
  .campus-pathways-inner strong {font-size:24px}
  .notice-strip>a,.notice-action {font-size:14px}
  .pillar {align-items:flex-start}
  .pillar h2 {font-size:15px}
  .pillar p {font-size:13px;max-width:none}
  .pillar>.icon {width:22px}
  .section-heading {margin-bottom:32px}
  .about-copy p,.section-heading>p,.academic-card p,.activity-copy p,
  .community-copy p,.featured-news p,.news-item p,.admissions-copy p {font-size:17px}
  .activity-copy {padding:24px}
  .academic-card h3,.activity-copy h3,.news-item h3 {font-size:27px}
  .admissions-card {padding:38px 24px}
  .admissions-copy h2 {font-size:38px}
  .footer-grid {gap:32px 22px}
  .footer-brand,.footer-contact {grid-column:1/-1}
  .footer-grid>div>a:not(.brand) {font-size:15px}
  .footer-brand .brand strong {font-size:20px}
  table.table th,table.table td {padding:14px;font-size:15px}
  table.table thead th {font-size:12px}
  .report-art strong {font-size:clamp(58px,18vw,82px)}
  .about-grid {gap:32px}
  .campus-photo {height:280px}
}
@media (max-width:430px) {
  .campus-photo {height:230px}
}
@media (prefers-reduced-motion:no-preference) {
  .reveal {
    transition:opacity .85s cubic-bezier(.22,1,.36,1) var(--reveal-delay,0ms),
      translate .85s cubic-bezier(.22,1,.36,1) var(--reveal-delay,0ms),
      transform .4s,box-shadow .4s,border-color .4s;
  }
  .reveal.is-pending {translate:0 24px}
  .reveal:focus-within {opacity:1;translate:none;transition-delay:0s}
  .hero-copy>*,.campus-welcome>*,.hero-visual {animation:public-arrive .9s cubic-bezier(.22,1,.36,1) both}
  .hero-copy>:nth-child(2),.campus-welcome>:nth-child(2) {animation-delay:.08s}
  .hero-copy>:nth-child(3),.campus-welcome>:nth-child(3) {animation-delay:.16s}
  .hero-copy>:nth-child(n+4),.campus-welcome>:nth-child(n+4),.hero-visual {animation-delay:.24s}
}
@keyframes public-arrive {
  from {opacity:0;translate:0 20px}
  to {opacity:1;translate:0 0}
}
@media (hover:none), (pointer:coarse) {
  .academic-card:hover,.activity-card:hover,.featured-news:hover,.faculty-wrapper:hover,
  .sports-wrapper:hover,.lab-wrapper:hover,.staff-card:hover,.gallery-card:hover {transform:none}
  .activity-card:hover img {transform:none}
}
@media (prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto}
  *,*::before,*::after {animation:none!important;transition:none!important}
  .hero-emblem,.hero-photo,.academic-card,.activity-card,.featured-news,.faculty-wrapper,
  .sports-wrapper,.lab-wrapper,.staff-card,.gallery-card,.image-card {transform:none!important}
}
/* Mobile navigation only; desktop keeps the original flex layout and dropdowns. */
@media (max-width:1050px) {
  .site-header.nav-ready .header-inner {
    display:grid;
    grid-template-columns:minmax(0,1fr) 44px;
    column-gap:12px;
    row-gap:0;
    align-items:center;
    padding-block:14px;
  }
  .site-header.nav-ready .brand {min-width:0;max-width:100%;justify-self:start}
  .site-header.nav-ready .brand>span:last-child {min-width:0;overflow-wrap:anywhere}
  .site-header.nav-ready .menu-toggle {width:44px;height:48px;justify-self:end}
  .site-header.nav-ready .mobile-nav-panel {
    display:grid;
    grid-column:1/-1;
    grid-template-rows:0fr;
    min-width:0;
    width:100%;
    visibility:hidden;
    opacity:0;
    transition:grid-template-rows .28s cubic-bezier(.2,.7,.2,1),opacity .2s,visibility 0s .28s;
  }
  .site-header.nav-ready .mobile-nav-panel.is-open {
    grid-template-rows:1fr;
    visibility:visible;
    opacity:1;
    transition:grid-template-rows .28s cubic-bezier(.2,.7,.2,1),opacity .2s,visibility 0s;
  }
  .site-header.nav-ready #primary-nav,
  .site-header.nav-ready #primary-nav.is-open {
    display:flex;
    flex-direction:column;
    flex-wrap:nowrap;
    align-items:stretch;
    justify-content:flex-start;
    gap:0;
    min-height:0;
    min-width:0;
    width:100%;
    max-height:max(0px,calc(100vh - var(--nav-top,120px) - 20px));
    max-height:max(0px,calc(100dvh - var(--nav-top,120px) - 20px - env(safe-area-inset-bottom,0px)));
    margin:0;
    padding:0;
    overflow-x:hidden;
    overflow-y:hidden;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
    font-size:16px;
    line-height:1.5;
  }
  .site-header.nav-ready .mobile-nav-panel.is-open #primary-nav {overflow-y:auto}
  .site-header.nav-ready #primary-nav>* {flex-shrink:0;min-width:0;max-width:100%}
  .site-header.nav-ready #primary-nav>a:not(.button),
  .site-header.nav-ready #primary-nav .nav-group>summary {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    min-height:52px;
    margin:0;
    padding:14px 12px;
    border-bottom:1px solid var(--line);
    white-space:normal;
    overflow-wrap:anywhere;
    color:var(--ink);
    text-align:left;
    font-size:16px;
    line-height:1.5;
    touch-action:manipulation;
  }
  .site-header.nav-ready #primary-nav .nav-group {width:100%;margin:0}
  .site-header.nav-ready #primary-nav .chevron {flex-shrink:0;width:7px;height:7px;margin-right:4px}
  .site-header.nav-ready #primary-nav summary[aria-expanded=false] .chevron {transform:rotate(45deg);margin-top:-3px}
  .site-header.nav-ready #primary-nav summary[aria-expanded=true] {color:var(--primary)}
  .site-header.nav-ready #primary-nav .dropdown {
    position:static;
    inset:auto;
    float:none;
    width:100%;
    min-width:0;
    max-width:100%;
    margin:0;
    padding:8px;
    border:0;
    border-radius:0 0 10px 10px;
    background:#f6eaf0;
    box-shadow:none;
    transform:none;
  }
  .site-header.nav-ready #primary-nav .dropdown a {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    min-height:48px;
    padding:12px 16px;
    margin:0;
    white-space:normal;
    overflow-wrap:anywhere;
    font-size:16px;
    line-height:1.5;
    text-align:left;
    touch-action:manipulation;
  }
  .site-header.nav-ready #primary-nav .button {
    align-self:stretch;
    width:100%;
    min-height:50px;
    margin:16px 0 8px;
    padding:14px 18px;
    white-space:normal;
    transform:none;
  }
  .site-header.nav-ready #primary-nav :focus-visible {outline-offset:-3px}
}

/* School activities transcribed from the supplied calendar photos. */
.calendar-notice {display:flex;align-items:center;gap:12px;margin-block:24px 8px;padding:16px 18px;background:linear-gradient(115deg,#702039,#a32646);color:#fff8ef;border:1px solid #b66c79;border-radius:12px;box-shadow:0 10px 28px #70203920}
.calendar-notice-content {display:flex;align-items:center;gap:22px;flex:1;min-width:0}
.calendar-notice-label {display:flex;align-items:center;gap:10px;flex-shrink:0;font-size:17px;font-weight:700}
.calendar-notice-label small {font-size:12px;color:#f4d7a4;white-space:nowrap}
.calendar-marquee {flex:1;min-width:0;overflow:auto}
.calendar-track {display:flex;width:max-content}
.calendar-activity-list {display:flex;align-items:center;width:max-content;list-style:none;margin:0;padding:0;font-size:15px}
.calendar-activity-list li {white-space:nowrap;padding-right:48px}
.calendar-activity-list li::after {content:'•';padding-left:48px;color:#ffe0a4}
.calendar-pause {min-height:44px;padding:8px 14px;border:1px solid #ffffff70;border-radius:7px;background:transparent;color:inherit;font-size:13px;font-weight:600}
.calendar-notice :focus-visible {outline:2px solid #ffe0a4;outline-offset:4px}
@keyframes calendar-scroll {to {transform:translateX(-50%)}}
@media(prefers-reduced-motion:no-preference) {
 .calendar-motion-ready .calendar-marquee {overflow:hidden}
 .calendar-motion-ready .calendar-track {animation:calendar-scroll var(--calendar-duration,38s) linear infinite}
 .calendar-notice:hover .calendar-track,.calendar-notice:focus-within .calendar-track,.calendar-notice.is-paused .calendar-track {animation-play-state:paused}
}
@media(max-width:1050px) {
 .calendar-notice-content {flex-wrap:wrap;gap:12px}
 .calendar-marquee {flex-basis:100%}
}
@media(max-width:600px) {
 .calendar-notice {padding:14px 12px;gap:8px;align-items:flex-start}
 .calendar-notice-label {flex-wrap:wrap;gap:6px;font-size:15px}
 .calendar-notice-label .icon {width:18px}
 .calendar-activity-list {font-size:14px}
 .calendar-pause {padding-inline:9px;font-size:12px}
}
@media(prefers-reduced-motion:reduce) {
 .calendar-track {width:auto;display:block;animation:none}
 .calendar-marquee {max-height:160px;overflow:auto}
 .calendar-activity-list {width:auto;display:block}
 .calendar-activity-list li {white-space:normal;padding:6px 0}
 .calendar-activity-list li::after {content:none}
 .calendar-activity-list[aria-hidden],.calendar-pause {display:none}
}

/* Shared faculty, office and nursery portrait motion. */
.staff-motion-card {border-radius:16px;isolation:isolate;transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s,border-color .4s}
.staff-motion-card::after {content:'';position:absolute;inset:0;pointer-events:none;z-index:2;background:radial-gradient(circle at var(--staff-light-x,50%) var(--staff-light-y,25%),#ffffff30,transparent 65%);opacity:0;transition:opacity .4s}
.staff-motion-card:focus-within {border-color:var(--primary);box-shadow:0 16px 36px -18px #70203966}
.staff-motion-card:focus-within::before {opacity:1}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
 .staff-motion-card:hover,.staff-motion-card.is-tilting {transform:perspective(1000px) translateY(-7px) rotateX(var(--staff-rx,2deg)) rotateY(var(--staff-ry,-2deg));box-shadow:0 26px 44px -18px #70203960,0 8px 18px #70203912;border-color:#c799a6}
 .staff-motion-card.is-tilting {transition-duration:.18s,.5s,.4s}
 .staff-motion-card:hover::after,.staff-motion-card.is-tilting::after {opacity:1}
 .staff-motion-card.is-tilting::before {opacity:1}
 .staff-motion-card.is-tilting .staff-card-photo img {transform:scale(1.035)}
}
@media(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce) {
 .staff-motion-card,.staff-motion-card:hover,.staff-motion-card.is-tilting {transform:none}
 .staff-motion-card:hover .staff-card-photo img {transform:none}
 .staff-motion-card::after {display:none}
}

/* Contact page location map. */
.contact-map-section {margin-bottom:80px}
.contact-map-heading {display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:26px}
.contact-map-heading .eyebrow {color:var(--primary);margin-bottom:14px}
.contact-map-heading p {margin-top:16px;max-width:660px}
.contact-map-heading .button {flex-shrink:0}
.contact-map-frame {overflow:hidden;border:1px solid #d8b7c1;border-top:5px solid var(--primary);border-radius:16px;background:#f2e6e9;box-shadow:0 18px 40px -24px #70203960}
.contact-map-frame iframe {display:block;width:100%;height:450px;border:0}
.contact-map-fallback {margin-top:16px;font-size:14px}
.contact-map-fallback a {color:var(--primary);text-decoration:underline;text-underline-offset:4px}
.contact-map-fallback .icon {width:15px;height:15px}
@media(max-width:760px) {
 .contact-map-section {margin-bottom:48px}
 .contact-map-heading {align-items:flex-start;flex-direction:column;gap:20px}
 .contact-map-heading p {font-size:16px}
 .contact-map-frame iframe {height:340px}
}

/* Premium map shell: decorative layers never intercept map input. */
.contact-map-stage {position:relative;isolation:isolate;perspective:1600px;padding:22px 12px 30px}
.contact-map-stage::before {content:'';position:absolute;inset:5% -12px 0;z-index:-1;background:radial-gradient(ellipse at 24% 40%,#a326462b,transparent 65%),radial-gradient(ellipse at 80% 60%,#c79b4324,transparent 60%);border-radius:40px;pointer-events:none}
.contact-map-float {position:relative;transform-origin:center;isolation:isolate}
.contact-map-float::before,.contact-map-float::after {content:'';position:absolute;inset:8px 8px -8px;border:1px solid #d7b7c2;border-radius:24px;background:#e8d4db;z-index:-1;pointer-events:none}
.contact-map-float::before {inset:16px 17px -16px;background:#f2e5e9;border-color:#e4cdd5;box-shadow:0 28px 40px -24px #70203960}
.contact-map-stage .contact-map-frame {position:relative;border:1px solid #d6afbb;border-radius:24px;background:#fffaf7;box-shadow:0 24px 55px -28px #57203570,0 8px 18px -12px #70203950,inset 0 1px 0 #fff;transform-origin:center}
.contact-map-card-header {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:linear-gradient(115deg,#702039,#932b4b);color:#fff9f2;border-bottom:1px solid #b3637a}
.contact-map-location {display:flex;align-items:center;gap:16px;min-width:0}
.contact-map-location strong {display:block;font-family:var(--serif);font-size:24px;font-weight:500;line-height:1.25}
.contact-map-location small {display:block;margin-top:6px;font-size:11px;letter-spacing:1.5px;color:#f2d9b2}
.contact-map-pin {position:relative;display:grid;place-items:center;width:48px;height:48px;flex-shrink:0;border:1px solid #ffffff55;border-radius:16px;background:#ffffff12;box-shadow:inset 0 1px 0 #ffffff55,0 6px 12px #35102033;color:#ffe1a9;pointer-events:none}
.contact-map-pin::after {content:'';position:absolute;inset:0;border:1px solid #ffe1a9;border-radius:inherit;opacity:0;pointer-events:none}
.contact-map-motion {min-height:44px;flex-shrink:0;padding:9px 13px;background:#ffffff0d;border:1px solid #ffffff66;border-radius:8px;color:#fff9f2;font-size:12px}
.contact-map-motion:focus-visible {outline:2px solid #ffe1a9;outline-offset:4px}
.contact-map-card-footer {display:flex;align-items:center;gap:9px;padding:15px 24px;border-top:1px solid #ead6dc;font-size:13px;color:#764854;background:linear-gradient(100deg,#fffaf7,#f8edef)}
.contact-map-status {width:6px;height:6px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px #a326460d;flex-shrink:0}
.contact-map-postcode {margin-left:auto;font-size:10px;letter-spacing:1.6px}
@keyframes map-float {0%,100% {transform:translateY(0) rotateX(.7deg) rotateY(-.5deg)}50% {transform:translateY(-5px) rotateX(-.5deg) rotateY(.5deg)}}
@keyframes map-pin-breathe {0%,100% {transform:translateY(0)}50% {transform:translateY(-3px)}}
@keyframes map-pin-ring {0% {opacity:.5;transform:scale(.9)}75%,100% {opacity:0;transform:scale(1.35)}}
@media(prefers-reduced-motion:no-preference) {
 .contact-map-stage .contact-map-frame {transition:transform 1.1s cubic-bezier(.22,1,.36,1)}
 .contact-map-stage.is-pending .contact-map-frame {transform:translateY(20px) rotateX(7deg) scale(.98)}
 .contact-map-pin>.icon {animation:map-pin-breathe 4s ease-in-out infinite}
 .contact-map-pin::after {animation:map-pin-ring 4s ease-out infinite}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
 .contact-map-float {animation:map-float 8s ease-in-out infinite}
}
/* Pause in place: no moving targets while zooming, dragging or clicking. */
.contact-map-stage:not(.is-map-visible) .contact-map-float,.contact-map-stage:not(.is-map-visible) .contact-map-pin>.icon,.contact-map-stage:not(.is-map-visible) .contact-map-pin::after,
.contact-map-stage:is(:hover,:focus-within,.is-motion-paused,.is-page-hidden) .contact-map-float,.contact-map-stage:is(:hover,:focus-within,.is-motion-paused,.is-page-hidden) .contact-map-pin>.icon,.contact-map-stage:is(:hover,:focus-within,.is-motion-paused,.is-page-hidden) .contact-map-pin::after {animation-play-state:paused}
@media(max-width:760px) {
 .contact-map-stage {padding:12px 0 24px}
 .contact-map-card-header {padding:16px;gap:12px;flex-wrap:wrap}
 .contact-map-location {gap:12px}
 .contact-map-location strong {font-size:21px}
 .contact-map-location small {font-size:10px;letter-spacing:.8px}
 .contact-map-pin {width:40px;height:40px;border-radius:12px}
 .contact-map-motion {margin-left:52px;min-height:44px}
 .contact-map-card-footer {padding:14px 16px;font-size:12px}
 .contact-map-postcode {display:none}
 .contact-map-stage .contact-map-frame {border-radius:20px}
}
@media(prefers-reduced-motion:reduce) {
 .contact-map-stage .contact-map-frame,.contact-map-float {transform:none;animation:none;transition:none}
 .contact-map-motion {display:none}
}
.contact-map-stage.is-map-engaged .contact-map-float,.contact-map-stage.is-map-engaged .contact-map-pin>.icon,.contact-map-stage.is-map-engaged .contact-map-pin::after {animation-play-state:paused}
