@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;1,500&family=Inter:wght@400;500;600&display=swap');

:root {
  --navy: #082a45;
  --navy-deep: #052238;
  --gold: #ca9228;
  --gold-light: #ebc974;
  --ivory: #f7f0e4;
  --paper: #fffaf1;
  --ink: #173952;
  --muted: #647687;
  --line: rgba(8, 42, 69, .16);
  --max: 1360px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--ivory);
  color: var(--ink);
  font-family: Inter, Arial, sans-serif;
  line-height: 1.65;
}
img { max-width: 100%; }
a { color: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.skip-link {
  position: fixed; left: 12px; top: -60px; z-index: 1000;
  padding: 10px 16px; background: white; color: var(--navy);
}
.skip-link:focus { top: 12px; }

.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(255, 252, 246, .96);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.header-inner {
  max-width: var(--max); margin: auto; min-height: 76px;
  padding: 0 32px; display: flex; align-items: center; justify-content: space-between;
}
.brand { text-decoration: none; display: flex; align-items: center; gap: 14px; }
.brand-icon { width: 64px; height: 42px; object-fit: contain; }
.brand-copy { display: flex; flex-direction: column; line-height: 1.25; }
.brand-copy strong {
  color: var(--navy); font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 20px; font-weight: 600;
}
.brand-copy small {
  margin-top: 4px; font-size: 9px; color: #5a7184;
  text-transform: uppercase; letter-spacing: .19em;
}
.main-nav { display: flex; align-items: center; gap: 30px; }
.main-nav a {
  text-decoration: none; color: var(--navy); font-size: 13px;
  border-bottom: 1px solid transparent; padding: 10px 0;
}
.main-nav a:hover, .main-nav a:focus-visible { border-color: var(--gold); }
.main-nav .nav-campus {
  border: 1px solid var(--navy); padding: 10px 15px;
}
.main-nav .nav-campus:hover { background: var(--navy); color: white; }
.header-rule { height: 11px; background: var(--navy); }
.header-rule span { display: block; width: 43%; height: 100%; background: linear-gradient(90deg, var(--navy) 72%, var(--gold) 72%); }
.menu-button { display: none; }

.hero {
  position: relative; overflow: hidden; max-width: 100%;
  min-height: 730px; padding: 125px max(7vw, 48px) 92px;
  display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(365px, .65fr);
  gap: 64px; align-items: center;
}
.hero-copy { position: relative; z-index: 2; max-width: 850px; }
.eyebrow {
  margin: 0 0 24px; display: flex; align-items: center; gap: 12px;
  text-transform: uppercase; letter-spacing: .2em; font-size: 11px; font-weight: 600;
  color: #315a78;
}
.eyebrow span { width: 35px; height: 1px; background: var(--gold); display: inline-block; }
.eyebrow.light { color: #f4e7d2; }
.hero h1, .section h2, .contact h2 {
  margin: 0; color: var(--navy); font-family: "Cormorant Garamond", Georgia, serif;
  font-weight: 600; line-height: .96; letter-spacing: -.035em;
}
.hero h1 { font-size: clamp(58px, 6.2vw, 104px); }
.hero h1 em { color: var(--gold); font-weight: 500; }
.hero-lead {
  max-width: 720px; margin: 35px 0 34px;
  font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(23px, 2vw, 31px);
  line-height: 1.35; color: #294e6b;
}
.hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 28px; }
.button {
  display: inline-flex; align-items: center; justify-content: center; gap: 18px;
  min-height: 54px; padding: 0 24px; text-decoration: none;
  text-transform: uppercase; letter-spacing: .13em; font-size: 11px; font-weight: 600;
  transition: transform .2s ease, background .2s ease, color .2s ease;
}
.button:hover { transform: translateY(-2px); }
.button-primary { background: var(--gold); color: #071f32; }
.button-primary:hover { background: #d9a137; }
.text-link {
  text-decoration: none; font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 17px; border-bottom: 1px solid #9aabb8; padding: 10px 0 6px;
}
.text-link span { margin-left: 12px; color: var(--gold); }
.legal-kicker {
  margin: 32px 0 0; text-transform: uppercase; letter-spacing: .14em;
  font-size: 10px; color: #5d778a;
}
.hero-ornament {
  position: absolute; right: 18%; bottom: 22px; width: 380px; opacity: .26;
  transform: rotate(-4deg); pointer-events: none;
}
.event-card {
  position: relative; z-index: 2; background: var(--navy-deep);
  color: white; padding: 10px; box-shadow: 20px 22px 0 rgba(202, 146, 40, .12);
}
.event-card-inner { border: 1px solid rgba(235, 201, 116, .52); padding: 32px 28px 28px; }
.event-topline {
  display: flex; align-items: center; justify-content: space-between;
  text-transform: uppercase; letter-spacing: .18em; font-size: 10px; font-weight: 600;
}
.event-topline strong { background: var(--gold); color: #071f32; padding: 7px 13px; margin-right: -29px; }
.event-date { display: flex; align-items: flex-end; gap: 17px; margin: 36px 0 17px; }
.event-date b {
  font-family: "Cormorant Garamond", Georgia, serif; font-size: 104px;
  line-height: .69; font-weight: 600; color: var(--gold-light);
}
.event-date span { font-family: "Cormorant Garamond", Georgia, serif; font-size: 31px; line-height: 1; }
.event-date small { margin-left: 8px; font-family: Inter, sans-serif; font-size: 11px; letter-spacing: .12em; color: #93b0c5; }
.event-divider { height: 1px; background: rgba(255,255,255,.18); margin: 28px 0 18px; }
.event-meta { text-transform: uppercase; letter-spacing: .13em; font-size: 10px; font-weight: 600; color: var(--gold-light); }
.event-card h2 {
  margin: 24px 0 10px; color: white; font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 34px; line-height: 1.1;
}
.event-card p { font-family: "Cormorant Garamond", Georgia, serif; font-size: 18px; line-height: 1.45; color: #eef2f4; }
.event-card a {
  display: inline-block; margin-top: 8px; padding: 10px 0 6px;
  color: var(--gold-light); text-decoration: none; text-transform: uppercase;
  letter-spacing: .14em; font-size: 10px; font-weight: 600; border-bottom: 1px solid var(--gold);
}

.numbers {
  display: grid; grid-template-columns: repeat(4, 1fr); background: var(--navy-deep); color: white;
  padding: 0 max(4vw, 20px);
}
.numbers div {
  min-height: 130px; display: flex; flex-direction: column; align-items: center; justify-content: center;
  border-left: 1px solid rgba(255,255,255,.12);
}
.numbers div:last-child { border-right: 1px solid rgba(255,255,255,.12); }
.numbers strong {
  font-family: "Cormorant Garamond", Georgia, serif; font-size: 34px;
  line-height: 1; color: var(--gold-light); font-weight: 600;
}
.numbers span { margin-top: 8px; font-size: 9px; text-transform: uppercase; letter-spacing: .18em; color: #aec0cd; }

.section {
  max-width: var(--max); margin: auto; padding: 120px 38px;
  display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 60px;
}
.section-label {
  padding-top: 12px; font-size: 10px; text-transform: uppercase;
  letter-spacing: .18em; color: #6f7f8b;
}
.section-copy { max-width: 980px; }
.section h2 { font-size: clamp(47px, 5vw, 76px); max-width: 900px; }
.large-copy {
  max-width: 880px; font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(24px, 2.2vw, 34px); line-height: 1.4; color: #31536b;
}
.two-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; margin-top: 45px; }
.two-columns p { margin: 0; color: #526877; }
.notice {
  margin-top: 50px; border-left: 3px solid var(--gold); padding: 2px 0 2px 24px; max-width: 850px;
}
.notice strong { font-family: "Cormorant Garamond", Georgia, serif; font-size: 23px; }
.notice p { margin-bottom: 0; color: #526877; }

.matrix-section, .library-section {
  max-width: none; background: var(--navy-deep); color: white;
  padding-left: max(calc((100vw - var(--max))/2 + 38px), 38px);
  padding-right: max(calc((100vw - var(--max))/2 + 38px), 38px);
}
.matrix-section .section-label, .library-section .section-label { color: #93aaba; }
.matrix-section h2, .library-section h2 { color: white; }
.module-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: rgba(255,255,255,.12); margin: 55px 0 38px; }
.module-grid article { min-height: 255px; padding: 30px; background: var(--navy-deep); }
.module-grid article:hover { background: #0b3453; }
.module-grid span, .tag {
  display: inline-block; color: var(--gold-light); text-transform: uppercase; letter-spacing: .14em;
  font-size: 9px; font-weight: 600;
}
.module-grid h3 {
  font-family: "Cormorant Garamond", Georgia, serif; font-size: 27px;
  line-height: 1.15; margin: 32px 0 13px; color: white;
}
.module-grid p { color: #bfd0db; font-size: 14px; line-height: 1.65; }
.button-outline-light { border: 1px solid rgba(255,255,255,.5); color: white; }
.button-outline-light:hover { background: white; color: var(--navy); }

.calendar-list { margin-top: 50px; border-top: 1px solid var(--line); }
.calendar-item {
  display: grid; grid-template-columns: 115px 1fr; gap: 38px; align-items: center;
  padding: 30px 18px; border-bottom: 1px solid var(--line);
}
.calendar-item.featured { background: var(--paper); }
.calendar-item time { display: flex; align-items: baseline; gap: 10px; color: var(--gold); }
.calendar-item time b { font-family: "Cormorant Garamond", Georgia, serif; font-size: 52px; line-height: 1; }
.calendar-item time span { font-size: 10px; letter-spacing: .15em; }
.calendar-item h3 { margin: 7px 0 3px; font-family: "Cormorant Garamond", Georgia, serif; font-size: 27px; color: var(--navy); }
.calendar-item p { margin: 0; color: #6d7e8a; font-size: 13px; }
.calendar-note { margin-top: 24px; font-size: 12px; color: #6d7e8a; }

.price-panel {
  display: grid; grid-template-columns: .75fr 1.25fr; margin-top: 50px;
  border: 1px solid rgba(8,42,69,.2); background: var(--paper);
}
.price { padding: 45px; border-right: 1px solid rgba(8,42,69,.15); }
.price > span { text-transform: uppercase; letter-spacing: .15em; font-size: 10px; color: #6b7c88; }
.price strong { display: block; margin: 18px 0 4px; font-family: "Cormorant Garamond", Georgia, serif; font-size: 63px; line-height: 1; color: var(--gold); }
.price strong small { font-size: 21px; }
.price p { margin: 0; color: #6d7e8a; font-size: 12px; }
.price-details { padding: 38px 44px; }
.price-details ul { columns: 2; column-gap: 45px; margin: 0 0 30px; padding-left: 18px; }
.price-details li { break-inside: avoid; margin: 0 0 12px; color: #4f6574; }
.small-copy { max-width: 850px; font-size: 12px; color: #6d7e8a; }

.library-section .large-copy { color: #d2dee5; }
.library-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 50px 0 38px; }
.library-cards article { border-top: 1px solid rgba(235,201,116,.5); padding: 25px 10px 10px 0; }
.library-cards span { font-family: "Cormorant Garamond", Georgia, serif; font-size: 38px; color: var(--gold-light); }
.library-cards h3 { font-family: "Cormorant Garamond", Georgia, serif; font-size: 27px; margin: 25px 0 10px; }
.library-cards p { color: #b9cbd6; font-size: 14px; }

.accordion { margin-top: 50px; }
.accordion details { border-top: 1px solid var(--line); }
.accordion details:last-child { border-bottom: 1px solid var(--line); }
.accordion summary {
  cursor: pointer; list-style: none; position: relative; padding: 24px 55px 24px 0;
  font-family: "Cormorant Garamond", Georgia, serif; font-size: 24px; color: var(--navy);
}
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary::after {
  content: "+"; position: absolute; right: 8px; top: 20px;
  font-family: Inter, sans-serif; font-size: 26px; font-weight: 300; color: var(--gold);
}
.accordion details[open] summary::after { content: "−"; }
.accordion details p { max-width: 780px; margin: -5px 0 25px; color: #5c7180; }

.contact {
  background: var(--navy); color: white; padding: 80px max(7vw, 40px);
  display: flex; align-items: flex-end; justify-content: space-between; gap: 60px;
}
.contact > div:first-child { max-width: 800px; }
.contact h2 { color: white; font-size: clamp(48px, 5vw, 77px); }
.contact p { max-width: 700px; color: #c5d3dc; }
.contact-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; min-width: 260px; }
.button-gold { background: var(--gold); color: var(--navy); }
.light-link { color: white; border-color: rgba(255,255,255,.45); }

.site-footer { padding: 46px max(5vw, 30px) 28px; background: #031a2b; color: #b7c7d1; }
.footer-brand { display: flex; align-items: center; gap: 18px; }
.footer-brand img { width: 65px; filter: brightness(1.5); }
.footer-brand div { display: flex; flex-direction: column; }
.footer-brand strong { color: white; font-family: "Cormorant Garamond", Georgia, serif; font-size: 21px; }
.footer-brand span { font-size: 10px; text-transform: uppercase; letter-spacing: .12em; }
.footer-links { display: flex; flex-wrap: wrap; gap: 25px; margin: 35px 0; }
.footer-links a { text-decoration: none; font-size: 12px; }
.footer-links a:hover { color: var(--gold-light); }
.copyright { margin: 0; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.12); font-size: 10px; }

.campus-page, .privacy-page {
  min-height: 100vh; background: var(--ivory); display: grid; place-items: center; padding: 30px;
}
.simple-card {
  width: min(720px, 100%); background: var(--paper); border: 1px solid var(--line);
  padding: clamp(35px, 7vw, 75px); text-align: center;
}
.simple-card img { width: 105px; }
.simple-card h1 {
  font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(44px, 7vw, 70px);
  color: var(--navy); line-height: 1; margin: 25px 0;
}
.simple-card p { color: #5b7180; }
.simple-card .button { margin-top: 22px; }
.privacy-card { text-align: left; }
.privacy-card h1 { font-size: 48px; }
.privacy-card h2 { margin-top: 35px; font-family: "Cormorant Garamond", Georgia, serif; color: var(--navy); }

@media (max-width: 1050px) {
  .main-nav { gap: 16px; }
  .main-nav a { font-size: 11px; }
  .hero { grid-template-columns: 1fr; padding-top: 90px; }
  .event-card { max-width: 650px; }
  .hero-ornament { right: -80px; bottom: 200px; }
  .module-grid { grid-template-columns: repeat(2, 1fr); }
  .contact { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 800px) {
  .header-inner { min-height: 68px; padding: 0 20px; }
  .brand-icon { width: 50px; }
  .brand-copy strong { font-size: 17px; }
  .brand-copy small { font-size: 7px; }
  .menu-button {
    width: 44px; height: 44px; display: flex; flex-direction: column;
    justify-content: center; gap: 5px; background: transparent; border: 0; padding: 10px;
  }
  .menu-button span:not(.sr-only) { display: block; width: 24px; height: 1px; background: var(--navy); }
  .main-nav {
    display: none; position: absolute; top: 68px; left: 0; right: 0;
    background: var(--paper); padding: 18px 24px 28px; flex-direction: column; align-items: stretch; gap: 0;
    border-bottom: 4px solid var(--gold);
  }
  .main-nav.open { display: flex; }
  .main-nav a { padding: 13px 0; font-size: 13px; border-bottom: 1px solid var(--line); }
  .main-nav .nav-campus { margin-top: 12px; text-align: center; }
  .hero { min-height: auto; padding: 75px 24px 65px; gap: 52px; }
  .hero h1 { font-size: clamp(48px, 13vw, 70px); }
  .hero-lead { font-size: 24px; }
  .event-card-inner { padding: 27px 22px; }
  .event-topline strong { margin-right: -23px; }
  .numbers { grid-template-columns: repeat(2, 1fr); }
  .numbers div:nth-child(3), .numbers div:nth-child(4) { border-top: 1px solid rgba(255,255,255,.12); }
  .section { padding: 80px 24px; grid-template-columns: 1fr; gap: 22px; }
  .matrix-section, .library-section { padding-left: 24px; padding-right: 24px; }
  .two-columns, .price-panel { grid-template-columns: 1fr; }
  .two-columns { gap: 12px; }
  .price { border-right: 0; border-bottom: 1px solid var(--line); }
  .library-cards { grid-template-columns: 1fr; }
}
@media (max-width: 570px) {
  .hero-actions { align-items: stretch; flex-direction: column; }
  .button { width: 100%; }
  .text-link { align-self: flex-start; }
  .hero-ornament { display: none; }
  .event-date b { font-size: 86px; }
  .module-grid { grid-template-columns: 1fr; }
  .calendar-item { grid-template-columns: 75px 1fr; gap: 20px; padding-left: 0; padding-right: 0; }
  .calendar-item time { align-items: flex-start; flex-direction: column; gap: 0; }
  .price, .price-details { padding: 30px 24px; }
  .price-details ul { columns: 1; }
  .contact { padding: 65px 24px; }
}
