*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background:#07090b;color:#e7e3da;font-family:"Microsoft YaHei","PingFang SC",sans-serif}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:#a8aaa9;text-decoration:none}a:hover{color:#e5c18a}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #ebc78a;outline-offset:5px}#stars{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1}header{height:90px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff0a;font-size:13px}.brand{color:#eee6d6;letter-spacing:3px;font-size:17px}.brand span{display:block;font-size:9px;letter-spacing:4px;color:#848782;margin-top:7px}main{max-width:1480px;margin:auto;padding:64px 5vw 24px}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px}.eyebrow{font-size:10px;letter-spacing:3px;color:#b49d7b;margin:0 0 16px}h1{font-family:Georgia,"Songti SC","SimSun",serif;font-size:clamp(32px,4vw,56px);font-weight:400;letter-spacing:3px;margin:0}.subtitle{color:#92938f;font-size:14px;margin:20px 0 0;letter-spacing:2px}.gold{border:1px solid #b899665c;background:linear-gradient(130deg,#dcc197,#b99460);color:#201a12;padding:14px 23px;border-radius:6px;font-size:13px;letter-spacing:1px;box-shadow:0 4px 24px #c4984a13}.gold:hover{filter:brightness(1.1)}.collection-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:60px 0 20px;border-bottom:1px solid #ffffff12;padding-bottom:20px}.collection-head h2{font-size:17px;font-weight:400;letter-spacing:3px;margin:0}.collection-head h2 span{font-size:11px;color:#b49d7b;margin-left:15px}.collection-head p{font-size:11px;color:#797e7e;letter-spacing:1px}#status{font-size:13px;color:#c9af87}.capsules{display:flex;gap:22px;overflow-x:auto;padding:14px 4px 32px;scroll-snap-type:x proximity;min-height:430px;scrollbar-color:#5f513d transparent}.capsule{position:relative;flex:0 0 242px;min-height:408px;border:1px solid #ffffff16;border-radius:22px;background:linear-gradient(145deg,#ffffff06,#ffffff01);padding:27px 20px 22px;text-align:center;scroll-snap-align:start;transition:transform .4s,border-color .4s,background .4s;color:inherit}.capsule:hover{transform:translateY(-6px);border-color:#bca16c70;background:linear-gradient(145deg,#ffffff0c,#ffffff02)}.capsule.ready{border-color:#d5b17352}.capsule .tag{font-size:9px;color:#767a78;letter-spacing:4px;margin:0 0 12px}.capsule h3{font-family:Georgia,"SimSun",serif;font-size:18px;font-weight:400;line-height:1.5;margin:0;height:54px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.vessel{position:relative;width:118px;height:192px;margin:20px auto 8px;border-radius:64px 64px 28px 28px;border:1px solid #b7bfc34a;box-shadow:inset 4px 1px 5px #ffffff16,inset -5px 0 5px #000,0 0 1px 2px #ffffff07;background:linear-gradient(100deg,#ffffff06,transparent 24%,#ffffff04 65%,#ffffff18 92%,#ffffff04);transition:filter .5s}.vessel:before{content:"";position:absolute;inset:5px 8px 13px;border-radius:60px 60px 22px 22px;border-top:2px solid #ffffff3b;border-left:3px solid #ffffff22;pointer-events:none}.vessel:after{content:"";position:absolute;bottom:10px;left:8px;right:8px;height:19px;border:1px solid #9c9c9b59;border-radius:50%;background:#a7a7a711}.vessel .snapshot{position:absolute;left:19px;top:80px;width:78px;height:59px;padding:4px 4px 12px;background:#b1aca1;box-shadow:0 5px 20px #000;transform:rotate(-9deg);object-fit:cover;filter:brightness(.5) saturate(.4)}.vessel .blank-photo{background:linear-gradient(170deg,#555c62 0%,#333b45 45%,#b88d55 48%,#242c31 70%);border:5px solid #9a9588;border-bottom-width:14px}.spark{position:absolute;bottom:20px;left:50%;width:3px;height:10px;border-radius:50%;background:#ad9571;box-shadow:0 0 16px 5px #c4a06244}.ready .vessel{border-color:#dcbd7ca6;box-shadow:inset 4px 1px 7px #f8e0aa55,inset -5px 0 8px #b3935522,0 0 30px #a2742222}.ready .spark{background:#ffe6a0;box-shadow:0 0 15px 6px #e8b65288,0 -15px 25px 5px #efac3f66;animation:glow 3s ease-in-out infinite}.ready .snapshot{filter:brightness(.85) saturate(.8)}.badge{position:relative;display:inline-block;border:1px solid #ffffff15;border-radius:20px;background:#17191a;color:#a9aaa4;font-size:11px;padding:6px 12px;margin-top:-22px;z-index:1}.ready .badge{background:#50391d;color:#edd3a2;border-color:#c99c4e88;box-shadow:0 0 16px #b8852622}.date-label{font-size:10px;color:#6f7673;letter-spacing:2px;margin:23px 0 7px}.date{font-size:17px;letter-spacing:2px;color:#b4b5ae}.capsule .state{font-size:11px;color:#ac9774;margin-top:8px}.capsule .demo-label{position:absolute;top:12px;right:13px;font-size:9px;color:#72756c}.new-card{display:flex;flex-direction:column;align-items:center;justify-content:center;border-style:dashed;background:#ffffff01;min-height:408px}.new-card .plus{font-size:35px;font-weight:200;color:#ac9876;margin-bottom:25px}.new-card p{font-size:12px;color:#737b79;line-height:1.9;margin-top:14px}footer{color:#656e6c;font-size:11px;letter-spacing:1px;padding-top:20px;border-top:1px solid #ffffff0c}dialog{color:#e7e3da;background:#101416;border:1px solid #b49d7b4a;border-radius:20px;padding:32px;width:min(600px,calc(100% - 28px));max-height:90dvh;overflow:auto;box-shadow:0 25px 120px #000}dialog::backdrop{background:#000b;backdrop-filter:blur(10px)}.dialog-head{display:flex;align-items:start;justify-content:space-between;gap:16px}.dialog-head h2{font-family:Georgia,"SimSun",serif;font-size:28px;font-weight:400;margin:0 0 26px}.close{border:0;background:transparent;color:#a8aaa4;font-size:28px;line-height:1;padding:0 4px}label{display:block;font-size:12px;color:#b9bdb5;line-height:1.7;margin-bottom:18px}input,textarea{display:block;width:100%;margin-top:8px;padding:12px;border:1px solid #ffffff20;border-radius:6px;background:#ffffff05;color:#e8e4da;font-size:13px}textarea{resize:vertical}input:focus,textarea:focus{outline:1px solid #b49d7b}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hint{font-size:11px;color:#7e8781;line-height:1.8}#form-error{font-size:12px;color:#f0ae9b}#seal{width:100%;margin-top:12px}#memory-title{font-family:Georgia,"SimSun",serif;font-size:30px;font-weight:400;line-height:1.5}.memory-photos img{width:100%;max-height:360px;object-fit:contain;border-radius:8px;margin:10px 0 20px}#memory-letter{white-space:pre-wrap;overflow-wrap:anywhere;line-height:2;color:#c0c3b9;font-size:15px;margin-bottom:30px}.memory-date{color:#ab9571;font-size:11px;letter-spacing:1px}.opening .vessel{animation:unseal 1.3s ease forwards}.shard{position:absolute;left:50%;top:54%;width:2px;height:15px;background:linear-gradient(#eddbb2aa,transparent);opacity:0;pointer-events:none}.opening .shard{animation:scatter 1.3s ease-out forwards}@keyframes glow{50%{opacity:.5;transform:scale(.85)}}@keyframes unseal{35%{filter:brightness(2.5);box-shadow:0 0 65px #e6bb6677}75%,100%{opacity:0;transform:scale(1.15);filter:blur(4px)}}@keyframes scatter{20%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r))}}@media(max-width:650px){header{height:76px;padding:0 20px}.brand{font-size:14px}header>a:last-child{font-size:11px}main{padding:40px 20px 20px}.intro{align-items:start;flex-direction:column}.intro .gold{margin-top:10px}.collection-head{margin-top:40px}.collection-head p{display:none}.capsules{gap:16px}.capsule{flex-basis:222px}.form-row{grid-template-columns:1fr;gap:0}dialog{padding:24px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.photo-count{display:block;color:#ac9774;font-size:10px;margin-top:6px}.memory-photos{display:grid;gap:12px}

/* Glass catches the small light source at the base. */
.capsule{background:linear-gradient(145deg,#ffffff09,#ffffff02 48%,#ffffff07);border-color:#ffffff26;box-shadow:inset 0 1px 2px #ffffff12,0 12px 32px #0005}
.capsule.ready{border-color:#d5bd864f;background:radial-gradient(ellipse at 50% 63%,#a7742010,transparent 57%),linear-gradient(145deg,#ffffff09,#ffffff02 48%,#ffffff07)}
.vessel{isolation:isolate;width:118px;height:192px;border-color:#b5b6b084;background:radial-gradient(ellipse at 50% 98%,#d4b87924,transparent 61%),linear-gradient(90deg,#ffffff0c,transparent 15%,#ffffff03 70%,#ffffff23 95%,#ffffff06);box-shadow:inset 3px 0 5px #fff3,inset -3px 0 4px #fff2,inset 0 2px 3px #fff3,0 0 0 2px #ffffff08,0 8px 24px #0008}
.vessel:before{inset:4px 5px 8px;border-left:2px solid #fff5;border-right:1px solid #fff3;border-top:2px solid #fff6;box-shadow:inset 2px 0 5px #ffffff10}
.vessel:after{bottom:12px;left:7px;right:7px;height:20px;border-color:#c9b88e88;background:radial-gradient(ellipse,#e5c38b35,transparent 70%);box-shadow:0 1px 5px #e2bd742b,inset 0 -1px 3px #fff2}
.inner-light{position:absolute;inset:2px;border-radius:inherit;background:radial-gradient(ellipse at 50% 87%,#ffe2a24d 0%,#e4aa5324 16%,transparent 57%);pointer-events:none}
.glass-reflection{position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse 5px 18px at 15% 24%,#fff9,transparent),radial-gradient(ellipse 4px 20px at 88% 23%,#fff9,transparent),radial-gradient(ellipse 17px 3px at 50% 5%,#ffe6b066,transparent);pointer-events:none;z-index:3}
.vessel .snapshot{top:72px;left:21px;width:74px;height:57px;transform:rotate(5deg);filter:brightness(.7) saturate(.65);box-shadow:0 5px 12px #0008,0 10px 22px #dba35124}
.spark{bottom:24px;left:calc(50% - 3px);width:6px;height:15px;background:#fff0c2;box-shadow:0 0 5px 2px #ffe5a0,0 0 15px 7px #e8b65277,0 -10px 24px 8px #efac3f40;z-index:2}
.ready .vessel{border-color:#e5c17dbb;background:radial-gradient(ellipse at 50% 91%,#f2b54e3d,transparent 61%),linear-gradient(90deg,#ffdb9914,transparent 17%,#f9ca7007 70%,#ffe7b22e 95%,#ffffff0a);box-shadow:inset 3px 0 5px #ffe7b080,inset -3px 0 5px #ffe4a947,inset 0 2px 4px #ffdfa85c,0 0 0 2px #dab47114,0 0 25px #b77c261c,0 12px 32px #0008}
.ready .inner-light{background:radial-gradient(ellipse at 50% 89%,#fff0baaa 0%,#f8bf5559 10%,#d48d2626 30%,transparent 64%)}
.ready .vessel:after{border-color:#f1c577c9;box-shadow:0 0 10px #f5be5355,inset 0 -1px 4px #ffe5a970;background:radial-gradient(ellipse,#ffe5a95c,transparent 72%)}
.ready .spark{background:#fffbe2;box-shadow:0 0 4px 2px #fff1bd,0 0 11px 5px #ffd06de6,0 0 25px 11px #f0a62b88,0 -19px 28px 7px #ffc65888;animation:lamp-breathe 3.6s ease-in-out infinite}
.ready .snapshot{filter:brightness(1) saturate(.8)}
.light-mote{position:absolute;width:2px;height:2px;border-radius:50%;background:#e7d1a4;box-shadow:0 0 4px #edc77c;opacity:.22;pointer-events:none}
.ready .light-mote{background:#ffe9ae;box-shadow:0 0 5px 1px #f6be59;animation:mote-shimmer 4s ease-in-out infinite;animation-delay:var(--delay)}
.ready .badge{background:linear-gradient(#805a2b,#523619);color:#ffdfaa;border-color:#dba94d9e;box-shadow:0 0 18px #e7a63a33,inset 0 1px 3px #ffe5a526}
@keyframes lamp-breathe{50%{filter:brightness(1.25);transform:scale(.93)}}
@keyframes mote-shimmer{0%,100%{opacity:.2;transform:translateY(0)}50%{opacity:.85;transform:translateY(-5px)}}
@media(prefers-reduced-motion:reduce){.ready .spark,.ready .light-mote{animation:none}.ready .light-mote{opacity:.65}}

/* Warm light and small, uneven star glints within the glass. */
.inner-light{background:radial-gradient(ellipse at 50% 90%,#ffe6b08c 0%,#ffc06a55 14%,#e89b3030 33%,transparent 72%)}
.ready .inner-light{background:radial-gradient(ellipse at 50% 89%,#fff2cbd8 0%,#ffda8e9a 9%,#f7ad3b70 23%,#d77c2738 43%,transparent 78%);filter:blur(1px)}
.ready .spark{width:7px;height:18px;bottom:23px;background:#fffef0;box-shadow:0 0 3px 2px #fffbdc,0 0 9px 5px #fff0a8,0 0 22px 12px #ffc34ed0,0 0 38px 17px #ef941f66,0 -20px 31px 9px #ffce64}
.ready .bright-mote{width:3px;height:3px;box-shadow:0 0 4px 1px #fff5cb,0 0 9px 3px #ffd36b}
.star-mote{width:2px;height:2px;background:#ffe7b5;box-shadow:0 0 4px #ffc56a;animation:star-twinkle 4.6s ease-in-out infinite;animation-delay:var(--delay)}
.ready .star-mote{width:3px;height:3px;box-shadow:0 0 4px 1px #ffe9b4,0 0 9px 2px #ffc16b}
.star-mote:before,.star-mote:after{content:"";position:absolute;left:50%;top:50%;background:#ffe9bd;transform:translate(-50%,-50%);border-radius:2px}
.star-mote:before{width:1px;height:var(--ray);box-shadow:0 0 4px #ffd76b}
.star-mote:after{width:var(--ray);height:1px;box-shadow:0 0 4px #ffd76b}
.ready .glass-reflection{background:radial-gradient(ellipse 6px 22px at 15% 24%,#ffeacbd6,transparent),radial-gradient(ellipse 5px 23px at 88% 23%,#ffe4b8d0,transparent),radial-gradient(ellipse 19px 4px at 50% 5%,#fff0c8b0,transparent)}
@keyframes star-twinkle{0%,100%{opacity:.5;transform:scale(.8)}50%{opacity:1;transform:scale(1.18)}}
@media(prefers-reduced-motion:reduce){.star-mote{animation:none;opacity:.75}}

.capsule-open{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:center}.capsule-open .tag{display:block}.capsule-actions{display:flex;justify-content:center;gap:20px;margin-top:18px}.capsule-actions button{border:1px solid #b49d7b55;border-radius:6px;background:#ffffff06;color:#cdbb9c;padding:7px 14px;font-size:12px}

main{padding-top:24px}
.intro{position:relative;display:grid;grid-template-columns:minmax(0,1fr);text-align:center;padding:0 180px 22px;border-bottom:1px solid #d8b67922}
.intro>div{min-width:0}
.intro .return-link{position:absolute;right:0;top:50%;margin-top:-22px}
.capsule-heading{display:flex;align-items:center;justify-content:center;gap:14px;margin:0 0 12px;color:#c5ab7d;font-size:12px;letter-spacing:.45em}
.capsule-heading:before,.capsule-heading:after{content:"";width:30px;height:1px;background:linear-gradient(90deg,transparent,#c5ab7d)}
.capsule-heading:after{transform:rotate(180deg)}
.capsule-open .capsule-heading{gap:8px;margin:0 0 10px;font-size:9px;letter-spacing:.3em}
.capsule-open .capsule-heading:before,.capsule-open .capsule-heading:after{width:22px}
.intro h1{font-family:"STZhongsong","华文中宋","Source Han Serif SC","Noto Serif CJK SC","SimSun",serif;font-size:46px;font-weight:900;line-height:1.3;letter-spacing:.06em;color:#f4dfb4;-webkit-text-stroke:.45px #f4dfb4;text-shadow:0 2px 0 #89683e,0 5px 22px #dab47125}
.title-en{margin:10px 0 0;font-family:Georgia,"Times New Roman",serif;font-size:14px;font-weight:700;line-height:1.5;letter-spacing:.12em;text-transform:uppercase;color:#bda477}
.return-link{flex-shrink:0;color:#efd2a1;font-size:13px;letter-spacing:1px;padding:12px 18px;border:1px solid #d8b67955;border-radius:24px;background:linear-gradient(120deg,#bd884b24,#79b8ad12);box-shadow:0 0 24px #dfae5712;transition:transform .3s,box-shadow .3s,color .3s}.return-link:hover{color:#fff0d0;transform:translateY(-2px);box-shadow:0 4px 26px #dfae5730}
.collection-head{margin-top:24px;margin-bottom:8px;padding-bottom:10px}
.capsules{padding-top:8px;min-height:390px;align-items:stretch}
.capsule{min-height:370px;padding:20px 18px 18px}
.capsule h3{font-size:17px;height:46px;line-height:1.35}
.capsule .tag{margin-bottom:8px}
.vessel{margin-top:10px;margin-bottom:6px}
.date-label{margin-top:16px;margin-bottom:5px}
.date{font-size:15px}
.capsule-actions{margin-top:12px;gap:16px}
.new-card .plus{margin-bottom:16px}
.new-card h3{height:auto}
.new-card p{margin-top:10px}
@media(max-width:1000px){.intro{padding:42px 0 20px}.intro .return-link{top:0;margin-top:0;padding:7px 12px;font-size:11px}}
@media(max-width:650px){main{padding-top:16px}.intro h1{font-size:30px}.title-en{font-size:11px;letter-spacing:.06em}.intro{gap:16px}.collection-head{margin-top:20px}}

/* A quiet updraft of light, from the sealed photograph to the open memory. */
body{background:radial-gradient(ellipse at 48% 42%,#30271b38,transparent 65%),#080b0d}
.capsules{padding-top:22px;padding-bottom:42px;gap:26px}
.capsule{border-radius:26px;border-color:#e6d1ac20;background:linear-gradient(145deg,#fff7dd09,#ffffff02 55%,#d8b27808);box-shadow:inset 0 1px #fff3,0 18px 45px #0003}
.capsule.ready{background:radial-gradient(ellipse at 50% 60%,#d0a65d14,transparent 65%),linear-gradient(145deg,#fff7dd0a,#ffffff02)}
.vessel{perspective:600px}
.vessel .snapshot{top:65px;z-index:2;transform-origin:50% 80%;animation:photo-drift 7.5s ease-in-out infinite;box-shadow:0 12px 18px #0005,0 18px 25px #edc57f23;border-radius:1px}
.ready .snapshot{filter:brightness(1.04) saturate(.78);animation-duration:6.8s}
.vessel .inner-light{inset:-8px -14px -9px;clip-path:polygon(7% 6%,93% 6%,71% 95%,29% 95%);background:radial-gradient(ellipse at 50% 90%,#fff2c3b0,#eab76a3b 27%,#e0b77a0d 58%,transparent 76%);filter:blur(7px);animation:updraft 7s ease-in-out infinite}
.ready .inner-light{background:radial-gradient(ellipse at 50% 90%,#fff3c8cc,#f4ca8360 23%,#e6b76c18 52%,transparent 77%);filter:blur(7px)}
.ready .spark{height:5px;width:18px;left:calc(50% - 9px);bottom:25px;border-radius:50%;box-shadow:0 0 8px 3px #fff1bd,0 0 23px 10px #ffd07988,0 -20px 40px 15px #efb76033}
.light-mote{z-index:1}.ready .light-mote{animation:mote-rise 7s ease-in-out infinite;animation-delay:var(--delay)}
.ready .star-mote{width:2px;height:2px;box-shadow:0 0 5px #ffe9b4}.ready .star-mote:before,.ready .star-mote:after{opacity:.55}
.opening .vessel{animation:unseal-soft 1.7s ease-in-out forwards}
.opening .snapshot{animation:photo-release 1.7s cubic-bezier(.22,.61,.36,1) forwards}
.opening .inner-light{animation:light-release 1.7s ease forwards}
.opening .shard{animation:scatter 1.7s ease-out forwards;filter:blur(1px);width:2px;height:3px;border-radius:50%}
#memory{isolation:isolate;width:min(1000px,calc(100% - 40px));padding:30px 48px 38px;border-radius:28px;border-color:#d8bc8540;background:radial-gradient(ellipse at 50% 36%,#8e693123,transparent 66%),linear-gradient(145deg,#191c1d,#101416 65%,#1c1c18);box-shadow:inset 0 1px #fff1,0 35px 120px #0009;color:#f0e5d1}
#memory[open]{animation:memory-arrive 1.1s cubic-bezier(.2,.7,.25,1) both}
#memory::backdrop{background:#030709d9;backdrop-filter:blur(14px)}
#memory .dialog-head{align-items:center}#memory .eyebrow{margin:0;font-size:9px;letter-spacing:.26em;color:#beaa85}
#memory .close{display:grid;place-items:center;width:34px;height:34px;border:1px solid #d2bb862b;border-radius:50%;font-size:23px;flex-shrink:0}
#memory .close:hover{color:#ffe5b1;background:#e0be7c10}
#memory-title{text-align:center;margin:14px 0 5px;font-size:clamp(25px,3.5vw,37px);letter-spacing:.1em;text-wrap:balance}
.memory-date{text-align:center;margin:25px 0 0;color:#aa9d86;font-size:10px;line-height:1.8;letter-spacing:.12em}
.memory-photos{position:relative;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:42px 38px;padding:45px 12px 66px;perspective:1000px}
.memory-photos:before{content:"";position:absolute;inset:15% 0 -4%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 90%,#e8c28a28,transparent 45%);filter:blur(20px)}
.memory-photo{position:relative;flex:0 1 310px;min-width:0;margin:0;animation:memory-lift 1.5s cubic-bezier(.2,.7,.25,1) both;animation-delay:calc(var(--i)*110ms)}
.memory-photo:before{content:"";position:absolute;left:-15%;right:-15%;top:12%;bottom:-30px;z-index:-1;pointer-events:none;background:conic-gradient(from -33deg at 50% 100%,transparent 0deg,#efd29b07 9deg,#efd29b24 33deg,#efd29b07 57deg,transparent 66deg);mask-image:linear-gradient(transparent,#000 48%,#000 88%,transparent);filter:blur(13px)}
.memory-photo:after{content:"";position:absolute;left:16%;right:16%;bottom:-35px;height:26px;border:1px solid #f6d79c9c;background:radial-gradient(ellipse,#ffe1a529,transparent 68%);box-shadow:0 0 9px #f1cd8755,inset 0 0 9px #f1cd8733,0 0 28px #e6b97026;border-radius:50%;pointer-events:none}
.memory-photos .memory-photo img{display:block;width:100%;height:220px;max-height:none;object-fit:contain;padding:9px 9px 27px;border-radius:3px;margin:0;background:linear-gradient(140deg,#f0e8d8,#cbbd9f);box-shadow:0 18px 30px #0006,0 0 25px #efcc8a12;animation:gallery-drift 9s ease-in-out infinite;animation-delay:calc(var(--i)*-1.7s)}
.memory-photo:nth-child(even) img{animation-name:gallery-drift-reverse}
.memory-photo figcaption{text-align:center;font-size:9px;letter-spacing:.25em;color:#b9a585;margin-top:20px}
#memory-letter{max-width:620px;margin:8px auto 30px;line-height:2.25;letter-spacing:.045em;color:#bfbbae;font-size:14px}
#memory #download{display:block;margin:0 auto;border-radius:24px;padding:12px 24px;font-size:12px;background:linear-gradient(130deg,#dfc69e,#b99b6c)}
.without-photos .memory-photos{display:none}.without-photos #memory-letter{margin-top:32px}
@keyframes photo-drift{0%,100%{transform:translate3d(-1px,3px,0) rotate(-6deg) rotateY(-8deg)}50%{transform:translate3d(2px,-7px,0) rotate(3deg) rotateY(7deg)}}
@keyframes updraft{0%,100%{opacity:.65;transform:scaleX(.9)}50%{opacity:1;transform:scaleX(1.06)}}
@keyframes mote-rise{0%,100%{opacity:.15;transform:translate(0,6px) scale(.7)}50%{opacity:.65;transform:translate(3px,-9px) scale(1)}}
@keyframes unseal-soft{0%{transform:translateY(0)}55%{transform:translateY(-4px);border-color:#ffe3a6;box-shadow:0 0 48px #eac28038,inset 0 0 22px #f3d59b25}100%{transform:translateY(-9px);border-color:transparent;background:transparent;box-shadow:0 0 65px #eac28018;opacity:0}}
@keyframes photo-release{0%{transform:translateY(0) rotate(-4deg)}65%{transform:translateY(-36px) rotate(2deg) scale(1.12);filter:brightness(1.2)}100%{transform:translateY(-65px) rotate(0) scale(1.2);opacity:0}}
@keyframes light-release{0%{opacity:.6}65%{opacity:1;transform:scale(1.6,1.3)}100%{opacity:0;transform:scale(2,1.7)}}
@keyframes memory-arrive{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
@keyframes memory-lift{from{opacity:0;transform:translateY(36px)}to{opacity:1;transform:translateY(0)}}
@keyframes gallery-drift{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-9px) rotate(-1deg)}}
@keyframes gallery-drift-reverse{0%,100%{transform:translateY(-5px) rotate(3deg)}50%{transform:translateY(3px) rotate(1deg)}}
@media(max-width:650px){#memory{width:calc(100% - 20px);padding:22px 22px 28px;border-radius:22px;max-height:92dvh}#memory .eyebrow{font-size:8px;letter-spacing:.13em}.memory-photos{padding:34px 8px 48px;gap:40px}.memory-photo{flex-basis:280px}.memory-photos .memory-photo img{height:210px}#memory-letter{font-size:13px}.capsules{gap:18px}}
@media(prefers-reduced-motion:reduce){.vessel .snapshot,.vessel .inner-light,.ready .light-mote,.memory-photos .memory-photo img,#memory[open],.memory-photo{animation:none}.opening .vessel,.opening .snapshot,.opening .inner-light,.opening .shard{animation:none}}

/* The wider base ring is the single source of the upward light. */
.vessel:after{left:2px;right:2px;bottom:10px;height:25px;border-color:#dac49799;background:radial-gradient(ellipse,#e9c68230,transparent 70%);box-shadow:0 0 8px #e9c58230,inset 0 0 7px #f0d59a25}
.ready .vessel:after{border-color:#ffe2a5bb;background:radial-gradient(ellipse,#ffe2a542,transparent 70%);box-shadow:0 0 10px #f5ce8766,inset 0 0 9px #ffe4aa55,0 0 25px #eab56b28}
.vessel .inner-light{inset:12px -8px 10px;clip-path:none;background:conic-gradient(from -29deg at 50% 94%,transparent 0deg,#eac38208 8deg,#efd29b35 29deg,#eac38208 50deg,transparent 58deg);mask-image:linear-gradient(transparent,#000 35%,#000 95%,transparent);filter:blur(6px);transform-origin:50% 94%}
.ready .inner-light{background:conic-gradient(from -29deg at 50% 94%,transparent 0deg,#eac38212 8deg,#ffe0a564 29deg,#eac38212 50deg,transparent 58deg);filter:blur(6px)}
.ready .spark{bottom:20px;width:26px;height:3px;left:calc(50% - 13px);opacity:.8;box-shadow:0 0 7px 2px #fff1bd,0 0 18px 7px #ffd07966,0 -15px 28px 10px #efb76028}

/* Fine sparks rise separately from the ring, like a gentle sparkler. */
.vessel .inner-light,.ready .inner-light{background:radial-gradient(ellipse at 50% 94%,#f4cc8c40,transparent 45%);mask-image:none}
.memory-photo:before{clip-path:none;mask-image:none;background:radial-gradient(ellipse at 50% 90%,#efd29b16,transparent 65%);filter:blur(20px)}
.light-fountain{position:absolute;left:50%;bottom:22px;width:0;height:0;z-index:1;pointer-events:none}
.fountain-particle{position:absolute;left:0;bottom:0;width:2px;height:5px;border-radius:50%;background:#fff2cd;opacity:0;box-shadow:0 0 4px #ffdc91,0 0 8px #e9b75d66;animation:spark-fountain var(--duration) linear infinite;animation-delay:var(--delay);transform-origin:50% 100%}
.fountain-particle:nth-child(3n){width:1px;height:8px;background:#e6ba73}
.fountain-particle:nth-child(4n){width:2px;height:2px;background:#fff8e4}
.capsule:not(.ready) .light-fountain{opacity:.28}
.memory-photo .light-fountain{bottom:-22px;z-index:-1;transform:scaleX(1.6) scaleY(1.25)}
.memory-photo .fountain-particle{animation-duration:calc(var(--duration)*1.3)}
#memory{overflow-x:hidden}
.fountain-particle{width:2px;height:7px;background:#fff6d9;box-shadow:0 0 3px 1px #ffe7ae,0 0 8px #ffd17c,0 0 14px #e9b75d66}
.fountain-particle:nth-child(3n){height:11px;background:linear-gradient(0deg,transparent,#ffe5a5 60%,#fff6dc)}
.memory-photo .light-fountain{z-index:0}
.memory-photo img{position:relative;z-index:1}
.memory-photo figcaption{position:relative;z-index:1}
.memory-photo:after{border-color:#ffe4add9;box-shadow:0 0 9px #f1cd8788,inset 0 0 12px #f1cd8744,0 0 32px #e6b97035}
@keyframes spark-fountain{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.4)}9%{opacity:.85}38%{opacity:.65;transform:translate(calc(var(--x)*.55),calc(var(--rise)*-.72)) rotate(var(--lean)) scale(.85)}67%{opacity:.35;transform:translate(var(--x),calc(var(--rise)*-1)) rotate(var(--lean)) scale(.6)}88%,100%{opacity:0;transform:translate(calc(var(--x)*1.2),calc(var(--rise)*-.92)) rotate(var(--lean)) scale(.2)}}
@media(prefers-reduced-motion:reduce){.light-fountain{display:none}}

/* Consistent touch targets for text and icon controls. */
.gold,.return-link,.card-actions button{min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;transition:transform .2s,box-shadow .2s,background .2s}
.close,#memory .close{width:44px;height:44px;min-width:44px;display:grid;place-items:center;padding:0}
#memory .dialog-head{justify-content:flex-end}
button:focus-visible,a:focus-visible{outline:2px solid #f5d293;outline-offset:4px}
@media(hover:hover){.gold:hover,.return-link:hover,.card-actions button:hover{transform:translateY(-2px);box-shadow:0 6px 22px #eac57a22}}
.gold:active,.return-link:active,.card-actions button:active{transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.gold,.return-link,.card-actions button{transition:none}}

.memory-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-shrink:0}
.memory-header-actions #rj-language-control{margin-left:0!important}
.memory-header-actions #rj-language-control button{min-height:44px;padding:10px 16px!important;border-radius:24px!important;border-color:#cfac6e60!important;background:#cfac6e10!important;color:#e3c795!important}
@media(max-width:650px){.memory-header-actions{align-self:flex-end;flex-wrap:wrap}.intro h1{overflow-wrap:anywhere}}
html[lang=en] .intro h1{font-size:clamp(28px,3.2vw,46px);letter-spacing:1px}
html[lang=en] .intro .title-en{display:none}.intro .memory-header-actions{position:absolute;right:0;top:50%;transform:translateY(-50%)}
.intro .memory-header-actions .return-link{position:static;margin-top:0}
@media(max-width:1000px){.intro .memory-header-actions{top:0;transform:none}}
@media(min-width:1001px){html[lang=en] .intro{padding-right:280px}html[lang=en] .intro h1{font-size:clamp(28px,2.6vw,38px)}}
@media(prefers-reduced-motion:reduce){.memory-header-actions{transition:none}}.photo-file-control{position:relative;display:flex;align-items:center;gap:12px;margin-top:8px;padding:12px;border:1px solid #ffffff20;border-radius:6px;background:#ffffff05;min-height:50px;overflow:hidden}
.photo-file-button{flex-shrink:0;padding:5px 12px;border:1px solid #b49d7b55;border-radius:5px;background:#b49d7b18;color:#e7e3da}
#photo-file-status{min-width:0;overflow-wrap:anywhere;color:#b9bdb5}
.photo-file-control #photo{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.photo-file-control:focus-within{outline:2px solid #f5d293;outline-offset:3px}