*{box-sizing:border-box}body{margin:0;background:#100e27;color:#fff7f0;font-family:Georgia,'Times New Roman',serif;overflow:hidden}.dream,.landscape,.veil,#magic{position:fixed;inset:0}.landscape{background:url('dream-castle-v18.png') center 62%/cover no-repeat;transform:scale(1.025);animation:journey 40s ease-in-out infinite alternate}.veil{background:linear-gradient(90deg,rgba(14,10,35,.62),transparent 65%),linear-gradient(0deg,rgba(12,8,30,.65),transparent 25%,transparent 75%,rgba(12,8,30,.35));transition:opacity 2s}#magic{width:100%;height:100%;pointer-events:none}header{position:fixed;z-index:3;top:0;width:100%;padding:28px 4%;display:flex;justify-content:space-between;align-items:center;font:11px/1.4 system-ui;letter-spacing:.2em}header span{color:#f2d8e4}header i{font-style:normal;opacity:.45;margin:0 12px}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:transparent;border:0}header button{padding:10px;border:1px solid #f2d8e440;border-radius:30px;letter-spacing:.08em}.intro{position:absolute;z-index:2;left:7%;top:29%;transition:opacity 1.4s,transform 1.4s}.eyebrow{font:10px system-ui;letter-spacing:.35em;color:#ebcbdc}h1{font-size:clamp(45px,5.5vw,88px);font-weight:400;line-height:1.08;letter-spacing:-.045em;margin:24px 0}h1 em{font-weight:400;color:#f1d3e7}.subtitle{font-size:16px;line-height:1.7;color:#efe3f0b8}#enter{font:11px system-ui;letter-spacing:.16em;border:1px solid #f5dfef66;padding:17px 24px;margin-top:22px;border-radius:2px;background:#f4ddef0b;backdrop-filter:blur(8px)}#enter span{margin-left:30px}footer{position:fixed;bottom:25px;left:4%;right:4%;display:flex;justify-content:space-between;font:11px system-ui;letter-spacing:.07em;color:#fff4eeaa;z-index:2}#replay{display:none}.immersed .intro{opacity:0;transform:translateY(-15px);pointer-events:none}.immersed .veil{opacity:.3}.immersed #replay{display:block}.paused .landscape{animation-play-state:paused}button:hover,a:hover{color:#fff;text-shadow:0 0 15px #f7dafc}button:focus-visible,a:focus-visible{outline:2px solid #ead2f4;outline-offset:5px}@keyframes journey{to{transform:scale(1.12) translateY(1%)}}@media(max-width:600px){.landscape{background-position:55% center}.intro{left:8%;top:22%}h1{font-size:48px}.veil{background:linear-gradient(90deg,#120d327a,transparent),linear-gradient(0deg,#100d27b0,transparent 40%)}header{padding-top:22px}header span{font-size:9px}footer{font-size:10px;gap:20px}}@media(prefers-reduced-motion:reduce){.landscape{animation:none}.intro,.veil{transition:none}}

/* Pastel illustrated dream */
body{background:#e4dbf3;color:#514568}.veil{background:linear-gradient(90deg,rgba(247,239,255,.58),transparent 60%),linear-gradient(0deg,rgba(243,232,253,.2),transparent 25%)}header span{color:#665177}header button{border-color:#78618c55;background:#fff8ff66;backdrop-filter:blur(8px)}.eyebrow{color:#765984}h1 em{color:#82618b}.subtitle{color:#675879}#enter{background:#fff9ff80;border-color:#92779f66}footer{color:#574469;background:#fff8ff70;padding:10px 15px;border-radius:20px;backdrop-filter:blur(8px)}button:hover,a:hover{color:#8a5388;text-shadow:0 0 15px #fff}.immersed .veil{opacity:0}@media(max-width:600px){.landscape{background-position:57% center}.veil{background:linear-gradient(90deg,#f7efff80,transparent)}}

body{color:#fff4ff;background:#6563b1}header span,.eyebrow,.subtitle,h1 em{color:#fff0ff}header button,#enter{background:#65509330;border-color:#fff3ff80}footer{background:#68518e30;color:#fff3ff}.veil{background:linear-gradient(90deg,#403c8045,transparent 60%)}.landscape{background-position:center center}button:hover,a:hover{color:#fff}@media(max-width:600px){.landscape{background-position:center center}.veil{background:linear-gradient(90deg,#403c8030,transparent)}}

.landscape{animation:none;transform:none;background-position:center center}.veil{display:none}footer{width:max-content;max-width:90%;right:auto}

.world-entry{position:fixed;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;white-space:nowrap;padding:22px 34px;border:1px solid #fff4ffd0;border-radius:50px;background:linear-gradient(120deg,#453e8175,#9565a65c);backdrop-filter:blur(12px);color:#fff;font:clamp(19px,3vw,30px)/1.3 Georgia,serif;letter-spacing:.03em;box-shadow:0 0 45px #e8c3ff40,inset 0 0 22px #ffffff15;text-shadow:0 2px 12px #514374;transition:box-shadow .3s,background .3s}.world-entry span{font-size:.65em;margin-left:12px}.world-entry:hover{background:#7962a099;box-shadow:0 0 60px #f4d8ff80}.world-entry:focus-visible{outline:3px solid white;outline-offset:7px}@media(max-width:500px){.world-entry{padding:20px 22px;width:max-content;max-width:92%;font-size:21px}}

/* Floral invitation, local preview */
.world-entry{width:520px;max-width:94vw;height:140px;padding:0 50px;display:flex;justify-content:center;align-items:center;gap:12px;border:0;border-radius:0;background:transparent;backdrop-filter:none;box-shadow:none;text-shadow:0 0 9px #fff8ff99,0 2px 14px #554071;white-space:nowrap}
.world-entry::before{content:"";position:absolute;inset:20px 30px;background:radial-gradient(ellipse,#8666b06b,transparent 72%);z-index:-1;filter:blur(8px)}
.world-entry .entry-label{font-family:"Snell Roundhand","Apple Chancery","URW Chancery L","Palatino Linotype",cursive;font-style:italic;font-weight:400;font-size:clamp(23px,4vw,35px);letter-spacing:.015em;margin:0;color:#fff8ff}
.floral-frame{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 0 5px #fff1ffa0)}
.world-entry .entry-ornament{margin:0;font-size:18px;color:#fff5d9;animation:invitation-twinkle 3s ease-in-out infinite}.world-entry .entry-ornament:nth-of-type(3){animation-delay:1.3s}
.world-entry:hover{background:transparent;box-shadow:none;text-shadow:0 0 15px white}.world-entry:hover .floral-frame{filter:drop-shadow(0 0 9px #fff1ff)}
@keyframes invitation-twinkle{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.25)}}
@media(max-width:500px){.world-entry{height:120px;padding:0 32px;gap:5px}.world-entry .entry-label{font-size:25px}.world-entry .entry-ornament{font-size:12px}}
@media(prefers-reduced-motion:reduce){.world-entry .entry-ornament{animation:none}}

/* Legible floral entrance */
header{justify-content:flex-end}
.world-entry{height:150px;isolation:isolate;transition:transform .25s,text-shadow .25s;cursor:pointer}
.world-entry::before{inset:25px 29px;border-radius:50%;background:radial-gradient(ellipse,rgba(51,34,98,.88) 0%,rgba(72,45,116,.78) 48%,rgba(103,68,140,.35) 72%,transparent 76%);filter:blur(3px);box-shadow:0 0 32px #e4c5ff30;transition:background .25s,box-shadow .25s}
.world-entry .entry-label{font-weight:700;font-size:clamp(26px,4vw,38px);text-shadow:0 2px 4px #372044,0 0 14px #f7cfff88;color:#fffaff}
.world-entry .floral-frame{filter:drop-shadow(0 2px 2px #583667) drop-shadow(0 0 5px #f2c9ff80)}
.world-entry:hover,.world-entry:focus-visible{transform:translate(-50%,-50%) scale(1.045)}
.world-entry:hover::before,.world-entry:focus-visible::before{background:radial-gradient(ellipse,#533777ed 0%,#8253a5cc 48%,#d8a3ef66 72%,transparent 76%);box-shadow:0 0 45px #f2caff88}
.world-entry:hover .floral-frame{filter:drop-shadow(0 0 8px #ffe9ff)}
.world-entry:active{transform:translate(-50%,-50%) scale(.97)}
@media(max-width:500px){.world-entry .entry-label{font-size:28px}.world-entry{height:132px}}
@media(prefers-reduced-motion:reduce){.world-entry,.world-entry::before{transition:none}}

/* Pearl leaf invitation */
.world-entry::before{inset:18px 22px;border-radius:85% 8% 85% 8% / 85% 12% 85% 12%;background:linear-gradient(145deg,#fffdf2d9,#f8f4e8ca 38%,#dcebe6c9 75%,#fffaf5cc);filter:none;box-shadow:inset 0 0 24px #fffdf3cc,0 0 24px #fff8e966;border:1px solid #fffcecaa;transform:rotate(-3deg)}
.world-entry .entry-label{color:#655775;text-shadow:0 1px 0 #fff,0 0 7px #fff9ee;font-weight:700}
.world-entry .entry-ornament{color:#b69265;text-shadow:0 0 5px #fff}
.world-entry .floral-frame{filter:drop-shadow(0 1px 1px #968f9580);opacity:.95}
.world-entry:hover::before,.world-entry:focus-visible::before{background:linear-gradient(145deg,#fffef4ee,#fff8e3e8 40%,#e1f2e7e0);box-shadow:inset 0 0 26px white,0 0 36px #fff5caaa}
.world-entry:hover .floral-frame{filter:drop-shadow(0 0 5px #fff4db)}

/* Unframed starlit lettering */
.world-entry::before{display:none}
.world-entry,.world-entry:hover,.world-entry:focus-visible{background:none;border:0;box-shadow:none;backdrop-filter:none}
.world-entry .entry-label{color:#fffdf6;text-shadow:0 2px 5px #514779,0 0 14px #8470b8,0 0 25px #fff1fc88}
.world-entry .entry-ornament{color:#fff7d9}
.world-entry .flower-spark,.world-entry .star-spark{position:absolute;margin:0;pointer-events:none;font-style:normal;line-height:1;animation:flower-glimmer 4s ease-in-out infinite;text-shadow:0 0 7px #fff,0 0 16px #ffd7f3}
.world-entry .flower-spark{font:25px Georgia,serif;color:#ffe5f4}.world-entry .flower-one{left:9%;top:25%;animation-delay:-1s}.world-entry .flower-two{right:9%;bottom:22%;font-size:20px;animation-delay:-2.5s}.world-entry .flower-three{right:19%;top:16%;font-size:15px;animation-delay:-.4s}
.world-entry .star-spark{color:#fff6d9;font-size:16px}.world-entry .star-one{left:24%;bottom:18%;animation-delay:-2s}.world-entry .star-two{right:4%;top:40%;font-size:22px;animation-delay:-3s}.world-entry .star-three{left:4%;top:53%;font-size:11px;animation-delay:-.8s}
.world-entry:hover .entry-label{text-shadow:0 0 6px #fff,0 2px 6px #675083,0 0 22px #ffdcf6}
@keyframes flower-glimmer{0%,100%{opacity:.4;transform:scale(.85) rotate(-8deg)}50%{opacity:1;transform:scale(1.12) rotate(8deg)}}
@media(prefers-reduced-motion:reduce){.world-entry .flower-spark,.world-entry .star-spark{animation:none}}

.flower-spark svg{display:block;overflow:visible;filter:drop-shadow(0 0 5px #fff0f5)}.flower-two svg{width:28px;height:28px}.flower-three svg{width:22px;height:22px}

.world-entry{pointer-events:none;width:620px;max-width:96vw;cursor:default;transition:none}.world-entry:hover,.world-entry:focus-visible,.world-entry:active{transform:translate(-50%,-50%)}
.world-entry .entry-label{pointer-events:auto;display:inline-block;line-height:1.15;font-size:clamp(25px,4vw,37px);padding:0;transition:transform .25s,text-shadow .25s}
.world-entry:hover .entry-label{text-shadow:0 2px 5px #514779,0 0 14px #8470b8,0 0 25px #fff1fc88}
.world-entry .entry-label:hover,.world-entry .entry-label:focus-visible{text-shadow:0 0 6px #fff,0 2px 6px #675083,0 0 22px #ffdcf6;transform:scale(1.04)}.world-entry .entry-label:active{transform:scale(.97)}
.cherry-petal{display:block;width:13px;height:21px;border-radius:85% 15% 75% 25%;background:radial-gradient(ellipse at 30% 25%,#fff,#ffe1f0 50%,#e6a9ce);box-shadow:0 0 9px #fff0f9;transform:rotate(30deg)}
.landscape{background-image:url('dream-empty.png');transform-origin:center center;will-change:transform}
@media(max-width:500px){.world-entry{gap:3px;padding:0 4px}.world-entry .entry-label{font-size:26px}}

/* Champagne invitation lettering */
.landscape{background-image:url('dream-castle-v18.png');transform:none!important}
.invitation-entry{width:640px;height:170px;max-width:96vw;padding:0;gap:0}
.invitation-ornament{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 1px 2px #725570) drop-shadow(0 0 4px #ffebcd55)}
.invitation-entry .entry-label{display:flex;flex-direction:column;align-items:center;gap:8px;font-family:Didot,'Bodoni 72','Palatino Linotype',Georgia,serif;font-style:normal;font-weight:400;color:#fff0d1;text-shadow:0 2px 3px #69506c,0 0 10px #836484}
.invitation-entry .entry-label .welcome-line{font:italic 17px/1.1 Georgia,serif;letter-spacing:.12em;margin:0;color:#fff2e0}
.invitation-entry .entry-label .name-line{font:400 34px/1.15 Didot,'Bodoni 72',Georgia,serif;letter-spacing:.07em;font-variant:small-caps;margin:0;color:#fff0d1}
.invitation-entry .entry-label:hover{filter:drop-shadow(0 0 7px #ffe4b4)}
@media(max-width:500px){.invitation-entry{height:135px}.invitation-entry .entry-label .name-line{font-size:25px;letter-spacing:.03em}.invitation-entry .entry-label .welcome-line{font-size:14px}.invitation-entry .entry-label{gap:6px}}


/* Illuminate ornament only when the text itself is hovered or focused. */
.invitation-ornament{transition:filter .3s ease}
.invitation-entry:has(.entry-label:hover) .invitation-ornament,
.invitation-entry:has(.entry-label:focus-visible) .invitation-ornament,
.invitation-entry:has(.entry-label:active) .invitation-ornament{filter:brightness(1.05) drop-shadow(0 0 2px #fff0c644)}
@media(prefers-reduced-motion:reduce){.invitation-ornament{transition:none}}

/* Touch feedback follows the lettering, without the browser's rectangular tap overlay. */
.invitation-entry .entry-label{-webkit-tap-highlight-color:transparent}
@media(hover:none) and (pointer:coarse){
.invitation-entry .entry-label:focus:not(:focus-visible){outline:none}
.invitation-entry .entry-label:active{background:transparent;text-shadow:0 0 5px #fff7df,0 1px 3px #69506c}
}

/* Use a lettering glow instead of a rectangular focus ring on the entrance. */
.invitation-entry .entry-label,
.invitation-entry .entry-label *{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.invitation-entry .entry-label:focus,
.invitation-entry .entry-label:focus-visible{outline:none;box-shadow:none}
.invitation-entry .entry-label:focus-visible{text-shadow:0 0 5px #fff7df,0 0 12px #fff0c6;text-decoration:underline;text-decoration-color:#fff0c6;text-underline-offset:6px}
@media(hover:none) and (pointer:coarse){.invitation-entry .entry-label:focus-visible{text-decoration:none;text-shadow:0 1px 3px #69506c}}

button.entry-label{appearance:none;-webkit-appearance:none;border:0;border-radius:0;background:transparent;margin:0;cursor:pointer;touch-action:manipulation}
button.entry-label:active,button.entry-label:focus{background:transparent;outline:none;box-shadow:none}

#welcome-world{cursor:default;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.academic-entrance{position:fixed;right:4%;bottom:5%;z-index:5;display:inline-flex;gap:16px;align-items:center;padding:15px 25px;border:1px solid #f7e5b9aa;border-radius:32px;background:linear-gradient(120deg,#68528488,#9d78936b);backdrop-filter:blur(8px);color:#fff1d4;font:italic 20px Georgia,serif;letter-spacing:.025em;box-shadow:0 0 18px #f7dd9b55,inset 0 0 12px #ffefc522;text-shadow:0 1px 5px #61516d;transition:box-shadow .25s,background .25s;-webkit-tap-highlight-color:transparent}
.academic-entrance:hover,.academic-entrance:focus-visible{background:#927498aa;box-shadow:0 0 26px #ffe4b799}
@media(max-width:600px){.academic-entrance{font-size:17px;padding:13px 20px;bottom:max(24px,env(safe-area-inset-bottom));right:6%}}

/* Luminous invitation-style return button */
.academic-entrance{right:4%;bottom:5%;min-width:245px;justify-content:center;gap:18px;padding:17px 28px;border:1.5px solid #ffedba;border-radius:999px;background:linear-gradient(180deg,rgba(107,79,125,.86),rgba(62,48,91,.9));font-family:Didot,'Bodoni 72','Palatino Linotype',Georgia,serif;font-size:25px;font-style:italic;font-weight:600;letter-spacing:.05em;color:#fff1d7;text-shadow:0 0 5px #fff1d766,0 2px 3px #43334f;box-shadow:inset 0 0 13px #f4d1a448,0 0 5px #ffebbaaa,0 0 16px #ffd58c70,0 0 29px #f8cf9f35;backdrop-filter:blur(6px);transition:box-shadow .3s,border-color .3s,text-shadow .3s,transform .3s}
.academic-entrance::before{content:"";position:absolute;inset:3px;border:1px solid #fff1cc33;border-radius:inherit;pointer-events:none}
.academic-entrance span{font-family:Georgia,serif;font-style:normal;font-weight:400;font-size:24px;color:#fff0d2}
.academic-entrance:hover,.academic-entrance:focus-visible{background:linear-gradient(180deg,#82618eeb,#51406fe8);border-color:#fff7df;color:#fff9ed;text-shadow:0 0 7px #fff4d8,0 0 16px #ffdfb388;box-shadow:inset 0 0 18px #ffe3b06b,0 0 7px #fff0cddd,0 0 23px #ffdb97aa,0 0 40px #f8cf9f55;transform:translateY(-2px)}
.academic-entrance:active{transform:translateY(0) scale(.98)}
@media(max-width:600px){.academic-entrance{min-width:205px;font-size:22px;padding:15px 24px;right:6%;bottom:max(25px,env(safe-area-inset-bottom));gap:14px}}
@media(prefers-reduced-motion:reduce){.academic-entrance{transition:none}}

/* Sakura glass with a fine champagne rim. */
.academic-entrance{min-width:215px;padding:15px 25px;gap:15px;font-size:21px;font-weight:500;letter-spacing:.035em;color:#79505d;border:1px solid #fff3d9;background:linear-gradient(160deg,#fff0eac9 0%,#f4c8cecf 45%,#e9abbcbf 100%);text-shadow:0 1px 1px #fff5ef;box-shadow:inset 0 1px 2px #fffaf2, inset 0 -2px 5px #c37e9144,0 0 4px #fff0c9,0 0 15px #ffe2c37a;overflow:hidden}
.academic-entrance::before{inset:4px;border:.6px solid #fff9e9b0;box-shadow:inset 0 0 4px #fff7e444}
.academic-entrance::after{content:"";position:absolute;inset:-70% -40%;pointer-events:none;background:linear-gradient(110deg,transparent 40%,#ffffff00 44%,#fffbe8e6 49%,#ffffff88 51%,transparent 57%);transform:translateX(-95%);opacity:0}
.academic-entrance span{font-size:20px;color:#906171}
.academic-entrance:hover,.academic-entrance:focus-visible{background:linear-gradient(160deg,#fff6edf2,#f8d8daee 45%,#efb9c9e6);color:#744a59;border-color:#fffbe8;text-shadow:0 0 7px #fff5e3;box-shadow:inset 0 1px 3px white,0 0 7px #fff2ce,0 0 23px #ffe7bdd0;transform:translateY(-1px)}
.academic-entrance:hover::after{animation:sakura-sheen 1.5s ease-out}
.academic-entrance:active,.academic-entrance.is-entering{transform:scale(.98);background:#fff1e9;color:#744a59;box-shadow:inset 0 0 12px white,0 0 10px #fff9dc,0 0 28px #ffe2b4,0 0 48px #ffdbe18c}
.academic-entrance.is-entering::after{animation:sakura-sheen .4s ease-out}
@keyframes sakura-sheen{0%{opacity:0;transform:translateX(-65%)}20%{opacity:1}100%{opacity:0;transform:translateX(65%)}}
@media(max-width:600px){.academic-entrance{font-size:19px;min-width:195px;padding:14px 23px;gap:13px}.academic-entrance span{font-size:19px}}
@media(prefers-reduced-motion:reduce){.academic-entrance:hover::after,.academic-entrance.is-entering::after{animation:none}}

/* Rose satin with pale-gold lettering and sparse rim stars. */
.academic-entrance{overflow:visible;background:linear-gradient(155deg,#b09dcfed,#937eb6ed 55%,#7f6aa3ed);color:#fff0d1;text-shadow:0 1px 3px #69506c,0 0 5px #ffe9c333;box-shadow:inset 0 1px 2px #ffe3d8aa,inset 0 -2px 5px #663c5744,0 0 5px #fff0c977,0 0 15px #ffe2c34d}
.academic-entrance span{color:#fff0d1}
.academic-entrance::after{inset:1px;border-radius:inherit}
.academic-entrance:hover,.academic-entrance:focus-visible{background:linear-gradient(155deg,#c0aeddf5,#a38bc6f5 55%,#9079b5f5);color:#fff0d1;text-shadow:0 0 7px #fff0d1}
.academic-entrance:active,.academic-entrance.is-entering{background:linear-gradient(155deg,#cdbbe8,#af98d1 55%,#9981bf);color:#fff0d1}
.rim-star{position:absolute;pointer-events:none;font-family:Georgia,serif;font-style:normal;font-weight:400;color:#fff3ce;line-height:1;text-shadow:0 0 5px #fff5d2,0 0 10px #ffd6ac88;animation:rim-twinkle 3.6s ease-in-out infinite}
.rs1{left:16%;top:-7px;font-size:15px;animation-delay:-.3s}.rs2{right:12%;top:-5px;font-size:11px;animation-delay:-2.1s}.rs3{right:22%;bottom:-6px;font-size:13px;animation-delay:-1.3s}.rs4{left:-5px;top:53%;font-size:10px;animation-delay:-2.8s}
@keyframes rim-twinkle{0%,100%{opacity:.3;transform:scale(.75)}45%{opacity:1;transform:scale(1.1)}70%{opacity:.5;transform:scale(.9)}}
@media(prefers-reduced-motion:reduce){.rim-star{animation:none;opacity:.7}}
