/* Memory Odyssey / Atelier edition. Local Vietnamese fonts; scene-level art direction. */
@font-face{font-family:Fraunces;src:url('../assets/fonts/Fraunces.ttf') format('truetype');font-weight:100 900;font-display:swap}
@font-face{font-family:'Nunito Sans';src:url('../assets/fonts/NunitoSans.ttf') format('truetype');font-weight:200 900;font-display:swap}
@font-face{font-family:'Patrick Hand';src:url('../assets/fonts/PatrickHand.ttf') format('truetype');font-display:swap}
:root{--body:'Nunito Sans','Segoe UI',sans-serif;--display:Fraunces,Georgia,serif;--note:'Patrick Hand','Segoe UI',sans-serif;--ink:#42334b;--soft-ink:#715f76;--accent:#875c78;--sheet:#fffaf0;--scene:#f0ebe2;--shadow:0 18px 55px #47344a20}
body.page{background:radial-gradient(ellipse at 90% 15%,#e2dbe977,transparent 48%),var(--scene);color:var(--ink);font-family:var(--body);font-size:16px;--text:var(--ink);--muted:var(--soft-ink);--rose:var(--accent)}
body.page-origin{--scene:#eee8df}body.page-days{--scene:#e8edf0}body.page-gallery{--scene:#eae3d5}body.page-room{--scene:#eee6df}body.page-cinema{--scene:#272332;--ink:#f9efdf;--soft-ink:#d4c4d5;--accent:#e3b68c}body.page-constellation{--scene:#e2e9e2}body.page-letters{--scene:#f0e8d8}body.page-petals{--scene:#e5e0ec}body.page-finale{--scene:#e5e7ef}body.page-secret{--scene:#302b40;--ink:#fff1dc;--soft-ink:#d4c7dc;--accent:#efc18a}body.page-archive{--scene:#eeeade}
body[data-palette=lavender]{--accent:#76658f}body[data-palette=peach]{--accent:#9b6953}
h1,h2,h3,.chapter-brand,.page-next,.portal,.reel-item b{font-family:var(--display)!important;font-weight:450;letter-spacing:-.04em;font-optical-sizing:auto}
.page h1,.page h2,.page h3{color:var(--ink)}.page p{color:var(--soft-ink)}
.page :is(.cap,.day-tag,.photo-back,.letter-reading,.entry-footnote,.cover-heading,.room-response,.book-keepsake p,.petal-photo figcaption,.garden-note p,.little-magic){font-family:var(--note)!important;letter-spacing:0}
.page :is(.chapter-intro>p:last-of-type,.gallery-intro p:last-of-type,.story-copy p:last-child,.beat-text p){font-size:17px;color:var(--soft-ink)}
.kicker{font-size:11px;line-height:1.6;color:var(--accent);letter-spacing:.18em}.chapter-nav{background:#faf6edee;border-color:#63526725;color:#5c4e65;font-size:12px;backdrop-filter:blur(12px)}.chapter-brand{color:#4f4059;font-size:23px}.chapter-label{font-size:12px}.extra-nav{color:#5b4968;border-color:#bcb0bf;font-size:12px}.experience-tools button{font-size:11px;color:#644d70}.experience-tools small{color:#79627a}.btn{font-size:13px;border-radius:6px 14px 7px 14px}.btn-primary{background:#735771;border-color:#6b4d69;box-shadow:0 4px 0 #48344825}.btn-primary:hover{background:#8a6a80}.btn-ghost{color:#5c4e60;border-color:#b9a6b3;background:#fff9ed}.page-next{font-size:24px;color:var(--accent)}
.odyssey-dialog{--ink:#493a50;--soft-ink:#6d5b72;--accent:#875c78;color:var(--ink);border-radius:12px 35px 12px 12px;border-color:#b8a2b6;background:#fff9ec;max-height:85vh;overflow:auto}.odyssey-dialog h2{color:var(--ink)}.odyssey-dialog p{color:var(--soft-ink)}.chapter-grid a{background:#f1e9de;color:#55435e;font-family:var(--display);font-size:21px}.chapter-grid a small{color:#79677d}.chapter-grid a:nth-child(3n){background:#e5e8e5}
.cover-heading{font-size:17px;color:#786073}.album-entry{padding-top:28px}.storybook{max-width:1080px}.storybook>.room-art{filter:saturate(.65);border-radius:180px 180px 15px 15px}.book-copy{left:8%;top:14%;width:39%;transform:rotate(-3deg);background:#fff9e9f5;padding:30px 34px 36px;box-shadow:8px 12px 0 #5d465c16;border-radius:3px 7px 55px 3px}.book-copy: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;width:95px;height:30px;background:#c6ced7aa;left:35%;top:-14px;rotate:4deg}.book-copy h1{font-size:clamp(38px,4.4vw,62px);color:#503c56;line-height:1.13;margin:18px 0}.book-copy .kicker{font-size:10px;color:#8c6575}.book-copy .lede{font-size:16px;color:#6e5869;margin:20px 0}.book-copy .btn{font-size:13px;padding:14px 20px}.little-magic{font-size:16px;color:#79556e}.book-keepsake{left:66%;top:39%;width:23%;rotate:-5deg}.book-keepsake p{font-size:16px;color:#735569}.book-page-number{left:12%;bottom:11%;font-size:12px;color:#614954}.chapter-ribbon{gap:13px;margin-top:-12px;flex-wrap:wrap}.chapter-ribbon a{background:#f6efdf;color:#705c7e;border-color:#baa8b8}.chapter-ribbon a:nth-child(3n){background:#e3e9e6}.chapter-ribbon small{font-size:10px;color:#6c5972}.entry-footnote{font-size:17px;color:#766276}
.chapter-intro{text-align:left;max-width:none;margin-bottom:45px}.chapter-intro:before{display:none}.chapter-intro h1{font-size:clamp(44px,6vw,82px);max-width:900px}.chapter-intro .kicker{margin-bottom:22px}.story-hero{background:none}.story-copy h1{font-size:clamp(52px,7vw,100px)}.beat-media{rotate:-2deg}.memory-beat:nth-child(2n) .beat-media{rotate:3deg}.beat-text h2{font-size:44px}.memory-path{display:flex;align-items:flex-start;gap:70px;overflow-x:auto;scroll-snap-type:x proximity;padding:50px 35px 100px}.memory-path:before{left:0;right:0;top:48%;bottom:auto;border:0;border-top:3px dashed #9baeb4;transform:rotate(-3deg)}.day-window{min-width:320px;max-width:360px;scroll-snap-align:center;flex:0 0 34%;background:#fff9eb}.day-window:nth-child(2n){margin-top:110px;background:#f0edf4}.day-door h2{font-size:29px;color:#51425e}.day-tag{font-size:16px;color:#7a667c}.day-note{font:18px/1.8 var(--note);color:#62566a}.path-hint{font:18px var(--note);color:#63747b}
.polaroid-field{background-color:#e5dfd0;background-image:linear-gradient(#fff7df55 1px,transparent 1px),linear-gradient(90deg,#fff7df55 1px,transparent 1px);border-radius:8px;border-color:#c6b9a2;box-shadow:inset 0 0 90px #ad99842b}.polaroid .cap{color:#6a5468;font-size:19px}.photo-back{color:#6d5871}.gallery-intro h1{font-size:82px}.gallery-cat{width:175px}.dream-room{border-color:#fffbef;border-radius:100px 100px 12px 12px}.dream-room>.room-art{filter:saturate(.7)}.room-object>span:last-child{color:#5d4963;font-size:13px}.screen-room{background:#3b3146;border-color:#60536d;border-radius:8px;box-shadow:0 30px 100px #0f0a25aa}.screen-room:before,.screen-room:after{background:repeating-linear-gradient(90deg,#503c55 0 6px,#69516b 6px 12px)}.screen-room video{border:8px solid #eee3cc;border-radius:2px;background:#1c1724}.cinema-title h1{font-size:78px}.reel-item{border-radius:3px;background:#40354b;color:#f8e7d5;border-color:#807085}.reel-item b{color:#f8e7d5}.cinema-empty{color:#cab7cc}.audio-room{background:#352e40;border-color:#87768b}.audio-room h2{color:#f4e8d3}.audio-room p{color:#cbbdce}.cinema-bunting{color:#dbb991}.cinema-bunting span{color:#b5a5c4}.charm-garden{background:radial-gradient(ellipse at bottom,#aebfad88,transparent 60%),linear-gradient(#dce7e9,#f5f1df);border-color:#a7b9ae;box-shadow:inset 0 0 80px #fff8df}.memory-charm{color:#625666}.memory-charm small{font-size:13px;color:#826e7c}.memory-charm>span:not(.charm-icon){font-family:var(--display);font-size:18px}.letters-intro h1{font-family:var(--display);font-size:clamp(48px,6vw,84px);color:var(--ink)}.letter-card p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-family:var(--note);font-size:21px;color:#746174}.letter-card h2{font-size:28px}.letter-reading{font-size:24px;line-height:1.8;color:#55465d}.letter-card{border-radius:2px;background:#fff8e6}.companion-bubble{color:#624b6c;font-size:12px}.companion-button{width:95px;height:105px}.companion{width:110px}.lightbox #lightboxCaption{font:22px var(--note);color:#56405e}
.chapter-transition{background:var(--scene);transition:opacity .52s,clip-path .6s;transform:none;clip-path:circle(0% at 80% 85%)}.chapter-transition.leaving{clip-path:circle(150% at 80% 85%)}.chapter-transition[data-style=paper]{clip-path:inset(0 100% 0 0);background:#f4e9d2}.chapter-transition[data-style=paper].leaving{clip-path:inset(0)}.chapter-transition[data-style=veil]{clip-path:inset(0);filter:blur(12px);background:#392c47;transition:opacity .55s,filter .55s}.chapter-transition[data-style=veil].leaving{filter:blur(0)}.chapter-transition span{font:24px var(--display);color:#8c718f}.chapter-transition[data-style=veil] span{color:#f5e5d2}
.scene-arrival{animation:scene-arrive .8s both}@keyframes scene-arrive{from{opacity:0;translate:0 14px;filter:blur(5px)}to{opacity:1;translate:0;filter:blur(0)}}
.wand-cursor{position:fixed;z-index:500;pointer-events:none;color:#84617f;font:25px var(--display);text-shadow:0 0 10px #fff4c1;left:-100px;top:-100px;transform:translate(-50%,-50%);transition:color .2s}.wand-cursor small{position:absolute;left:20px;top:15px;white-space:nowrap;font:12px var(--body);padding:4px 8px;border-radius:4px;background:#fff9e9ed;color:#53405e}.wand-cursor small:empty{display:none}.cursor-tail{position:fixed;width:5px;height:5px;border-radius:50%;background:#c5adcf;pointer-events:none;z-index:499;left:-50px;top:-50px}.wand-cursor.is-down{scale:.8}
.secret-shell,.archive-shell{width:min(1150px,90vw);margin:auto;padding:70px 0 150px}.secret-shell h1,.archive-shell h1{font-size:clamp(50px,6.5vw,88px);line-height:1.12;margin:24px 0}.secret-stage{position:relative;min-height:540px;border:1px solid #c8b69544;border-radius:190px 190px 12px 12px;background:radial-gradient(ellipse at 50% 30%,#ae8faa33,transparent 65%),#252131;display:grid;place-items:center;overflow:hidden}.secret-stage: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;top:70px;white-space:pre;color:#ead6a0;font-size:25px}.music-box{width:220px;height:180px;border:8px double #d6ba88;border-radius:90px 90px 16px 16px;background:#87717f;color:#fff5de;cursor:pointer;font:68px var(--display);box-shadow:0 30px 90px #0005;transition:transform .7s,box-shadow .7s;touch-action:none}.music-box.charged{transform:translateY(-15px) rotate(-5deg);box-shadow:0 0 90px #e4bd8655}.secret-response{max-width:550px;font:24px/1.6 var(--note);text-align:center;min-height:80px;margin:25px auto}.secret-instruction{text-align:center;font-size:16px}.secret-stage .secret-label{position:absolute;bottom:35px;color:#dbc59f;font:18px var(--note)}.archive-search{display:flex;gap:15px;align-items:center;margin:35px 0}.archive-search input{font:18px var(--body);padding:15px 20px;width:min(480px,100%);border:0;border-bottom:1px solid #938292;background:#fff9ed;color:#51445b}.archive-list{display:grid;grid-template-columns:1fr 1fr;column-gap:60px}.archive-entry{border-top:1px solid #b4a7ab;padding:25px 0;display:grid;grid-template-columns:45px 1fr 25px;align-items:center;gap:10px}.archive-entry:hover{color:#946478}.archive-entry strong{font:26px var(--display)}.archive-entry small{display:block;color:#7b6c7b;font-size:14px;margin-top:8px}.archive-entry .stamp{color:#819780}.archive-colophon{padding:35px 0;border-top:1px solid #b4a7ab;margin-top:40px;max-width:650px;font:20px/1.7 var(--note)}.room-lamp{left:26%;top:20%}.dream-room.lamp-off .room-art{filter:brightness(.55) saturate(.6);transition:filter .7s}.room-lamp span:first-child{font-size:42px}.visited-counter{font:18px var(--note);color:#7d6882}
@media(pointer:fine){body.wand-active,body.wand-active a,body.wand-active button,body.wand-active [role=button]{cursor:none}}
@media(max-width:700px){.book-copy{left:5%;top:12%;width:65%;padding:18px;rotate:0}.storybook{aspect-ratio:auto;height:560px;width:100%}.book-copy h1{font-size:38px}.book-keepsake{left:66%;top:61%;width:30%;padding:5px}.book-keepsake p{font-size:12px}.book-page-number{bottom:8%;left:8%}.cover-heading{font-size:14px}.chapter-nav{padding:15px 105px 15px 15px;gap:12px}.chapter-label{display:none}.chapter-brand{font-size:18px}.extra-nav{right:10px;padding:10px;font-size:11px}.gallery-intro h1,.cinema-title h1{font-size:48px}.chapter-ribbon{gap:8px}.chapter-ribbon a{width:43px;height:55px}.day-window{min-width:250px}.memory-path{padding:25px 12px 60px;gap:35px}.archive-list{grid-template-columns:1fr}.archive-entry strong{font-size:24px}.secret-stage{min-height:420px}.companion{right:5px;bottom:65px}.experience-tools small{display:none}.wand-cursor,.cursor-tail{display:none}.room-lamp{top:13%}.room-lamp span:first-child{font-size:26px}.archive-search{display:block}.archive-search input{margin-top:12px}.letter-reading{font-size:21px}}
.storyboard{position:relative;aspect-ratio:16/9;overflow:hidden;background:#241e2c;border:8px solid #eee3cc}.storyboard>img{width:100%;height:100%;object-fit:cover;object-position:center 48%;filter:brightness(.72)}.storyboard>div{position:absolute;inset:auto 7% 9%;color:#fff3d8}.storyboard span{font:11px var(--body);letter-spacing:.2em}.storyboard p{font:clamp(20px,3vw,38px) var(--display);color:#fff3d8;margin:15px 0 20px}.storyboard.playing>img{animation:projected-frame 7.2s ease-in-out infinite alternate}@keyframes projected-frame{to{scale:1.12;translate:0 10px}}.storyboard[hidden],video[hidden]{display:none!important}.music-box.holding{box-shadow:0 0 100px #edc58e88;transform:scale(1.06)}
body.motion-paused *,body.motion-paused *:before,body.motion-paused *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.scene-arrival{animation:none}}
@media(max-width:700px){.companion{top:76px;bottom:auto;right:7px;width:60px}.companion-button{width:60px;height:65px}.companion-bubble{display:none}.chapter-ribbon{padding-bottom:35px}}
