@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Manrope:wght@400;500;600;700&display=swap');

:root{color-scheme:dark;--ink:#160e24;--cream:#fbefd9;--muted:#c2afc7;--gold:#e8c387;--gold-soft:#bfa276;--body:'Manrope','Segoe UI',sans-serif;--serif:'Cormorant Garamond','Palatino Linotype',Georgia,serif}
*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--cream);font-family:var(--body);font-size:16px;min-width:320px}button,textarea{font:inherit}button,a,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}button[hidden]{display:none}button{touch-action:manipulation}a{color:inherit}::selection{background:#896290;color:white}
.scene{position:fixed;inset:0;background:linear-gradient(90deg,rgba(19,11,30,.78),rgba(19,11,30,.24) 52%,rgba(19,11,30,.1)),linear-gradient(0deg,#170f26 0%,transparent 24%,rgba(13,9,25,.2) 83%,rgba(13,9,25,.64)),url('./assets/castle-room.png') center/cover no-repeat;z-index:-3}.scene:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 64% 50%,transparent 0%,rgba(10,6,18,.1) 50%,rgba(10,6,18,.25) 100%)}
.page-shell{max-width:1540px;margin:auto;padding:0 6.2%;min-height:100svh;display:flex;flex-direction:column}.masthead{height:105px;display:flex;align-items:center;justify-content:space-between;gap:20px}.wordmark{text-decoration:none;font-size:13px;letter-spacing:3.1px;font-weight:600;display:flex;align-items:center;gap:14px;color:#eed2a0}.brand-star{font-size:33px;font-weight:400;line-height:1}.edition{color:#bdacc4;font-family:var(--serif);font-size:18px;font-style:italic;letter-spacing:.2px}
.story{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:center;gap:4%;flex:1;max-width:1240px;width:100%;margin:auto;min-height:670px}.invitation{padding:12px 0 45px;position:relative;z-index:2;max-width:460px}.eyebrow{font-size:12px;letter-spacing:2.6px;color:var(--gold);display:flex;align-items:center;gap:12px;margin:0 0 21px;line-height:1.7}.eyebrow span{width:27px;height:1px;background:var(--gold-soft)}h1{font-family:var(--serif);font-weight:400;font-size:clamp(76px,7.6vw,112px);line-height:.88;letter-spacing:-3px;margin:0 0 25px}h1 em{color:#edc995;font-weight:400;line-height:1.06}.intro{color:#c9bacc;font-size:16px;line-height:1.9;margin:0 0 32px}.field-heading{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:500;margin:0 0 11px;color:#e6d7df}.field-heading>span{font-size:16px;color:var(--gold-soft)}.spell-field{border:1px solid rgba(206,173,131,.34);border-radius:12px;background:rgba(18,10,30,.47);box-shadow:inset 0 1px 14px #130a2329;transition:border-color .2s,box-shadow .2s}.spell-field:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px #deb77913}.spell-field:has([aria-invalid="true"]){border-color:#e6b5b9}textarea{display:block;width:100%;min-height:118px;resize:vertical;border:0;background:transparent;color:var(--cream);outline:none;padding:16px 19px;font-family:var(--serif);font-size:22px;font-style:italic;line-height:1.3}textarea::placeholder{color:#a993b4;opacity:1}.field-footer{display:flex;gap:6px;justify-content:space-between;align-items:start;flex-wrap:wrap;margin:10px 0 20px}.field-footer p{margin:0;color:#b4a2bd;font-size:12px;line-height:1.65}.text-button{background:none;border:0;padding:0;color:#e4c69d;font-size:12px;line-height:1.65;text-decoration:underline;text-decoration-color:#b698724a;text-underline-offset:4px}.text-button:hover{color:#fff0cf;text-decoration-color:currentColor}.error-message{margin:0;color:#f5c2c3;font-size:14px;line-height:1.5}.error-message:not(:empty){margin:-6px 0 14px}.spell-button{width:100%;display:flex;align-items:center;justify-content:center;gap:13px;padding:16px 24px;min-height:59px;border:1px solid #f5dca4;border-radius:9px;background:linear-gradient(110deg,#f0d59e,#d9ac6d);color:#312030;font-size:15px;letter-spacing:.25px;font-weight:700;box-shadow:0 5px 26px #e8b76a18,inset 0 1px 0 #fff4d2;transition:transform .2s,box-shadow .2s,filter .2s}.spell-button:hover{transform:translateY(-2px);box-shadow:0 7px 34px #e8b76a38;filter:brightness(1.07)}.spell-button:active{transform:translateY(0)}.spell-button:disabled{opacity:.75}.button-spark{font-size:24px;font-weight:400;line-height:1}.button-arrow{font-size:22px;font-weight:400;margin-left:auto}.button-spark{margin-right:auto}.little-secret{display:flex;align-items:center;justify-content:center;gap:9px;color:#b4a2ba;font-family:var(--serif);font-style:italic;font-size:17px;margin:19px 0 0}.little-secret span{color:var(--gold-soft);font-size:18px}
.mirror-section{position:relative;display:flex;align-items:center;flex-direction:column;align-self:stretch;justify-content:center;min-width:0;padding-bottom:38px}.mirror-halo{position:absolute;width:110%;height:90%;top:0;pointer-events:none;background:radial-gradient(ellipse,#7956a929,transparent 65%);z-index:-1}.mirror{position:relative;width:min(100%,470px);aspect-ratio:2/3;margin:-25px 0 -12px;flex-shrink:0;isolation:isolate}.mirror-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:4;pointer-events:none;filter:drop-shadow(0 18px 20px #07040b66)}.mirror-glass{position:absolute;left:21.5%;right:21.5%;top:17.5%;bottom:18%;border-radius:50%;overflow:hidden;z-index:1;background:radial-gradient(ellipse at 48% 68%,#75639a 0,#443263 33%,#211c3e 72%);box-shadow:inset 0 0 32px 8px #080915,0 0 35px #bd8de433}.glass-mist{position:absolute;inset:-40%;background:radial-gradient(ellipse at 30% 55%,#d3abe345,transparent 44%),radial-gradient(ellipse at 67% 60%,#a3acdb38,transparent 47%);filter:blur(15px);animation:mist 13s ease-in-out infinite alternate}.glass-shine{position:absolute;inset:0;background:linear-gradient(125deg,transparent 20%,#f9e4ff0d 29%,transparent 39%,transparent 70%,#abaae81c);z-index:2;pointer-events:none}.mirror-idle{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:16px;transition:opacity .7s;color:#ebdeef}.large-spark{font-size:60px;line-height:1;color:#f1d49f;text-shadow:0 0 25px #fff0c988;animation:breathe 4s ease-in-out infinite}.mirror-idle p{font-family:var(--serif);font-size:clamp(24px,2.6vw,33px);line-height:1.15;max-width:240px;margin:22px 0 20px}.mirror-idle em{font-weight:400;color:#eed9bc}.tiny-stars{font-size:14px;letter-spacing:5px;color:#d1afcd}.mirror-whisper{font-family:var(--serif);font-style:italic;font-size:19px;color:#c8b1cf;text-align:center;margin:5px 0 0;position:relative;z-index:5;min-height:25px}.replay{font-size:14px;margin-top:8px;position:absolute;bottom:3px}.replay span{margin-left:5px}.mirror-spark{position:absolute;z-index:5;color:#f4dca3;text-shadow:0 0 14px #efc98b66;animation:breathe 4s ease-in-out infinite;pointer-events:none}.spark-one{left:8%;top:32%;font-size:24px}.spark-two{right:4%;top:52%;font-size:33px;animation-delay:1s}.spark-three{left:19%;bottom:15%;font-size:19px;animation-delay:2.5s}
.mirror-reveal{position:absolute;inset:0;opacity:0;transform:scale(.95);transition:opacity 1.1s,transform 1.4s;z-index:3;text-align:center;background:radial-gradient(ellipse at center top,#7b5e8c22,#312144 85%);display:flex;flex-direction:column;justify-content:center;padding:0}.reveal-caption>p{font-size:8px;letter-spacing:1.6px;color:#eed3aa;margin:4px 0 6px}.reveal-caption h2{font-family:var(--serif);font-weight:500;font-style:italic;font-size:42px;line-height:1.03;letter-spacing:-1px;margin:0 0 8px;color:#ffecd0}.reveal-caption>span{font-family:var(--serif);font-size:16px;color:#e0cadf;line-height:1.2;display:block}.magic-flash{position:absolute;inset:0;opacity:0;background:radial-gradient(ellipse,#fff5da,#dca2ed 45%,transparent 75%);z-index:6;pointer-events:none}.mirror[data-state="casting"] .magic-flash{animation:flash 1.9s ease-in-out}.mirror[data-state="casting"] .mirror-idle{opacity:0}.mirror[data-state="casting"] .mirror-frame{animation:frameglow 1.9s ease-in-out}.mirror[data-state="revealed"] .mirror-idle{opacity:0}.mirror[data-state="revealed"] .mirror-reveal{opacity:1;transform:scale(1)}.mirror[data-state="revealed"] .mirror-glass{box-shadow:inset 0 0 30px #23102e,0 0 45px #e6b37c42}.mirror[data-state="revealed"] .mirror-frame{filter:drop-shadow(0 0 10px #d9a44a29) drop-shadow(0 18px 20px #07040b66)}
.page-footer{height:77px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid #c4a77a1a;color:#b4a1bb;font-family:var(--serif);font-style:italic;font-size:16px}.footer-ornament{color:#b49775;letter-spacing:7px;position:absolute;left:50%;transform:translateX(-50%)}.dust{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:-1}.dust i{position:absolute;display:block;width:2px;height:2px;border-radius:100%;background:#e7c790;box-shadow:0 0 9px 2px #e6bb6b30;opacity:0;animation:float 10s linear infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript-message{position:fixed;bottom:0;left:0;right:0;margin:0;padding:12px;text-align:center;color:white;background:#342239;z-index:10}
@keyframes mist{from{transform:translate(-3%,-3%) rotate(-10deg)}to{transform:translate(7%,4%) rotate(15deg)}}@keyframes breathe{0%,100%{opacity:.5;transform:scale(.9)}50%{opacity:1;transform:scale(1.06)}}@keyframes float{0%{transform:translateY(30px);opacity:0}20%,70%{opacity:.6}100%{transform:translateY(-110px);opacity:0}}@keyframes flash{0%{opacity:0;transform:scale(.4)}45%{opacity:.98;transform:scale(1.4)}100%{opacity:0;transform:scale(1.2)}}@keyframes frameglow{50%{filter:drop-shadow(0 0 30px #f0c37899)}}
@media(min-width:1500px){.story{gap:80px}.mirror{width:505px}.invitation{max-width:480px}.page-shell{padding:0 80px}}
@media(max-width:1050px) and (min-width:761px){.page-shell{padding:0 5%}.story{gap:12px;min-height:650px;grid-template-columns:1fr 1fr}.mirror{width:430px;max-width:122%}.eyebrow{font-size:10px;letter-spacing:1.5px}.invitation{max-width:390px}.field-footer{display:block}.text-button{font-size:13px}.intro{font-size:15px}.mirror-idle p{font-size:28px}}
@media(max-width:760px){.scene{background-image:linear-gradient(0deg,#170f26 0%,#170f2670 55%,#170f2644),url('./assets/castle-room.png');background-position:center;background-size:auto 100vh;background-repeat:no-repeat;background-color:#170f26}.page-shell{padding:0 6%}.masthead{height:77px}.wordmark{font-size:11px;letter-spacing:2.3px;gap:8px}.brand-star{font-size:29px}.edition{font-size:15px;max-width:115px;text-align:right;line-height:1.1}.story{display:flex;flex-direction:column;gap:0;min-height:0}.invitation{display:contents}.eyebrow{order:0;font-size:10px;letter-spacing:1.6px;gap:8px;margin:22px 0 15px}.eyebrow span{width:20px}h1{order:1;text-align:center;font-size:69px;line-height:.9;letter-spacing:-1.8px;margin:0}h1 br{display:none}h1 em{display:block;font-size:76px}.intro{order:2;text-align:center;font-size:14px;line-height:1.6;margin:16px 0 0}.desktop-break{display:none}.mirror-section{order:3;align-self:center;width:100%;padding-bottom:21px}.mirror{width:min(100%,390px);margin:-5px 0 -22px}.mirror-idle p{font-size:28px}.mirror-whisper{font-size:17px;margin:-3px 0 0}.replay{bottom:-4px;font-size:13px}#spell-form{order:4;width:100%;max-width:440px;margin-top:12px}.little-secret{order:5;margin:18px 0 36px;font-size:17px}.field-heading{font-size:14px}textarea{font-size:22px;min-height:115px}.field-footer p{font-size:12px}.field-footer .text-button{font-size:12px}.spell-button{font-size:15px}.page-footer{min-height:72px;height:auto;padding:20px 0;align-items:center;font-size:14px}.footer-ornament{display:none}.reveal-caption h2{font-size:37px}.reveal-caption>span{font-size:14px}.reveal-caption>p{font-size:8px;letter-spacing:1px}}
@media(max-width:370px){.masthead{gap:8px}.wordmark{letter-spacing:1.5px;font-size:10px}.edition{font-size:14px}h1{font-size:61px}h1 em{font-size:68px}.mirror{width:330px;max-width:115%}.page-footer>span:first-child{max-width:140px}.field-footer{gap:5px}}
.question-picker{position:relative;margin:0 0 12px}.question-picker select{appearance:none;width:100%;min-height:51px;padding:12px 45px 12px 17px;font:500 15px/1.5 var(--body);border:1px solid #cfae806e;border-radius:9px;color:#f4dfbc;background:#271930;cursor:pointer;text-overflow:ellipsis}.question-picker select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.question-picker option{color:var(--cream);background:#271930}.select-chevron{position:absolute;right:18px;top:8px;font-size:23px;color:var(--gold);pointer-events:none}.reveal-caption #answer-detail{white-space:pre-line}
.mirror-glass{left:13%;right:13%;top:15%;bottom:15.4%}
.field-footer p,.field-footer .text-button{font-size:14px}
.reveal-caption>p{font-size:12px;letter-spacing:1px}
@media(max-width:760px){.masthead{height:65px}.eyebrow,.intro{display:none}h1{font-size:clamp(36px,10.7vw,50px);letter-spacing:-1.2px;line-height:1.1;margin:10px 0 8px;white-space:nowrap}h1 em{display:inline;font-size:inherit}h1 em:before{content:' '}.mirror{width:260px;margin:0 0 -14px}.mirror-section{padding-bottom:25px}.mirror-idle p{font-size:23px;margin:14px 0}.large-spark{font-size:40px}.mirror-whisper{font-size:16px;line-height:1.3;min-height:21px}.reveal-caption>p{font-size:9px;letter-spacing:.5px;margin-top:1px}.reveal-caption h2{font-size:32px;margin-bottom:5px}.reveal-caption>span{font-size:13px}.spark-two{font-size:24px}.spark-one{font-size:18px}#spell-form{margin-top:8px}.field-footer{margin:8px 0 13px}.field-footer p{display:none}.field-footer .text-button{font-size:14px}textarea{min-height:107px;resize:none}.little-secret{margin:14px 0 24px}.replay{bottom:0}.page-footer{padding:14px 0;min-height:60px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.mirror-portrait{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(var(--portrait-scale,1));transform-origin:center 48%}
.mirror-reveal:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 49%,#170e2438 63%,#170e24e6 83%,#170e24 100%);pointer-events:none}
.reveal-caption{position:absolute;left:8%;right:8%;bottom:7%;z-index:1;text-shadow:0 2px 12px #10081c}
.reveal-caption>p{font-size:10px;letter-spacing:1.3px}
.reveal-caption h2{font-size:43px;margin-bottom:5px}
@media(max-width:760px){.reveal-caption{bottom:7%;left:7%;right:7%}.reveal-caption>p{font-size:8px;letter-spacing:.6px;margin:0 0 4px}.reveal-caption h2{font-size:30px;margin-bottom:3px}.reveal-caption>span{font-size:12px}}
