/* Media-first visual layer */
:root{--memory-ink:#5d425d;--memory-pink:#f2b9cf;--memory-rose:#d97ca4;--memory-lilac:#c7b9ef;--memory-cream:#fff7ed;--memory-shadow:0 20px 60px #7d52652a}
/* Media thật luôn giữ nguyên màu/độ nét. Mọi hiệu ứng thị giác đặt ở khung hoặc lớp nền bên ngoài. */
img[data-media-managed]{filter:none!important}
.released .petal-photo{filter:none!important}
.memory-pulse,.memory-pack-shelf,.story-film,.story-credits{position:relative;margin:clamp(28px,5vw,72px) auto;padding:clamp(22px,3vw,38px);max-width:1180px;border:1px solid #d9bdca88;border-radius:32px;background:linear-gradient(145deg,#fffaf5ee,#fff3f8e8 55%,#f5f1ffee);box-shadow:var(--memory-shadow);overflow:hidden}
.memory-pulse::before,.memory-pack-shelf::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:-30% auto auto -8%;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,#ffd6e69e,transparent 68%);pointer-events:none}
.memory-pulse-copy,.memory-pack-heading{position:relative;z-index:1;max-width:760px}.memory-pulse-copy h2,.memory-pack-heading h2,.story-film h2,.story-credits h2{margin:.25rem 0 .65rem;font-size:clamp(1.7rem,3vw,3rem);line-height:1.05}.memory-pulse-copy>p:last-child,.memory-pack-heading>p:last-child,.story-film header>p:last-child{max-width:70ch;line-height:1.75;color:#745f70}
.memory-pulse-stats{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:22px 0 28px}.memory-pulse-stats span{display:grid;gap:4px;padding:16px 18px;border:1px solid #d8c0cd;border-radius:20px;background:#fffaf7cc;backdrop-filter:blur(14px)}.memory-pulse-stats strong{font:700 clamp(1.5rem,3vw,2.3rem) var(--display);color:#9e5578}.memory-pulse-stats small{color:#796571}
.memory-pulse-featured,.memory-pack-rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,330px);gap:16px;overflow-x:auto;padding:8px 2px 14px;scroll-snap-type:x proximity;scrollbar-width:thin}.memory-pulse-featured{grid-auto-columns:minmax(230px,290px)}
.memory-pack-card{scroll-snap-align:start;min-width:0;overflow:hidden;border:1px solid #d8becb;border-radius:26px;background:#fffaf6;box-shadow:0 12px 36px #7650661f;transform:perspective(900px) rotateX(var(--story-rx,0deg)) rotateY(var(--story-ry,0deg));transition:transform .22s ease,box-shadow .22s ease}.memory-pack-card:hover{box-shadow:0 20px 48px #7650662e}.memory-pack-cover{position:relative;display:block;width:100%;aspect-ratio:4/3;padding:0;border:0;background:linear-gradient(135deg,#f8d7e4,#ded5fa);overflow:hidden;cursor:pointer}.memory-pack-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.2,.7,.2,1)}.memory-pack-cover:hover img{transform:scale(1.045)}.memory-pack-cover[data-type=video]::after,.memory-pack-media[data-type=video]::after,.story-film-frame[data-type=video]::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;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#fff8;color:#67435a;backdrop-filter:blur(12px);box-shadow:0 6px 18px #4d344633}.memory-pack-cover[data-type=video]::after{right:14px;bottom:14px}.memory-pack-cover.is-empty{display:grid;place-items:center;font-size:2rem;color:#a57a91}.memory-pack-body{padding:18px 18px 20px}.memory-pack-body h3{margin:.2rem 0 .45rem;font-size:1.22rem;line-height:1.25}.memory-pack-meta{margin:0;color:#8c7180;font-size:.82rem}.memory-pack-story{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.6;color:#6f5a67}.memory-pack-open{margin-top:10px;border:0;background:transparent;padding:8px 0;color:#a34e77;font-weight:700;cursor:pointer}.memory-pack-card[data-confidence=high] .memory-pack-body::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:'AUTO · HIGH';display:inline-block;margin-top:10px;padding:4px 8px;border-radius:999px;background:#eaf6ee;color:#447456;font-size:.65rem;font-weight:800;letter-spacing:.08em}
.memory-pack-dialog{width:min(1000px,94vw)}.memory-pack-dialog-meta{color:#876d7d}.memory-pack-dialog-story{max-width:68ch;line-height:1.8}.memory-pack-dialog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;margin:22px 0}.memory-pack-media{position:relative;display:grid;gap:6px;padding:0 0 8px;border:1px solid #dbc5d0;border-radius:18px;background:#fff;overflow:hidden;cursor:pointer;text-align:left}.memory-pack-media img{width:100%;aspect-ratio:1/1;object-fit:cover}.memory-pack-media span{padding:0 10px;font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.memory-pack-media[data-type=video]::after{right:8px;top:8px;width:30px;height:30px;font-size:.72rem}
main.has-memory-cover::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:0 0 auto;height:min(44vh,520px);background:linear-gradient(to bottom,#fff0 0,#fff7ed 96%),var(--memory-cover) center 34%/cover no-repeat;opacity:.11;pointer-events:none;mask-image:linear-gradient(#000 0,transparent 100%)}main.has-memory-cover{position:relative;isolation:isolate}
@media(max-width:760px){.memory-pulse,.memory-pack-shelf,.story-film,.story-credits{border-radius:24px;padding:19px 16px;margin:24px 10px}.memory-pulse-stats{grid-template-columns:repeat(2,1fr)}.memory-pulse-featured,.memory-pack-rail{grid-auto-columns:minmax(78vw,78vw)}.memory-pack-dialog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.memory-pack-card,.memory-pack-cover img{transition:none!important;transform:none!important}}

/* Emotion authoring v2 — cinematic media effects */
.cinematic-reveal,.memory-pack-card{opacity:0;transform:translateY(22px) scale(.985);transition:opacity .75s ease var(--reveal-delay,0ms),transform .75s cubic-bezier(.2,.75,.2,1) var(--reveal-delay,0ms)}
.cinematic-reveal[data-reveal=true],.memory-pack-card[data-reveal=true]{opacity:1;transform:translateY(0) scale(1)}
.memory-pack-card{position:relative;isolation:isolate}.memory-pack-card::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:3;inset:-35%;pointer-events:none;background:linear-gradient(115deg,transparent 36%,#fff9 48%,transparent 60%);transform:translateX(-55%) rotate(8deg);opacity:0;transition:transform .75s ease,opacity .35s ease}.memory-pack-card:hover::after{transform:translateX(55%) rotate(8deg);opacity:.55}
.memory-pack-cover,.memory-pack-media{position:relative;isolation:isolate}.memory-hover-video{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:cover;border:0;animation:memory-video-in .42s ease both;pointer-events:none}.memory-pack-media .memory-hover-video{aspect-ratio:1/1}.memory-pack-cover .memory-hover-video{aspect-ratio:4/3}@keyframes memory-video-in{from{opacity:0;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}
.memory-pack-cover::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;z-index:2;inset:0;pointer-events:none;background:radial-gradient(circle at var(--pointer-x,50%) var(--pointer-y,40%),#fff8,transparent 28%),linear-gradient(to top,#4d203122,transparent 45%);mix-blend-mode:screen;opacity:.35;transition:opacity .25s ease}.memory-pack-card:hover .memory-pack-cover::before{opacity:.8}
.memory-pack-body .kicker{letter-spacing:.18em}.memory-pack-dialog::backdrop{background:radial-gradient(circle at 50% 20%,#9b607044,#2c1d2b88);backdrop-filter:blur(8px)}.memory-pack-dialog[open]{animation:memory-dialog-in .48s cubic-bezier(.2,.8,.2,1)}@keyframes memory-dialog-in{from{opacity:0;transform:translateY(18px) scale(.975)}to{opacity:1;transform:none}}
.memory-pack-dialog-grid{perspective:900px}.memory-pack-media{transition:transform .25s ease,box-shadow .25s ease}.memory-pack-media:hover{transform:translateY(-5px) rotateX(1.2deg);box-shadow:0 16px 34px #68495d29}.memory-pack-media img{transition:transform .55s ease}.memory-pack-media:hover img{transform:scale(1.045)}
.home-heart-card{display:grid;gap:8px}.home-heart-line{position:relative;margin:0;padding:10px 12px 10px 30px;line-height:1.65;color:#6c5262;border-bottom:1px dashed #d8bec9}.home-heart-line::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;left:7px;top:10px;color:#c66e95}.home-heart-line:last-child{border-bottom:0}

/* Viewer v2 — ảnh giữ nguyên màu/độ nét, video có một thanh cinema riêng. */
.memory-inspector{isolation:isolate}.viewer-cinema-head{display:grid;grid-template-columns:auto minmax(120px,1fr);gap:18px;align-items:center;margin:4px 0 10px;padding:10px 12px;border-top:1px solid #d9c3ce;border-bottom:1px solid #d9c3ce;color:#8c6378}.viewer-cinema-head>span{font:800 10px/1.4 var(--body);letter-spacing:.18em}.viewer-cinema-head>div{height:3px;background:#d8c0cb66;overflow:hidden}.viewer-cinema-head i{display:block;width:0;height:100%;background:linear-gradient(90deg,#bf7195,#7d5d75);transition:width .2s linear}.inspect-media.inspect-video{padding:14px;background:#1f1924;border:1px solid #5f4d5d;box-shadow:inset 0 0 0 8px #2a222d}.inspect-media.inspect-video::before,.inspect-media.inspect-video::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:12px;right:12px;height:7px;background:repeating-linear-gradient(90deg,#dfcfb8 0 11px,transparent 11px 19px);opacity:.36;pointer-events:none}.inspect-media.inspect-video::before{top:4px}.inspect-media.inspect-video::after{bottom:4px}.inspect-media.inspect-video video{display:block;width:100%;max-height:min(66vh,720px);object-fit:contain;background:#151118}.inspect-media.inspect-video.video-playing{box-shadow:inset 0 0 0 8px #2a222d,0 22px 60px #3c28352b}.viewer-status{min-height:1.5em}.viewer-playlist{width:100%;margin-top:10px;padding:10px 12px;border:1px solid #d2bdc7;border-radius:12px;background:#fffaf4;color:#614b59}
.film-library .collection-memory,.memory-pack-cover[data-type=video],.memory-pack-media[data-type=video]{position:relative}.film-library .collection-memory::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;z-index:4;left:8px;right:8px;top:5px;height:5px;background:repeating-linear-gradient(90deg,#f5dfc9 0 9px,transparent 9px 15px);opacity:.35;pointer-events:none}.film-library .collection-memory::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:4;left:8px;right:8px;bottom:5px;height:5px;background:repeating-linear-gradient(90deg,#f5dfc9 0 9px,transparent 9px 15px);opacity:.25;pointer-events:none}
@media(prefers-reduced-motion:reduce){.cinematic-reveal,.memory-pack-card{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}.memory-pack-card::after,.memory-hover-video{display:none!important}}
