/* Full photo frames and comfortable handwritten notes. */
.secret-stage::before{pointer-events:none}.secret-stage .music-box{position:relative;z-index:1}.secret-stage{min-height:360px;border-radius:70px 70px 12px 12px}.secret-stage::before{top:18px}.secret-stage .secret-label{pointer-events:none}
.polaroid img,.day-door img,.petal-photo img,.floating-photo img,.book-keepsake img,.collection-memory img,.object-tv img,.final-photo img{object-fit:contain!important;background:#f4e9eb}.cinema-screen video{object-fit:contain!important}
.page-memory-edition{max-width:1140px;margin:60px auto 40px;padding:30px;border-top:1px solid #b988a539}.page-memory-edition h2{font:clamp(28px,3.5vw,44px)/1.25 var(--display);margin:12px 0;color:#765567}.page-memory-note{font:22px/1.7 var(--note);color:#906e83;margin:12px 0 28px}.page-memory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}.page-memory-card{position:relative;background:#fffaf5;border:1px solid #d8bdcc;padding:9px;border-radius:3px;box-shadow:0 8px 24px #73536a0e;min-width:0;text-align:left;transition:transform .3s}.page-memory-card:hover{transform:translateY(-4px)}.page-memory-card img{display:block;width:100%;height:230px;object-fit:contain;background:#efe5e8}.page-memory-caption{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:10px 3px 2px;font:12px var(--body);color:#866779}.page-video-mark{position:absolute;top:17px;left:17px;padding:5px 8px;background:#6a4c65c9;color:white;border-radius:50%}
.keepsake-desk{position:relative;max-width:980px;margin:50px auto;padding:38px;background:#fff9f3;border:1px solid #dfc7d3;border-radius:14px;box-shadow:0 20px 60px #7853660d}.keepsake-desk h2{font:clamp(30px,4vw,48px)/1.3 var(--display);color:#77586b;margin:12px 0 28px}.keepsake-desk h3{font:24px var(--display);color:#77586b}.keepsake-form{display:grid;gap:20px}.keepsake-form label{display:grid;gap:8px;font:14px var(--body);color:#78576a}.keepsake-form input,.keepsake-form textarea{width:100%;max-width:100%;padding:14px;border:1px solid #d4b9c9;border-radius:7px;background:#fffcf9;color:#66495d;font:19px/1.6 var(--note)}.keepsake-form input{font:15px var(--body)}.keepsake-form button[type=submit]{justify-self:start}.keepsake-picker{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}.keepsake-picker legend{margin:0 0 12px;font:13px var(--body);color:#78576a}.keepsake-pick{padding:4px;border:1px solid #dfc5d2;background:white;border-radius:5px;min-width:0}.keepsake-pick img{width:100%;height:90px;object-fit:contain;display:block}.keepsake-pick[aria-pressed=true]{border:2px solid #956d83;background:#f6dfeb}.keepsake-storage{font:12px/1.7 var(--body);color:#96798a;max-width:650px;margin:22px 0}.keepsake-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0 28px}.keepsake-entry{min-width:0;padding:22px;background:#faf0e8;border:1px solid #dfc7d3;border-radius:7px}.keepsake-entry time{display:block;font:12px var(--body);color:#9b758b;margin-bottom:15px}.keepsake-entry-text{font:21px/1.7 var(--note);white-space:pre-wrap;overflow-wrap:anywhere;color:#75586a}.keepsake-entry-photo{padding:5px;border:0;background:white;float:right;max-width:42%;margin:0 0 10px 14px}.keepsake-entry-photo img{width:100%;max-height:160px;object-fit:contain}.keepsake-remove{display:block;clear:both;border:0;background:none;color:#a08294;font:12px var(--body);padding:10px 0;margin-top:12px}.keepsake-status{font:13px var(--body);color:#947286;min-height:18px;margin:0}.keepsake-empty{font:20px var(--note);color:#96798a}.keepsake-entry [hidden]{display:none!important}
.film-premiere::before,.film-premiere::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;left:0;right:0;height:24px;background:#49333d;z-index:4;pointer-events:none;animation:premiere-curtain 4s ease both}.film-premiere::before{top:0}.film-premiere::after{bottom:0}.premiere-projector{position:absolute;inset:-20%;background:conic-gradient(from 40deg at 15% 40%,transparent 0deg,#fff9df50 14deg,transparent 38deg);animation:projector-sweep 15s ease-in-out infinite;pointer-events:none}.premiere-photo-stage .premiere-photo{left:50%!important;opacity:0!important;z-index:0;transform:translate(-50%,-50%) rotate(-5deg) scale(.9)!important;transition:opacity 1.4s ease,transform 3s ease!important;pointer-events:none}.premiere-photo-stage .premiere-photo.is-current{opacity:1!important;z-index:3;transform:translate(-50%,-50%) rotate(0) scale(1.015)!important}.premiere-photo-stage .premiere-photo.is-previous{opacity:.22!important;z-index:1;transform:translate(-75%,-50%) rotate(-8deg) scale(.86)!important}.premiere-photo-stage .premiere-photo.is-next{opacity:.22!important;z-index:1;transform:translate(-25%,-50%) rotate(8deg) scale(.86)!important}.premiere-frame-number{font:10px var(--body);color:#9c758c;letter-spacing:.18em}.premiere-progress{position:absolute;bottom:24px;left:0;right:0;height:2px;background:#b78aa021;z-index:5}.premiere-progress i{display:block;height:100%;background:#a77a95;width:0}.film-premiere .premiere-controls{bottom:43px!important;z-index:6}.film-premiere .premiere-memories{padding-bottom:130px;gap:4px}.film-premiere .premiere-photo-stage{height:min(59dvh,540px)}.film-premiere .premiere-photo img{filter:none!important}
@keyframes projector-sweep{50%{transform:rotate(8deg);opacity:.5}}@keyframes premiere-curtain{from{height:50%}to{height:24px}}
@media(max-width:760px){.page-memory-edition{padding:18px 8px;margin:32px auto}.page-memory-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.page-memory-card img{height:190px}.page-memory-note{font-size:20px}.keepsake-desk{padding:22px 16px;margin:32px 0}.keepsake-picker{grid-template-columns:repeat(4,minmax(0,1fr))}.keepsake-list{grid-template-columns:1fr}.keepsake-form input{min-height:48px}.premiere-photo-stage .premiere-photo.is-previous{transform:translate(-62%,-50%) rotate(-8deg) scale(.86)!important}.premiere-photo-stage .premiere-photo.is-next{transform:translate(-38%,-50%) rotate(8deg) scale(.86)!important}.film-premiere .premiere-memory-line{min-height:58px;max-width:92%;font-size:18px}.page-memory-card{padding:6px}.film-controls [data-film-sound]{font-size:11px;padding:7px 10px}}
@media(prefers-reduced-motion:reduce){.premiere-projector,.film-premiere::before,.film-premiere::after{animation:none}.premiere-photo-stage .premiere-photo{transition:none!important}.page-memory-card{transition:none}}
/* Lá thư: lớp cào che kín chữ; mở đủ diện tích hoặc bấm nút sẽ hiện toàn bộ thư. */
.scratch-letter-section{width:min(820px,100%);margin:36px auto 48px;padding:28px 24px;text-align:center;background:#fff8f0b8;border:1px solid #d6b8c7;border-radius:18px}
.scratch-letter-section>.kicker{margin:0 0 20px;color:#76566b!important}
.scratch-letter-paper{position:relative;background:#fff9ec;border:1px solid #d9bdc6;border-radius:5px;overflow:hidden;box-shadow:0 16px 44px #7b536518}
.scratch-letter-section[data-letter-state=sealed] .scratch-letter-paper{height:360px}
.scratch-letter-body{padding:38px clamp(22px,5vw,52px);text-align:left;color:#614656;overflow-wrap:anywhere}
.scratch-letter-body h2{font:clamp(30px,4vw,43px)/1.25 var(--display);color:#66475c;margin:0 0 28px;text-wrap:balance}
.scratch-letter-body p{font:17px/1.95 var(--body);color:#694e5e;margin:0 0 20px;white-space:pre-wrap}
.scratch-letter-body .scratch-letter-greeting{font:26px/1.6 var(--note);color:#7c526c}
.scratch-letter-body .scratch-letter-signature{border-top:1px solid #dcc1cb;padding-top:22px;margin:28px 0 0;font:23px/1.65 var(--note);color:#785269}
.scratch-letter-coating{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;user-select:none}
.scratch-letter-coating[hidden]{display:none!important}
.scratch-letter-status{color:#705265;font:13px/1.7 var(--body);max-width:55ch;margin:20px auto 16px;min-height:22px}
.scratch-letter-section>.btn{min-height:48px;background:#78536b;color:#fff8ed;white-space:normal}
/* Ghi chú thời gian dành cho người xem. Nội dung và số giây lấy từ EDIT-HERE.js. */
.film-premiere .premiere-controls{flex-direction:column;align-items:center;gap:10px}
.premiere-button-row{display:flex;justify-content:center;gap:10px}
.intro-timing-note{font:12px/1.6 var(--body);letter-spacing:0;text-align:center}
.intro-timing-note p{margin:0;text-wrap:pretty}
.film-premiere .premiere-guide{font:12px/1.6 var(--body);margin:0;color:inherit}
.film-retrospective .film-guide{font:11px/1.6 var(--body);margin:0;color:inherit}
.premiere-controls .intro-timing-note{max-width:600px;color:#6e4b60;background:#fff9f1de;border:1px solid #d4b4c588;padding:10px 18px;border-radius:12px}
.premiere-countdown{display:block;color:#805870;font-weight:700;font-variant-numeric:tabular-nums;margin-top:3px}
.film-premiere .premiere-memories{padding:30px 30px 190px}
.film-premiere .premiere-photo-stage{height:min(52dvh,calc(100dvh - 320px),480px)}
.film-premiere .premiere-prologue,.film-premiere .premiere-title{padding-bottom:180px}
.film-retrospective{padding-bottom:154px!important}
.film-retrospective .retrospective-stage{height:calc(100dvh - 220px)}
.film-retrospective .film-controls{gap:8px 12px;padding:13px 16px 12px;width:min(980px,calc(100% - 32px))}
.film-retrospective .ending-timing-note{flex-basis:100%;color:#ecd8df;font-size:11px;max-width:850px;margin:0 auto 4px}
.film-retrospective .film-time{max-width:none;font-size:12px;flex:1;min-width:170px}
.film-retrospective .retrospective-plate{transition:opacity 1.1s ease}
.film-retrospective[data-paused=true] *{animation-play-state:paused!important}
/* Ánh sáng trở lại khi đọc thư; màn khép nhẹ ở hình cuối. */
.film-retrospective.is-credits .film-light{background:radial-gradient(ellipse at 50% 45%,#ffe8c882,transparent 65%);animation:thanks-light-return 3s ease both}
.film-retrospective.is-credits .film-thanks p{animation-duration:1s;animation-delay:calc(var(--credit-order)*.8s)}
.film-retrospective.is-credits .film-credits h2{animation:thanks-title 1.8s ease both}
.film-final-curtain{position:fixed;inset:0;background:#2b1d2d;opacity:0;z-index:7;pointer-events:none}
.film-retrospective.is-finished .film-final-curtain{animation:film-final-close 1.8s ease both}
.film-retrospective.is-finished .closure-finished{animation:thanks-title 2s ease both}
@keyframes thanks-light-return{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
@keyframes thanks-title{from{opacity:.1;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes film-final-close{0%{opacity:.9;clip-path:inset(0)}100%{opacity:0;clip-path:inset(49.9% 0)}}
@media(max-width:760px){
 .scratch-letter-section{padding:22px 12px;margin:28px auto 36px}.scratch-letter-body{padding:28px 22px}.scratch-letter-body p{font-size:15px;line-height:1.9}.scratch-letter-body h2{font-size:31px}.scratch-letter-body .scratch-letter-signature{font-size:21px}
 .film-premiere .premiere-memories{padding:24px 12px 190px}.premiere-controls .intro-timing-note{font-size:11px;padding:9px 12px}.film-premiere .premiere-guide{font-size:11px}.film-retrospective .film-guide{font-size:10px;line-height:1.5}.film-premiere .premiere-controls{gap:8px}
 .film-retrospective{padding:58px 16px 180px!important}.film-retrospective .retrospective-stage{height:calc(100dvh - 240px);gap:12px}
 .film-retrospective .film-controls{padding:12px 10px 10px;gap:7px;width:calc(100% - 24px)}.film-retrospective .ending-timing-note{font-size:10px;line-height:1.5}.film-retrospective .film-time{flex-basis:100%;min-width:0;font-size:11px;text-align:center;margin:0}.film-retrospective .film-controls button{min-height:40px;font-size:11px}
 .film-retrospective .film-credits{padding:12px 8px}.film-retrospective .film-thanks p{font-size:14px;line-height:1.8}.film-retrospective .film-signature{font-size:18px;margin:20px 0 14px}
}
@media(prefers-reduced-motion:reduce){.film-final-curtain,.film-retrospective.is-credits .film-light,.film-retrospective.is-credits .film-credits h2,.film-retrospective.is-finished .closure-finished{animation:none!important}}
