:root{--wine:#e7277d;--wine-dark:#562063;--mint:#a8db36;--mint-light:#f3fbdc;--gold:#ffc928;--blue:#149ee4;--red:#f6323e;--orange:#ff7a19;--green:#22bd58;--cream:#fffdf7;--ink:#282338;--muted:#6b6476;--white:#fff;--shadow:0 18px 50px rgba(74,40,104,.15)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:"DM Sans",sans-serif;font-size:16px;line-height:1.6}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}.topbar{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,76px);background:rgba(255,250,243,.94);border-bottom:1px solid rgba(113,27,60,.1);position:sticky;top:0;z-index:20;backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:48px;height:48px;border-radius:50%;background:var(--wine);color:var(--mint);display:grid;place-items:center;font:700 15px "Playfair Display",serif;border:3px solid var(--mint)}.brand strong,.brand small{display:block}.brand strong{font-family:"Playfair Display",serif;color:var(--wine);font-size:18px}.brand small{font-size:11px;letter-spacing:.04em;color:var(--muted)}.top-download,.primary-button,.download-all{display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:999px;font-weight:700;transition:.2s ease}.top-download{padding:12px 20px;background:var(--wine);color:#fff}.top-download:hover,.primary-button:hover,.download-all:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(78,16,40,.2)}main{overflow:hidden}.hero{min-height:680px;padding:70px clamp(24px,7vw,104px);display:grid;grid-template-columns:minmax(300px,.9fr) minmax(420px,1.1fr);align-items:center;gap:8vw;background:radial-gradient(circle at 80% 15%,#d9f3e5 0,transparent 33%),linear-gradient(140deg,var(--cream),#fff 60%);position:relative}.hero:before{content:"";position:absolute;width:230px;height:230px;border:1px solid rgba(113,27,60,.12);border-radius:50%;left:-110px;bottom:-100px}.eyebrow{margin:0 0 10px;color:var(--wine);font-size:13px;font-weight:800;letter-spacing:.17em;text-transform:uppercase}.hero h1,.section-heading h2,.download-panel h2{font-family:"Playfair Display",serif}.hero h1{font-size:clamp(58px,7vw,104px);line-height:.9;letter-spacing:-.04em;color:var(--wine);margin:12px 0}.hero h1 em{font-weight:600;color:var(--ink)}.year{font-weight:800;letter-spacing:.26em;color:var(--wine);margin:22px 0}.intro{max-width:560px;font-size:18px;color:var(--muted);margin-bottom:30px}.primary-button{background:var(--mint);color:var(--wine-dark);padding:15px 24px}.hero-photos{min-height:540px;position:relative}.portrait{margin:0;position:absolute;background:#fff;padding:10px;border-radius:24px;box-shadow:var(--shadow);overflow:hidden}.portrait img{width:100%;height:100%;object-fit:cover;border-radius:16px}.portrait-one{width:57%;height:72%;right:3%;top:3%;transform:rotate(3deg)}.portrait-two{width:52%;height:66%;left:1%;bottom:1%;transform:rotate(-5deg)}.new-term-seal{position:absolute;right:0;bottom:2%;width:150px;height:150px;border-radius:50%;background:var(--gold);color:var(--wine-dark);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;box-shadow:0 12px 35px rgba(78,16,40,.16);transform:rotate(7deg);border:7px solid var(--cream)}.new-term-seal span{font-size:10px;font-weight:800;letter-spacing:.16em}.new-term-seal strong{font:700 23px/1.02 "Playfair Display",serif}.album{padding:90px clamp(18px,5vw,72px);background:#fff}.section-heading{max-width:1380px;margin:0 auto 32px;display:flex;align-items:end;justify-content:space-between;gap:20px}.section-heading h2,.download-panel h2{font-size:clamp(34px,4vw,54px);line-height:1.08;color:var(--wine);margin:0}.section-heading>p{color:var(--muted);white-space:nowrap}.gallery{max-width:1380px;margin:auto;columns:4 250px;column-gap:18px}.photo-card{break-inside:avoid;margin:0 0 18px;position:relative;border-radius:18px;overflow:hidden;background:var(--mint-light);box-shadow:0 5px 20px rgba(78,16,40,.08)}.photo-card img{width:100%;height:auto;cursor:zoom-in;transition:transform .35s ease}.photo-card:hover img{transform:scale(1.025)}.photo-actions{position:absolute;right:10px;bottom:10px;display:flex;gap:8px;opacity:0;transform:translateY(5px);transition:.2s}.photo-card:hover .photo-actions,.photo-card:focus-within .photo-actions{opacity:1;transform:none}.icon-button{width:42px;height:42px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.94);color:var(--wine);font-size:20px;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.15)}.download-panel{margin:80px auto 40px;padding:48px 54px;max-width:1240px;background:var(--wine);color:#fff;border-radius:34px;display:flex;align-items:center;justify-content:space-between;gap:40px;box-shadow:var(--shadow)}.download-panel .eyebrow{color:var(--mint)}.download-panel h2{color:#fff;margin-bottom:8px}.download-panel p{margin:0;color:#f1dfe6}.download-all{padding:17px 24px;background:var(--mint);color:var(--wine-dark);white-space:nowrap}.privacy-note{max-width:880px;margin:0 auto 80px;padding:18px 24px;border:1px solid rgba(113,27,60,.13);border-radius:18px;display:flex;align-items:flex-start;gap:12px;color:var(--muted);background:#fff}.privacy-note span{color:var(--wine);font-size:24px}.privacy-note p{margin:0;font-size:14px}footer{padding:42px clamp(24px,6vw,90px);background:var(--wine-dark);color:#fff;display:flex;align-items:center;gap:26px}footer strong{font-family:"Playfair Display",serif;font-size:20px}footer span{color:var(--mint);font-size:14px}footer small{margin-left:auto;color:#d6bdc6}dialog{width:min(94vw,1000px);height:min(92vh,900px);padding:0;border:0;border-radius:24px;background:transparent;overflow:visible}dialog::backdrop{background:rgba(35,12,22,.9);backdrop-filter:blur(8px)}.lightbox-body{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.lightbox-body img{max-height:calc(100% - 64px);max-width:100%;object-fit:contain;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.4)}.lightbox-body a{background:#fff;color:var(--wine);padding:12px 20px;border-radius:999px;font-weight:700}.close,.nav{position:fixed;border:0;background:rgba(255,255,255,.95);color:var(--wine);border-radius:50%;cursor:pointer;z-index:2}.close{top:18px;right:18px;width:46px;height:46px;font-size:30px}.nav{top:50%;width:52px;height:52px;font-size:36px}.prev{left:18px}.next{right:18px}
@media(max-width:840px){.topbar{height:74px;padding:0 18px}.brand-mark{width:42px;height:42px}.brand strong{font-size:16px}.brand small{display:none}.top-download{padding:10px 14px;font-size:14px}.hero{min-height:auto;grid-template-columns:1fr;padding:55px 22px 70px;gap:38px}.hero h1{font-size:clamp(54px,17vw,78px)}.intro{font-size:16px}.hero-photos{min-height:440px}.album{padding:68px 14px}.section-heading{align-items:flex-start;flex-direction:column;padding:0 6px}.gallery{columns:2 145px;column-gap:10px}.photo-card{margin-bottom:10px;border-radius:13px}.photo-actions{opacity:1;transform:none}.icon-button{width:38px;height:38px}.download-panel{margin:50px 16px 30px;padding:34px 24px;border-radius:26px;display:block}.download-all{margin-top:25px;width:100%}.privacy-note{margin:0 16px 55px}footer{display:block;text-align:center}footer>*{display:block;margin:7px 0!important}.nav{width:44px;height:44px}.prev{left:8px}.next{right:8px}}
.director-welcome{max-width:1240px;margin:90px auto;padding:68px clamp(34px,6vw,82px);display:grid;grid-template-columns:minmax(280px,.85fr) minmax(360px,1.15fr);gap:clamp(38px,7vw,90px);position:relative;background:var(--mint-light);border-radius:38px;box-shadow:var(--shadow);overflow:hidden}.welcome-ornament{position:absolute;right:30px;top:-78px;color:rgba(113,27,60,.07);font:700 270px/1 "Playfair Display",serif}.welcome-heading{align-self:start;position:relative}.welcome-heading h2{margin:10px 0 24px;color:var(--wine);font:700 clamp(40px,5vw,64px)/1.02 "Playfair Display",serif}.welcome-heading h2 em{color:var(--ink);font-weight:600}.welcome-date{display:inline-block;margin:0;padding:8px 14px;border-radius:999px;background:#fff;color:var(--wine);font-size:13px;font-weight:700;letter-spacing:.06em}.welcome-copy{position:relative;color:#55494f;font-size:17px}.welcome-copy p:first-child{margin-top:0}.welcome-copy p{margin:0 0 20px}.welcome-lines{padding:19px 22px;border-left:4px solid var(--gold);background:rgba(255,255,255,.72);border-radius:0 16px 16px 0;color:var(--wine-dark)}.director-signature{margin-top:30px;display:flex;flex-direction:column}.director-signature strong{color:var(--wine);font:700 24px "Playfair Display",serif}.director-signature span{color:var(--muted);font-size:14px;letter-spacing:.08em;text-transform:uppercase}
@media(max-width:840px){.director-welcome{margin:55px 16px;padding:44px 24px;grid-template-columns:1fr;gap:28px;border-radius:28px}.welcome-heading h2{font-size:42px}.welcome-copy{font-size:16px}.welcome-ornament{font-size:180px;right:8px;top:-45px}}
.hero .hero-title{font-size:clamp(42px,5.2vw,76px);line-height:.98}.hero .hero-title em{display:block;margin-top:8px;font-size:.72em;line-height:1.08}.hero .hero-title span{display:block;margin-top:13px;color:var(--wine);font-family:"DM Sans",sans-serif;font-size:.28em;font-style:normal;font-weight:800;letter-spacing:.06em;line-height:1.3;text-transform:uppercase}.cover-photo{height:560px;margin:0;padding:11px;background:#fff;border-radius:28px;box-shadow:var(--shadow);transform:rotate(1.4deg);overflow:hidden}.cover-photo img{width:100%;height:100%;object-fit:cover;object-position:center;border-radius:19px}
@media(max-width:840px){.hero .hero-title{font-size:clamp(39px,11vw,58px)}.hero .hero-title em{font-size:.66em}.hero .hero-title span{font-size:.3em}.cover-photo{height:min(124vw,560px);transform:none;border-radius:22px}.cover-photo img{border-radius:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Joyful school palette inspired by the supplied back-to-school artwork */
.topbar{height:108px;padding:8px clamp(20px,5vw,76px);background:rgba(255,255,255,.96);border-bottom:0;box-shadow:0 5px 22px rgba(52,43,72,.08)}
.topbar:after{content:"";position:absolute;left:0;right:0;bottom:0;height:6px;background:linear-gradient(90deg,var(--red) 0 16.66%,var(--gold) 16.66% 33.32%,var(--green) 33.32% 49.98%,var(--blue) 49.98% 66.64%,var(--wine) 66.64% 83.3%,var(--orange) 83.3%)}
.brand{display:flex;align-items:center}
.school-logo{width:auto;height:88px;object-fit:contain}
.hero{background:radial-gradient(circle at 9% 17%,rgba(255,201,40,.27),transparent 24%),radial-gradient(circle at 91% 10%,rgba(20,158,228,.2),transparent 30%),radial-gradient(circle at 81% 87%,rgba(168,219,54,.2),transparent 24%),linear-gradient(140deg,#fffdf7,#fff 58%);isolation:isolate}
.hero:before{width:250px;height:250px;left:-125px;bottom:-120px;border:22px solid rgba(231,39,125,.11);box-shadow:0 0 0 20px rgba(255,201,40,.1),0 0 0 40px rgba(20,158,228,.08)}
.hero:after{content:"";position:absolute;z-index:-1;right:3%;top:8%;width:76px;height:22px;border-radius:99px;background:var(--orange);transform:rotate(-18deg);box-shadow:-110px 24px 0 var(--green),-48px -38px 0 var(--gold),48px 68px 0 var(--red)}
.eyebrow{color:#b91061}
.hero .hero-title{color:var(--red)}
.hero .hero-title em{color:var(--blue)}
.hero .hero-title span{color:#168d43}
.primary-button{background:var(--blue);color:#fff;box-shadow:0 9px 0 #0879b5}
.primary-button:hover{box-shadow:0 11px 0 #0879b5,0 14px 24px rgba(20,158,228,.22)}
.cover-photo{border:4px solid var(--gold);box-shadow:18px 18px 0 rgba(20,158,228,.18),var(--shadow)}
.director-welcome{background:linear-gradient(135deg,#fff9d9,#f5fce6 58%,#e9f7ff);border:3px solid rgba(255,201,40,.75);box-shadow:0 18px 0 rgba(231,39,125,.09),var(--shadow)}
.welcome-ornament{color:rgba(20,158,228,.09)}
.welcome-heading h2{color:var(--wine-dark)}
.welcome-heading h2 em{color:var(--wine)}
.welcome-date{background:var(--gold);color:#4b3210}
.welcome-lines{border-left-color:var(--blue);background:rgba(255,255,255,.82);color:var(--wine-dark)}
.director-signature strong{color:var(--wine)}
.album{background:linear-gradient(#fff,#fffdf5)}
.section-heading h2{color:var(--wine-dark)}
.photo-card{border:3px solid var(--gold);background:#fff;box-shadow:0 7px 22px rgba(58,43,86,.1)}
.photo-card:nth-child(5n+2){border-color:var(--blue)}
.photo-card:nth-child(5n+3){border-color:var(--green)}
.photo-card:nth-child(5n+4){border-color:var(--wine)}
.photo-card:nth-child(5n+5){border-color:var(--orange)}
.icon-button{color:var(--wine-dark);border:2px solid var(--gold)}
.privacy-note{border:2px solid rgba(20,158,228,.28);background:#f5fbff}
.privacy-note span{color:var(--wine)}
footer{background:var(--wine-dark);border-top:8px solid transparent;border-image:linear-gradient(90deg,var(--red),var(--gold),var(--green),var(--blue),var(--wine),var(--orange)) 1}
footer span{color:#dff59f}
.lightbox-body a{color:var(--wine-dark);border:3px solid var(--gold)}
.close,.nav{color:var(--wine-dark);border:3px solid var(--gold)}
@media(max-width:840px){.topbar{height:84px;padding:4px 16px}.school-logo{height:70px}.hero:after{right:-18px;top:5%;transform:scale(.72) rotate(-18deg)}.cover-photo{box-shadow:10px 10px 0 rgba(20,158,228,.17),var(--shadow)}.photo-card{border-width:2px}}
