:root{--accent:#d9b789;--nebula-opacity:.75;--mouse-x:50%;--mouse-y:50%}
body{background-color:#080d13}button{color:inherit}button,a,input,select,textarea{outline-offset:6px}button:focus-visible,a:focus-visible{outline:2px solid #edd0a0}button:disabled{opacity:.5;cursor:wait}
#nebula{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:var(--nebula-opacity)}
main{position:relative;z-index:1} .page: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:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 10%,#04070dc9 100%);z-index:1}
.gateway{padding:130px 7vw 110px;min-height:100vh}.gateway-copy{z-index:4}.gateway-copy h1{font-family:Georgia,'Times New Roman',serif;font-weight:400;font-size:clamp(70px,8.2vw,155px);line-height:.95;letter-spacing:-.065em}.gateway-copy h1 span{color:#ead1ad;-webkit-text-stroke:0;text-shadow:0 0 80px #f0be6540;font-style:italic}.gateway-copy .lede{max-width:530px;font-size:15px;line-height:1.9;color:#b4b8be}.kicker{color:#d5b889;letter-spacing:.3em}.btn-primary{background:linear-gradient(125deg,#e6c69a,#b78b61);color:#201c18;box-shadow:0 7px 35px #d2a77920;border-color:#ead5ad}.btn{font-size:11px;letter-spacing:.12em;border-radius:3px;padding:18px 24px}.btn-ghost{color:#e8ddd0}.aurora{opacity:.045}.gateway-orbit{position:absolute;width:75vw;height:75vw;border:1px solid #dec28b12;border-radius:50%;right:-25vw;pointer-events:none}.memory-dial{width:min(39vw,620px);perspective:1100px;transform-style:preserve-3d;filter:drop-shadow(0 0 70px #d68d5530)}.dial-ring{border-color:#ddbd8066}.r1{box-shadow:0 0 50px #e6a06015,inset 0 0 25px #e6a06015}.r2{inset:8%;border-color:#83c8dd66}.r3{inset:22%;border-color:#decda655}.dial-core{background:radial-gradient(circle at 30% 20%,#ecd8a936,#0a1b28a8 70%);box-shadow:inset -15px -10px 40px #020710,0 0 65px #74c1cb25;transform:translateZ(60px)}.dial-core span{font-family:Georgia,serif;color:#eddbbc}.dial-core small{font-size:9px}.dial-ring:before,.dial-ring:after{width:5px;height:5px;background:#ffdeab;box-shadow:0 0 20px #d7b17a}.orbit-photo{position:absolute;width:100px;height:132px;object-fit:cover;padding:5px 5px 20px;background:#e8dcc4;box-shadow:0 20px 60px #0008;transform:translateZ(80px) rotate(var(--r));animation:photo-drift 8s ease-in-out infinite;pointer-events:none}.orbit-photo:nth-of-type(1){left:0;top:5%;--r:-14deg}.orbit-photo:nth-of-type(2){right:-2%;top:33%;--r:12deg;animation-delay:-3s}.orbit-photo:nth-of-type(3){left:22%;bottom:-4%;--r:-6deg;animation-delay:-5s}@keyframes photo-drift{50%{translate:0 -17px}}
.gateway-index{left:7vw;right:7vw;bottom:36px;justify-content:space-between;border-top:1px solid #ddc69926;padding-top:22px;font-size:9px}.gateway-index a:hover{color:#ffdeb0}.topbar,.chapter-nav{background:linear-gradient(#080d13e8,#080d1370);border-bottom:1px solid #ffffff0c}.sigil{font-family:Georgia,serif;letter-spacing:.08em}.topbar .sigil: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:' / A PERSONAL ARCHIVE';font:9px system-ui;letter-spacing:.22em;margin-left:18px;color:#a6a8ad}
.chapter-nav{padding-right:160px}.experience-tools{position:fixed;bottom:22px;left:24px;display:flex;align-items:center;gap:8px;z-index:55}.experience-tools button,.extra-nav{border:1px solid #d5bb8a44;background:#101820df;backdrop-filter:blur(15px);color:#e8d4b6;border-radius:3px;padding:11px 14px;font-size:10px;letter-spacing:.1em;cursor:pointer}.extra-nav{position:fixed;right:24px;top:12px;z-index:55}.experience-tools .status-dot{width:5px;height:5px;background:#d3b386;border-radius:50%;box-shadow:0 0 8px #f3cf86}.experience-tools small{font-size:8px;letter-spacing:.15em;color:#a4a8ae;margin-left:5px}.scroll-line{position:fixed;top:0;left:0;height:2px;background:linear-gradient(90deg,#ae775c,#eed3a8,#94cdd7);width:0;z-index:150}.cursor-halo{position:fixed;width:350px;height:350px;border-radius:50%;pointer-events:none;z-index:2;background:radial-gradient(circle,#e4bd7510,transparent 65%);transform:translate(-50%,-50%)}
.odyssey-dialog{color:#eee7da;background:#0c141def;border:1px solid #c7ac7940;backdrop-filter:blur(30px);width:min(850px,92vw);max-height:85vh;padding:40px;box-shadow:0 40px 180px #000;border-radius:6px}.odyssey-dialog::backdrop{background:#02060aba;backdrop-filter:blur(12px)}.odyssey-dialog h2{font:400 40px Georgia,serif;margin:10px 0 28px}.odyssey-dialog p{color:#acb6c1;font-size:14px;line-height:1.7}.dialog-close{float:right;background:none;border:0;color:#e8d4b6;font-size:25px;cursor:pointer}.chapter-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#bdac8726}.chapter-grid a{padding:24px;background:#101821;display:flex;gap:18px;align-items:center;font:22px Georgia,serif}.chapter-grid a small{font:10px system-ui;color:#cbb78d}.chapter-grid a:hover{background:#21303e}.settings-grid{display:grid;gap:20px}.settings-grid label{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:13px}.settings-grid input[type=range]{width:48%;accent-color:#dfc191}.settings-grid select,.media-form select,.media-form input{padding:10px;background:#182530;color:#ede2cf;border:1px solid #a9906355;max-width:100%}.media-form{display:grid;gap:16px}.media-form label{display:grid;gap:8px;font-size:13px}.media-note{min-height:22px;font-size:13px;color:#e0c18f}.media-status{font-size:12px;color:#b7c0c9;line-height:1.8}.toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);z-index:200;padding:14px 24px;background:#1b2c38;border:1px solid #d0b68655;color:#e7d9bc;max-width:90vw;font-size:13px;box-shadow:0 10px 50px #0007}.page-gallery .gallery-intro h1{font-family:Georgia,serif;font-weight:400}.gallery-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:25px}.polaroid{border-radius:1px;transition:box-shadow .3s;will-change:transform}.polaroid:hover{box-shadow:0 25px 80px #000,0 0 25px #f1c98122}.polaroid-field{background-size:65px 65px;background-image:radial-gradient(#e0c19c22 1px,transparent 1px)}.lightbox{z-index:110}.lightbox-prev,.lightbox-next{position:absolute;top:50%;background:#101923aa;border:1px solid #b79a6055;padding:20px;color:#fff;font-size:24px;cursor:pointer}.lightbox-prev{left:20px}.lightbox-next{right:20px}.lightbox img{object-fit:contain}.cinema-empty{padding:15px;text-align:center;color:#c4b28f;font-size:13px}.reel-item{color:inherit;text-align:left}.reel-item.active{border-color:#d3b382;box-shadow:0 0 30px #e4bc6220}.audio-visualizer{display:flex;height:60px;align-items:center;justify-content:center;gap:5px;margin:20px}.audio-visualizer i{display:block;width:3px;height:8px;background:#d6ba8c;border-radius:3px}.audio-playing .audio-visualizer i{animation:bars .9s ease-in-out infinite alternate;animation-delay:var(--delay)}@keyframes bars{to{height:45px;box-shadow:0 0 12px #d6ba8c88}}.star-list{position:absolute;right:4vw;top:16vh;display:grid;gap:9px;z-index:4}.star-list button{background:#0c192799;border:1px solid #d1b78630;color:#ddccab;padding:10px 18px;cursor:pointer;text-align:left;font:12px Georgia,serif}.star-note{z-index:60;bottom:90px}.letter-card{cursor:pointer;transition:box-shadow .5s}.letter-card:hover{box-shadow:0 40px 110px #0009,0 0 35px #ebc99014}.letter-editor{width:100%;min-height:240px;background:#eae0cb;color:#30251e;font:18px/1.8 Georgia,serif;padding:25px;border:0;resize:vertical}.letter-hint{font:10px system-ui!important;letter-spacing:.08em;opacity:.6}.finale-return{position:absolute;bottom:15vh;color:#d9c3a0;border:1px solid #d9c3a044;padding:16px 26px;background:#141923;opacity:0;transition:opacity 2s;cursor:pointer}.finale-return.visible{opacity:1}.motion-paused *, .motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important;scroll-behavior:auto!important}.motion-paused .cursor-halo{display:none}
@media(max-width:900px){.gateway{grid-template-columns:1fr;padding-bottom:110px}.memory-dial{width:60vw;margin:60px auto}.gateway-index{position:static;margin-top:70px}.chapter-nav{padding-right:120px;letter-spacing:.02em}.extra-nav{right:10px}.orbit-photo{width:75px;height:100px}.star-list{top:auto;bottom:100px;right:20px;grid-template-columns:repeat(2,1fr)}.cosmos-copy{max-width:80vw}.experience-tools small{display:none}.odyssey-dialog{padding:24px}.chapter-grid{grid-template-columns:1fr}.topbar .sigil:after{display:none}.floating-photo{opacity:.5}.story-copy h1{font-size:64px}.gateway-copy h1{font-size:15vw}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(min-width:901px){.gateway-index{bottom:90px}.gateway{padding-bottom:170px}}
.gallery-intro: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:'NHẤP ĐÚP ĐỂ MỞ  ·  SHIFT + LĂN CHUỘT ĐỂ XOAY';display:block;margin-top:18px;color:#b8b0a0;font-size:9px;letter-spacing:.12em}
@media(min-width:901px){.memory-dial{width:min(38vw,calc(100vh - 300px),620px)}.gateway{padding-top:110px;padding-bottom:150px}}
