:root{--night-deep:#110d24;--night:#1c1636;--plum:#342a5c;--purple:#9b87c4;--periwinkle:#8aa0d8;--lavender:#cdbdee;--gold:#d8c38a;--gold-light:#ecdfb8;--pastel-pink:#e9c6dc;--pastel-pink-deep:#d9a7c4;--miku-teal:#5fc9c0;--jjk-ink:#201a3a;--text:#ece6fb;--text-soft:#ece6fbb8;--font-display:"Cinzel Decorative", "Georgia", serif;--font-script:"Caveat", cursive;--font-body:"Quicksand", system-ui, sans-serif;--font-serif:"Cormorant Garamond", Georgia, serif;--font-mono:"Share Tech Mono", ui-monospace, monospace;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{font-family:var(--font-body);color:var(--text);background:var(--night)}#root{min-height:100vh}h1,h2,p{margin:0}a{color:inherit}button{font-family:inherit}.app-shell{background:radial-gradient(50% 38% at 18% 8%, #5fc9c029, transparent 70%), radial-gradient(55% 42% at 85% 18%, #e9c6dc29, transparent 70%), radial-gradient(120% 90% at 50% 100%, var(--plum) 0%, var(--night) 55%, var(--night-deep) 100%);min-height:100vh;position:relative;overflow-x:hidden}.app-shell:before{content:"";z-index:0;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='100' viewBox='0 0 56 100'%3E%3Cpath fill='%235fc9c0' fill-opacity='0.12' d='M28 66L0 50L0 16L28 0L56 16L56 50L28 66L28 100' /%3E%3Cpath fill='%23e9c6dc' fill-opacity='0.1' d='M28 0L28 34L0 50L0 84L28 100L56 84L56 50L28 34' /%3E%3C/svg%3E");position:fixed;inset:0}.hazard-bar{z-index:10;background:repeating-linear-gradient(-45deg,#d8c38a73 0 10px,#201a3a80 10px 20px);height:5px;position:relative}.top-nav{z-index:10;justify-content:center;gap:clamp(.5rem,3vw,1.5rem);padding:clamp(1rem,3vw,1.75rem) 1rem 0;display:flex;position:relative}.top-nav__link{font-family:var(--font-display);letter-spacing:.05em;color:var(--text-soft);border:1px solid #0000;border-radius:999px;padding:.5rem 1.1rem;font-size:clamp(.8rem,2vw,1rem);text-decoration:none;transition:border-color .2s,color .2s,background .2s}.top-nav__link:hover{color:var(--text);border-color:#d8c38a59}.top-nav__link.is-active{color:var(--gold-light);background:#d8c38a14;border-color:#d8c38a80;box-shadow:0 0 14px #e9c6dc40}.route-view{z-index:2;position:relative}.sparkles{pointer-events:none;z-index:0;position:fixed;inset:0}.sparkle{background:#cdbdee;border-radius:50%;animation:3.2s ease-in-out infinite twinkle;position:absolute;box-shadow:0 0 6px 1px #cdbdeecc}@keyframes twinkle{0%,to{opacity:.15;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}@media (prefers-reduced-motion:reduce){.sparkle{opacity:.5;animation:none}}.falling-petals{pointer-events:none;z-index:1;position:fixed;inset:0;overflow:hidden}.petal-slot{animation-name:fall;animation-timing-function:linear;animation-iteration-count:infinite;display:block;position:absolute;top:-10%}.petal-flower{opacity:.85;animation:3.6s ease-in-out infinite sway;display:block}@keyframes fall{0%{transform:translateY(-10vh)translate(0)rotate(0)}to{transform:translateY(115vh) translateX(var(--drift,20px)) rotate(340deg)}}@keyframes sway{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}.flower-row{justify-content:center;align-items:flex-end;gap:clamp(.25rem,1.5vw,.75rem);margin-top:clamp(1rem,3vw,1.75rem);display:flex}.flower--front{filter:drop-shadow(0 4px 6px #00000059);animation:4.2s ease-in-out infinite sway}.flower--back{opacity:.75;animation:3.4s ease-in-out infinite reverse sway;transform:translateY(6px)}@media (prefers-reduced-motion:reduce){.petal-slot,.petal-flower,.flower--front,.flower--back{animation:none}}@media (width<=480px){.falling-petals span:nth-child(n+9){display:none}}.fractal-field{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.fractal-field__spiral{position:absolute}.fractal-field__spiral path{fill:none;stroke:currentColor;stroke-width:1px}.intro-screen{z-index:100;appearance:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;cursor:pointer;background:radial-gradient(60% 60%,#241a3d 0%,#0b0917 70%);border:none;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;margin:0;padding:1rem;display:flex;position:fixed;inset:0}.intro-screen:after{content:"";opacity:.6;background:repeating-linear-gradient(-45deg,#d8c38a80 0 10px,#141024e6 10px 20px);height:6px;position:absolute;bottom:0;left:0;right:0}.intro-screen__spiral-wrap{width:min(62vw,260px);height:min(62vw,260px);position:relative}.intro-screen__spiral{filter:drop-shadow(0 0 16px #5fc9c040);width:100%;height:100%}.intro-screen__spiral-track{fill:none;stroke:#ece6fb24;stroke-width:.5px}.intro-screen__spiral-flower{transition:opacity .5s,transform .5s cubic-bezier(.34,1.56,.64,1)}.intro-screen__readout{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.intro-screen__percent{font-family:var(--font-mono);color:var(--gold-light);margin:0;font-size:clamp(1.6rem,6vw,2.4rem)}.intro-screen__hint{font-family:var(--font-body);color:var(--text-soft);opacity:.55;margin:1rem 0 0;font-size:.8rem}.golden-spiral{filter:drop-shadow(0 0 18px #d8c38a33);pointer-events:none;width:min(80vw,620px);height:min(80vw,620px);margin:auto;animation:110s linear infinite spiral-spin;position:absolute;inset:0}.spiral-ring{fill:none;stroke:url(#spiralGold)}.spiral-ring--outer{stroke-width:.5px;opacity:.4}.spiral-ring--dashed{stroke-width:.4px;stroke-dasharray:4 7;opacity:.3;transform-origin:100px 100px;animation:80s linear infinite spiral-spin-reverse}.spiral-tick{stroke:#d8c38a;stroke-width:.7px;opacity:.4}.spiral-path{fill:none;stroke:url(#spiralGold);stroke-width:.6px;stroke-linecap:round;opacity:.65}@keyframes spiral-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spiral-spin-reverse{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}@media (prefers-reduced-motion:reduce){.golden-spiral,.spiral-ring--dashed{animation:none}}.soul-gem-wrapper{justify-content:center;animation:5s ease-in-out infinite gem-float;display:flex}.soul-gem-frame{justify-content:center;display:flex;position:relative}.soul-gem{filter:drop-shadow(0 0 14px #ff8fcda6)drop-shadow(0 0 28px #e979bc59);-webkit-user-select:none;user-select:none;width:clamp(72px,13vw,104px);height:auto;animation:3.2s ease-in-out infinite gem-pulse}.soul-gem-sparkle{pointer-events:none;transform-origin:0 0;transform:rotate(var(--sparkle-angle,0deg)) translateX(var(--sparkle-distance,50%)) scale(.4);opacity:.2;background:radial-gradient(circle,#ffd7ec 0%,#ff8fcd 45%,#ff8fcd00 75%);border-radius:50%;animation:2.4s ease-in-out infinite sparkle-twinkle;position:absolute;top:50%;left:50%;box-shadow:0 0 8px 2px #ff8fcdbf}@keyframes sparkle-twinkle{0%,to{opacity:.15;transform:rotate(var(--sparkle-angle,0deg)) translateX(var(--sparkle-distance,50%)) scale(.4)}50%{opacity:1;transform:rotate(var(--sparkle-angle,0deg)) translateX(calc(var(--sparkle-distance,50%) * 1.12)) scale(1)}}@keyframes gem-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes gem-pulse{0%,to{filter:drop-shadow(0 0 12px #ff8fcd8c)drop-shadow(0 0 22px #e979bc4d)}50%{filter:drop-shadow(0 0 20px #ff8fcdd9)drop-shadow(0 0 36px #e979bc80)}}@media (prefers-reduced-motion:reduce){.soul-gem-wrapper,.soul-gem,.soul-gem-sparkle{animation:none}.soul-gem-sparkle{opacity:.6}}.message-blocks{flex-direction:column;gap:clamp(.9rem,2.5vw,1.4rem);display:flex}.message{font-family:var(--font-body);white-space:pre-line;color:var(--text);margin:0;font-size:clamp(1rem,2.4vw,1.2rem);font-weight:500;line-height:1.75}.message-image{flex-direction:column;align-items:center;gap:.4rem;margin:0;display:flex}.message-image img{border:1px solid #d8c38a59;border-radius:14px;max-width:100%;height:auto;display:block;box-shadow:0 10px 24px #00000059,0 0 18px #d8c38a26}.message-image figcaption{font-family:var(--font-script);color:var(--gold-light);opacity:.85;text-align:center;font-size:clamp(.95rem,2vw,1.1rem)}.bouquet{filter:drop-shadow(0 8px 14px #00000059);justify-content:center;align-items:flex-end;margin-top:clamp(1rem,3vw,1.75rem);display:flex;position:relative}.bouquet__flower{animation:4s ease-in-out infinite bouquet-sway;display:block}.bouquet__flower--main{z-index:2;width:clamp(72px,14vw,104px)}.bouquet__flower--left,.bouquet__flower--right{opacity:.92;width:clamp(44px,9vw,64px);margin-bottom:.5rem}.bouquet__flower--left{margin-right:-.75rem;animation-duration:4.6s;transform:rotate(-12deg)}.bouquet__flower--right{margin-left:-.75rem;animation-duration:3.6s;animation-direction:reverse;transform:rotate(12deg)}.bouquet__ribbon{filter:saturate(.75)brightness(1.05);z-index:3;width:clamp(28px,6vw,38px);position:absolute;bottom:-.6rem;left:50%;transform:translate(-50%)}@keyframes bouquet-sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.bouquet__flower--left{animation-name:bouquet-sway-left}.bouquet__flower--right{animation-name:bouquet-sway-right}@keyframes bouquet-sway-left{0%,to{transform:rotate(-16deg)}50%{transform:rotate(-8deg)}}@keyframes bouquet-sway-right{0%,to{transform:rotate(8deg)}50%{transform:rotate(16deg)}}@media (prefers-reduced-motion:reduce){.bouquet__flower{animation:none}}.stage{z-index:2;text-align:center;flex-direction:column;align-items:center;min-height:calc(100vh - 5rem);padding:clamp(1rem,6vw,3rem) 1.25rem 3rem;display:flex;position:relative}.emblem{justify-content:center;align-items:center;width:100%;height:clamp(120px,22vw,200px);margin-bottom:.5rem;display:flex;position:relative}.eyebrow{font-family:var(--font-script);color:var(--lavender);opacity:.85;margin:.5rem 0 .25rem;font-size:clamp(1.1rem,2.4vw,1.5rem)}.title{font-family:var(--font-display);background:linear-gradient(135deg, #f3ecff, var(--lavender) 45%, var(--gold) 100%);color:#0000;filter:drop-shadow(0 2px 18px #8e7cc359);-webkit-background-clip:text;background-clip:text;max-width:18ch;margin:.25rem 0 clamp(1.5rem,4vw,2.5rem);font-size:clamp(1.9rem,5.5vw,3.4rem);font-weight:700;line-height:1.15}.card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(#342a5c8c,#110d24a6);border:1px solid #d8c38a59;border-radius:22px;width:min(92vw,620px);padding:clamp(1.75rem,5vw,3rem) clamp(1.5rem,5vw,3rem);position:relative;box-shadow:inset 0 0 0 1px #d8c38a14,0 20px 60px #00000073,0 0 40px #8e7cc31a}.card:before{content:"";pointer-events:none;border:1px dashed #d8c38a40;border-radius:16px;position:absolute;inset:8px}.signature{font-family:var(--font-script);color:var(--gold-light);text-align:right;margin:1.25rem 0 0;font-size:clamp(1.3rem,3vw,1.7rem)}.cta-link{font-family:var(--font-body);color:var(--night-deep);background:linear-gradient(135deg, #f3ecff, var(--lavender));border-radius:999px;margin-top:clamp(2rem,5vw,3rem);padding:.75rem 1.5rem;font-size:1rem;font-weight:600;text-decoration:none;transition:transform .2s;box-shadow:0 10px 24px #8e7cc359}.cta-link:hover{transform:translateY(-2px)}.footer{color:var(--text-soft);max-width:32ch;margin-top:clamp(1.5rem,4vw,2.5rem);font-size:.85rem}.footer p{cursor:help;justify-content:center;align-items:center;gap:.4rem;margin:0;display:flex}.footer-icon{object-fit:contain;opacity:.85;filter:drop-shadow(0 0 6px #5fc9c059);flex-shrink:0;width:1.4em;height:1.4em}@media (width<=480px){.title{max-width:14ch}.card{padding:1.5rem 1.25rem}}.gift-card{text-align:center;width:min(100%,240px);color:inherit;background:linear-gradient(#342a5c8c,#110d24a6);border:1px solid #d8c38a4d;border-radius:20px;flex-direction:column;align-items:center;gap:.6rem;padding:1.75rem 1.25rem;text-decoration:none;transition:transform .25s,border-color .25s;display:flex;box-shadow:0 16px 36px #0006}.gift-card:hover{border-color:#d8c38a8c;transform:translateY(-4px)}.gift-card__icon{filter:drop-shadow(0 0 10px #d8c38a66);font-size:2.4rem}.gift-card__title{font-family:var(--font-display);color:var(--gold-light);margin:0;font-size:1.1rem}.gift-card__description{font-family:var(--font-body);color:var(--text-soft);margin:0;font-size:.85rem}.gift-page{z-index:2;text-align:center;flex-direction:column;align-items:center;min-height:calc(100vh - 5rem);padding:clamp(1rem,6vw,3rem) 1.25rem 3rem;display:flex;position:relative}.gift-page .eyebrow{font-family:var(--font-script);color:var(--lavender);opacity:.85;margin:.5rem 0 .25rem;font-size:clamp(1.1rem,2.4vw,1.5rem)}.gift-page .title{font-family:var(--font-display);background:linear-gradient(135deg, #f3ecff, var(--lavender) 45%, var(--gold) 100%);color:#0000;filter:drop-shadow(0 2px 18px #8e7cc359);-webkit-background-clip:text;background-clip:text;margin:.25rem 0 clamp(1.5rem,4vw,2.5rem);font-size:clamp(1.7rem,5vw,2.8rem);font-weight:700}.gift-grid,.book-grid{flex-wrap:wrap;justify-content:center;gap:clamp(1rem,3vw,1.75rem);max-width:900px;display:flex}.back-link{font-family:var(--font-body);color:var(--text-soft);border-bottom:1px dashed #d8c38a66;margin-top:clamp(2rem,5vw,3rem);padding-bottom:2px;font-size:.9rem;text-decoration:none;transition:color .2s}.back-link:hover{color:var(--gold-light)}.book-card{text-align:center;background:linear-gradient(#342a5c8c,#110d24a6);border:1px solid #d8c38a4d;border-radius:18px;flex-direction:column;align-items:center;width:min(100%,260px);padding:1.25rem;display:flex;box-shadow:0 16px 36px #0006}.book-cover{border-radius:8px;width:140px;height:200px;margin-bottom:1rem;overflow:hidden;box-shadow:0 10px 22px #00000073,0 0 16px #d8c38a26}.book-cover img{object-fit:cover;width:100%;height:100%}.book-cover-fallback{background:linear-gradient(160deg, var(--purple), var(--periwinkle));border:1px solid #d8c38a66;flex-direction:column;justify-content:center;align-items:center;gap:.6rem;width:100%;height:100%;padding:1rem;display:flex}.book-cover-fallback__title{font-family:var(--font-serif);color:#fff;font-size:1.1rem;font-style:italic;font-weight:600;line-height:1.2}.book-cover-fallback__author{font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:#fffc;font-size:.75rem}.book-title{font-family:var(--font-serif);color:var(--gold-light);margin:0;font-size:1.2rem;font-style:italic}.book-author{font-family:var(--font-body);color:var(--text-soft);margin:.2rem 0 .6rem;font-size:.85rem}.book-note{font-family:var(--font-script);color:var(--text-soft);margin:0 0 .9rem;font-size:1.1rem}.book-downloads{flex-direction:column;gap:.5rem;width:100%;margin-top:auto;display:flex}.book-download{font-family:var(--font-body);color:var(--night-deep);cursor:pointer;background:linear-gradient(135deg,#ecdfb8,#d8c38a);border:none;border-radius:999px;margin-top:auto;padding:.5rem 1.2rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:transform .2s}.book-download:hover{transform:translateY(-2px)}.book-download--disabled{color:var(--text-soft);cursor:help;background:#ece6fb1f}.book-download--disabled:hover{transform:none}.playlist-section{text-align:center;width:min(92vw,760px);margin:0 auto}.playlist-section__title{font-family:var(--font-display);background:linear-gradient(135deg, #f3ecff, var(--lavender) 45%, var(--purple) 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 .5rem;font-size:clamp(1.4rem,4vw,2rem)}.playlist-section__description{font-family:var(--font-script);color:var(--text-soft);margin:0 0 1.75rem;font-size:clamp(1.1rem,2.5vw,1.4rem)}.playlist-section__action{margin:1.5rem 0 2rem}.playlist-section__youtube-btn{font-family:var(--font-display);color:#fff;cursor:pointer;background:linear-gradient(135deg,red,#c41e3a);border:none;border-radius:25px;padding:.75rem 1.5rem;font-size:clamp(1rem,2vw,1.2rem);text-decoration:none;transition:transform .2s,box-shadow .2s;display:inline-block;box-shadow:0 4px 15px #ff00004d}.playlist-section__youtube-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #f006}.playlist-section__youtube-btn:active{transform:translateY(0)}.playlist-section__songs{flex-direction:column;gap:1.25rem;display:flex}.song-card{background:linear-gradient(#342a5c80,#110d2499);border:1px solid #d8c38a4d;border-radius:18px;flex-direction:column;gap:.75rem;padding:1.25rem;display:flex;box-shadow:0 12px 28px #00000059}.song-card__header{text-align:left}.song-card__title{font-family:var(--font-serif);color:var(--gold-light);margin:0;font-size:1.2rem;font-style:italic}.song-card__artist{font-family:var(--font-body);color:var(--text-soft);margin:.15rem 0 0;font-size:.85rem}.song-card__embed{border-radius:12px;width:100%;overflow:hidden}.song-card__embed--spotify iframe,.song-card__embed.song-card__embed--spotify{width:100%}.song-card__embed--youtube{aspect-ratio:16/9;position:relative}.song-card__embed--youtube iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.song-card__placeholder{height:96px;color:var(--text-soft);font-family:var(--font-body);cursor:help;text-align:center;border:1px dashed #d8c38a66;border-radius:12px;justify-content:center;align-items:center;padding:0 1rem;font-size:.9rem;display:flex}.song-card__note{font-family:var(--font-script);color:var(--text);text-align:left;margin:0;font-size:1.15rem;line-height:1.4}
