@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Noto+Serif+KR:wght@400;500;600&display=swap";:root{color:#51454a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;--ivory:#fffaf6;--rose:#bd7880;--rose-deep:#965e69;--gold:#c9a76e;--ink:#51454a;--muted:#8d7e7e;--serif:"Playfair Display", Georgia, serif;--sans:"DM Sans", sans-serif;background:#fffaf6;font-family:DM Sans,sans-serif;font-weight:400}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--ivory);margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--rose);outline-offset:4px}::selection{color:#fff;background:#bd7880}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}#root{min-height:100vh}.journey{visibility:hidden;opacity:0;transition:visibility 1s}.journey.is-open{visibility:visible}.scene{min-height:100svh;position:relative;overflow:hidden}.petal-layer{z-index:20;pointer-events:none;position:fixed;inset:0;overflow:hidden}.petal{opacity:.58;background:linear-gradient(145deg,#e2a6a99e,#e2a6a91a);border-radius:100% 0;display:block;position:absolute;top:-24px}.falling-blossom{background:radial-gradient(32% 42% at 50% 17%,#e8aab0 94%,#0000 100%),radial-gradient(32% 42% at 82% 39%,#f0c2c2 94%,#0000 100%),radial-gradient(32% 42% at 69% 78%,#dfa0aa 94%,#0000 100%),radial-gradient(32% 42% at 31% 78%,#efb9bd 94%,#0000 100%),radial-gradient(32% 42% at 18% 39%,#e7aab2 94%,#0000 100%),radial-gradient(circle,#d7b87d 0 11%,#0000 13%);border-radius:50%;display:block;position:absolute;top:-34px}.sparkle{background:#d7b87d;border-radius:50%;width:4px;height:4px;position:absolute;box-shadow:0 0 9px 2px #d7b87d6b}.hero-scene{background:radial-gradient(at 72% 75%,#f5dcd8ad,#0000 36%),radial-gradient(at 4% 15%,#efdad28c,#0000 25%),#fffaf6;justify-content:center;align-items:center;padding:8vh max(8vw,36px);display:flex}.hero-glow{aspect-ratio:1;border:1px solid #c9a76e33;border-radius:50%;width:min(48vw,590px);position:absolute;bottom:3%;right:8%}.hero-glow:before,.hero-glow:after{content:"";border:1px solid #c9a76e21;border-radius:50%;position:absolute;inset:8%}.hero-glow:after{inset:17%}.hero-copy{z-index:2;text-align:center;width:min(100%,950px);max-width:950px;margin:-4vh auto 0;position:relative}.hero-copy .eyebrow{justify-content:center}.eyebrow{color:var(--rose-deep);letter-spacing:.24em;align-items:center;gap:12px;margin:0 0 28px;font-size:9px;font-weight:600;display:flex}.eyebrow span{background:var(--gold);width:25px;height:1px;display:inline-block}.hero-copy h1,.opening-card h1{color:#57464b;font:400 clamp(50px, 6.1vw, 88px)/1.08 var(--serif);letter-spacing:-.055em;margin:0}.hero-copy h1{font-family:"Noto Serif KR", var(--serif);letter-spacing:-.06em;font-size:clamp(52px,8.2vw,104px);line-height:1.24}.hero-copy h1 em,.section-intro h2 em,.finale-content h2 em,.opening-card h1 em,.korean-content h2 em{color:var(--rose);font-weight:400}.hero-subtitle{color:var(--muted);font:19px "Noto Serif KR", var(--serif);letter-spacing:.04em;margin:25px 0 0}.scroll-cue{z-index:3;color:#8c797a;width:fit-content;font:14px "Noto Serif KR", var(--serif);letter-spacing:.05em;align-items:center;gap:16px;text-decoration:none;display:flex;position:absolute;bottom:27%;left:max(7vw,38px)}.scroll-cue i{background:var(--gold);width:43px;height:1px;display:block;position:relative}.scroll-cue i:after{content:"";border-top:1px solid var(--gold);border-right:1px solid var(--gold);width:7px;height:7px;position:absolute;top:-3px;right:0;transform:rotate(45deg)}.hero-art{z-index:1;place-items:center;width:min(48vw,550px);height:49%;min-height:320px;display:grid;position:absolute;bottom:1%;right:4%}.hero-art .floral-illustration{filter:drop-shadow(0 26px 26px #6845441f);width:100%;height:100%;position:relative}.hero-flower-float{place-items:center;width:100%;height:100%;display:grid}.art-halo{aspect-ratio:1;background:#ffffff85;border-radius:50%;width:min(38vw,460px);position:absolute;box-shadow:0 0 0 1px #c9a76e2e,0 0 0 22px #ffffff26}.art-caption{color:#a8847f;font:14px/1.8 "Noto Serif KR", var(--serif);text-align:right;position:absolute;bottom:11%;right:0}.side-note{color:#b7a3a0;writing-mode:vertical-rl;font:10px "Noto Serif KR", var(--serif);letter-spacing:.12em;position:absolute;bottom:50px;left:30px}.floral-illustration{display:block;overflow:visible}.wind-petal{transform-box:fill-box;transform-origin:50%;animation:5.5s ease-in-out infinite petal-sway}.wind-leaf{transform-box:fill-box;transform-origin:50% 100%;animation:6.5s ease-in-out infinite leaf-sway}.wind-branch{transform-box:fill-box;transform-origin:35% 90%;animation:7s ease-in-out infinite branch-sway}.wind-delay-1{animation-delay:-1.2s}.wind-delay-2{animation-delay:-2.6s}.wind-delay-3{animation-delay:-3.8s}@keyframes petal-sway{0%,to{transform:rotate(0)translate(0)}50%{transform:rotate(5deg)translate(1px)}}@keyframes leaf-sway{0%,to{transform:rotate(0)}50%{transform:rotate(3deg)}}.letter-scene{background:#f8efeb;grid-template-columns:minmax(250px,.7fr) minmax(420px,1fr);align-items:center;gap:clamp(36px,8vw,130px);padding:120px max(11vw,60px);display:grid}.section-intro{z-index:1;max-width:460px;position:relative}.section-intro h2,.korean-content h2{color:#5b484d;font:400 clamp(38px, 4.5vw, 60px)/1.2 var(--serif);letter-spacing:-.045em;margin:0}.section-note{color:#917f7e;font:14px/1.8 var(--serif);margin:24px 0 0}.letter-card{z-index:1;background:#fffdfae8;border:1px solid #c9a76e4d;width:min(100%,720px);min-height:590px;padding:38px clamp(28px,4.5vw,68px) 32px;position:relative;box-shadow:0 22px 65px #5c3f3e14}.letter-card:before{content:"";pointer-events:none;border:1px solid #c9a76e30;position:absolute;inset:8px}.letter-top{color:#a58b7d;letter-spacing:.15em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:8px;display:flex;position:relative}.letter-flower{color:#bb8380;stroke-width:1.6px;width:18px;height:18px}.letter-copy{margin:32px 0 25px;position:relative}.letter-copy p{color:#68585a;font:13px/1.9 "Noto Serif KR", var(--serif);margin:0 0 15px}.letter-copy .letter-signoff{color:#9e626e;margin-top:20px;font-size:14px;font-style:italic}.typing-cursor{vertical-align:-.12em;background:currentColor;width:1px;height:1em;margin-left:2px;animation:.8s steps(2,start) infinite typing-blink;display:inline-block}.letter-footer{color:#ae9b91;letter-spacing:.18em;font-size:7px;position:relative}.letter-sprig{z-index:1;opacity:.85;pointer-events:none;transform-origin:70% 90%;width:170px;height:auto;position:absolute;bottom:15px;right:-74px;transform:rotate(14deg)}.teachers-scene{background:#fffaf6;padding:120px max(11vw,60px) 115px}.teachers-scene .section-intro{text-align:center;max-width:720px;margin:0 auto 55px}.teachers-scene .eyebrow{justify-content:center}.teacher-layout{grid-template-columns:minmax(230px,.85fr) minmax(400px,1.15fr);align-items:center;gap:clamp(50px,10vw,145px);max-width:1020px;margin:0 auto;display:grid}.teacher-art{place-items:center;min-height:470px;display:grid;position:relative}.teacher-flower-float{place-items:center;width:100%;height:100%;display:grid}.teacher-art .floral-illustration{width:min(100%,390px);max-height:500px}.teacher-art span{color:#a87b79;font:italic 13px/1.65 var(--serif);text-align:right;position:absolute;bottom:11%;right:2%}.teacher-list{gap:12px;display:grid}.teacher-card{background:#ffffff94;border:1px solid #c9a76e52;grid-template-columns:38px 1fr 28px;align-items:center;gap:18px;min-height:82px;padding:12px 19px;transition:box-shadow .3s,background .3s;display:grid}.teacher-card:hover{background:#fff;box-shadow:0 12px 28px #734f4914}.teacher-index{color:#bd9f7d;font:12px var(--serif)}.teacher-title{color:#ab8180;letter-spacing:.15em;text-transform:uppercase;font-size:9px}.teacher-card h3{color:#59494d;font:500 17px var(--serif);letter-spacing:.08em;margin:4px 0 0}.teacher-star{color:#c5a873;stroke-width:1.5px;width:17px;height:17px}.teacher-moments{max-width:1020px;margin:74px auto 0}.teacher-moments h3{color:#7d6264;font:400 clamp(21px, 3vw, 30px) "Noto Serif KR", var(--serif);text-align:center;margin:0 0 24px}.teacher-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.teacher-gallery figure{background:#ffffffc7;border:1px solid #c9a76e4d;min-width:0;margin:0;padding:9px 9px 14px;box-shadow:0 14px 32px #5c3f3e12}.teacher-gallery img{object-fit:cover;width:100%;height:220px;display:block}.teacher-gallery figure:first-child img{object-position:center 26%}.teacher-gallery figcaption{color:#8d7271;font:13px/1.7 "Noto Serif KR", var(--serif);text-align:center;padding:12px 5px 0}.korean-scene{background:#f6e8e7;grid-template-columns:.8fr 1.2fr;align-items:center;padding:115px max(12vw,65px);display:grid}.korean-art{place-items:center;min-height:620px;display:grid;position:relative}.korean-flower-float{place-items:center;width:100%;height:100%;display:grid}.korean-art:before{content:"";aspect-ratio:1;border:1px solid #bd788040;border-radius:50%;width:min(34vw,440px);position:absolute;box-shadow:0 0 0 20px #ffffff24,0 0 0 50px #ffffff1a}.korean-art .floral-illustration{filter:drop-shadow(0 15px 20px #653a421f);width:min(100%,380px);max-height:550px;position:relative}.korean-content{max-width:670px;position:relative}.korean-content h2{font-family:"Noto Serif KR", var(--serif);font-size:clamp(37px,4.2vw,56px)}.korean-letter{background:#fffaf780;border-left:1px solid #bd78808c;margin-top:29px;padding:25px 30px}.korean-letter p{white-space:pre-line;color:#69585a;word-break:keep-all;margin:0 0 17px;font:13px/2 Noto Serif KR,serif}.korean-letter p:last-child{color:#9e626e;margin-bottom:0}.korean-signature{color:#a47d78;letter-spacing:.12em;text-align:right;margin-top:22px;font:12px Noto Serif KR,serif;display:block}@keyframes typing-blink{to{opacity:0}}.finale-scene{text-align:center;background:radial-gradient(#fff 0%,#fff8f3 44%,#f5e4df 100%);place-items:center;min-height:100svh;padding:95px 28px 80px;display:grid}.finale-content{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.finale-content .eyebrow{justify-content:center}.finale-bloom{width:min(36vw,310px);height:230px;margin:-4px 0 2px}.finale-flower-float{place-items:center;width:100%;height:100%;display:grid}.finale-bloom .floral-illustration{filter:drop-shadow(0 17px 18px #68454424);transform-origin:50% 90%;width:100%;height:100%}.finale-content h2{color:#56464a;font:400 clamp(42px, 5.2vw, 72px)/1.05 var(--serif);letter-spacing:-.05em;margin:0}.final-date{color:#a98474;font:14px var(--serif);letter-spacing:.2em;text-transform:uppercase;margin:17px 0 0}.final-thanks{color:#7e7070;font:italic 15px/1.8 var(--serif);margin:22px 0 0}.replay-button{color:#926b6c;cursor:pointer;background:0 0;border:1px solid #bd788061;align-items:center;gap:7px;margin-top:27px;padding:10px 17px;font-size:12px;transition:background .2s;display:inline-flex}.replay-button svg{stroke-width:1.8px;width:14px;height:14px}.replay-button:hover{background:#ffffffb3}.finale-footer{color:#aa9288;letter-spacing:.2em;font-size:8px;position:absolute;bottom:28px}.opening-overlay{z-index:30;background:radial-gradient(at 50% 46%,#fff 0,#fffaf6 56%,#f4e3df 100%);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.opening-rain{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.opening-rain-petal{background:linear-gradient(145deg,#e2a6a994,#e2a6a914)}.opening-flower{z-index:1;filter:drop-shadow(0 18px 18px #6845441f);width:min(50vw,330px);height:38%;margin:0 auto;position:absolute;top:3%;left:0;right:0}.opening-flower .floral-illustration{width:100%;height:100%}.opening-card{z-index:3;text-align:center;width:100%;height:100%;padding:0;position:absolute;inset:0}.opening-card .eyebrow{color:#a68378;letter-spacing:.2em;white-space:nowrap;justify-content:center;gap:12px;margin:0;font-size:8px;position:absolute;top:4.5%;left:50%;transform:translate(-50%)}.opening-card h1{color:#59484b;width:100%;font:400 clamp(32px, 8.5vw, 58px)/1.22 "Noto Serif KR", var(--serif);letter-spacing:-.065em;text-shadow:0 1px 12px #fffaf6b3;margin:0;position:absolute;top:42%;left:50%;transform:translate(-50%)}.opening-card h1 em{color:var(--rose);font-weight:400}.opening-date{color:#a88679;letter-spacing:.25em;width:100%;margin:0;font-size:10px;position:absolute;top:69.5%;left:0}.opening-caption{color:#8f7e7d;width:min(88%,360px);font:12px/1.7 "Noto Serif KR", var(--serif);margin:0;position:absolute;top:76%;left:50%;transform:translate(-50%)}.opening-signoff{color:#b3a099;width:100%;font:8px "Noto Serif KR", var(--serif);letter-spacing:.1em;margin:0;position:absolute;bottom:2.5%;left:0}.open-button{color:#fffaf6;font:12px "Noto Serif KR", var(--sans);letter-spacing:.04em;cursor:pointer;background:#b97d80f0;border:1px solid #bc8884;margin:0;padding:11px 28px;transition:background .25s,transform .25s;position:absolute;top:84%;left:50%;transform:translate(-50%)}.open-button:disabled{cursor:default}.open-button svg{width:15px;height:15px;margin:0 0 -3px 14px}.open-button:hover{background:#a96970}.presentation-bar{z-index:25;top:max(10px, env(safe-area-inset-top));width:max-content;min-height:30px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;justify-content:flex-end;align-items:center;gap:3px;padding:0;display:flex;position:fixed;right:14px}.control-icon,.play-control{color:#846b69;cursor:pointer;background:0 0;border:0;flex:0 0 27px;place-items:center;width:27px;height:27px;padding:0;font-size:17px;display:grid}.control-icon:hover,.control-icon.is-active{color:#ae6e76}.control-icon svg,.play-control svg{stroke-width:1.8px;width:15px;height:15px}.play-control{color:#a36d70;background:0 0;border:0;border-radius:0;flex-basis:27px;width:27px;height:27px;font-size:11px}.play-control:hover{color:#ae6e76}.play-control svg{width:14px;height:14px}.notice{z-index:40;color:#755e60;text-align:center;background:#fffcf8f5;border:1px solid #d5bea9b3;max-width:calc(100vw - 32px);padding:12px 18px;font-size:12px;position:fixed;bottom:92px;left:50%;transform:translate(-50%);box-shadow:0 8px 25px #563d381f}@keyframes branch-sway{0%,to{transform:rotate(11deg)}50%{transform:rotate(18deg)}}@media (width<=900px){.hero-scene{padding:8vh 7vw}.hero-art{min-height:300px}.letter-scene{grid-template-columns:1fr;gap:36px;padding:100px 9vw}.letter-scene .section-intro{max-width:600px}.letter-card{justify-self:center}.teachers-scene{padding:100px 8vw}.teacher-layout{grid-template-columns:.75fr 1.25fr;gap:40px}.korean-scene{padding:95px 8vw}.korean-art{min-height:480px}}@media (width<=640px){.sparkle:nth-child(n+44){display:none}.falling-blossom{opacity:.68}.hero-scene{align-items:flex-start;min-height:100svh;padding:16vh 22px 70px;display:flex}.hero-copy{width:100%;margin:0 auto}.hero-copy .eyebrow{letter-spacing:.08em;white-space:nowrap;gap:8px;margin-bottom:22px;font-size:8px}.hero-copy .eyebrow span{width:18px}.hero-copy h1{letter-spacing:-.08em;font-size:clamp(34px,9.5vw,52px);line-height:1.42}.hero-subtitle{margin-top:18px;font-size:clamp(13px,4vw,16px)}.hero-art{opacity:.94;width:60%;height:43%;min-height:0;bottom:0;right:1%}.hero-art .floral-illustration{width:100%;height:100%}.art-halo{width:78%}.art-caption{display:none}.scroll-cue{gap:10px;font-size:11px;bottom:27%;left:7%}.scroll-cue i{width:27px}.side-note{display:none}.letter-scene{padding:82px 20px 105px}.section-intro h2,.korean-content h2{font-size:clamp(37px,10vw,49px)}.letter-card{min-height:unset;padding:30px 24px}.letter-copy{margin-top:27px}.letter-copy p{font-size:12px;line-height:1.82}.letter-sprig{opacity:.45;width:105px;bottom:-58px;right:-24px}.teachers-scene{padding:82px 20px 105px}.teachers-scene .section-intro{margin-bottom:28px}.teacher-layout{grid-template-columns:1fr;gap:10px}.teacher-art{height:150px;min-height:150px}.teacher-art .floral-illustration{width:min(44%,120px);height:auto;max-height:135px}.teacher-art span{font-size:11px;bottom:5%;right:4%}.teacher-card{grid-template-columns:26px 1fr 20px;gap:12px;min-height:72px;padding:10px 13px}.teacher-card h3{font-size:15px}.teacher-moments{margin-top:50px}.teacher-moments h3{margin-bottom:18px}.teacher-gallery{grid-template-columns:1fr;gap:14px;max-width:420px;margin:0 auto}.teacher-gallery figure{grid-template-columns:minmax(110px,38%) 1fr;align-items:center;gap:12px;padding:7px;display:grid}.teacher-gallery img{height:112px}.teacher-gallery figcaption{padding:6px;font-size:12px}.korean-scene{grid-template-columns:1fr;padding:72px 20px 100px}.korean-art{opacity:.28;width:220px;height:250px;min-height:0;position:absolute;top:-10px;right:-60px}.korean-art:before{width:180px}.korean-art .floral-illustration{height:100%}.korean-content{z-index:1}.korean-letter{padding:20px 18px}.korean-letter p{font-size:12px;line-height:1.9}.finale-content{width:100%;padding-top:88px;position:relative}.finale-bloom{opacity:.72;width:88px;height:112px;margin:0;position:absolute;top:0;left:0}.finale-content h2{font-size:clamp(41px,12vw,59px)}.opening-flower{width:min(70vw,280px);height:37%;top:2%}.opening-card .eyebrow{gap:8px;font-size:7px}.opening-card .eyebrow span{width:20px}.opening-card h1{font-size:clamp(31px,8.5vw,42px);line-height:1.32;top:42%}.opening-date{font-size:9px;top:69%}.opening-caption{font-size:11px;top:76%}.open-button{padding:10px 24px;font-size:11px;top:84%}.opening-signoff{font-size:7px;bottom:2%}.presentation-bar{top:max(8px, env(safe-area-inset-top));gap:1px;min-height:27px;right:8px}.control-icon,.play-control{flex-basis:25px;width:25px;height:25px}.control-icon svg{width:14px;height:14px}}@media (width<=360px){.hero-scene{padding-left:20px;padding-right:20px}.hero-copy h1{font-size:clamp(38px,11.5vw,44px)}.opening-flower{width:70vw}.opening-card h1{font-size:30px}.opening-caption{font-size:10px}.presentation-bar{gap:0;right:6px}.control-icon,.play-control{flex-basis:23px;width:23px}}
