:root{--night:#080e1b;--night2:#0d1830;--blue:#83a9ed;--ice:#dceaff;--paper:#f8faff;--ink:#f4f7ff;--muted:#b4c2de;--line:rgba(180,207,255,.22)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night);color:var(--ink);font:400 16px/1.65 'DM Sans',system-ui,sans-serif;overflow-x:hidden}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #dceaff;outline-offset:5px}::selection{background:#8db5ff;color:#081125}.wrap{width:min(100% - 64px,1240px);margin-inline:auto}.page-glow{position:absolute;z-index:-1;inset:0 0 auto;height:970px;background:radial-gradient(circle at 73% 25%,#31518c42,transparent 36%),radial-gradient(circle at 12% 72%,#183c7430,transparent 35%);pointer-events:none}.progress{position:fixed;z-index:50;top:0;left:0;right:0;height:3px;pointer-events:none}.progress span{display:block;width:0;height:100%;background:#b9d4ff;box-shadow:0 0 14px #91baff}
.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative;z-index:5}.brand{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:22px;letter-spacing:-.04em;color:#f2f5ff}.brand>span{margin-left:7px}.brand:first-letter{color:#a9c7ff}.top-date{color:#acc2e8;text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:700}.top-date i,.footer i{font-style:normal;color:#b9d4ff;margin:0 9px}
.hero{min-height:calc(100svh - 92px);min-height:max(680px,calc(100svh - 92px));display:grid;grid-template-columns:minmax(0,1.09fr) minmax(0,.91fr);align-items:center;gap:30px;position:relative;padding-block:40px 100px;isolation:isolate}.hero:before{content:'';position:absolute;z-index:-2;inset:0 -15vw 0 -15vw;background:linear-gradient(110deg,#080e1b 6%,#0b1933 55%,#08101f 100%)}.stars{position:absolute;inset:0 -8vw;z-index:-1;overflow:hidden;pointer-events:none}.star-point{position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);border-radius:50%;background:#e5efff;box-shadow:0 0 10px #afc8ff;opacity:var(--o);animation:twinkle var(--d) ease-in-out infinite alternate;animation-delay:var(--delay)}@keyframes twinkle{to{opacity:.25;transform:scale(.65)}}.hero-copy{position:relative;z-index:3;padding-bottom:32px}.eyebrow,.section-index{color:#b8ccf1;letter-spacing:.23em;text-transform:uppercase;font-size:11px;font-weight:700}.eyebrow{display:flex;align-items:center;gap:14px}.eyebrow-line{width:38px;height:1px;background:#9bbbef}.hero-prelude{color:#e2ecff;margin:30px 0 11px;font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:22px}.hero h1,h2,h3{font-family:'Playfair Display',Georgia,serif;font-weight:500}.hero h1{font-size:clamp(58px,6.6vw,104px);line-height:1.03;letter-spacing:-.065em;margin:0 0 27px}.hero h1 em,h2 em{font-weight:500;color:#a8c9ff}.hero-intro{font-size:17px;line-height:1.85;color:#c4d0e7;max-width:460px;margin:0 0 30px}.hero-actions{display:flex;align-items:center;gap:26px;flex-wrap:wrap}.primary-button{border:1px solid #eaf2ff;border-radius:100px;background:#eaf2ff;color:#0e1d36;font-weight:700;padding:14px 21px;display:inline-flex;align-items:center;gap:24px;min-height:55px;box-shadow:0 12px 30px #02091850;transition:transform .2s,background .2s,box-shadow .2s}.primary-button:hover{transform:translateY(-3px);background:white;box-shadow:0 17px 35px #02091888}.primary-button span{font-size:19px}.text-link{font-size:13px;font-weight:700;color:#d4e2fc;border-bottom:1px solid #8da9d8;padding-bottom:6px}.text-link span{margin-left:9px}.scroll-cue{position:absolute;left:0;bottom:34px;font-size:10px;letter-spacing:.22em;font-weight:700;color:#95acd5}.scroll-cue span{margin-left:15px;font-size:16px}
.hero-visual{min-height:610px;position:relative;display:grid;place-items:center;perspective:900px}.portrait-halo{position:absolute;width:min(83%,480px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#4770ae66,#23437938 46%,transparent 72%);filter:blur(17px);left:51%;top:46%;transform:translate(-50%,-50%)}.orbit{position:absolute;border:1px solid #91b2e545;border-radius:50%;pointer-events:none}.orbit-a{width:95%;height:83%;transform:rotate(-23deg)}.orbit-b{width:78%;height:102%;transform:rotate(34deg);opacity:.45}.portrait-main{position:relative;width:min(76%,405px);height:540px;margin:0 0 0 8%;border:9px solid #dce9ff;background:#142744;border-radius:205px 205px 16px 16px;box-shadow:0 22px 70px #0009,0 0 0 1px #93b7ee60;overflow:hidden;transform:rotate(3deg)}.portrait-main:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#0a1a36c0,transparent 34%);pointer-events:none}.portrait-main img,.portrait-mini img,.film-photo img{display:block;width:100%;height:100%;object-fit:cover}.portrait-main img{object-position:68% 38%;filter:saturate(.85) contrast(1.06)}.portrait-main figcaption{position:absolute;z-index:1;bottom:17px;left:20px;right:20px;font-family:'Playfair Display',Georgia,serif;font-size:20px;font-style:italic;color:white}.portrait-main figcaption span{float:right;color:#bed5ff}.portrait-mini{position:absolute;width:135px;height:176px;left:0;bottom:10px;margin:0;padding:6px 6px 20px;background:#f2f6ff;color:#1a2e51;transform:rotate(-11deg);box-shadow:0 16px 30px #0008;z-index:2}.portrait-mini img{object-position:70% 38%;filter:saturate(.75)}.portrait-mini figcaption{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:9px;text-align:center;line-height:1.5;padding-top:2px}.visual-star{position:absolute;color:#e3edff;text-shadow:0 0 20px #d6e5ff}.star-one{right:3%;top:9%;font-size:46px}.star-two{left:5%;top:13%;font-size:32px;color:#8fb8ff}
.ticker{position:relative;z-index:3;overflow:hidden;white-space:nowrap;border-block:1px solid #678dc85c;background:#13294f;color:#e4eeff;transform:rotate(-1deg) scale(1.02);padding:13px 0;box-shadow:0 12px 25px #0004}.ticker-inner{display:flex;width:max-content;gap:0;animation:marquee 32s linear infinite}.ticker span{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:16px;letter-spacing:.12em;padding-right:20px}@keyframes marquee{to{transform:translateX(-50%)}}
.notes-section{background:#eef4ff;color:#172a4b;padding:115px 0 125px;position:relative}.notes-section:before{content:'';position:absolute;right:8%;top:25px;width:240px;height:240px;border-radius:50%;background:#d6e6ff70;filter:blur(28px)}.section-top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid currentColor;padding-bottom:16px;opacity:.8}.notes-section .section-index,.photo-section .section-index{color:#5675a2}.section-asterisk{font-size:26px;line-height:1;color:#678abf}.notes-head,.photo-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin:45px 0 51px}.notes-head h2,.photo-heading h2,.world-copy h2,.letter-copy h2{font-size:clamp(43px,5vw,74px);letter-spacing:-.057em;line-height:1.12;margin:0}.notes-head h2 em,.photo-heading h2 em{color:#456fae}.notes-head p,.photo-heading p{max-width:255px;color:#637797;font-size:15px;margin:0 0 7px;line-height:1.8}.note-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.note-card{min-height:337px;display:flex;flex-direction:column;padding:27px 27px 25px;border:1px solid #cfddf1;border-radius:16px;background:#f9fbff;box-shadow:0 15px 26px #47668d12;transition:transform .25s,box-shadow .25s}.note-card:nth-child(2){background:#dae8ff}.note-card:hover{transform:translateY(-5px);box-shadow:0 21px 35px #47668d22}.note-no{font-size:11px;font-weight:700;letter-spacing:.2em;color:#6a87ae}.note-symbol{font-size:37px;color:#5b85c4;margin:18px 0 5px;line-height:1}.note-card h3{font-size:27px;line-height:1.18;letter-spacing:-.03em;margin:8px 0 10px}.note-card p{font-size:14px;line-height:1.7;color:#607392;margin:0 0 20px}.note-card .note-detail{color:#274670;font-weight:500}.note-button{align-self:flex-start;margin-top:auto;background:transparent;border:0;border-bottom:1px solid #315b95;color:#254b83;font-weight:700;font-size:13px;padding:6px 0}.note-button span{margin-left:16px}
.small-world{background:radial-gradient(circle at 76% 47%,#294d86 0%,#102447 31%,#0b172e 78%);border-radius:34px 34px 0 0;margin-top:-30px;position:relative;z-index:2;overflow:hidden}.world-grid{min-height:650px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:55px}.world-copy{padding:90px 0}.world-copy h2{margin:25px 0}.world-copy p{font-size:17px;color:#c3d2eb;max-width:440px;line-height:1.9}.world-tags{display:flex;gap:9px;flex-wrap:wrap;margin-top:30px}.world-tags span{border:1px solid #b8d2ff69;border-radius:100px;padding:7px 13px;font-size:12px;color:#d7e5ff}.world-art{position:relative;align-self:end;display:grid;place-items:end center;min-height:570px}.moon-glow{position:absolute;width:80%;aspect-ratio:1;border-radius:50%;left:50%;top:42%;transform:translate(-50%,-50%);background:radial-gradient(circle,#c0d9ff33 0%,#6c9cdd22 42%,transparent 72%)}.world-art img{position:relative;z-index:2;width:min(100%,530px);height:auto;filter:drop-shadow(0 27px 17px #02081199)}.world-spark{position:absolute;z-index:1;color:#c9ddff}.world-spark.one{font-size:46px;top:5%;right:10%}.world-spark.two{font-size:28px;top:26%;left:4%}.world-caption{position:absolute;z-index:3;bottom:27px;right:0;font-family:'Playfair Display',Georgia,serif;font-style:italic;color:#d7e4fa;font-size:16px;text-shadow:0 2px 10px #000}
.photo-section{padding-block:115px 130px}.photo-heading p{color:#a8bad8}.photo-heading h2 em{color:#a9c9ff}.film-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;align-items:start}.film-strip figure{min-width:0;margin:0;background:#e8f1ff;padding:12px 12px 42px;color:#1c3151;box-shadow:0 16px 35px #0005;transform:rotate(-2deg)}.film-strip figure:nth-child(2){transform:translateY(25px) rotate(2deg)}.film-strip figure:nth-child(3){transform:rotate(-1deg)}.film-photo{height:355px;overflow:hidden;background:#1d2940}.film-photo img{object-position:68% 38%;filter:saturate(.85)}.film-strip figure:nth-child(3) img{object-position:center 45%}.film-strip figcaption{font-family:'Playfair Display',Georgia,serif;font-size:17px;font-style:italic;padding:11px 5px 0}
.letter-section{background:#eaf2ff;color:#182b4a;border-radius:38px 38px 0 0;position:relative;overflow:hidden}.letter-section:before{content:'✧';position:absolute;right:3%;top:-10px;color:#c4dafa;font-size:330px;line-height:1}.letter-grid{min-height:590px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:40px}.letter-copy{position:relative;z-index:2;padding-block:90px}.letter-copy .section-index{color:#5f80b0}.letter-copy h2{margin:25px 0}.letter-copy h2 em{color:#426da9}.letter-copy p{max-width:390px;color:#637797;font-size:17px;line-height:1.8;margin:0 0 30px}.letter-copy .primary-button{background:#142b51;color:#fff;border-color:#142b51}.letter-copy .primary-button:hover{background:#244a7c}.envelope-preview{width:min(100%,490px);height:330px;position:relative;margin:auto;filter:drop-shadow(0 26px 28px #36527e37);transform:rotate(5deg)}.envelope-back,.envelope-front,.envelope-flap{position:absolute;left:0;right:0;bottom:0;height:250px}.envelope-back{background:#8baad7;border-radius:12px}.envelope-paper{position:absolute;z-index:1;left:13%;width:74%;height:265px;bottom:57px;background:#fffefa;border-radius:5px;padding:35px 23px;box-shadow:0 2px 7px #253e6c33;transform:rotate(-3deg);display:flex;flex-direction:column;justify-content:space-between}.envelope-paper span{color:#567296;font-size:12px}.envelope-paper strong{font-family:'Playfair Display',Georgia,serif;font-size:27px;font-weight:500;font-style:italic;color:#294f85}.envelope-front{z-index:2;background:#b8d1f0;clip-path:polygon(0 0,50% 50%,100% 0,100% 100%,0 100%);border-radius:0 0 12px 12px}.envelope-flap{z-index:3;background:#d4e4f9;clip-path:polygon(0 0,100% 0,50% 58%);border-radius:12px 12px 0 0}.envelope-seal{position:absolute;z-index:4;bottom:113px;left:calc(50% - 22px);width:44px;height:44px;border-radius:50%;background:#315b9a;color:#fff;display:grid;place-items:center;font-size:24px;box-shadow:0 3px 10px #45658e66}
.footer{min-height:115px;display:flex;align-items:center;justify-content:space-between;gap:20px;color:#9fb6d9;font-size:13px;border-top:1px solid #90b3ec27}.footer span:last-child{text-align:right}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.music-player{position:fixed;z-index:30;right:clamp(14px,2.6vw,34px);bottom:calc(16px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:11px;width:225px;min-height:63px;padding:8px 12px 8px 8px;border:1px solid #a7c5f16b;border-radius:16px;background:#11264ce8;color:#f5f8ff;box-shadow:0 14px 36px #02081599;backdrop-filter:blur(16px)}.music-toggle{display:grid;place-items:center;flex:none;width:45px;height:45px;border:0;border-radius:11px;background:#dceaff;color:#152d54;font-size:19px;font-weight:700;line-height:1;transition:transform .2s,background .2s}.music-toggle:hover{transform:scale(1.06);background:#fff}.music-info{min-width:0;flex:1}.music-info strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:'Playfair Display',Georgia,serif;font-size:15px;line-height:1.2;font-weight:600}.music-info small{display:block;color:#b4c8eb;font-size:11px;line-height:1.35;margin-top:3px}.music-progress{height:3px;margin-top:6px;border-radius:3px;background:#6987b478;overflow:hidden}.music-progress span{display:block;width:0;height:100%;background:#dceaff;transition:width .2s linear}.music-player.is-playing .music-toggle{background:#a9caff}
dialog{padding:0;border:0;border-radius:19px;width:min(700px,calc(100vw - 22px));max-height:min(94svh,970px);overflow:auto;background:#0b1930;color:#f7faff;box-shadow:0 30px 85px #000b}dialog::backdrop{background:#030916c9;backdrop-filter:blur(8px)}.dialog-content{position:relative;padding:26px 24px 35px;min-height:470px;background:radial-gradient(circle at 50% 20%,#1b3863,#0b1930 65%)}.dialog-close{position:sticky;top:0;float:right;z-index:10;width:42px;height:42px;border:1px solid #c3d7f855;background:#0e2345ee;border-radius:50%;font-size:28px;line-height:1;color:#fff}.dialog-scene{position:relative;width:min(80%,440px);height:320px;margin:54px auto 0;transition:opacity .5s,transform .5s}.scene-star{position:absolute;right:-20px;top:-55px;font-size:46px;color:#bed6ff}.scene-back,.scene-front,.scene-flap{position:absolute;left:0;right:0;bottom:0;height:220px;border-radius:10px}.scene-back{background:#7496c9}.scene-paper{position:absolute;z-index:1;left:13%;width:74%;height:210px;bottom:35px;background:#fffdf8;color:#4e6890;padding:35px 20px;font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:25px;transform:translateY(0);transition:transform .85s .35s}.scene-front{z-index:3;background:#b0caeb;clip-path:polygon(0 0,50% 48%,100% 0,100% 100%,0 100%)}.scene-flap{z-index:4;background:#d7e6fa;clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:50% 0;transition:transform .75s;backface-visibility:hidden}.scene-seal{position:absolute;z-index:5;bottom:97px;left:calc(50% - 23px);width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:#315c9e;font-size:25px;transition:opacity .3s}.dialog-content.is-opening .scene-flap,.dialog-content.is-open .scene-flap{transform:rotateX(180deg);z-index:0}.dialog-content.is-opening .scene-seal,.dialog-content.is-open .scene-seal{opacity:0}.dialog-content.is-opening .scene-paper,.dialog-content.is-open .scene-paper{transform:translateY(-130px)}.dialog-content.is-open .dialog-scene{opacity:0;transform:translateY(-35px);height:0;margin:0 auto;pointer-events:none}.letter-paper{visibility:hidden;opacity:0;max-width:580px;margin:0 auto;background:#fffdfa;color:#2b3551;padding:52px clamp(25px,7vw,65px) 55px;box-shadow:0 15px 37px #030b1d78;transform:translateY(20px);transition:opacity .6s,transform .6s;outline:1px solid #dce6f5;outline-offset:-16px}.dialog-content.is-open .letter-paper{visibility:visible;opacity:1;transform:translateY(0)}.paper-date{display:block;text-align:center;letter-spacing:.18em;color:#6d87aa;font-size:10px;font-weight:700}.paper-date i{font-style:normal;margin:0 7px}.letter-paper h2{font-size:clamp(40px,6vw,60px);line-height:1.12;letter-spacing:-.05em;color:#1d385e;text-align:center;margin:20px 0 32px}.letter-paper h2 em{color:#507eb7}.letter-paper p{font-size:16px;line-height:1.9;margin:0 0 18px}.letter-paper strong{font-weight:700}.letter-paper .paper-sign{text-align:right;margin-top:30px;font-family:'Playfair Display',Georgia,serif;font-size:21px;font-style:italic;color:#315f9b}
.letter-paper .paper-from{text-align:right;margin:4px 0 0;font-family:'Playfair Display',Georgia,serif;font-size:18px;font-style:italic;color:#617caa}
@media(max-width:1000px){.hero{gap:8px}.hero h1{font-size:clamp(57px,7vw,81px)}.hero-visual{min-height:540px}.portrait-main{height:475px}.portrait-mini{width:115px;height:155px}.world-grid{gap:25px}.world-art{min-height:495px}.world-caption{font-size:14px}.film-photo{height:300px}}
@media(max-width:720px){.wrap{width:min(100% - 40px,520px)}.topbar{height:74px}.top-date{font-size:9px;letter-spacing:.08em}.hero{grid-template-columns:1fr;min-height:0;gap:0;padding:47px 0 93px}.hero-copy{padding:0}.hero h1{font-size:clamp(54px,12vw,78px);margin-bottom:20px}.hero-prelude{margin-top:19px}.hero-intro{font-size:16px;margin-bottom:24px}.hero-visual{min-height:510px;margin-top:20px}.portrait-main{width:min(75%,340px);height:440px}.portrait-mini{left:2%;bottom:7px}.scroll-cue{bottom:30px}.notes-section{padding:85px 0 95px}.notes-head,.photo-heading{display:block;margin:31px 0 35px}.notes-head p,.photo-heading p{margin-top:20px;max-width:390px}.note-grid{grid-template-columns:1fr}.note-card{min-height:270px}.note-symbol{margin:8px 0 0}.small-world{margin-top:-24px}.world-grid{grid-template-columns:1fr;gap:0}.world-copy{padding:87px 0 0}.world-art{min-height:400px}.world-art img{width:min(93%,450px)}.world-caption{bottom:17px;right:4%}.photo-section{padding-block:85px 105px}.film-strip{gap:13px}.film-strip figure{padding:6px 6px 26px}.film-strip figure:nth-child(2){transform:translateY(13px) rotate(2deg)}.film-photo{height:210px}.film-strip figcaption{font-size:12px;padding:7px 1px 0}.letter-grid{grid-template-columns:1fr;min-height:0;gap:0}.letter-copy{padding:85px 0 10px}.envelope-preview{max-width:370px;height:355px;transform:rotate(4deg) scale(.82);transform-origin:top center;margin-top:35px}.footer{flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;padding-block:24px}.footer span:last-child{text-align:left}.music-player{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:204px;min-height:57px;padding:6px 10px 6px 6px;gap:8px}.music-toggle{width:43px;height:43px}}
@media(max-width:420px){.wrap{width:calc(100% - 34px)}.brand{font-size:19px}.top-date{max-width:125px;text-align:right;line-height:1.4}.top-date i{display:none}.hero h1{font-size:clamp(49px,12vw,59px)}.hero-actions{gap:16px}.primary-button{padding:13px 17px;font-size:14px}.text-link{font-size:12px}.hero-visual{min-height:420px}.portrait-main{height:370px}.portrait-mini{width:90px;height:125px}.visual-star.star-one{right:0}.notes-head h2,.photo-heading h2,.world-copy h2,.letter-copy h2{font-size:clamp(40px,10.3vw,49px)}.film-photo{height:168px}.film-strip figcaption{font-size:10px}.world-art{min-height:330px}.world-caption{font-size:12px}.dialog-content{padding:18px 12px 22px}.dialog-scene{width:90%;height:265px}.scene-back,.scene-front,.scene-flap{height:175px}.scene-paper{height:170px}.scene-seal{bottom:75px}.letter-paper{padding:48px 27px 44px}.letter-paper p{font-size:15px;line-height:1.82}}
/* Tablet portrait: keep the story spacious instead of squeezing it into columns. */
@media (min-width:721px) and (max-width:900px){
  .wrap{width:min(100% - 48px,760px)}
  .hero{grid-template-columns:1fr;min-height:0;gap:0;padding:40px 0 95px}
  .hero-copy{padding:25px 0 0}
  .hero h1{font-size:clamp(64px,9vw,80px)}
  .hero-visual{width:min(100%,650px);min-height:555px;margin:15px auto 0}
  .portrait-main{height:475px}
  .note-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .note-card:last-child{grid-column:1 / -1;min-height:240px}
  .world-grid{grid-template-columns:1fr;gap:0}
  .world-copy{padding:85px 0 0}
  .world-art{min-height:450px}
  .world-art img{width:min(75%,510px)}
  .letter-grid{grid-template-columns:1fr;gap:0;padding-bottom:65px}
  .letter-copy{padding:85px 0 15px}
  .envelope-preview{width:min(75%,490px)}
}

/* Portraits retain readable captions and a generous image size on touch screens. */
@media (max-width:900px){
  .film-strip{display:flex;gap:20px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:24px;overscroll-behavior-inline:contain;touch-action:pan-x pan-y;padding:17px 24px 36px;margin-inline:-24px;scrollbar-width:thin;scrollbar-color:#91b5ed #14294d}
  .film-strip figure,.film-strip figure:nth-child(2),.film-strip figure:nth-child(3){flex:0 0 clamp(250px,42vw,325px);transform:none;scroll-snap-align:center;padding:10px 10px 25px}
  .film-photo{height:330px}
  .film-strip figcaption{font-size:15px;padding:10px 4px 0}
}

@media (max-width:1024px){
  .music-player{width:270px;max-width:calc(100vw - 28px)}
  .music-info strong{overflow:visible;text-overflow:clip;white-space:normal}
  .music-info small{font-size:12px}
}

@media (max-width:720px){
  .film-strip{gap:16px;padding-inline:20px;margin-inline:-20px}
  .film-strip figure,.film-strip figure:nth-child(2),.film-strip figure:nth-child(3){flex-basis:clamp(245px,73vw,340px)}
  .film-photo{height:clamp(265px,87vw,385px)}
  .film-strip figcaption{font-size:15px}
  .music-player{left:50%;right:auto;bottom:calc(12px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(400px,calc(100vw - 32px));max-width:none;min-height:68px;padding:9px 14px 9px 9px;gap:12px;border-radius:18px}
  .music-toggle{width:48px;height:48px;min-width:48px}
  .music-info strong{font-size:16px;line-height:1.25}
  .music-info small{font-size:13px;line-height:1.3}
  .music-progress{margin-top:7px}
  .footer{padding-bottom:calc(108px + env(safe-area-inset-bottom))}
  dialog{max-height:calc(100dvh - 24px)}
}

@media (max-width:420px){
  .film-strip{padding-inline:17px;margin-inline:-17px}
  .music-player{width:calc(100vw - 24px);bottom:calc(10px + env(safe-area-inset-bottom))}
  .hero-actions{align-items:flex-start}
  .world-caption{max-width:70%;text-align:right;line-height:1.25}
}

/* Keep the letter inside the mobile viewport while allowing vertical reading. */
@media (max-width:720px){
  html{overflow-x:hidden;overscroll-behavior-x:none}
  #letter-dialog{width:calc(100vw - 24px);max-width:700px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-x:contain;touch-action:pan-y}
  #letter-dialog .dialog-content{min-width:0}
  #letter-dialog .dialog-scene{max-width:calc(100% - 20px)}
  #letter-dialog .scene-star{right:0}
  #letter-dialog .letter-paper{width:100%;max-width:100%;min-width:0;overflow-wrap:anywhere}
}

/* Quiet depth and chapter reveals, with no hidden content until JS is ready. */
@media (prefers-reduced-motion:no-preference){
  .hero-copy{animation:hero-arrive .85s both}
  .hero-visual{animation:portrait-arrive 1s .12s both}
  .world-art img{transform:translate3d(0,var(--world-drift,0px),0);transition:transform .15s linear}
  .motion-ready .reveal-rise,.motion-ready .reveal-fade{transition:opacity .72s ease,transform .72s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}
  .motion-ready .reveal-rise:not(.in-view){opacity:0;transform:translateY(22px)}
  .motion-ready .reveal-fade:not(.in-view){opacity:0}
  @keyframes hero-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
  @keyframes portrait-arrive{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
}
@media (hover:hover) and (pointer:fine) and (min-width:901px) and (prefers-reduced-motion:no-preference){
  .portrait-main{transform:rotate(3deg) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .28s ease-out}
}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.star-point,.ticker-inner{animation:none}.film-strip{scroll-behavior:auto}.primary-button,.note-card,.dialog-scene,.scene-paper,.scene-flap,.scene-seal,.letter-paper,.music-toggle,.music-progress span{transition:none!important}}
