:root { color-scheme:light; --navy:#102542; --ink:#162238; --blue:#2867a8; --paper:#f8f7f3; --line:#dfe4ea; --muted:#667085; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scrollbar-color:rgba(102,112,133,.18) transparent; }
::-webkit-scrollbar { width:4px; height:4px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:rgba(102,112,133,.18); border-radius:999px; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Arial,Helvetica,sans-serif; }
a { color:inherit; text-decoration:none; }
svg { display:block; width:1.15rem; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.skip-link { position:fixed; z-index:100; top:1rem; left:1rem; padding:.7rem 1rem; background:white; color:var(--navy); border-radius:.5rem; transform:translateY(-200%); }
.skip-link:focus { transform:translateY(0); }

.site-header { position:sticky; z-index:20; top:0; background:rgba(255,255,255,.95); border-bottom:1px solid rgba(16,37,66,.1); backdrop-filter:blur(14px); }
.header-inner { width:min(1180px,calc(100% - 40px)); min-height:76px; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:2rem; }
.brand { display:inline-flex; flex:none; align-items:center; gap:.75rem; }
.brand-mark { display:grid; place-items:center; width:39px; height:39px; color:white; background:var(--navy); border-radius:12px 12px 12px 4px; font:italic 700 1.45rem Georgia,serif; }
.brand strong,.brand small { display:block; }
.brand strong { font-family:Georgia,'Times New Roman',serif; font-size:1.13rem; line-height:1; letter-spacing:-.02em; }
.brand small { margin-top:.28rem; color:var(--muted); font-size:.66rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
nav { display:flex; height:76px; align-items:stretch; gap:1.4rem; }
nav>a,.nav-group>a { position:relative; display:grid; place-items:center; color:#4f5e70; font-size:.8rem; font-weight:700; white-space:nowrap; }
.nav-context { display:flex; align-items:center; margin-left:.2rem; padding-left:1.25rem; color:var(--navy); border-left:1px solid var(--line); font:600 .78rem/1.25 Georgia,'Times New Roman',serif; white-space:nowrap; }
nav>a::after,.nav-group>a::after { position:absolute; right:0; bottom:0; left:0; height:3px; background:var(--blue); content:''; transform:scaleX(0); transition:transform .2s ease; }
nav>a:hover,nav>a:focus-visible,nav>a.active,.nav-group>a:hover,.nav-group>a:focus-visible { color:var(--navy); }
nav>a:hover::after,nav>a:focus-visible::after,nav>a.active::after,.nav-group:hover>a::after,.nav-group:focus-within>a::after { transform:scaleX(1); }
.nav-group { position:relative; display:flex; align-items:stretch; }
.dropdown { position:absolute; top:66px; left:50%; width:220px; padding:.65rem; background:white; border:1px solid var(--line); border-radius:.75rem; box-shadow:0 18px 50px rgba(17,37,63,.16); opacity:0; pointer-events:none; transform:translate(-50%,-7px); transition:opacity .18s,transform .18s; }
.dropdown.compact { width:230px; }
.dropdown a { display:block; padding:.55rem .7rem; color:#4f5e70; border-radius:.4rem; font-size:.76rem; font-weight:700; }
.dropdown a:hover,.dropdown a:focus-visible { color:var(--navy); background:#edf3f7; outline:none; }
.nav-group:hover .dropdown,.nav-group:focus-within .dropdown { opacity:1; pointer-events:auto; transform:translate(-50%,0); }

.hero { position:relative; isolation:isolate; overflow:hidden; background:var(--navy); color:white; }
.hero::before { position:absolute; inset:0; z-index:-3; background:radial-gradient(circle at 78% 42%,rgba(54,132,194,.26),transparent 31%),linear-gradient(125deg,#102542 12%,#142f51 60%,#0c203a); content:''; }
.hero-grid { position:absolute; z-index:-2; inset:0; opacity:.07; background-image:linear-gradient(rgba(255,255,255,.55) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.55) 1px,transparent 1px); background-size:42px 42px; mask-image:linear-gradient(90deg,transparent 32%,black); }
.hero-orbit { position:absolute; z-index:-1; border:1px solid rgba(119,194,235,.18); border-radius:50%; }
.orbit-one { width:450px; height:450px; right:-170px; top:-120px; }
.orbit-two { width:260px; height:260px; right:10%; bottom:-190px; }
.hero-inner { width:min(1180px,calc(100% - 40px)); min-height:460px; margin:auto; display:flex; align-items:center; padding:62px 0; }
.hero-copy { width:100%; }
.kicker { display:flex; align-items:center; gap:.65rem; margin:0 0 1.25rem; color:#b8d8ed; font-size:.71rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.kicker span { width:24px; height:2px; background:#f0ad4e; }
h1 { max-width:780px; margin:0; font:600 clamp(2.8rem,5vw,4.7rem)/1.02 Georgia,'Times New Roman',serif; letter-spacing:-.042em; }
h1 em { color:#77c2eb; font-weight:400; }
.school-line { margin:1.25rem 0 0; color:#c9d8e4; font-size:clamp(.92rem,1.4vw,1.12rem); font-weight:600; letter-spacing:.015em; }
.identity-card { padding:2rem; background:rgba(8,26,47,.5); border:1px solid rgba(171,214,238,.2); border-radius:1.5rem 1.5rem 1.5rem .5rem; box-shadow:0 30px 70px rgba(0,0,0,.16); backdrop-filter:blur(6px); }
.identity-card p { margin:0 0 .5rem; color:#adc2d1; font-size:.78rem; }
.identity-card h2 { margin:0 0 1.1rem; font:600 2.05rem Georgia,serif; }
.identity-card span { color:#77c2eb; font-size:.68rem; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }

.introduction { width:min(1080px,calc(100% - 40px)); margin:auto; display:grid; grid-template-columns:1.5fr .8fr; gap:5rem; padding:76px 0 20px; }
.section-kicker { margin:0 0 .65rem; color:var(--blue); font-size:.69rem; font-weight:800; letter-spacing:.15em; text-transform:uppercase; }
.intro-copy h2,.section-heading h2 { margin:0; color:var(--navy); font:600 clamp(2rem,3.5vw,2.8rem)/1.1 Georgia,'Times New Roman',serif; letter-spacing:-.035em; }
.intro-copy>p:not(.section-kicker) { max-width:690px; margin:1.1rem 0 0; color:#4f5e70; font-size:.95rem; line-height:1.75; }
.program-link a { display:inline-flex; align-items:center; gap:.35rem; color:var(--blue); font-weight:800; }
.program-link a:hover,.program-link a:focus-visible { text-decoration:underline; }
.program-link svg { display:inline; width:.86rem; }
.useful-links { padding:1.55rem; background:#edf3f7; border-left:3px solid var(--blue); border-radius:0 .9rem .9rem 0; }
.useful-links h3 { margin:0 0 .75rem; color:var(--navy); font:600 1.3rem Georgia,serif; }
.useful-links ul { margin:0; padding:0; list-style:none; }
.useful-links li+li { border-top:1px solid rgba(40,103,168,.12); }
.useful-links a { display:flex; align-items:center; justify-content:space-between; gap:.7rem; padding:.65rem 0; color:#4f5e70; font-size:.79rem; font-weight:700; line-height:1.35; }
.useful-links a:hover,.useful-links a:focus-visible { color:var(--blue); }
.useful-links svg { flex:none; width:.9rem; }

.resources { width:min(1180px,calc(100% - 40px)); margin:auto; padding:70px 0 92px; }
.section-heading { margin-bottom:2.2rem; }
.card-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:.85rem; }
.resource-card { position:relative; min-height:278px; padding:1.45rem; overflow:hidden; background:white; border:1px solid var(--line); border-radius:1rem; box-shadow:0 5px 18px rgba(24,44,69,.035); transition:transform .2s,box-shadow .2s,border-color .2s; }
.resource-card::after { position:absolute; right:-45px; bottom:-45px; width:105px; height:105px; border-radius:50%; background:currentColor; opacity:.04; content:''; }
.resource-card:hover,.resource-card:focus-visible { transform:translateY(-5px); border-color:currentColor; box-shadow:0 18px 40px rgba(24,44,69,.1); outline:none; }
.card-icon { display:grid; place-items:center; width:44px; height:44px; margin-bottom:1.8rem; color:currentColor; background:color-mix(in srgb,currentColor 10%,white); border-radius:.75rem; }
.card-icon svg { width:1.4rem; }
.resource-card h3 { margin:0 0 .7rem; color:var(--navy); font:600 1.25rem Georgia,serif; line-height:1.18; }
.resource-card p { margin:0; color:var(--muted); font-size:.82rem; line-height:1.6; }
.card-link { position:absolute; bottom:1.45rem; left:1.45rem; display:inline-flex; align-items:center; gap:.5rem; color:currentColor; font-size:.76rem; font-weight:800; }
.card-link svg { width:1rem; transition:transform .2s; }
.resource-card:hover .card-link svg { transform:translateX(4px); }
.blue { color:#2f70ae; } .teal { color:#248b81; } .amber { color:#b36a22; } .violet { color:#7359a4; } .rose { color:#a34f6d; }

.page-banner { position:relative; isolation:isolate; overflow:hidden; color:white; background:var(--navy); }
.page-banner::before { position:absolute; z-index:-2; inset:0; background:radial-gradient(circle at 78% 20%,rgba(54,132,194,.24),transparent 30%),linear-gradient(125deg,#102542,#142f51 68%,#0c203a); content:''; }
.page-banner-grid { position:absolute; z-index:-1; inset:0; opacity:.06; background-image:linear-gradient(rgba(255,255,255,.6) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.6) 1px,transparent 1px); background-size:42px 42px; mask-image:linear-gradient(90deg,transparent 25%,black); }
.page-banner-inner { width:min(1180px,calc(100% - 40px)); margin:auto; padding:62px 0 66px; }
.page-banner h1 { font-size:clamp(2.65rem,5vw,4.35rem); }
.page-intro { max-width:650px; margin:1.3rem 0 0; color:#cddbe5; line-height:1.7; }
.page-content { width:min(1080px,calc(100% - 40px)); min-height:260px; margin:auto; padding:64px 0 86px; }
.narrow-content { width:min(850px,calc(100% - 40px)); }
.standfirst { margin:0; color:#4f5e70; font-size:1.03rem; line-height:1.8; }
.empty-space { min-height:340px; }
.calendar-wrap { width:min(1180px,calc(100% - 40px)); }
.calendar-frame { display:block; width:100%; height:650px; border:1px solid var(--line); border-radius:1rem; background:white; box-shadow:0 12px 38px rgba(24,44,69,.08); }

.choice-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; }
.choice-card { min-height:250px; padding:2rem; background:white; border:1px solid var(--line); border-radius:1rem; transition:transform .2s,box-shadow .2s,border-color .2s; }
.choice-card:hover,.choice-card:focus-visible { transform:translateY(-4px); border-color:currentColor; box-shadow:0 18px 40px rgba(24,44,69,.1); outline:none; }
.choice-label,.document-number,.lesson-type { color:currentColor; font-size:.67rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.choice-card h2 { margin:3.3rem 0 .75rem; color:var(--navy); font:600 1.75rem Georgia,serif; }
.choice-card p { margin:0; color:var(--muted); font-size:.88rem; }

.document-list { display:grid; gap:1rem; }
.formation-intro { margin-bottom:1.5rem; }
.document-block { display:flex; align-items:center; justify-content:space-between; gap:2rem; padding:1.7rem 1.8rem; background:white; border:1px solid var(--line); border-radius:1rem; }
.document-block h2,.document-block h3 { margin:.45rem 0 0; color:var(--navy); font:600 1.35rem/1.3 Georgia,serif; }
.document-number { color:var(--blue); }
.document-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:.55rem; }
.document-link { display:inline-flex; align-items:center; gap:.55rem; min-height:40px; padding:.55rem .75rem; color:var(--navy); background:#f3f6f8; border:1px solid #dce5eb; border-radius:.55rem; font-size:.75rem; font-weight:800; line-height:1.25; }
.document-link span { padding:.19rem .28rem; color:white; background:var(--blue); border-radius:.25rem; font-size:.55rem; letter-spacing:.05em; }
.document-link:hover,.document-link:focus-visible { color:var(--blue); background:white; border-color:var(--blue); outline:none; }
.document-link.unavailable,.document-link.unavailable:hover { color:#8b96a4; background:#f1f2f3; border-color:#e1e4e7; cursor:not-allowed; opacity:.78; }
.document-link.unavailable span { background:#aab1ba; }
.document-link[aria-disabled="true"],.document-link[aria-disabled="true"]:hover { color:#8b96a4; background:#f1f2f3; border-color:#e1e4e7; cursor:not-allowed; opacity:.78; pointer-events:none; }
.document-link[aria-disabled="true"]>span { color:white; background:#aab1ba; }

.teaching-content { width:min(1180px,calc(100% - 40px)); }
.section-nav { display:flex; flex-wrap:wrap; height:auto; gap:.45rem; margin-bottom:4rem; }
.section-nav a { display:block; padding:.55rem .75rem; color:#4f5e70; background:white; border:1px solid var(--line); border-radius:2rem; font-size:.72rem; font-weight:800; }
.section-nav a::after { display:none; }
.section-nav a:hover,.section-nav a:focus-visible { color:var(--blue); border-color:var(--blue); outline:none; }
.teaching-section { scroll-margin-top:100px; margin-bottom:4.5rem; }
.teaching-heading { display:flex; align-items:center; gap:1rem; margin-bottom:1.3rem; }
.teaching-heading>span { display:grid; place-items:center; width:38px; height:38px; flex:none; color:var(--blue); background:#eaf2f7; border-radius:.65rem; font-size:.68rem; font-weight:800; }
.teaching-heading h2 { margin:0; color:var(--navy); font:600 clamp(1.65rem,3vw,2.3rem) Georgia,serif; }
.lesson-card { display:grid; grid-template-columns:minmax(240px,1fr) 1.35fr; align-items:center; gap:2rem; padding:1.35rem 1.5rem; background:white; border:1px solid var(--line); }
.lesson-card+.lesson-card { border-top:0; }
.lesson-card:first-of-type { border-radius:.9rem .9rem 0 0; }
.lesson-card:last-child { border-radius:0 0 .9rem .9rem; }
.lesson-card:only-of-type { border-radius:.9rem; }
.lesson-type { margin:0 0 .42rem; color:var(--blue); }
.lesson-card h3 { margin:0; color:var(--navy); font:600 1.08rem/1.35 Georgia,serif; }
.vertical-actions { align-items:flex-end; flex-direction:column; }
.chapter-list { display:grid; width:100%; gap:.55rem; }
.chapter-row { display:grid; grid-template-columns:48px minmax(0,1fr) auto; align-items:center; gap:.85rem; min-height:52px; padding:.45rem .5rem .45rem .65rem; background:#f6f8fa; border:1px solid #e3e9ee; border-radius:.65rem; }
.chapter-row.no-code { grid-template-columns:minmax(0,1fr) auto; }
.chapter-code { display:grid; place-items:center; width:42px; min-height:28px; color:var(--blue); background:#e6f0f6; border-radius:.4rem; font-size:.65rem; font-weight:900; letter-spacing:.06em; }
.chapter-title { min-width:0; color:var(--navy); font:600 .94rem/1.35 Georgia,'Times New Roman',serif; overflow-wrap:anywhere; }
.chapter-row .document-link { flex:none; white-space:nowrap; }
.future-anchors span { display:block; scroll-margin-top:100px; }
.assignments-page { display:grid; gap:4.5rem; }
.assignment-nav { margin-bottom:-1.5rem; }
.assignment-section { scroll-margin-top:100px; }
.assignment-heading { margin-bottom:1.4rem; }
.assignment-heading h2 { margin:0; color:var(--navy); font:600 clamp(1.65rem,3vw,2.3rem) Georgia,serif; }
.assignment-card { display:grid; grid-template-columns:76px minmax(220px,1fr) auto; align-items:center; gap:1.35rem; padding:1.35rem 1.5rem; background:white; border:1px solid var(--line); border-radius:1rem; box-shadow:0 8px 24px rgba(24,44,69,.04); }
.assignment-badge { display:grid; place-items:center; align-content:center; width:68px; height:68px; color:white; background:var(--navy); border-radius:1rem 1rem 1rem .35rem; }
.assignment-badge span { font-size:.61rem; font-weight:900; letter-spacing:.15em; }
.assignment-badge strong { margin-top:-.15rem; font:600 1.85rem/1 Georgia,serif; }
.assignment-details h3 { margin:.3rem 0 0; color:var(--navy); font:600 1.45rem/1.25 Georgia,serif; }
.due-date { margin:0; color:var(--blue); font-size:.69rem; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.empty-section { min-height:120px; border-top:1px solid var(--line); }

.colles-content { width:min(1180px,calc(100% - 40px)); }
.colle-nav { margin-bottom:3rem; }
.current-colle { scroll-margin-top:100px; position:relative; overflow:hidden; padding:2.4rem 2.5rem; color:white; background:linear-gradient(125deg,#102542 0%,#16385e 72%,#1f5687 100%); border-radius:1.35rem 1.35rem 1.35rem .45rem; box-shadow:0 24px 60px rgba(16,37,66,.16); }
.current-colle::after { position:absolute; right:-110px; bottom:-170px; width:360px; height:360px; border:1px solid rgba(119,194,235,.18); border-radius:50%; content:""; }
.colle-status { position:relative; z-index:1; display:flex; align-items:center; gap:.65rem; margin:0 0 1.5rem; color:#b8d8ed; font-size:.69rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.colle-status span { width:24px; height:2px; background:#f0ad4e; }
.current-colle h2 { position:relative; z-index:1; max-width:680px; margin:0; font:600 clamp(1.45rem,2.5vw,2rem)/1.15 Georgia,'Times New Roman',serif; letter-spacing:-.02em; }
.previous-colle,.colle-archives { scroll-margin-top:100px; margin-top:4rem; }
.colle-section-heading { margin-bottom:1.35rem; }
.colle-section-heading h2 { margin:0; color:var(--navy); font:600 clamp(1.35rem,2.2vw,1.75rem)/1.18 Georgia,'Times New Roman',serif; letter-spacing:-.02em; }
.empty-colle-row { padding:1rem .25rem; color:var(--muted); border-top:1px solid var(--line); font-size:.8rem; line-height:1.55; }
.colles-empty-state { max-width:780px; margin:0 auto; padding:2rem 2.2rem; background:white; border:1px solid var(--line); border-left:3px solid var(--blue); border-radius:0 1rem 1rem 0; box-shadow:0 10px 30px rgba(24,44,69,.045); }
.colles-empty-state h2 { margin:0; color:var(--navy); font:600 clamp(1.45rem,2.8vw,2rem)/1.2 Georgia,'Times New Roman',serif; letter-spacing:-.02em; }
.colles-empty-state>p:last-child { max-width:650px; margin:1rem 0 0; color:var(--muted); font-size:.86rem; line-height:1.65; }

footer { color:#b7c4d0; background:#0c1d33; }
.footer-inner { width:min(1180px,calc(100% - 40px)); min-height:150px; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:3rem; }
.footer-inner p { max-width:640px; margin:.5rem 0 0; font-size:.76rem; line-height:1.6; }
.contact-link { color:white; font:600 1.05rem Georgia,serif; }

@media (max-width:1020px) {
  .header-inner { width:calc(100% - 24px); gap:1rem; }
  nav { gap:.55rem; } nav>a,.nav-group>a { font-size:.68rem; }
  .nav-context { padding-left:.65rem; font-size:.66rem; }
  .hero-inner { grid-template-columns:1fr .7fr; gap:2.5rem; }
  .card-grid { grid-template-columns:repeat(3,1fr); }
}
@media (max-width:760px) {
  .site-header { position:relative; }
  .header-inner { width:100%; display:block; padding-top:14px; }
  .brand { margin-left:18px; }
  .site-header nav { width:100%; height:auto; margin-top:12px; padding:0 18px; gap:1.25rem; overflow-x:auto; border-top:1px solid var(--line); scrollbar-width:none; }
  .site-header nav::-webkit-scrollbar { display:none; }
  .site-header nav>a,.site-header .nav-group>a { min-height:48px; }
  .nav-context { min-height:48px; flex:none; }
  .nav-group { flex:none; }
  .dropdown { display:none; }
  .hero-inner { width:min(100% - 32px,1180px); min-height:auto; grid-template-columns:1fr; gap:2.5rem; padding:52px 0; }
  h1 { font-size:clamp(2.55rem,12vw,4rem); }
  .identity-card { padding:1.4rem; }
  .introduction { width:min(100% - 32px,1080px); grid-template-columns:1fr; gap:2.2rem; padding-top:55px; }
  .resources { width:min(100% - 32px,1180px); padding:60px 0 70px; }
  .card-grid { grid-template-columns:1fr; }
  .resource-card { min-height:230px; }
  .page-banner-inner,.page-content,.calendar-wrap,.teaching-content { width:min(100% - 32px,1180px); }
  .page-banner-inner { padding:48px 0 52px; }
  .choice-grid { grid-template-columns:1fr; }
  .document-block,.lesson-card { display:block; }
  .assignment-card { grid-template-columns:68px 1fr; }
  .assignment-card .document-actions { grid-column:1 / -1; margin-top:.3rem; }
  .document-actions { justify-content:flex-start; margin-top:1.2rem; }
  .vertical-actions { align-items:stretch; }
  .chapter-list { margin-top:1.2rem; }
  .chapter-row { grid-template-columns:42px minmax(0,1fr); }
  .chapter-row.no-code { grid-template-columns:minmax(0,1fr); }
  .chapter-row .document-link { grid-column:2; width:max-content; }
  .chapter-row.no-code .document-link { grid-column:1; }
  .colles-content { width:min(100% - 32px,1180px); }
  .current-colle { padding:1.65rem; }
  .colles-empty-state { padding:1.5rem 1.35rem; }
  .calendar-frame { height:600px; border-radius:.65rem; }
  .footer-inner { width:min(100% - 32px,1180px); display:block; padding:38px 0; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; } }
