:root{color-scheme:dark;--bg:#0b0b1c;--ink:#f5eee6;--muted:#bdb7ce;--gold:#e9c89e;--line:#c5b7ec2e;--panel:#141329;--ease:cubic-bezier(.2,.7,.2,1)}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{margin:0;color:var(--ink);font:16px/1.65 'Segoe UI',Arial,sans-serif;min-height:100svh;overflow-x:hidden}button,a,input{touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit;border:1px solid var(--line);background:#ffffff06;border-radius:999px;padding:10px 20px;min-height:46px;transition:background .25s,transform .25s,border-color .25s}button:hover{background:#ffffff10;border-color:#e9c89e88}button:active{transform:scale(.97)}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:6px}a{color:var(--gold)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400;line-height:1.1}h1{font-size:clamp(3.1rem,6.5vw,6.1rem);letter-spacing:-.045em}h2{font-size:clamp(2.4rem,5vw,4.6rem);letter-spacing:-.035em}h3{font-size:1.75rem}p{color:var(--muted)}button.primary{background:var(--gold);border-color:var(--gold);color:#191525;padding:15px 27px;box-shadow:0 5px 35px #e6b88912}button.primary:hover{background:#f7dfc1}button.text-button{border-color:transparent;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:22px}.small{font-size:13px}.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}.skip{position:fixed;top:-100px;z-index:10;background:var(--panel);padding:12px}.skip:focus{top:12px}.noscript{position:fixed;inset:20%;background:var(--panel);padding:30px;z-index:8}
#sky{position:fixed;inset:0;width:100%;height:100%;z-index:-2}.nebula{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 75% 35%,#51427525,transparent 46%),radial-gradient(ellipse at 22% 90%,#302b6925,transparent 50%);transition:background 1s}.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:25px 4.5vw;border-bottom:1px solid #ffffff08}.brand{font-size:11px;letter-spacing:.23em;text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:12px}.brand span{font-size:30px;color:var(--gold)}.tools{display:flex;gap:10px}.tools button{font-size:12px}.tools span{font-size:18px;margin-left:7px}
main{max-width:1280px;margin:auto;padding:48px 5vw 40px;min-height:calc(100svh - 170px);display:flex;flex-direction:column;justify-content:center}main:focus{outline:none}.scene-inner{animation:arrive .8s var(--ease) both}.intro{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:35px}.intro h1 em{display:block;font-weight:400;color:var(--gold)}.intro .lead{font-size:17px;max-width:450px;margin-top:25px}.intro .invitation{margin-top:13px;color:var(--ink);font-size:14px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:30px}.quote{margin-top:30px;max-width:410px;padding-left:18px;border-left:1px solid #e9c89e50;font:italic 16px/1.7 Georgia,serif;color:var(--muted)}.orbital{height:450px;position:relative;display:grid;place-items:center;isolation:isolate}.orbital:before,.orbital:after{content:'';position:absolute;width:92%;aspect-ratio:1;border:1px solid #b8a3dd25;border-radius:50%;transform:rotate(-28deg) scaleY(.64)}.orbital:after{width:70%;transform:rotate(48deg) scaleY(.75)}.globe{width:235px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 29% 25%,#a4a1d4 0%,#525579 22%,#272943 43%,#14152a 66%,#080916 82%);box-shadow:inset 5px 3px 15px #d9c6ff4a,0 0 80px #7670b126,0 0 150px #625b8b15;position:relative;animation:float 8s ease-in-out infinite}.globe:after{content:'';position:absolute;inset:0;border-radius:50%;background:repeating-linear-gradient(150deg,transparent 0 18px,#ffffff03 24px,transparent 32px);box-shadow:inset -28px -25px 30px #02020b90}.satellite{width:45px;aspect-ratio:1;border-radius:50%;position:absolute;right:12%;top:20%;background:radial-gradient(circle at 30% 25%,#e5d1bb,#83728f 42%,#1b1a30 78%);box-shadow:0 0 30px #d6b0a22b}.star-cross{color:var(--gold);font-size:32px;position:absolute;left:14%;top:32%;text-shadow:0 0 25px #f4d5b6}.orbit-caption{position:absolute;bottom:18px;text-align:center;font-size:10px;letter-spacing:.25em;color:var(--muted)}.orbit-date{position:absolute;left:5%;bottom:26%;font:italic 16px Georgia;color:var(--gold)}.micro{margin-top:18px;font-size:11px;letter-spacing:.13em;color:#aaa2ba}.bottom{max-width:1440px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 4.5vw 26px;font-size:10px;letter-spacing:.13em;color:var(--muted)}#chapters{display:flex;gap:8px}#chapters button{min-width:36px;min-height:36px;width:36px;height:36px;padding:0;border:0;position:relative}#chapters button:after{content:'';width:5px;height:5px;border-radius:50%;background:#807591;position:absolute;inset:0;margin:auto}#chapters button[aria-current="step"]:after{background:var(--gold);box-shadow:0 0 14px var(--gold)}#chapters button[aria-current="step"]{border:1px solid #e9c89e50}.center{text-align:center}.scene-heading{max-width:790px;margin:0 auto 30px}.scene-heading p:not(.eyebrow){margin:18px auto 0;max-width:620px}.scene-nav{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:30px}.scene-nav .small{color:var(--muted)}
.portals{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;max-width:900px;margin:30px auto 0}.portal{border-radius:180px 180px 12px 12px;min-height:285px;padding:32px 20px 22px;background:linear-gradient(180deg,#8d6faa16,#17132688);position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:end}.portal:before{content:'';position:absolute;inset:10px;border:1px solid #d6c0f22a;border-radius:inherit;pointer-events:none}.portal .portal-symbol{font:80px Georgia;color:#d0bce6;line-height:1;margin-bottom:30px;text-shadow:0 0 40px #aa7bff88}.portal h3{font-size:1.5rem}.portal p{font-size:12px;margin:10px 0}.portal.embrace{background:radial-gradient(ellipse at 50% 35%,#ce8e9a25,#1d142688 70%)}.portal.dream{background:radial-gradient(ellipse at 50% 35%,#c9af7d25,#19172488 70%)}.visited{color:var(--gold);font-size:11px;min-height:18px}.portal:hover{transform:translateY(-5px);box-shadow:0 0 40px #b69bd214}.portal.selected{border-color:var(--gold)}
.constellation{position:relative;max-width:870px;height:290px;margin:auto}.constellation svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.constellation path{stroke:#ad9dcb55;stroke-width:1;fill:none;stroke-dasharray:4 9}.star-btn{position:absolute;border:0;background:none;padding:10px;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;min-width:120px}.star-btn:nth-of-type(1){left:18%;top:65%}.star-btn:nth-of-type(2){left:50%;top:28%}.star-btn:nth-of-type(3){left:82%;top:65%}.star-btn span{font-size:40px;line-height:1.4;color:var(--gold);filter:drop-shadow(0 0 12px #e9c89e99)}.star-btn strong{font-weight:400;font-size:13px}.star-btn small{color:var(--muted);font-size:10px;letter-spacing:.12em}.star-btn:hover,.star-btn:active{transform:translate(-50%,-50%) scale(1.08);background:none}.star-btn.seen span{color:white;filter:drop-shadow(0 0 20px white)}.unlock{margin:auto;text-align:center;min-height:56px}.memory-art{min-height:150px;border-radius:10px;border:1px solid var(--line);display:grid;place-items:center;margin:24px 0;background:radial-gradient(ellipse,#5a45783b,transparent 70%)}.memory-art span{font:80px Georgia;color:var(--gold);text-shadow:0 0 40px #bfb0e77a}.memory-photo{width:100%;max-height:330px;object-fit:contain;margin:24px 0;border:8px solid #f2e6d6;border-bottom-width:24px;transform:rotate(-1deg);background:#151326}.memory-text{white-space:pre-line}.promise{font:italic 25px/1.5 Georgia;color:var(--gold);margin:24px 0}.typing{animation:arrive 1.5s both}.burst{position:absolute;font-size:18px;color:var(--gold);animation:burst .9s ease-out forwards;pointer-events:none}
.worlds{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:25px}.worlds button[aria-pressed="true"]{background:#e9c89e18;border-color:var(--gold);color:var(--gold)}.world-frame{display:grid;grid-template-columns:1fr 1.05fr;gap:36px;align-items:center;max-width:980px;margin:auto;text-align:left}.landscape{height:260px;border:1px solid var(--line);border-radius:130px 130px 8px 8px;position:relative;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 30%,#7b53885c,#13152c)}.landscape:before{content:'';position:absolute;width:70px;height:70px;border-radius:50%;background:#e9c89e;box-shadow:0 0 60px #e9c89e4a;top:42px;left:calc(50% - 35px)}.paris:after{content:'';position:absolute;inset:45% 0 0;background:linear-gradient(90deg,#121322,#252336,#121322);clip-path:polygon(0 50%,12% 50%,12% 35%,23% 35%,23% 60%,38% 60%,48% 25%,49% 0,51% 0,52% 25%,62% 60%,74% 60%,74% 40%,88% 40%,88% 55%,100% 55%,100% 100%,0 100%)}.sea{background:linear-gradient(#413454,#a26f7b 65%,#35334b 65%,#141e36)}.sea:after{content:'';position:absolute;inset:67% 0 0;background:repeating-linear-gradient(174deg,transparent 0 12px,#eac8aa35 13px,transparent 14px);animation:float 7s infinite}.real:before{width:18px;height:18px;left:30%;top:45%;background:#f4dabe;box-shadow:120px 0 0 #c1b6ef,0 0 50px #fff,120px 0 45px #c1b6ef;animation:reunion 6s infinite}.real:after{content:'';height:1px;background:linear-gradient(90deg,transparent,#e9c89e,transparent);width:65%;position:absolute;top:49%;left:18%}.world-copy p{margin-top:18px}.converge{margin:25px auto 0;color:var(--gold);max-width:680px;font:italic 21px/1.5 Georgia}
.bridge{position:relative;display:flex;justify-content:space-between;align-items:center;max-width:650px;margin:40px auto 30px;padding:0 25px}.bridge:before{content:'';height:1px;position:absolute;left:14%;right:14%;top:45%;background:linear-gradient(90deg,#9c91d1,var(--gold),#9c91d1);box-shadow:0 0 17px #e9c89e;animation:illuminate 4s infinite alternate}.planet-wrap{position:relative;text-align:center}.planet{width:130px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 28% 23%,#e2bd9c,#8a607e 34%,#17172c 72%);box-shadow:0 0 40px #d5ab941f;animation:float 8s infinite}.planet.france{background:radial-gradient(circle at 28% 23%,#bdb8e9,#5b628c 35%,#11142a 72%);animation-delay:-4s}.planet-wrap span{display:block;margin-top:15px;letter-spacing:.2em;text-transform:uppercase;font-size:11px}.year{font:52px Georgia;color:var(--gold);position:relative;background:#0e0d1dcc;padding:10px}.horizon{font-size:11px;text-transform:uppercase;letter-spacing:.22em;color:var(--gold)}.journey-note{max-width:560px;margin:18px auto 0;font-size:12px}.envelope{max-width:380px;height:215px;margin:35px auto;position:relative;border:1px solid #e9c89e66;background:linear-gradient(145deg,#453545,#1d1a2c);display:grid;place-items:center;box-shadow:0 20px 80px #0004;animation:float 7s infinite}.envelope:before{content:'';position:absolute;inset:0;background:#e9c89e0b;clip-path:polygon(0 0,100% 0,50% 62%)}.seal{border:1px solid var(--gold);border-radius:50%;width:55px;height:55px;display:grid;place-items:center;color:var(--gold);font:28px Georgia;background:#382936;z-index:1}.letter{max-width:700px;margin:0 auto;background:linear-gradient(145deg,#f3e9dc,#d7c4b4);color:#322735;padding:clamp(24px,5vw,60px);border-radius:3px;text-align:left;box-shadow:0 25px 90px #0005}.letter h3{color:#5b3a50;margin-bottom:24px}.letter p{color:#46394a;white-space:pre-line;font:18px/1.85 Georgia}.letter .signature{margin-top:25px;color:#6b4b5a;font-style:italic}.letter .audio-box{color:#332839;border-color:#56415340;background:#ffffff22}.letter .audio-box p,.letter summary{color:#4c3c50}.letter button{color:#3c2f40;border-color:#58424f66}.finale h2{color:var(--gold);margin:20px 0}.finale .promise{max-width:650px;margin:20px auto}.finale .bridge{max-width:420px}.finale .planet{width:70px}.finale .year{font-size:28px}.date-mark{font:24px Georgia;color:var(--gold)}
dialog{background:#141326;color:var(--ink);border:1px solid #b1a0ce45;border-radius:18px;padding:40px;width:min(620px,calc(100vw - 28px));max-height:88svh;overflow-y:auto;box-shadow:0 35px 140px #0009}dialog::backdrop{background:#050510c7;backdrop-filter:blur(8px)}dialog h2{font-size:2.2rem;margin:15px 0 22px}dialog p{margin:15px 0}dialog .close{position:sticky;top:0;float:right;width:44px;height:44px;padding:0;background:#201d34;font-size:25px;z-index:2}dialog .eyebrow{margin-top:0}.audio-box{border:1px solid var(--line);background:#ffffff03;padding:18px;border-radius:12px;margin-top:22px;text-align:left}.audio-box .audio-label{font-size:12px;letter-spacing:.08em;margin:0 0 10px;color:var(--gold)}.audio-box audio{width:100%;height:42px;display:block;margin:12px 0}.audio-box .status{font-size:12px;margin:8px 0}.audio-box button{font-size:12px;padding:7px 15px}.audio-box label{display:flex;align-items:center;gap:10px;font-size:12px;margin:12px 0}input[type="range"]{accent-color:var(--gold);max-width:100%;min-height:30px}details{margin-top:14px}summary{cursor:pointer;color:var(--muted);font-size:13px;padding:6px 0}details p{font-size:14px;white-space:pre-line}.settings-row{margin:22px 0;padding-bottom:20px;border-bottom:1px solid var(--line)}.settings-row label{display:flex;align-items:center;gap:12px;margin:12px 0}.settings-row input[type="checkbox"]{width:20px;height:20px;accent-color:var(--gold)}.settings-row button{margin-top:10px}.music-state{font-size:12px;min-height:22px}.joined-lights{height:100px;position:relative;margin:20px auto}.joined-lights:before,.joined-lights:after{content:'';position:absolute;top:40px;left:28%;width:16px;height:16px;border-radius:50%;background:var(--gold);box-shadow:0 0 45px var(--gold);animation:near 5s infinite alternate}.joined-lights:after{left:auto;right:28%;background:#c7b9e4;animation-name:near-right}.replay-promise{margin-bottom:15px}
@keyframes arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes float{50%{transform:translateY(-10px)}}@keyframes illuminate{from{opacity:.35;transform:scaleX(.7)}to{opacity:1;transform:scaleX(1)}}@keyframes near{to{left:44%}}@keyframes near-right{to{right:44%}}@keyframes reunion{50%{box-shadow:45px 0 0 #c1b6ef,0 0 50px #fff,45px 0 45px #c1b6ef;transform:translateX(20px)}}@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(80deg);opacity:0}}
body.reduced *,body.reduced *:before,body.reduced *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:760px){.topbar{padding:16px 20px;gap:8px}.brand{font-size:9px;letter-spacing:.12em}.brand span{font-size:23px}.tools{gap:5px}.tools button{font-size:11px;padding:8px 11px}.tools span{display:none}.intro{grid-template-columns:1fr;gap:10px;text-align:center}.intro .lead,.quote{margin-left:auto;margin-right:auto}.intro .actions{justify-content:center}.intro .eyebrow{margin-bottom:16px}.orbital{height:280px;grid-row:1}.globe{width:155px}.satellite{width:30px;right:18%}.orbital:before{width:75%}.orbital:after{width:60%}.orbit-caption{bottom:4px}.orbit-date{left:14%;bottom:23%;font-size:13px}.star-cross{left:22%}main{padding:30px 22px;min-height:calc(100svh - 155px)}h1{font-size:3.4rem}.intro .lead{font-size:15px;max-width:400px}.quote{font-size:14px;max-width:340px}.bottom{padding:18px 22px;flex-wrap:wrap;justify-content:center;gap:10px}#chapter-label{width:100%;text-align:center}.footer-note{display:none}.portals{gap:12px}.portal{min-height:230px;padding:22px 10px 15px}.portal h3{font-size:1.15rem}.portal p{font-size:11px}.portal .portal-symbol{font-size:50px}.world-frame{grid-template-columns:1fr;gap:22px}.landscape{height:210px;max-width:440px;width:100%;margin:auto}.world-copy{text-align:center}.bridge{padding:0;max-width:440px}.planet{width:95px}.year{font-size:37px}.scene-nav{flex-wrap:wrap}.scene-nav .small{display:none}.constellation{height:270px}.star-btn{min-width:100px}.star-btn:nth-of-type(1){left:16%;top:65%}.star-btn:nth-of-type(3){left:84%;top:65%}.star-btn strong{font-size:11px}.star-btn small{font-size:9px}dialog{padding:25px}.letter p{font-size:17px}}
@media(max-width:420px){.brand{max-width:110px;line-height:1.3}.tools button{padding:7px 9px}.portals{gap:9px}.portal{min-height:215px}.portal h3{font-size:1rem}.portal p{font-size:10px;line-height:1.5}.scene-nav button{font-size:13px;padding:12px 17px}.planet{width:78px}.year{font-size:30px}.worlds button{font-size:12px}.star-btn{min-width:90px}.star-btn strong{font-size:10px}.intro .actions{flex-direction:column}h1{font-size:2.9rem}}

@media(max-width:760px){.topbar{flex-wrap:wrap}.tools{flex-wrap:wrap;justify-content:center}.tools button{min-height:44px}}
