:root{--z-scene:1;--z-decor:2;--z-tools:80;--z-transition:150;--z-cursor:180;--chapter-accent:#a44872}
#sceneRoot{position:relative;z-index:var(--z-scene);min-height:100vh}
.chapter-transition{z-index:var(--z-transition);pointer-events:none!important}
.wand-cursor,.cursor-tail{z-index:var(--z-cursor);pointer-events:none!important}
.experience-tools,.music-dock,.extra-nav,.season-badge{z-index:var(--z-tools)}
dialog[open]{max-height:88dvh;overflow:auto;overscroll-behavior:contain}
button,a,input,select,textarea{touch-action:manipulation}
button:focus-visible,a:focus-visible{outline:3px solid var(--chapter-accent);outline-offset:5px}
.music-dock{max-height:72dvh;overflow:auto;width:min(330px,calc(100vw - 32px));background:#fff7fbf5}
.music-dock label{display:grid;gap:4px;font-size:12px;margin:9px 0}.music-dock input{width:100%;accent-color:#985b81}.music-controls{flex-wrap:wrap;gap:6px}.music-controls button{min-height:38px}
.playlist-tracks{padding-left:24px}.playlist-tracks button{width:100%;text-align:left;padding:12px;margin:3px 0;border:1px solid #e8c9d9;border-radius:12px;background:#fff8fc;color:#57344f}.playlist-tracks [aria-current=true]{background:#eed9f2;border-color:#985b81}
.playful-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.capsule-note{width:100%;min-height:120px}.capsule-message{white-space:pre-wrap}
body[data-chapter=cinema]{--chapter-accent:#7065b2}body[data-chapter=trips]{--chapter-accent:#347b79}body[data-chapter=letters]{--chapter-accent:#a65f49}body[data-chapter=finale]{--chapter-accent:#885e99}
body:has(#closingSequence[open]) .living-atmosphere,body:has(#closingSequence[open]) .wand-cursor{opacity:.12}
.closing-message{filter:none!important}.skip-ending{margin:15px auto;display:block}
@media(max-width:600px){.music-dock{width:260px}.music-dock[open]{bottom:65px}.experience-tools small{display:none}.audio-mixer{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.chapter-transition,.magic-spark{display:none!important}}

/* A quieter album: paper, clear type and room for the owner's words. */
:root{--paper:#faf7f0;--ink:#443e43;--rose:#936270;--chapter-accent:#7c605f}
body{color:var(--ink);background-color:#f6f3ed;transition:background-color .8s,color .5s}
body[data-season=spring]{--season-paper:#eef2e7;--chapter-accent:#597654}
body[data-season=summer]{--season-paper:#f7efd9;--chapter-accent:#947235}
body[data-season=autumn]{--season-paper:#f1e4d6;--chapter-accent:#9c6546}
body[data-season=winter]{--season-paper:#e7edf2;--chapter-accent:#5c7591}
.chapter-nav{background:#faf8f0ed;border-bottom:1px solid #64514118;box-shadow:none}
.chapter-intro{max-width:850px;margin-inline:auto}.chapter-intro .kicker{color:var(--chapter-accent);letter-spacing:.1em}
.chapter-intro h1{font-size:clamp(36px,5vw,70px);line-height:1.18;text-shadow:none}
.chapter-intro p:empty,.entry-footnote:empty,.environment-note:empty,.season-cue:empty,.cover-heading{display:none}
.editable-space{white-space:pre-wrap;overflow-wrap:anywhere;min-height:70px}
.editable-space:empty{min-height:100px;background:repeating-linear-gradient(transparent 0 31px,#7561571b 32px,transparent 33px)}
.book-copy .lede:empty{min-height:72px;max-width:300px}
.scene-arrival{animation:album-arrive .45s ease-out both;filter:none!important}
@keyframes album-arrive{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
.btn,.music-controls button,.extra-nav{border-radius:9px;box-shadow:none;letter-spacing:.025em}
.experience-tools{border-radius:12px;box-shadow:0 3px 14px #463c4110;background:#faf8f0ee}.experience-tools small{display:none}
.music-dock{border-radius:12px;background:#faf8f0f5;box-shadow:0 4px 18px #51465012}
.season-badge{border-radius:9px;background:#faf8f0ed}.season-choices{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:16px 0}.season-choices button{border:1px solid #82725e44;border-radius:8px;padding:12px 6px;background:#faf8f0;color:#51484b}.season-choices [aria-pressed=true]{background:var(--season-paper);border-color:var(--chapter-accent)}
.small-note{min-height:230px;box-shadow:0 3px 12px #644c4310;border-radius:3px}.small-note p{font-size:19px}
.chapter-ribbon{opacity:.8}.collection-memory{box-shadow:0 3px 12px #644c4310}.collection-memory:hover{box-shadow:0 7px 20px #644c4320}
.odyssey-mascot span:not(:empty){width:60px!important;text-align:center;font-size:24px!important}
#personalCopy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}#personalCopy h2,#personalCopy>p{grid-column:1/-1}#personalCopy label{min-width:0}#personalCopy input,#personalCopy textarea{width:100%;box-sizing:border-box}
@media(max-width:600px){#personalCopy{grid-template-columns:1fr}.chapter-intro{padding-inline:22px}.odyssey-mascot{width:54px;right:12px;bottom:17px}.odyssey-mascot img{height:60px}}

body:has(#closingSequence[open]) #seasonParticles{opacity:.12}

.odyssey-mascot{position:fixed;right:18px;bottom:20px;z-index:75;background:none;border:0;width:76px;padding:0;cursor:pointer;filter:drop-shadow(0 8px 8px #85677928)}.odyssey-mascot img{width:100%;height:82px;object-fit:contain;pointer-events:none}.odyssey-mascot span:not(:empty){position:absolute;right:0;bottom:90px;width:190px;padding:12px;border-radius:18px;background:#fff8ed;color:#644461;font:14px/1.5 Nunito Sans,sans-serif;box-shadow:0 5px 30px #88677724}.odyssey-mascot.waving img{transform:rotate(-8deg);transition:transform .3s}body:has(#closingSequence[open]) .odyssey-mascot{opacity:.4;transform:none}

body.page{background:linear-gradient(180deg,var(--season-paper,#f6f3ed),#f9f6ef 70%)}

/* Lọ thư tương lai */
.memory-capsule{width:min(760px,94vw)}.capsule-compose{display:grid;gap:14px;padding:18px;margin:18px 0 24px;border-radius:18px;background:#fffaf3;border:1px solid #e6d5c7}.capsule-compose label{display:grid;gap:7px;font-size:14px}.capsule-compose input,.capsule-compose textarea{width:100%;box-sizing:border-box;border:1px solid #d8c6bd;border-radius:10px;background:#fffdf9;padding:11px 12px;color:inherit;font:inherit}.capsule-attach{grid-template-columns:auto 1fr!important;align-items:center;justify-content:start}.capsule-attach input{width:auto}.capsule-list{display:grid;gap:12px}.capsule-list>h3{font:24px/1.3 var(--display);margin:6px 0}.capsule-card{display:grid;gap:8px;padding:16px 18px;border:1px solid #e1cdbd;border-radius:14px;background:#fffdf7}.capsule-card[data-unlocked=false]{opacity:.72}.capsule-card>span{font-size:13px;color:#796a70}.capsule-card-actions{display:flex;gap:8px;flex-wrap:wrap}.capsule-reading{padding:20px;border-radius:18px;background:linear-gradient(145deg,#fffaf0,#f8ecee);border:1px solid #e1c8bb}.capsule-letter-copy{font:22px/1.8 var(--note);white-space:pre-wrap}.capsule-memory{display:grid;gap:10px;width:100%;margin-top:18px;padding:10px;border:1px solid #d9beb6;border-radius:15px;background:#fff;color:#674d59;text-align:left}.capsule-memory img{width:100%;max-height:300px;object-fit:cover;border-radius:10px}.capsule-memory span{padding:0 5px 5px}

/* Trang 17: tổng kết, phản hồi và lựa chọn khép album. */
.finale-summary{max-width:760px;margin:34px auto;padding:28px 30px;border:1px solid #dfc9bd;border-radius:22px;background:linear-gradient(145deg,#fffaf1e8,#f8eaece8);text-align:left;box-shadow:0 12px 34px #684b5712}.finale-summary h2{font:clamp(28px,4vw,44px)/1.2 var(--display);margin:8px 0 18px}.finale-summary p:not(.kicker){line-height:1.85;margin:12px 0}.response-dialog{width:min(780px,95vw)}.response-reflections{display:grid;gap:16px;margin:20px 0}.response-reflection{display:grid;gap:9px;padding:18px;border:1px solid #dec9bd;border-radius:16px;background:#fffaf3}.response-reflection legend{padding:0 7px;font-weight:700;line-height:1.5}.response-reflection label{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border-radius:10px;background:#fffdf9}.response-reflection input[type=radio]{margin-top:4px;accent-color:#986177}.response-reflection textarea,.response-note textarea{width:100%;box-sizing:border-box;border:1px solid #d9c5bc;border-radius:11px;background:#fffdf9;padding:12px;font:inherit}.response-note{display:grid;gap:8px}.finale-close-all{display:block;margin:14px auto 0;opacity:.82}.album-closure{width:min(620px,94vw)}.album-closure .closure-copy{font-size:17px;line-height:1.75}.closure-tech{padding:13px 15px;border-radius:12px;background:#f4efe9;color:#6f6368;font-size:13px;line-height:1.6}.closure-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:20px}.closure-finished{margin-top:20px;padding-top:18px;border-top:1px solid #dfcec4;text-align:center}.closure-date{font-size:14px;line-height:1.65}
@media(max-width:600px){.memory-capsule,.response-dialog,.album-closure{padding:24px 17px}.finale-summary{margin:24px 8px;padding:22px 18px}.response-reflection{padding:14px 12px}.capsule-compose{padding:14px}.capsule-card-actions{display:grid}.capsule-card-actions .btn{width:100%}}

/* Finale v3: stable alignment + a real closing ritual. */
.page-finale .finale-shell{display:block;min-height:100vh;width:100%;padding:clamp(54px,7vw,94px) 18px 180px;overflow:visible}.page-finale .finale-stage{width:min(920px,100%);max-width:none;margin:0 auto;text-align:center}.page-finale .final-photo{margin:24px auto 30px}.page-finale .finale-copy{max-width:68ch;margin:0 auto 28px;font-size:16px;line-height:1.9}.page-finale .finale-summary{width:min(760px,100%);box-sizing:border-box;margin:32px auto}.page-finale #closeArchive{min-width:190px;margin:6px auto 0}.response-dialog{box-sizing:border-box;max-height:88dvh;overflow:auto;overscroll-behavior:contain}.response-dialog>h2{max-width:650px;margin-inline:auto}.response-dialog>p{max-width:680px;margin-inline:auto}.response-reflections{align-items:start}.response-actions{position:sticky;bottom:-1px;z-index:2;padding:14px 0 2px;background:linear-gradient(transparent,#fffaf2 26%)}
.finale-close-all{display:grid!important;grid-template-columns:42px minmax(0,1fr);column-gap:12px;align-items:center;width:min(520px,calc(100% - 24px));margin:18px auto 0!important;padding:15px 18px!important;border:1px solid #a7798f!important;border-radius:18px 7px 18px 7px!important;background:linear-gradient(145deg,#6e4a5e,#8d5f76)!important;color:#fff8f3!important;text-align:left;box-shadow:0 16px 38px #56394a2b!important}.finale-close-all>span{grid-row:1/3;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#fff2;color:#fff;font:24px var(--display)}.finale-close-all strong{display:block;font:700 14px var(--body);letter-spacing:.03em}.finale-close-all small{display:block;margin-top:3px;color:#f3dfe9;font:10px/1.45 var(--body);letter-spacing:.025em}.finale-close-all:hover{transform:translateY(-2px);box-shadow:0 20px 46px #56394a3d!important}
.album-closure{inset:0!important;width:100vw!important;height:100dvh!important;max-width:none!important;max-height:none!important;margin:0!important;padding:clamp(22px,5vw,64px)!important;border:0!important;border-radius:0!important;background:radial-gradient(circle at 50% 34%,#fff8f0 0,#f0dfe7 45%,#cfc9dc 100%)!important;color:#5f4657;overflow:hidden!important;display:grid;place-items:center;text-align:center;isolation:isolate}.album-closure::backdrop{background:#171018!important}.album-closure>.dialog-close{position:absolute!important;right:24px;top:22px;margin:0!important;background:#fff9!important}.closure-before,.closure-erasing,.closure-finished{position:relative;z-index:4;width:min(680px,90vw);margin:auto}.closure-before .kicker{letter-spacing:.2em}.closure-before h2{font:clamp(38px,6vw,74px)/1.05 var(--display);margin:16px auto 20px;color:#5a4051;max-width:650px}.closure-copy{max-width:620px;margin:0 auto;font:clamp(16px,2vw,20px)/1.8 var(--body);color:#765e6e}.closure-actions{margin-top:30px;gap:12px}.closure-actions .btn{min-height:50px;padding-inline:22px}.closure-actions [data-confirm-close]{background:linear-gradient(145deg,#7d5269,#a06682);border-color:#7d5269;color:#fff}
.closure-memory-layer{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.closure-memory{position:absolute;width:clamp(105px,14vw,190px);margin:0;padding:7px 7px 20px;background:#fffaf0;border:1px solid #d9c6cb;box-shadow:0 22px 52px #3f2d3932;opacity:.72;transition:opacity .8s,transform .8s}.closure-memory img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}.closure-memory-1{left:2%;top:5%;rotate:-9deg}.closure-memory-2{right:3%;top:4%;rotate:8deg}.closure-memory-3{left:6%;bottom:6%;rotate:6deg}.closure-memory-4{right:6%;bottom:4%;rotate:-7deg}.closure-memory-5{left:23%;top:-9%;rotate:3deg;scale:.85}.closure-memory-6{right:23%;bottom:-11%;rotate:-3deg;scale:.86}.closure-memory-7{left:-4%;top:40%;rotate:-12deg;scale:.78}.closure-memory-8{right:-3%;top:42%;rotate:11deg;scale:.8}.album-closure:after{/* [CHỮ / BIỂU TƯỢNG CSS] Chuỗi sau content là chữ vẽ thêm bằng ::before/::after của bộ chọn này; không phải nội dung album. Chuỗi rỗng tạo lớp trang trí trống. Chỉ đổi phần trong nháy nếu muốn đổi nhãn / biểu tượng. */content:"";position:absolute;z-index:2;inset:0;background:radial-gradient(circle at 50% 48%,#fffdf6e8 0,#fff8f0c8 30%,transparent 70%);pointer-events:none}
.closure-reel{position:relative;z-index:4;width:min(1060px,92vw);min-height:min(690px,88dvh);display:grid;grid-template-columns:minmax(280px,.95fr) minmax(300px,1.05fr);gap:clamp(28px,5vw,70px);align-items:center}.closure-reel-frame{position:relative;display:grid;place-items:center;min-height:min(620px,78dvh);padding:18px;background:#fffaf2;border:1px solid #d4bcc6;border-radius:10px 34px 10px 34px;box-shadow:0 28px 70px #44303c2e;overflow:hidden}.closure-reel-frame:before{/* [CHỮ / BIỂU TƯỢNG CSS] Chuỗi sau content là chữ vẽ thêm bằng ::before/::after của bộ chọn này; không phải nội dung album. Chuỗi rỗng tạo lớp trang trí trống. Chỉ đổi phần trong nháy nếu muốn đổi nhãn / biểu tượng. */content:"";position:absolute;inset:10px;border:1px solid #a77d902b;border-radius:7px 28px 7px 28px;pointer-events:none}.closure-reel-frame img{display:block;max-width:100%;max-height:min(570px,72dvh);width:auto;height:auto;object-fit:contain}.closure-reel-index{position:absolute;right:18px;bottom:16px;padding:7px 10px;border-radius:99px;background:#fff9;color:#725366;font:700 10px var(--body);letter-spacing:.12em;box-shadow:0 6px 20px #4d344322}.closure-reel-copy{text-align:left}.closure-reel-copy .kicker{letter-spacing:.22em}.closure-reel-title{margin:12px 0 18px!important;font:clamp(38px,5vw,70px)/1.03 var(--display)!important;color:#5b4051!important}.closure-reel-meta{margin:0 0 14px!important;color:#9b7588!important;font:700 11px/1.6 var(--body)!important;letter-spacing:.1em;text-transform:uppercase}.closure-reel-line{margin:0!important;max-width:620px;font:clamp(22px,2.6vw,34px)/1.55 var(--note)!important;color:#6f5365!important}.closure-reel-progress{display:block;width:min(420px,100%);height:3px;margin-top:28px;background:#a47b8d30;overflow:hidden}.closure-reel-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#c67d9e,#8a6075);transition:width .45s ease}
.closure-erasing{display:grid;place-items:center;min-height:360px}.closure-heart{display:grid;place-items:center;width:82px;height:82px;margin-bottom:24px;border-radius:50%;background:#b87494;color:#fff;font:42px var(--display);box-shadow:0 18px 50px #8c527038}.closure-erasing-line{min-height:2.8em;margin:0;font:clamp(28px,4vw,50px)/1.35 var(--display);color:#5f4556}.closure-progress{width:min(420px,72vw);height:3px;margin-top:34px;background:#a37b8e33;overflow:hidden}.closure-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#c17c9b,#8b647a);transition:width .65s ease}.album-closure.is-erasing .closure-memory{animation:closure-memory-away 4s cubic-bezier(.4,0,.2,1) forwards}.album-closure.is-erasing .closure-memory:nth-child(2){animation-delay:.12s}.album-closure.is-erasing .closure-memory:nth-child(3){animation-delay:.24s}.album-closure.is-erasing .closure-memory:nth-child(4){animation-delay:.36s}.album-closure.is-erasing .closure-memory:nth-child(5){animation-delay:.48s}.album-closure.is-erasing .closure-memory:nth-child(6){animation-delay:.6s}.album-closure.is-erasing .closure-memory:nth-child(7){animation-delay:.72s}.album-closure.is-erasing .closure-memory:nth-child(8){animation-delay:.84s}.closure-finished{display:grid;place-items:center;min-height:420px}.closure-finished-mark{margin:0 0 10px;color:#a07087;font:46px var(--display)}.closure-finished h2{margin:0;font:clamp(64px,11vw,142px)/.9 var(--display);letter-spacing:-.06em;color:#4e3a47}.closure-finished-copy{max-width:560px;margin:28px auto 0!important;font:clamp(20px,2.6vw,30px)/1.55 var(--note)!important;color:#72596a!important}.closure-final-line{margin-top:22px!important;font:12px/1.7 var(--body)!important;letter-spacing:.12em;text-transform:uppercase;color:#957789!important}.album-closure.is-finished{background:radial-gradient(circle at 50% 42%,#eee5e9,#aaa1b0 100%)!important}.album-closure.is-finished .closure-memory-layer{opacity:.04}.odyssey-story-ended :is(.memory-dock,.music-dock,.experience-tools,.season-badge,.odyssey-mascot){opacity:0!important;pointer-events:none!important;transition:opacity 1.5s ease!important}@keyframes closure-memory-away{0%{opacity:.72;transform:translate(0,0) scale(1)}55%{opacity:.34;transform:translateY(-12px) scale(.94)}100%{opacity:0;transform:translateY(-38px) scale(.84)}}
.page-finale.has-season-theatre .season-theatre{height:clamp(230px,22vw,320px);margin-top:18px;margin-bottom:4px;border-radius:26px}
.page-finale.has-season-theatre #sceneRoot>main{padding-top:8px}
.page-finale.has-season-theatre .finale-shell{padding-top:34px}
@media(max-width:760px){.page-finale .finale-shell{padding-inline:11px;padding-bottom:160px}.page-finale .finale-stage h1{font-size:50px}.page-finale .final-photo{width:190px}.finale-close-all{width:calc(100% - 12px)}.album-closure{padding:20px 14px!important}.closure-before h2{font-size:42px}.closure-memory{width:105px;opacity:.34}.closure-memory-5,.closure-memory-6,.closure-memory-7,.closure-memory-8{display:none}.closure-actions{display:grid}.closure-actions .btn{width:100%}.closure-reel{grid-template-columns:1fr;gap:18px;align-content:center}.closure-reel-frame{min-height:42dvh;max-height:46dvh;padding:10px}.closure-reel-frame img{max-height:41dvh}.closure-reel-copy{text-align:center}.closure-reel-meta{font-size:9px!important}.closure-reel-title{font-size:38px!important;margin:8px 0 10px!important}.closure-reel-line{font-size:23px!important}.closure-reel-progress{margin:18px auto 0}.closure-erasing-line{font-size:32px}.closure-finished h2{font-size:82px}.response-actions{position:static;background:none}.response-actions .btn{width:100%}}
@media(max-width:700px){.page-finale.has-season-theatre .season-theatre{height:190px;margin:12px 8px 0;border-radius:18px}.page-finale.has-season-theatre .finale-shell{padding-top:24px}}
@media(prefers-reduced-motion:reduce){.album-closure.is-erasing,.album-closure.is-erasing .closure-memory{animation:none!important}.closure-progress i{transition:none!important}}

/* Response v3: nhiều câu hỏi, email tùy chọn và nhiều ảnh đính kèm. */
.response-dialog{width:min(900px,96vw)}
.response-intro{font-size:16px;line-height:1.75;color:#755e6c}
.response-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.response-contact-grid label,.response-upload{display:grid;gap:7px;padding:14px 15px;border:1px solid #dec9bd;border-radius:14px;background:#fffaf3;text-align:left}
.response-contact-grid input,.response-contact-grid select,.response-upload input{width:100%;box-sizing:border-box;border:1px solid #d9c5bc;border-radius:10px;background:#fffdf9;padding:11px 12px;color:inherit;font:inherit}
.response-upload small{color:#967988;font-size:11px}.response-status{min-height:1.6em;font-weight:700;color:#785569}.response-privacy{font-size:12px;line-height:1.6;color:#927586}
.response-upload-preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:10px;margin:12px 0 4px}.response-upload-preview:empty{display:none}.response-upload-preview figure{min-width:0;margin:0;padding:6px;border:1px solid #dec9bd;border-radius:12px;background:#fffaf5}.response-upload-preview img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;filter:none!important}.response-upload-preview figcaption{margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#856b79;font-size:9px}
@media(max-width:650px){.response-contact-grid{grid-template-columns:1fr}.response-upload-preview{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Finale v4: 50–100 ký ức, sương quá khứ, video ngắn, gấu bông và cảnh ôm cuối. */
.closure-reel-frame video{display:block;max-width:100%;max-height:min(570px,72dvh);width:auto;height:auto;object-fit:contain;filter:none!important}.closure-reel-frame video[hidden],.closure-reel-frame img[hidden]{display:none!important}.closure-video-mark{position:absolute;left:18px;bottom:16px;padding:7px 10px;border-radius:999px;background:#5f4057d9;color:#fff;font:800 9px/1 var(--body);letter-spacing:.16em}
.closure-mist{position:absolute;inset:-12%;z-index:3;pointer-events:none;overflow:hidden;opacity:0;transition:opacity 1.2s ease}.closure-mist i{position:absolute;width:72vw;height:34vh;border-radius:50%;background:radial-gradient(ellipse,#fffdfbe6 0,#fff9f2a8 34%,#fff0 72%);opacity:.72;animation:closure-mist-drift 9s ease-in-out infinite alternate}.closure-mist i:nth-child(1){left:-26%;top:5%}.closure-mist i:nth-child(2){right:-30%;top:28%;animation-delay:-3s}.closure-mist i:nth-child(3){left:-18%;bottom:-8%;animation-delay:-6s}.closure-mist i:nth-child(4){right:-18%;bottom:2%;animation-delay:-1.5s}.album-closure.is-reel .closure-mist{opacity:.26}.album-closure.is-embrace .closure-mist{opacity:.74}.album-closure.is-erasing .closure-mist{opacity:.86}.album-closure.is-finished .closure-mist{opacity:.58}
.closure-teddy-rain{position:absolute;inset:-15% 0 0;z-index:7;pointer-events:none;overflow:hidden;opacity:0;transition:opacity .8s ease}.closure-teddy-rain span{position:absolute;left:var(--x);top:-14%;font-size:var(--size);filter:drop-shadow(0 8px 8px #6d4e5d2b);animation:closure-teddy-fall var(--dur) linear var(--delay) infinite;transform-origin:center}.album-closure.is-embrace .closure-teddy-rain,.album-closure.is-finished .closure-teddy-rain{opacity:.82}
.closure-embrace{position:relative;z-index:5;width:min(1120px,94vw);min-height:min(760px,90dvh);display:grid;place-items:center;align-content:center}.closure-embrace-art{position:relative;z-index:3;display:block;width:min(690px,78vw);max-height:68dvh;object-fit:contain;filter:none!important;animation:closure-embrace-arrive 1.4s cubic-bezier(.2,.8,.2,1) both}.closure-embrace-line{position:relative;z-index:5;max-width:740px;margin:18px auto 0!important;padding:12px 18px;border-radius:999px;background:#fff9;color:#694e60!important;font:clamp(20px,2.4vw,31px)/1.45 var(--note)!important;box-shadow:0 12px 40px #5b3c4e24}
.closure-echo-wall{position:absolute;inset:0;z-index:1;pointer-events:none}.closure-echo-wall img{position:absolute;width:clamp(82px,10vw,148px);aspect-ratio:4/5;object-fit:cover;border:7px solid #fffaf0;box-shadow:0 18px 50px #4c34432a;opacity:.16;filter:none!important;animation:closure-echo-breathe 6s ease-in-out infinite alternate}.closure-echo-wall img:nth-child(6n+1){left:1%;top:4%;rotate:-8deg}.closure-echo-wall img:nth-child(6n+2){right:2%;top:7%;rotate:7deg}.closure-echo-wall img:nth-child(6n+3){left:4%;bottom:5%;rotate:5deg}.closure-echo-wall img:nth-child(6n+4){right:4%;bottom:3%;rotate:-6deg}.closure-echo-wall img:nth-child(6n+5){left:18%;top:0;rotate:3deg}.closure-echo-wall img:nth-child(6n){right:18%;bottom:-2%;rotate:-4deg}
.closure-memory-9{left:35%;top:-11%;rotate:-5deg;scale:.72}.closure-memory-10{right:35%;bottom:-12%;rotate:5deg;scale:.74}.closure-memory-11{left:-5%;bottom:31%;rotate:9deg;scale:.68}.closure-memory-12{right:-5%;bottom:28%;rotate:-10deg;scale:.7}.album-closure.is-reel .closure-memory{opacity:.24}.album-closure.is-embrace .closure-memory{opacity:.1}.album-closure.is-finished .closure-memory{opacity:.06}
@keyframes closure-mist-drift{to{transform:translate3d(18%,-6%,0) scale(1.12);opacity:.4}}@keyframes closure-teddy-fall{0%{transform:translate3d(0,-10vh,0) rotate(-12deg)}50%{transform:translate3d(24px,56vh,0) rotate(18deg)}100%{transform:translate3d(-12px,125vh,0) rotate(42deg)}}@keyframes closure-embrace-arrive{from{opacity:0;transform:translateY(30px) scale(.94)}to{opacity:1;transform:none}}@keyframes closure-echo-breathe{to{opacity:.3;transform:translateY(-8px) scale(1.025)}}
@media(max-width:760px){.closure-reel-frame video{max-height:41dvh}.closure-embrace{min-height:76dvh}.closure-embrace-art{width:min(92vw,580px);max-height:56dvh}.closure-echo-wall img{width:82px;border-width:4px}.closure-echo-wall img:nth-child(n+11){display:none}.closure-teddy-rain span{font-size:calc(var(--size) * .82)}}
@media(prefers-reduced-motion:reduce){.closure-mist i,.closure-teddy-rain span,.closure-embrace-art,.closure-echo-wall img{animation:none!important}}

/* Finale v5 — nhịp chậm, sương ký ức và phông ảnh vẫn nhận diện rõ. */
.closure-memory-layer{transition:opacity 2.6s ease!important}
.closure-memory{transition:opacity 2.2s ease,transform 3.2s ease!important}
.closure-memory img{filter:none!important}
.closure-memory-13{left:14%;top:24%;rotate:5deg;scale:.58}
.closure-memory-14{right:14%;top:26%;rotate:-5deg;scale:.6}
.closure-memory-15{left:31%;bottom:-13%;rotate:-2deg;scale:.57}
.closure-memory-16{right:31%;top:-13%;rotate:2deg;scale:.58}
.closure-memory-17{left:-3%;top:18%;rotate:8deg;scale:.62}
.closure-memory-18{right:-3%;top:17%;rotate:-8deg;scale:.62}
.album-closure.is-reel .closure-memory{opacity:.3!important}
.album-closure.is-embrace .closure-memory{opacity:.22!important}
.album-closure.is-erasing .closure-memory{opacity:.27!important;transform:translateY(-8px) scale(.97)!important}
.album-closure.is-finished{background:radial-gradient(circle at 50% 43%,#fff9f3 0,#ead9e3 46%,#9e8b9c 100%)!important}
.album-closure.is-finished .closure-memory-layer{opacity:.84!important}
.album-closure.is-finished .closure-memory{opacity:.42!important;transform:translateY(-4px) scale(.985)!important;box-shadow:0 22px 58px #49334142!important}
.album-closure.is-finished:after{background:radial-gradient(circle at 50% 49%,#fffdf5bd 0,#fff9f09e 24%,#f0dee866 48%,transparent 78%)!important}
.album-closure.is-reel .closure-mist{opacity:.18!important}
.album-closure.is-embrace .closure-mist{opacity:.42!important}
.album-closure.is-erasing .closure-mist{opacity:.5!important}
.album-closure.is-finished .closure-mist{opacity:.3!important}
.closure-mist{transition:opacity 2.4s ease!important}
.closure-mist i{animation-duration:14s!important}
.album-closure.is-embrace .closure-teddy-rain{opacity:.58!important}
.album-closure.is-finished .closure-teddy-rain{opacity:.38!important}
.closure-echo-wall{inset:-2%!important}
.closure-echo-wall img{width:clamp(92px,11vw,162px)!important;opacity:.27!important;animation-duration:10s!important;filter:none!important}
.closure-finished{z-index:5!important}
.closure-finished h2{text-shadow:0 3px 30px #fff,0 1px 3px #6b526566}
.closure-finished-copy{text-shadow:0 2px 18px #fff}
.closure-progress i{transition:width 1.6s ease!important}
@keyframes closure-memory-breathe{0%{transform:translateY(0) scale(.985)}100%{transform:translateY(-8px) scale(1)}}
.album-closure.is-finished .closure-memory:nth-child(odd){animation:closure-memory-breathe 8s ease-in-out infinite alternate}
.album-closure.is-finished .closure-memory:nth-child(even){animation:closure-memory-breathe 10s ease-in-out -3s infinite alternate-reverse}
@media(max-width:760px){.album-closure.is-finished .closure-memory{opacity:.27!important}.closure-memory:nth-child(n+9){display:none!important}.album-closure.is-finished .closure-mist{opacity:.32!important}}
@media(prefers-reduced-motion:reduce){.album-closure.is-finished .closure-memory{animation:none!important}}
