:root{--purple: #582c83;--purple-deep: #3a1d57;--purple-light: #7544a0;--green: #8cab4f;--green-light: #a8c470;--gold: #d4af37;--gold-light: #f2d06b;--white: #fafaf8;--cream: #f5f0e8;--font-display: "Playfair Display", "Cormorant Garamond", Georgia, serif;--font-body: "Montserrat", system-ui, sans-serif;--font-accent: "Cormorant Garamond", Georgia, serif}*,*:before,*:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden;background:var(--purple-deep);color:var(--white);font-family:var(--font-body)}html:fullscreen,html:-webkit-full-screen{width:100%;height:100%;overflow:hidden;background:var(--purple-deep)}html:fullscreen body,html:-webkit-full-screen body,html:fullscreen #root,html:-webkit-full-screen #root{width:100%;height:100%}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}.slideshow,.empty-state{position:relative;width:100%;height:100%;overflow:hidden}.wave-background{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.slide-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center}.slide-layer--photo{z-index:2;isolation:isolate;backface-visibility:hidden;transform:translateZ(0)}.top-bar{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;gap:.75rem;padding:1.25rem 1.75rem;background:linear-gradient(to bottom,rgba(58,29,87,.75),transparent);font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;opacity:.85}.top-logo{width:36px;height:36px;border-radius:50%;box-shadow:0 0 20px #d4af3759}.presentation-header{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:1.25rem 2rem 2.5rem;pointer-events:none;background:linear-gradient(to bottom,rgba(18,10,31,.88) 0%,rgba(58,29,87,.35) 50%,transparent 100%)}.presentation-header-inner{display:flex;align-items:center;gap:1rem;padding:.55rem 1.4rem;border:1px solid rgba(212,175,55,.22);border-radius:999px;background:#1a0f2e73;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 32px #00000040,inset 0 1px #ffffff0f}.presentation-header-logo{width:32px;height:32px;border-radius:50%;filter:drop-shadow(0 2px 8px rgba(0,0,0,.4))}.presentation-header-divider{width:1px;height:18px;background:linear-gradient(to bottom,transparent,rgba(212,175,55,.6),transparent)}.presentation-header-title{font-family:var(--font-body);font-size:.72rem;font-weight:300;letter-spacing:.42em;text-transform:uppercase;color:var(--gold-light);text-shadow:0 1px 8px rgba(0,0,0,.4)}.slideshow--immersive .presentation-header{background:linear-gradient(to bottom,rgba(18,10,31,.92) 0%,rgba(58,29,87,.4) 45%,transparent 100%)}.slideshow--immersive .presentation-header-inner{border-color:#d4af3747;background:#120a1f8c}.global-progress{position:absolute;bottom:0;left:0;right:0;z-index:10;height:3px;background:#ffffff14}.global-progress-fill{height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-light));transition:width .1s linear;box-shadow:0 0 12px #d4af3799}.controls{position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%);z-index:10;display:flex;flex-direction:column;align-items:center;gap:.5rem;opacity:0;transition:opacity .3s ease}.slideshow:hover .controls,.controls:focus-within{opacity:1}.controls-inner{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-radius:999px;background:#3a1d57b8;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(212,175,55,.25)}.controls-inner button{width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;font-size:1rem;transition:background .2s ease,transform .2s ease}.controls-inner button:hover{background:#d4af3733;transform:scale(1.05)}.controls-counter{font-size:.8rem;opacity:.8;min-width:4rem;text-align:center}.controls-hint{font-size:.7rem;opacity:.55;font-style:italic}.controls-music{font-size:.75rem;color:var(--gold-light);max-width:10rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.controls-timing{font-size:.7rem;opacity:.6}.controls-help{font-size:.65rem;letter-spacing:.06em;text-transform:uppercase;opacity:.45}.presentation-controls-zone{position:absolute;bottom:0;left:0;right:0;height:5rem;z-index:29}.presentation-controls-bar{position:absolute;bottom:0;left:0;right:0;z-index:30;padding:.85rem 1.5rem 1.35rem;background:linear-gradient(to top,rgba(10,6,18,.92) 0%,rgba(10,6,18,.72) 55%,transparent 100%);transform:translateY(110%);opacity:0;visibility:hidden;pointer-events:none;transition:transform .4s cubic-bezier(.16,1,.3,1),opacity .35s ease,visibility .35s ease}.presentation-controls-bar--shown{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}.presentation-controls-bar-inner{display:flex;flex-direction:column;gap:.85rem;max-width:960px;margin:0 auto}.presentation-controls-scrubber{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.85rem}.presentation-controls-time{font-family:var(--font-body);font-size:.72rem;font-weight:400;letter-spacing:.08em;font-variant-numeric:tabular-nums;color:#fafaf8d1;min-width:3.1rem}.presentation-controls-time:last-child{text-align:right}.presentation-controls-range{width:100%;height:.35rem;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:999px;background:#fafaf829;cursor:pointer}.presentation-controls-range::-webkit-slider-runnable-track{height:.35rem;border-radius:999px;background:linear-gradient(to right,var(--gold) 0%,var(--gold) var(--scrub-progress, 0%),rgba(250,250,248,.16) var(--scrub-progress, 0%),rgba(250,250,248,.16) 100%)}.presentation-controls-range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1rem;height:1rem;margin-top:-.325rem;border-radius:50%;border:2px solid rgba(18,10,31,.85);background:var(--gold-light);box-shadow:0 0 0 4px #d4af372e}.presentation-controls-range::-moz-range-track{height:.35rem;border-radius:999px;background:#fafaf829}.presentation-controls-range::-moz-range-progress{height:.35rem;border-radius:999px;background:var(--gold)}.presentation-controls-range::-moz-range-thumb{width:1rem;height:1rem;border-radius:50%;border:2px solid rgba(18,10,31,.85);background:var(--gold-light);box-shadow:0 0 0 4px #d4af372e}.presentation-controls-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}.presentation-controls-status{font-family:var(--font-body);font-size:.72rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:#fafaf8b8;justify-self:start}.presentation-controls-hint{font-family:var(--font-body);font-size:.62rem;font-weight:300;letter-spacing:.12em;text-transform:uppercase;color:#fafaf861;justify-self:end;text-align:right}.presentation-controls-cluster{display:flex;align-items:center;justify-content:center;gap:.65rem;padding:.45rem .75rem;border-radius:999px;background:#120a1fc7;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(212,175,55,.28);box-shadow:0 12px 40px #00000059}.presentation-controls-action{display:flex;flex-direction:column;align-items:center;gap:.2rem;min-width:3.25rem;padding:.35rem .5rem;border-radius:12px;color:var(--white);transition:background .2s ease,transform .2s ease,color .2s ease}.presentation-controls-action:hover{background:#d4af3729;transform:translateY(-1px)}.presentation-controls-action--primary{min-width:3.75rem;padding:.4rem .65rem;background:#582c838c;border:1px solid rgba(212,175,55,.32)}.presentation-controls-action--primary:hover{background:#d4af3738}.presentation-controls-icon{font-size:1rem;line-height:1}.presentation-controls-icon--large{font-size:1.15rem}.presentation-controls-label{font-family:var(--font-body);font-size:.58rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:#fafaf8b8}.presentation-controls-action--primary .presentation-controls-label{color:var(--gold-light)}@media(max-width:640px){.presentation-controls-hint{display:none}.presentation-controls-row{grid-template-columns:1fr;justify-items:center}.presentation-controls-status{justify-self:center}}.intro-sequence,.chapter-title,.outro-sequence{position:relative;text-align:center;padding:2rem;max-width:960px}.intro-rays,.play-rays{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;background:conic-gradient(from 210deg at 50% 50%,transparent 0deg,rgba(212,175,55,.04) 30deg,transparent 60deg,rgba(140,171,79,.03) 120deg,transparent 180deg,rgba(212,175,55,.04) 240deg,transparent 300deg);animation:ray-drift 20s linear infinite;pointer-events:none}@keyframes ray-drift{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.intro-ring{position:absolute;width:min(440px,72vw);height:min(440px,72vw);border-radius:50%;border:1px solid rgba(212,175,55,.45);box-shadow:0 0 0 1px #d4af371a,0 0 100px #d4af371f,inset 0 0 80px #582c834d;pointer-events:none}.intro-ring-outer{width:min(520px,82vw);height:min(520px,82vw);border-color:#8cab4f33;box-shadow:0 0 120px #582c8333}.intro-ornament{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:2rem}.intro-line{width:min(100px,15vw);height:1px;background:linear-gradient(90deg,transparent,rgba(212,175,55,.7),transparent);transform-origin:center}.intro-logo,.outro-logo{width:min(180px,30vw);height:auto;filter:drop-shadow(0 16px 48px rgba(0,0,0,.5)) drop-shadow(0 0 30px rgba(212,175,55,.2))}.intro-title{position:relative;z-index:1;font-family:var(--font-display);font-size:clamp(2.8rem,7vw,5rem);font-weight:600;margin:0 0 1rem;letter-spacing:.18em;text-transform:uppercase;background:linear-gradient(135deg,#fff 0%,var(--gold-light) 45%,var(--gold) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 4px 24px rgba(212,175,55,.25))}.intro-subtitle{position:relative;z-index:1;font-family:var(--font-accent);font-size:clamp(1.1rem,2.2vw,1.45rem);font-weight:400;font-style:italic;opacity:.9;margin:0 0 1.75rem;line-height:1.65;letter-spacing:.02em}.intro-year{position:relative;z-index:1;font-family:var(--font-body);font-size:clamp(.75rem,1.5vw,.85rem);font-weight:300;color:var(--gold);letter-spacing:.45em;text-transform:uppercase;margin:0}.intro-progress-track,.chapter-progress,.outro-progress{width:min(280px,60vw);height:2px;margin:2.5rem auto 0;background:#ffffff26;overflow:hidden;border-radius:2px}.intro-progress-fill,.chapter-progress div,.outro-progress div{width:100%;height:100%;background:var(--gold);transform-origin:left center;box-shadow:0 0 8px #d4af37cc}.chapter-veil{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--purple-deep);z-index:2;pointer-events:none}.chapter-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--font-display);font-size:clamp(8rem,25vw,18rem);font-weight:700;color:#d4af3714;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0}.chapter-line{position:relative;z-index:1;width:min(160px,35vw);height:1px;margin:0 auto 2.5rem;background:linear-gradient(90deg,transparent,var(--gold),transparent);transform-origin:center}.chapter-title h2{position:relative;z-index:1;font-family:var(--font-display);font-size:clamp(3.2rem,9vw,6.5rem);font-weight:600;margin:0 0 .75rem;letter-spacing:.04em;background:linear-gradient(180deg,#fff 20%,var(--gold-light) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 30px rgba(0,0,0,.35))}.chapter-title p{position:relative;z-index:1;font-family:var(--font-accent);font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:400;font-style:italic;color:#f2d06be6;margin:0;letter-spacing:.04em}.photo-slide{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:0}.slideshow--immersive .photo-frame{width:100vw;height:100vh;max-width:none;border-radius:0;box-shadow:none;background:#0a0612}.photo-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden}.photo-backdrop-gradient{position:absolute;top:0;right:0;bottom:0;left:0}.photo-backdrop-glow{position:absolute;width:55%;height:55%;filter:blur(40px);opacity:.9}.photo-backdrop-glow--left{top:-10%;left:-10%}.photo-backdrop-glow--right{bottom:-10%;right:-10%}.collage-frame{display:flex;align-items:center;justify-content:center}.collage-grid{position:relative;z-index:1;width:calc(100% - 4rem);height:calc(100% - 5rem);display:grid;gap:10px;padding:.5rem}.collage-grid--duo{grid-template-columns:1fr 1fr;grid-template-rows:1fr}.collage-grid--trio{grid-template-columns:1.2fr .8fr;grid-template-rows:1fr 1fr}.collage-grid--trio .collage-cell--1{grid-row:1 / span 2}.collage-grid--quad{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.collage-cell{position:relative;overflow:hidden;border-radius:3px;background:#0a061299;box-shadow:inset 0 0 0 1px #d4af3726,0 8px 24px #00000059}.collage-image{width:100%;height:100%;object-fit:contain;object-position:center center;will-change:transform}.slideshow--immersive .collage-grid{width:calc(100% - 3rem);height:calc(100% - 4.5rem)}.photo-frame{position:relative;width:min(96vw,1600px);height:min(94vh,900px);border-radius:2px;overflow:hidden;background:#0a0612;box-shadow:0 40px 100px #0009,0 0 0 1px #d4af371f;opacity:1}.photo-image-wrap{position:relative;z-index:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;will-change:transform;backface-visibility:hidden;transform:translateZ(0)}.photo-image{display:block;width:100%;height:100%;object-fit:contain;object-position:center center;backface-visibility:hidden}.slideshow--immersive .photo-overlay{background:radial-gradient(ellipse at center,transparent 50%,rgba(10,6,18,.15) 100%),linear-gradient(180deg,rgba(88,44,131,.08) 0%,transparent 20%,transparent 80%,rgba(10,6,18,.2) 100%)}.slideshow--immersive .photo-vignette{box-shadow:inset 0 0 120px #0a061259}.photo-light-leak{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,transparent 0%,rgba(255,220,150,.06) 45%,rgba(212,175,55,.12) 50%,rgba(255,220,150,.06) 55%,transparent 100%);pointer-events:none;mix-blend-mode:screen;z-index:2}.photo-frame-accent{position:absolute;width:48px;height:48px;pointer-events:none;z-index:4;opacity:.5}.photo-frame-accent--tl{top:1.25rem;left:1.25rem;border-top:1px solid rgba(212,175,55,.5);border-left:1px solid rgba(212,175,55,.5)}.photo-frame-accent--br{bottom:1.25rem;right:1.25rem;border-bottom:1px solid rgba(212,175,55,.5);border-right:1px solid rgba(212,175,55,.5)}.slideshow--immersive .photo-frame-accent{opacity:.35}.film-grain{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none;opacity:.045;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.photo-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(160deg,rgba(88,44,131,.12) 0%,transparent 45%,rgba(140,171,79,.05) 100%);pointer-events:none}.photo-vignette{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;box-shadow:inset 0 0 100px #0a061266;pointer-events:none}.photo-shine{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.06) 50%,transparent 58%);pointer-events:none;mix-blend-mode:overlay}.outro-ring{position:absolute;width:min(400px,65vw);height:min(400px,65vw);border-radius:50%;border:1px solid rgba(212,175,55,.3);box-shadow:0 0 80px #d4af371a;pointer-events:none}.outro-logo{position:relative;z-index:1;margin-bottom:1.5rem}.outro-line{width:min(140px,30vw);height:1px;margin:0 auto 2rem;background:linear-gradient(90deg,transparent,var(--gold),transparent);transform-origin:center}.outro-ring-outer{width:min(480px,78vw);height:min(480px,78vw);border-color:#8cab4f38;box-shadow:0 0 100px #582c8326}.outro-headline{position:relative;z-index:1;font-family:var(--font-display);font-size:clamp(1.8rem,4.5vw,3rem);font-weight:600;margin:0 0 1rem;letter-spacing:.06em;text-transform:uppercase;color:var(--white);text-shadow:0 4px 24px rgba(0,0,0,.45)}.outro-message{position:relative;z-index:1;font-family:var(--font-display);font-size:clamp(1.8rem,4.5vw,3.2rem);font-weight:500;font-style:italic;margin:0 0 1.25rem;background:linear-gradient(135deg,var(--gold-light),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}.outro-district{position:relative;z-index:1;font-family:var(--font-body);font-size:.75rem;font-weight:300;letter-spacing:.38em;text-transform:uppercase;opacity:.8;margin:0}.loading-screen,.empty-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:1rem;text-align:center;padding:2rem}.start-screen{position:relative;width:100%;height:100%;display:grid;place-items:center}.start-screen-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:linear-gradient(180deg,#0a06122e,#1a0f2e52 55%,#0a06126b);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .6s cubic-bezier(.16,1,.3,1),visibility .6s ease}.start-screen-overlay--visible{opacity:1;visibility:visible;pointer-events:auto}.play-overlay--fading{opacity:0;transform:scale(1.02);transition:opacity .5s ease,transform .65s cubic-bezier(.16,1,.3,1)}.presentation-header--revealed{animation:header-reveal 1.2s cubic-bezier(.16,1,.3,1) forwards}@keyframes header-reveal{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.slideshow--entering .slide-layer{will-change:opacity}.slideshow--entering .wave-background,.slideshow--entering .film-grain{transition:none}.chapter-title--school h2{font-size:clamp(2.4rem,6.5vw,4.2rem);letter-spacing:.06em;line-height:1.15;max-width:14ch;margin-left:auto;margin-right:auto}.chapter-title--school p{font-family:var(--font-body);font-size:clamp(.85rem,1.8vw,1rem);font-style:normal;font-weight:300;letter-spacing:.28em;text-transform:uppercase}.chapter-title--school .chapter-watermark{font-size:clamp(5rem,16vw,11rem);opacity:.06}.play-overlay{position:relative;z-index:2;display:grid;place-items:center;width:100%;height:100%}.logo-play{display:flex;flex-direction:column;align-items:center;gap:2rem;padding:0;border:none;background:none;cursor:pointer;transition:transform .35s ease}.logo-play:hover{transform:scale(1.05)}.logo-play:active{transform:scale(.98)}.logo-play-ring{display:none}.logo-play-glow{position:absolute;top:-8%;right:-8%;bottom:-8%;left:-8%;border-radius:50%;background:radial-gradient(circle,rgba(212,175,55,.2) 0%,rgba(88,44,131,.12) 45%,transparent 72%);pointer-events:none}.logo-play-rings{position:relative;width:min(280px,44vw);height:min(280px,44vw);display:grid;place-items:center}.logo-play-image{position:relative;z-index:1;width:68%;height:auto;border-radius:50%;filter:drop-shadow(0 16px 50px rgba(0,0,0,.5));transition:filter .4s ease,transform .4s ease}.logo-play:hover .logo-play-image{filter:drop-shadow(0 20px 60px rgba(0,0,0,.55)) drop-shadow(0 0 50px rgba(212,175,55,.55));transform:scale(1.02)}.logo-play-year{font-family:var(--font-body);font-size:clamp(.78rem,2.1vw,1.05rem);font-weight:300;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-light);margin:0;text-align:center;line-height:1.65;white-space:nowrap}.logo-play-date{font-family:var(--font-accent);font-size:clamp(1.3rem,3.2vw,1.85rem);font-weight:500;font-style:italic;letter-spacing:.04em;color:#fafaf8eb;margin:.15rem 0 0;text-align:center;line-height:1.35;white-space:nowrap}.logo-play-school{font-family:var(--font-body);font-size:clamp(.72rem,1.85vw,.92rem);font-weight:300;letter-spacing:.2em;text-transform:uppercase;color:#fafaf8c7;margin:.5rem 0 0;text-align:center;line-height:1.5;white-space:nowrap}.loading-logo,.empty-logo{width:100px;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}.empty-content h1{font-family:var(--font-display);font-size:2rem;margin:0}.empty-content p,.loading-screen p{opacity:.75;max-width:480px;line-height:1.6}code{font-size:.9em;padding:.15em .4em;border-radius:4px;background:#ffffff14}@media(max-width:768px){.slideshow--immersive .photo-frame{width:100vw;height:100vh}.top-bar span{display:none}}
