:root{--paper:#faf8f4;--paper-2:#f3efe7;--ink:#241e19;--ink-70:#4d453e;--ink-45:#8c8177;--ink-30:#b7aea3;--line:#e6e0d6;--gold:#9a7b54;--accent:#c4713f;--accent-2:#8a9a5b;--accent-soft:#f0e2d3;--wash1:#c4713f1f;--wash2:#8a9a5b1f;--radius:14px;--ease:cubic-bezier(.22, 1, .36, 1);--serif:"Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", "SimSun", Georgia, serif;--sans:"PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--display:"Cormorant Garamond", "EB Garamond", "Baskerville", Georgia, "Times New Roman", serif}html[data-season=spring]{--accent:#d4728b;--accent-2:#a8c6a1;--accent-soft:#f7e5e8;--wash1:#d4728b24;--wash2:#a8c6a126}html[data-season=summer]{--accent:#3e8fa8;--accent-2:#e0b84e;--accent-soft:#e3f0f2;--wash1:#3e8fa824;--wash2:#e0b84e24}html[data-season=autumn]{--accent:#c4713f;--accent-2:#8a9a5b;--accent-soft:#f0e2d3;--wash1:#c4713f24;--wash2:#8a9a5b24}html[data-season=winter]{--accent:#7f94b8;--accent-2:#b9c7d9;--accent-soft:#e6ecf3;--wash1:#7f94b826;--wash2:#b9c7d926}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background-color:var(--paper);background-image:radial-gradient(1100px 720px at 88% -12%, var(--wash1), transparent 62%), radial-gradient(950px 640px at -12% 42%, var(--wash2), transparent 58%);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;transition:background-color .8s var(--ease);background-attachment:fixed;margin:0;font-size:16px;line-height:1.75}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}img{max-width:100%;display:block}::selection{background:var(--accent-soft);color:var(--ink)}.grain{z-index:1;pointer-events:none;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='180' height='180' filter='url(%23n)'/></svg>");position:fixed;inset:0}.particles{z-index:4;pointer-events:none;position:fixed;inset:0}.site-header{z-index:40;background:linear-gradient(to bottom, color-mix(in srgb, var(--paper) 92%, transparent), transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);justify-content:space-between;align-items:center;gap:24px;padding:16px clamp(20px,4vw,56px);display:flex;position:fixed;top:0;left:0;right:0}.brand{font-family:var(--serif);letter-spacing:.3em;white-space:nowrap;font-size:15px}.brand:before{content:"";background:var(--accent);vertical-align:2px;border-radius:999px;width:7px;height:7px;margin-right:12px;display:inline-block}.nav{letter-spacing:.16em;color:var(--ink-70);gap:clamp(14px,2.4vw,34px);font-size:13px;display:flex}.nav a{transition:color .5s var(--ease);padding:4px 0;position:relative}.nav a:after{content:"";background:var(--accent);height:1px;transition:right .6s var(--ease);position:absolute;bottom:0;left:0;right:100%}.nav a:hover{color:var(--ink)}.nav a:hover:after{right:0}.nav .nav-admin{color:var(--accent)}.hero{z-index:2;text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:130px 24px 90px;display:flex;position:relative}.hero:before{content:"";z-index:-1;aspect-ratio:1;background:radial-gradient(circle, var(--accent-soft), transparent 64%);opacity:.65;filter:blur(26px);border-radius:50%;width:min(76vw,680px);animation:9s ease-in-out infinite halo;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}@keyframes halo{0%,to{opacity:.5;transform:translate(-50%,-50%)scale(1)}50%{opacity:.8;transform:translate(-50%,-50%)scale(1.07)}}.hero-eyebrow{letter-spacing:.46em;text-transform:uppercase;color:var(--ink-45);margin:0 0 clamp(20px,4vh,40px);font-size:11px}.hero-day{font-family:var(--display);letter-spacing:-.035em;font-variant-numeric:lining-nums tabular-nums;color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;will-change:transform, opacity;margin:0;font-size:clamp(112px,21vw,258px);font-weight:400;line-height:.8;transition:transform .12s linear,opacity .12s linear}@keyframes dayFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.hero-day.pulse{animation:dayPulse .75s var(--ease)}@keyframes dayPulse{0%{transform:scale(1)}35%{transform:scale(1.045)}to{transform:scale(1)}}.hero-day-label{font-family:var(--sans);letter-spacing:.55em;text-indent:.55em;color:var(--accent);margin-bottom:clamp(10px,2vh,18px);font-size:12px;font-weight:400;display:block}.hero-day-hit{letter-spacing:.3em;color:var(--accent-2);opacity:0;transition:opacity .6s var(--ease);margin-top:22px;font-size:12px}.hero-day-hit.show{opacity:1}.hero-names{font-family:var(--serif);letter-spacing:.24em;text-indent:.24em;margin:clamp(28px,5vh,46px) 0 0;font-size:clamp(17px,2.1vw,24px);font-weight:400}.hero-rule{background:linear-gradient(to bottom, var(--accent), transparent);width:1px;height:clamp(40px,7vh,70px);margin:clamp(24px,4vh,38px) auto}.hero-tagline{max-width:34ch;font-family:var(--serif);letter-spacing:.14em;color:var(--ink-70);margin:0;font-size:15px}.hero-scroll{letter-spacing:.4em;text-transform:uppercase;color:var(--ink-30);flex-direction:column;align-items:center;gap:10px;font-size:10px;display:flex;position:absolute;bottom:clamp(22px,4vh,42px);left:50%;transform:translate(-50%)}.hero-scroll:after{content:"";background:linear-gradient(to bottom, var(--accent), transparent);width:1px;height:34px;animation:drop 2.6s var(--ease) infinite}@keyframes drop{0%{transform-origin:top;opacity:0;transform:scaleY(0)}40%{transform-origin:top;opacity:1;transform:scaleY(1)}70%{transform-origin:bottom;opacity:1;transform:scaleY(1)}to{transform-origin:bottom;opacity:0;transform:scaleY(0)}}.section{z-index:2;max-width:1320px;margin:0 auto;padding:clamp(56px,8vw,110px) clamp(20px,5vw,72px);position:relative}.section-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:clamp(28px,4vw,48px);padding-bottom:18px;display:flex}.section-title{font-family:var(--serif);letter-spacing:.12em;margin:0;font-size:clamp(20px,2.6vw,30px);font-weight:400}.section-title:before{content:"";vertical-align:-.14em;background:var(--accent);width:3px;height:.95em;margin-right:14px;display:inline-block}.section-meta{letter-spacing:.32em;text-transform:uppercase;color:var(--accent);font-size:11px}.bento{grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(22px,3vw,34px);padding:6px 10px;display:grid}.card{border:1px solid color-mix(in srgb, var(--line) 88%, var(--accent) 12%);border-radius:var(--radius);min-height:210px;transform:rotate(var(--rot,0deg)) translateY(var(--ty,0px));transition:transform .7s var(--ease), border-color .7s var(--ease), box-shadow .7s var(--ease);background:#fffdf9e0;flex-direction:column;justify-content:space-between;gap:22px;padding:26px;display:flex;position:relative;box-shadow:0 20px 44px -30px #241e1966,0 3px 8px -4px #241e191a}.card:hover{border-color:color-mix(in srgb, var(--accent) 62%, var(--line));z-index:3;transform:rotate(0)translateY(-6px)scale(1.008);box-shadow:0 34px 64px -34px #241e1980,0 6px 14px -6px #241e1924}.card--album{grid-area:span 2/span 4;min-height:0;padding:0;overflow:hidden}.card--date,.card--quote{grid-column:span 2}.card--timeline,.card--map{grid-column:span 3}.card--music,.card--messages,.card--wishes{grid-column:span 2}.taped:before{content:"";background:color-mix(in srgb, var(--accent) 22%, #fff9);z-index:2;border-left:1px dashed #ffffffbf;border-right:1px dashed #ffffffbf;width:88px;height:22px;position:absolute;top:-11px;left:50%;transform:translate(-50%)rotate(-2.4deg);box-shadow:0 1px 2px #241e1914}.taped-alt:before{width:70px;transform:translate(-50%)rotate(2.1deg)}.card-num{font-family:var(--display);letter-spacing:.18em;color:var(--accent);opacity:.85;font-size:13px;position:absolute;top:22px;right:24px}.card-label{letter-spacing:.34em;text-transform:uppercase;color:var(--accent);margin:0;font-size:10px}.card-heading{font-family:var(--serif);letter-spacing:.08em;margin:8px 0 0;font-size:21px;font-weight:400}.card-body{color:var(--ink-70);font-size:13.5px}.card-link{letter-spacing:.24em;text-transform:uppercase;color:var(--accent);align-items:center;gap:8px;font-size:11px;display:inline-flex}.card-link:after{content:"";width:18px;height:1px;transition:width .5s var(--ease);background:currentColor}.card:hover .card-link:after{width:30px}.album-cover{background:radial-gradient(120% 100% at 18% 8%, var(--accent-soft), transparent 58%), radial-gradient(90% 90% at 92% 88%, color-mix(in srgb, var(--accent-2) 30%, transparent), transparent 55%), var(--paper-2);flex-direction:column;justify-content:flex-end;height:100%;min-height:360px;padding:28px;display:flex;position:relative}.album-grid{grid-template-columns:repeat(3,1fr);gap:6px;height:100%;padding:8px;display:grid}.album-tile{background:linear-gradient(135deg, var(--accent-soft), color-mix(in srgb, var(--accent-2) 34%, var(--paper-2)));border:1px solid #ffffffa6;border-radius:8px}.album-meta{background:linear-gradient(#faf8f400,#faf8f4f2);justify-content:space-between;align-items:flex-end;gap:16px;padding:22px 26px;display:flex;position:relative}.mini-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.mini-row{border-bottom:1px solid #e6e0d6b3;justify-content:space-between;align-items:baseline;gap:14px;padding-bottom:10px;display:flex}.mini-row:last-child{border-bottom:0;padding-bottom:0}.mini-name{font-family:var(--serif);letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.mini-value{font-family:var(--display);letter-spacing:.12em;color:var(--accent);white-space:nowrap;font-size:13px}.quote-text{font-family:var(--serif);letter-spacing:.06em;color:var(--ink-70);margin:0;font-size:16px;line-height:1.9}.quote-author{letter-spacing:.3em;color:var(--accent);margin:14px 0 0;font-size:11px}.count-line{align-items:baseline;gap:10px;display:flex}.count-big{font-family:var(--display);letter-spacing:-.02em;color:var(--accent);font-size:42px;line-height:1}.count-unit{letter-spacing:.28em;text-transform:uppercase;color:var(--ink-45);font-size:11px}.empty{font-family:var(--serif);letter-spacing:.1em;color:var(--ink-45);margin:0;font-size:13.5px}.empty-frame{border:1px dashed color-mix(in srgb, var(--accent) 45%, var(--line));background:radial-gradient(80% 80% at 50% 20%, var(--accent-soft), transparent 70%), #ffffff40;border-radius:10px;place-items:center;min-height:180px;display:grid}.footer{z-index:2;border-top:1px solid var(--line);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:54px clamp(20px,5vw,72px) 66px;display:flex;position:relative}.footer-mark{font-family:var(--display);letter-spacing:.3em;color:var(--accent);font-size:22px}.footer-text{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-45);font-size:11px}.season-dock{z-index:50;border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#faf8f4e6;border-radius:999px;gap:3px;padding:5px;display:flex;position:fixed;bottom:clamp(14px,2vw,26px);right:clamp(14px,2vw,26px);box-shadow:0 14px 30px -18px #241e1966}.season-dock button{width:34px;height:34px;font-family:var(--serif);letter-spacing:.1em;color:var(--ink-45);cursor:pointer;transition:background .5s var(--ease), color .5s var(--ease), transform .5s var(--ease);background:0 0;border:0;border-radius:999px;font-size:13px}.season-dock button:hover{color:var(--ink);transform:scale(1.12)}.season-dock button.is-active{background:var(--accent);color:#fff;transform:scale(1.08)}.intro{z-index:100;transition:opacity .9s var(--ease), visibility .9s;background:#fff8f3;place-items:center;display:grid;position:fixed;inset:0}.intro.is-leaving{opacity:0;visibility:hidden;pointer-events:none}.intro-inner{text-align:center;animation:introIn 1.4s var(--ease) both;flex-direction:column;align-items:center;gap:26px;display:flex}@keyframes introIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.intro-seal{border:1px solid var(--gold);width:92px;height:92px;color:var(--gold);font-family:var(--display);letter-spacing:.06em;animation:sealIn 1.6s var(--ease) both;border-radius:999px;place-items:center;font-size:30px;display:grid;position:relative}.intro-seal:after{content:"";border:1px solid #b49a6a59;border-radius:999px;position:absolute;inset:7px}@keyframes sealIn{0%{opacity:0;transform:scale(.86)}60%{opacity:1;transform:scale(1.02)}to{opacity:1;transform:scale(1)}}.intro-names{font-family:var(--serif);letter-spacing:.34em;text-indent:.34em;animation:introIn 1.4s .5s var(--ease) both;margin:0;font-size:clamp(18px,2.4vw,26px)}.intro-date{font-family:var(--display);letter-spacing:.42em;color:var(--ink-45);animation:introIn 1.4s 1s var(--ease) both;margin:0;font-size:13px}.intro-skip{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-30);cursor:pointer;background:0 0;border:0;font-size:10px;position:absolute;bottom:clamp(18px,3vw,36px);right:clamp(18px,3vw,36px)}.intro-skip:hover{color:var(--ink-70)}.login-wrap{background:radial-gradient(90% 70% at 50% 0%, var(--accent-soft), transparent 62%), var(--paper);place-items:center;min-height:100svh;padding:40px 20px;display:grid;position:relative}.login-grain{opacity:.04;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/></filter><rect width='180' height='180' filter='url(%23n)'/></svg>");position:absolute;inset:0}.login-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#ffffffbd;border-radius:18px;width:min(420px,100%);padding:clamp(34px,6vw,52px) clamp(26px,5vw,44px);position:relative;box-shadow:0 40px 80px -60px #241e1999}.eyebrow{letter-spacing:.5em;text-indent:.5em;text-transform:uppercase;color:var(--accent);margin:0;font-size:10px}.login-title{font-family:var(--serif);letter-spacing:.16em;text-indent:.16em;margin:18px 0 8px;font-size:30px;font-weight:400}.login-sub{letter-spacing:.2em;color:var(--ink-45);margin:0 0 30px;font-size:12px}.login-form{text-align:left;flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:8px;display:flex}.field span{letter-spacing:.28em;text-transform:uppercase;color:var(--ink-45);font-size:10px}.field input{border:1px solid var(--line);width:100%;color:var(--ink);letter-spacing:.04em;transition:border-color .4s var(--ease), background .4s var(--ease);background:#fff9;border-radius:10px;outline:none;padding:12px 14px;font-size:14px}.field input:focus{border-color:color-mix(in srgb, var(--accent) 70%, var(--line));background:#fff}.btn-primary{border:1px solid var(--ink);background:var(--ink);color:var(--paper);letter-spacing:.32em;text-indent:.32em;cursor:pointer;transition:background .5s var(--ease), transform .5s var(--ease), opacity .3s;border-radius:10px;margin-top:8px;padding:13px 18px;font-size:12px}.btn-primary:hover{background:color-mix(in srgb, var(--accent) 55%, var(--ink));transform:translateY(-1px)}.btn-primary:disabled{opacity:.5;cursor:default}.login-error{letter-spacing:.08em;color:#a4604f;margin:0;font-size:12px}.login-foot{letter-spacing:.34em;text-transform:uppercase;color:var(--ink-30);margin:26px 0 0;font-size:10px}.reveal{opacity:0}.reveal.is-in{animation:riseIn .9s var(--ease) backwards;animation-delay:var(--d,0s)}@keyframes riseIn{0%{opacity:0;transform:translateY(22px) rotate(var(--rot,0deg))}}.bento>.card:nth-child(2){--d:70ms}.bento>.card:nth-child(3){--d:.14s}.bento>.card:nth-child(4){--d:.21s}.bento>.card:nth-child(5){--d:.28s}.bento>.card:nth-child(6){--d:.35s}.bento>.card:nth-child(7){--d:.42s}.bento>.card:nth-child(8){--d:.49s}@media (max-width:900px){.bento{grid-template-columns:1fr}.card--album,.card--date,.card--quote,.card--timeline,.card--map,.card--music,.card--messages,.card--wishes{grid-area:auto/span 1}.album-cover{min-height:280px}.nav{letter-spacing:.1em;gap:14px;font-size:12px}.brand{letter-spacing:.2em;font-size:13px}}@media (max-width:600px){.nav{display:none}.site-header{justify-content:center}.hero-day{font-size:clamp(92px,30vw,150px)}.season-dock{bottom:12px;right:12px}}.note-form{flex-direction:column;gap:12px;max-width:620px;margin-bottom:40px;display:flex}.note-form textarea{border:1px solid var(--line);width:100%;color:var(--ink);font-family:var(--serif);letter-spacing:.05em;resize:vertical;transition:border-color .4s var(--ease);background:#ffffffa6;border-radius:12px;outline:none;padding:14px 16px;font-size:15px;line-height:1.8}.note-form textarea:focus{border-color:color-mix(in srgb, var(--accent) 70%, var(--line))}.note-form-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.notes{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:26px;margin:0;padding:10px 4px 40px;list-style:none;display:grid}.note{border:1px solid var(--line);transform:rotate(var(--r,0deg));transition:transform .6s var(--ease), box-shadow .6s var(--ease);background:#fffdf6;border-radius:3px;padding:24px 22px 18px;position:relative;box-shadow:0 14px 28px -20px #241e1973}.note:hover{z-index:2;transform:rotate(0)translateY(-4px);box-shadow:0 24px 44px -24px #241e1980}.note:before{content:"";background:color-mix(in srgb, var(--accent) 20%, #ffffffa6);width:64px;height:18px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-3deg)}.note-text{font-family:var(--serif);letter-spacing:.05em;white-space:pre-wrap;word-break:break-word;margin:0 0 16px;font-size:15px;line-height:1.85}.note-meta{border-top:1px dashed var(--line);letter-spacing:.14em;color:var(--ink-45);align-items:center;gap:12px;padding-top:12px;font-size:11px;display:flex}.note-author{color:var(--accent)}.note-date{margin-left:auto}.btn-mini{border:1px solid var(--line);letter-spacing:.1em;color:var(--ink-45);cursor:pointer;transition:all .4s var(--ease);background:0 0;border-radius:999px;padding:2px 10px;font-size:11px}.btn-mini:hover{color:#a4604f;border-color:#a4604f}.btn-mini:disabled{opacity:.4;cursor:default}.progress{background:var(--accent-soft);border-radius:999px;height:6px;margin-bottom:26px;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width .9s var(--ease);border-radius:999px}.inline-form{flex-wrap:wrap;align-items:center;gap:10px;max-width:680px;margin-bottom:30px;display:flex}.inline-form input{border:1px solid var(--line);min-width:180px;transition:border-color .4s var(--ease);background:#ffffffa6;border-radius:10px;outline:none;flex:1;padding:11px 14px;font-size:14px}.inline-form input:focus{border-color:color-mix(in srgb, var(--accent) 70%, var(--line))}.wish-list{flex-direction:column;gap:12px;max-width:720px;margin:0;padding:0;list-style:none;display:flex}.wish-row{border:1px solid var(--line);transition:border-color .5s var(--ease), transform .5s var(--ease);background:#fffdf9cc;border-radius:12px;align-items:center;gap:16px;padding:16px 20px;display:flex}.wish-row:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--line));transform:translate(4px)}.wish-dot{border:1.5px solid var(--accent);cursor:pointer;width:22px;height:22px;transition:all .4s var(--ease);background:0 0;border-radius:999px;flex:none}.wish-dot:hover{transform:scale(1.15)}.wish-dot.is-done{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 4px #fffdf9e6}.wish-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wish-title{font-family:var(--serif);letter-spacing:.06em;font-size:15px}.wish-row.is-done .wish-title{color:var(--ink-45);text-decoration:line-through}.wish-note{color:var(--ink-45);letter-spacing:.04em;font-size:12px}.timeline{max-width:720px;margin:0;padding:10px 0 40px;list-style:none;position:relative}.timeline:before{content:"";background:linear-gradient(to bottom, var(--accent), var(--line));width:1px;position:absolute;top:0;bottom:0;left:108px}.tl-item{opacity:0;animation:riseIn .8s var(--ease) forwards;animation-delay:calc(var(--i) * 90ms);gap:30px;padding:0 0 40px;display:flex;position:relative;transform:translateY(16px)}.tl-date{text-align:right;flex:none;width:78px;padding-top:6px}.tl-year{font-family:var(--display);color:var(--accent);font-size:20px;display:block}.tl-md{letter-spacing:.18em;color:var(--ink-45);font-size:11px;display:block}.tl-dot{background:var(--paper);border:2px solid var(--accent);width:13px;height:13px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent);border-radius:999px;flex:none;margin-top:12px;margin-left:-6.5px}.tl-card{border:1px solid var(--line);transition:transform .5s var(--ease);background:#fffdf9d1;border-radius:12px;flex:1;padding:18px 22px;transform:rotate(-.4deg);box-shadow:0 14px 30px -24px #241e1966}.tl-card:hover{transform:rotate(0)translateY(-3px)}.tl-title{font-family:var(--serif);letter-spacing:.08em;margin:0;font-size:18px;font-weight:400}.tl-body{color:var(--ink-70);white-space:pre-wrap;margin:10px 0 0;font-size:13.5px;line-height:1.85}.player{flex-wrap:wrap;align-items:center;gap:40px;display:flex}.disc{background:radial-gradient(circle at center, var(--accent) 0 22px, transparent 23px), repeating-radial-gradient(circle, var(--ink) 0 2px, transparent 2px 5px);background-color:var(--paper-2);border:1px solid var(--line);border-radius:999px;flex:none;place-items:center;width:150px;height:150px;display:grid;box-shadow:0 18px 40px -22px #241e1980}.disc span{background:var(--accent);border-radius:999px;width:44px;height:44px}.disc[data-spinning=true]{animation:5s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.song-list{flex-direction:column;flex:1;gap:8px;min-width:260px;margin:0;padding:0;list-style:none;display:flex}.song-list li{border:1px solid var(--line);transition:border-color .4s var(--ease), transform .4s var(--ease);background:#fffdf9b3;border-radius:10px;align-items:center;gap:16px;padding:12px 16px;display:flex}.song-list li:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--line));transform:translate(4px)}.song-list li.is-current{border-color:var(--accent)}.song-play{border:1px solid var(--accent);width:34px;height:34px;color:var(--accent);font-family:var(--display);cursor:pointer;transition:background .4s var(--ease), color .4s var(--ease);background:0 0;border-radius:999px;flex:none;font-size:12px}.song-play:hover:not(:disabled){background:var(--accent);color:#fff}.song-play:disabled{opacity:.35;cursor:default}.song-title{font-family:var(--serif);letter-spacing:.05em;font-size:15px}.song-title em{color:var(--ink-45);letter-spacing:.1em;margin-left:8px;font-size:12px;font-style:normal}.map-panel{border:1px solid var(--line);background:radial-gradient(90% 80% at 20% 10%, var(--accent-soft), transparent 55%), radial-gradient(80% 70% at 85% 90%, color-mix(in srgb, var(--accent-2) 26%, transparent), transparent 55%), var(--paper-2);border-radius:14px;margin-bottom:36px;padding:18px;position:relative;overflow:hidden}.map-panel svg{width:100%;height:clamp(220px,34vw,380px);display:block}.map-line{stroke:color-mix(in srgb, var(--accent) 55%, var(--line));stroke-width:.5px;stroke-dasharray:2 1.6;vector-effect:non-scaling-stroke}.map-dot{fill:var(--accent)}.map-ring{fill:none;stroke:var(--accent);stroke-width:.35px;vector-effect:non-scaling-stroke;animation:ringPulse 2.8s var(--ease) infinite}@keyframes ringPulse{0%,to{r:2.2;opacity:.9}50%{r:4.4;opacity:.2}}.map-labels{flex-wrap:wrap;justify-content:center;gap:8px 18px;margin-top:12px;display:flex}.map-label{font-family:var(--serif);letter-spacing:.14em;color:var(--ink-70);font-size:12px}.map-label:before{content:"";background:var(--accent);vertical-align:1px;border-radius:999px;width:6px;height:6px;margin-right:7px;display:inline-block}.place-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.place-card{border:1px solid var(--line);transition:transform .5s var(--ease);background:#fffdf9cc;border-radius:12px;padding:22px 24px;transform:rotate(-.5deg)}.place-card:hover{transform:rotate(0)translateY(-3px)}.place-date{letter-spacing:.16em;color:var(--accent);font-size:11px}.upload-form{border:1px dashed color-mix(in srgb, var(--accent) 50%, var(--line));background:#fffdf999;border-radius:14px;flex-wrap:wrap;align-items:center;gap:14px;max-width:720px;margin-bottom:34px;padding:20px 22px;display:flex}.upload-drop{flex:1;min-width:220px}.upload-drop input{display:none}.upload-drop span{border:1px solid var(--line);text-align:center;font-family:var(--serif);letter-spacing:.1em;color:var(--ink-70);cursor:pointer;transition:border-color .4s var(--ease), background .4s var(--ease);background:#ffffff80;border-radius:10px;padding:26px 18px;font-size:14px;display:block}.upload-drop:hover span{border-color:var(--accent);background:#ffffffd9}.album-wall{columns:3 240px;column-gap:18px}.photo{break-inside:avoid;border:1px solid var(--line);transform:rotate(calc(var(--r2,0deg) * .6deg));background:#fffdf9cc;border-radius:8px;margin:0 0 18px;position:relative;overflow:hidden;box-shadow:0 14px 30px -22px #241e1973}.photo:nth-child(3n+1){--r2:.7}.photo:nth-child(3n+2){--r2:-.6}.photo:nth-child(3n+3){--r2:.4}.photo img{width:100%;height:auto;transition:transform .7s var(--ease)}.photo:hover img{transform:scale(1.03)}.photo figcaption{font-family:var(--serif);letter-spacing:.06em;color:var(--ink-70);padding:10px 14px;font-size:13px}.photo-missing{text-align:center;color:var(--ink-45);padding:60px 20px;font-size:13px}.photo-del{position:absolute;top:8px;right:8px}.photo-del .btn-mini{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#faf8f4d9}.admin{max-width:860px}.admin-block{border:1px solid var(--line);background:#fffdf9a8;border-radius:14px;margin-bottom:46px;padding:26px 28px}.admin-title{font-family:var(--serif);letter-spacing:.22em;color:var(--accent);margin:0 0 18px;font-size:16px;font-weight:400}.admin-form{grid-template-columns:1fr 1fr;align-items:end;gap:14px 18px;display:grid}.admin-form button{grid-column:1/-1}.admin-form .field:has(textarea){grid-column:1/-1}.admin-form .btn-primary{width:fit-content}.field textarea,.field select{border:1px solid var(--line);width:100%;color:var(--ink);resize:vertical;transition:border-color .4s var(--ease);background:#fff9;border-radius:10px;outline:none;padding:11px 14px;font-family:inherit;font-size:14px}.field textarea:focus,.field select:focus{border-color:color-mix(in srgb, var(--accent) 70%, var(--line))}.field .check{color:var(--ink-70);letter-spacing:.06em;align-items:center;gap:10px;padding:11px 0;font-size:13px;display:flex}.field .check input{width:auto}.admin-list{flex-direction:column;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.admin-list li{border:1px solid var(--line);letter-spacing:.05em;background:#ffffff73;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;padding:9px 14px;font-size:13px;display:flex}.admin-hint{letter-spacing:.08em;color:var(--ink-45);margin:14px 0 0;font-size:12px}@media (max-width:640px){.admin-form{grid-template-columns:1fr}.admin-form button{grid-column:auto}.admin-form .field:has(textarea){grid-column:auto}.timeline:before{left:84px}.tl-date{width:56px}.tl-dot{margin-left:-6.5px}}.card--weather{grid-column:span 6}.weather-home{flex-wrap:wrap;gap:14px 40px;display:flex}.wh-home{align-items:baseline;gap:10px;display:flex}.wh-home em{font-style:normal;font-family:var(--serif);letter-spacing:.1em;color:var(--ink-70);font-size:13px}.wh-home b{font-family:var(--display);font-size:28px;line-height:1}.wh-home i{letter-spacing:.2em;color:var(--ink-45);font-size:11px;font-style:normal}.mood-grid{grid-template-columns:1fr 1fr;gap:22px;max-width:920px;display:grid}.mood-card{border:1px solid var(--line);background:#fffdf9db;border-radius:16px;flex-direction:column;align-items:center;gap:14px;padding:28px 26px;display:flex;box-shadow:0 20px 44px -32px #241e1966}.mood-card.is-mine{border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.mood-head{justify-content:space-between;align-items:baseline;width:100%;display:flex}.mood-name{font-family:var(--serif);letter-spacing:.12em;font-size:16px}.mood-tag{letter-spacing:.3em;color:var(--accent);font-size:10px}.mood-circle{border:1px solid var(--line);width:78px;height:78px;font-family:var(--serif);color:var(--ink-45);transition:border-color .5s var(--ease), color .5s var(--ease);border-radius:999px;place-items:center;font-size:26px;display:grid}.mood-weather{letter-spacing:.2em;color:var(--ink-45);margin:0;font-size:12px}.weather-pick{gap:8px;display:flex}.weather-opt{cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:6px;padding:0;display:flex}.weather-opt span{border:1px solid var(--line);width:36px;height:36px;font-family:var(--serif);color:var(--ink-45);transition:all .4s var(--ease);border-radius:999px;place-items:center;font-size:14px;display:grid}.weather-opt em{letter-spacing:.12em;color:var(--ink-45);font-size:10px;font-style:normal}.weather-opt:hover span{border-color:var(--accent);transform:translateY(-2px)}.weather-opt.is-on span{background:#fffffff2;box-shadow:0 6px 14px -10px #241e1980}.weather-opt.is-on em{color:var(--ink-70)}.mood-note{border:1px solid var(--line);width:100%;color:var(--ink);letter-spacing:.03em;transition:border-color .4s var(--ease);background:#ffffff8c;border-radius:10px;outline:none;padding:10px 14px;font-size:13px}.mood-note:focus{border-color:color-mix(in srgb, var(--accent) 65%, var(--line))}.mood-note-text{font-family:var(--serif);letter-spacing:.06em;color:var(--ink-45);text-align:center;min-height:2.6em;margin:0;font-size:13.5px}.weather-history{max-width:900px;margin:0;padding:0;list-style:none}.wh-row{border-bottom:1px solid var(--line);align-items:baseline;gap:26px;padding:15px 0;display:flex}.wh-row:last-child{border-bottom:0}.wh-date{letter-spacing:.12em;width:150px;color:var(--ink-45);flex:none;font-size:12px}.wh-people{flex-wrap:wrap;gap:36px;display:flex}.wh-chip{align-items:baseline;gap:8px;display:flex}.wh-chip em{letter-spacing:.1em;color:var(--ink-70);font-size:12px;font-style:normal}.wh-chip b{font-family:var(--display);font-size:20px;line-height:1}.wh-note{color:var(--ink-45);text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-size:12px;overflow:hidden}@media (max-width:760px){.mood-grid{grid-template-columns:1fr}.wh-row{flex-direction:column;gap:8px}.wh-date{width:auto}.wh-people{gap:16px}}@keyframes pageIn{0%{opacity:0;transform:translateY(10px)}}.section{animation:pageIn .8s var(--ease) both}.lightbox{z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:lbIn .35s var(--ease);background:#14100ceb;place-items:center;display:grid;position:fixed;inset:0}@keyframes lbIn{0%{opacity:0}}.lb-img{object-fit:contain;max-width:min(92vw,1400px);max-height:84vh;animation:lbImg .5s var(--ease);border-radius:6px;box-shadow:0 40px 90px -40px #000000e6}@keyframes lbImg{0%{opacity:0;transform:scale(.96)}}.lb-close{color:#ffffffb3;cursor:pointer;background:0 0;border:0;font-size:30px;line-height:1;position:absolute;top:18px;right:24px}.lb-close:hover{color:#fff}.lb-nav{color:#ffffff8c;cursor:pointer;transition:color .3s var(--ease), transform .3s var(--ease);background:0 0;border:0;padding:12px 22px;font-size:44px;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.lb-nav:hover{color:#fff;transform:translateY(-50%)scale(1.08)}.lb-prev{left:8px}.lb-next{right:8px}.lb-caption{color:#ffffffc7;font-family:var(--serif);letter-spacing:.14em;margin:0;font-size:13px;position:absolute;bottom:24px}.photo{transition:transform .6s var(--ease), box-shadow .6s var(--ease);cursor:zoom-in}.photo:hover{z-index:3;transform:rotate(0)translateY(-4px)scale(1.012);box-shadow:0 26px 50px -28px #241e198c}.map-line{stroke-dasharray:100;stroke-dashoffset:100px;animation:drawPath 2.6s var(--ease) forwards .25s}@keyframes drawPath{to{stroke-dashoffset:0}}.tl-dot{animation:dotPulse 3.4s var(--ease) infinite}@keyframes dotPulse{0%,to{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent)}50%{box-shadow:0 0 0 10px color-mix(in srgb, var(--accent) 5%, transparent)}}.wish-dot{position:relative}.wish-dot.is-done:after{content:"";border:1px solid var(--accent);animation:ripple .8s var(--ease) forwards;border-radius:999px;position:absolute;inset:-2px}@keyframes ripple{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(2)}}.player.is-playing .disc{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent), 0 0 70px -12px color-mix(in srgb, var(--accent) 55%, transparent), 0 18px 40px -22px #241e1980}.mood-circle{animation:moodPop .65s var(--ease)}@keyframes moodPop{0%{box-shadow:0 0 0 0 color-mix(in srgb, currentColor 35%, transparent);transform:scale(.88)}55%{transform:scale(1.05);box-shadow:0 0 0 12px #0000}to{transform:scale(1)}}.note{animation:pageIn .7s var(--ease) both}.checkin-hero{border:1px solid var(--line);background:#fffdf9db;border-radius:16px;align-items:center;gap:26px;max-width:780px;padding:30px 32px;display:flex;box-shadow:0 22px 48px -34px #241e1973}.checkin-hero.is-checked{border-color:color-mix(in srgb, var(--accent) 48%, var(--line))}.checkin-seal{border:1px solid var(--accent);width:86px;height:86px;font-family:var(--serif);color:var(--accent);border-radius:999px;flex:none;place-items:center;font-size:32px;display:grid}@keyframes sealPop{0%{opacity:.35;transform:scale(.8)}60%{transform:scale(1.08)}to{transform:scale(1)}}.checkin-main{flex-direction:column;flex:1;align-items:flex-start;gap:8px;display:flex}.checkin-label{letter-spacing:.34em;text-transform:uppercase;color:var(--accent);margin:0;font-size:10px}.checkin-title{font-family:var(--serif);letter-spacing:.08em;margin:0;font-size:20px;font-weight:400}.checkin-note{font-family:var(--serif);letter-spacing:.05em;color:var(--ink-70);margin:0;font-size:14px}.checkin-input{border:1px solid var(--line);width:100%;transition:border-color .4s var(--ease);background:#fff9;border-radius:10px;outline:none;padding:10px 14px;font-size:13px}.checkin-input:focus{border-color:color-mix(in srgb, var(--accent) 65%, var(--line))}.stats{flex-wrap:wrap;gap:20px 52px;margin-top:32px;display:flex}.stat{flex-direction:column;gap:2px;display:flex}.stat b{font-family:var(--display);color:var(--accent);font-size:42px;font-weight:400;line-height:1}.stat span{letter-spacing:.26em;text-transform:uppercase;color:var(--ink-45);font-size:10px}.calendar-wrap{padding:4px 2px 8px;overflow-x:auto}.calendar{grid-template-rows:repeat(7,13px);grid-auto-flow:column;gap:4px;width:max-content;display:grid}.cal-cell{width:13px;height:13px;transition:background .5s var(--ease);background:#e6e0d6b3;border-radius:3px}.cal-cell.is-on{background:var(--accent)}.cal-cell.is-today{box-shadow:0 0 0 1.5px var(--ink-45)}.checkin-list{max-width:780px;margin:0;padding:0;list-style:none}.checkin-row{border-bottom:1px solid var(--line);align-items:baseline;gap:18px;padding:12px 0;display:flex}.checkin-row:last-child{border-bottom:0}.checkin-date{letter-spacing:.1em;width:150px;color:var(--ink-45);flex:none;font-size:12px}.checkin-text{font-family:var(--serif);letter-spacing:.04em;flex:1;font-size:14px}.checkin-seal{position:relative}.checkin-hero.just-now .checkin-seal{animation:stampDown .9s var(--ease)}@keyframes stampDown{0%{opacity:0;transform:scale(2.1)rotate(-14deg)}45%{opacity:1;transform:scale(.92)rotate(3deg)}65%{transform:scale(1.04)rotate(-1deg)}to{transform:scale(1)rotate(0)}}.heart-burst{color:var(--accent);pointer-events:none;--dx:calc((var(--h) - 2.5) * 15px);animation:heartUp 1.5s var(--ease) forwards;animation-delay:calc(var(--h) * 70ms);font-size:13px;position:absolute;top:50%;left:50%}@keyframes heartUp{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}25%{opacity:.9}to{transform:translate(calc(-50% + var(--dx)), -120px) scale(1);opacity:0}}.cal-cell{animation:cellIn .55s var(--ease) both;animation-delay:calc(var(--i,0) * 5ms)}@keyframes cellIn{0%{opacity:0;transform:scale(.3)}}.stat b{animation:statIn .9s var(--ease) both}@keyframes statIn{0%{opacity:0;transform:translateY(8px)}}.note:nth-child(5n+1){background:#fffcf3;border-left:3px solid #d9b071}.note:nth-child(5n+2){background:#fdf6f2;border-left:3px solid #d99a8e}.note:nth-child(5n+3){background:#f5f9f4;border-left:3px solid #94b08c}.note:nth-child(5n+4){background:#f5f8fc;border-left:3px solid #88a3c4}.note:nth-child(5n+5){background:#fbf7fa;border-left:3px solid #b394b5}.cal-cell.is-on{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 45%, #fff), var(--accent));box-shadow:0 2px 6px -4px color-mix(in srgb, var(--accent) 70%, transparent)}.stat:first-child b{color:var(--accent)}.stat:nth-child(2) b{color:color-mix(in srgb, var(--accent-2) 72%, #3d4a33)}.stat:nth-child(3) b{color:var(--gold)}.mood-card.is-mine{background:linear-gradient(165deg, #ffffffeb, var(--accent-soft))}.mood-card:not(.is-mine){background:linear-gradient(165deg, #ffffffeb, color-mix(in srgb, var(--accent-2) 22%, #fff))}.tl-item:nth-child(3n+2) .tl-dot{border-color:var(--accent-2)}.tl-item:nth-child(3n+3) .tl-dot{border-color:var(--gold)}.tl-item:nth-child(3n+2) .tl-card{border-top:2px solid color-mix(in srgb, var(--accent-2) 55%, transparent)}.tl-item:nth-child(3n+3) .tl-card{border-top:2px solid color-mix(in srgb, var(--gold) 55%, transparent)}.tl-item:nth-child(3n+1) .tl-card{border-top:2px solid color-mix(in srgb, var(--accent) 55%, transparent)}.card:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(158deg, color-mix(in srgb, var(--accent) 6%, transparent), transparent 42%);position:absolute;inset:0}.card--music:after{background:linear-gradient(158deg, color-mix(in srgb, var(--accent-2) 12%, transparent), transparent 42%)}.card--map:after{background:linear-gradient(158deg, color-mix(in srgb, var(--gold) 10%, transparent), transparent 42%)}.card--weather:after{background:linear-gradient(158deg, color-mix(in srgb, var(--accent) 10%, transparent), transparent 55%)}.song-list li.is-current{background:color-mix(in srgb, var(--accent-soft) 70%, #fff)}.wish-row.is-done{background:color-mix(in srgb, var(--accent-2) 12%, #fff)}.hero:after{content:"";z-index:-1;aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--accent-2) 30%, transparent), transparent 68%);filter:blur(30px);opacity:.75;border-radius:50%;width:min(40vw,340px);animation:11s ease-in-out infinite reverse halo;position:absolute;top:30%;right:6%}.footer-mark{background:linear-gradient(90deg, var(--accent), var(--gold), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text}.section-meta{color:color-mix(in srgb, var(--accent) 78%, var(--ink-70))}.atmos{z-index:1;pointer-events:none;opacity:0;transition:opacity 1.2s var(--ease);background-position:50%;background-size:cover;position:fixed;inset:0}html[data-page=home] .atmos-home{opacity:.13;mix-blend-mode:multiply;filter:grayscale()contrast(1.05)}html[data-page=weather] .atmos-weather{opacity:.45;mix-blend-mode:soft-light;filter:blur(10px)saturate(.9)}html[data-page=album] .atmos-album{opacity:.4;mix-blend-mode:soft-light;filter:blur(9px)saturate(.95)}html[data-page=timeline] .atmos-timeline{opacity:.17;mix-blend-mode:multiply;filter:grayscale(.85)sepia(.5)contrast(1.02)}html[data-page=map] .atmos-map{opacity:.32;mix-blend-mode:soft-light;filter:blur(10px)saturate(.85)}html[data-page=music] .atmos-music{opacity:.32;mix-blend-mode:screen;filter:blur(6px)saturate(1.05)}html[data-page=messages] .atmos-messages{opacity:.34;mix-blend-mode:soft-light;filter:blur(10px)saturate(.95)}html[data-page=wishes] .atmos-wishes{opacity:.36;mix-blend-mode:soft-light;filter:blur(8px)saturate(.9)}html[data-page=checkin] .atmos-checkin{opacity:.35;mix-blend-mode:soft-light;filter:blur(10px)saturate(.95)}.scene-photo{opacity:0;transition:opacity 1.8s var(--ease);filter:blur(14px)saturate(.92);mix-blend-mode:soft-light;background-position:50%;background-size:cover;position:absolute;inset:-4%}html[data-season=spring] .scene-photo--spring{opacity:.5}html[data-season=summer] .scene-photo--summer{opacity:.45}html[data-season=autumn] .scene-photo--autumn,html[data-season=winter] .scene-photo--winter{opacity:.5}.vignette{z-index:5;pointer-events:none;background:radial-gradient(130% 100% at 50% 42%,#0000 58%,#241e190f 100%);position:fixed;inset:0}.scene{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.scene-layer{opacity:0;transition:opacity 1.4s var(--ease);position:absolute;inset:0}.scene-layer svg{width:100%;height:100%;display:block}html[data-season=spring] .scene-spring,html[data-season=summer] .scene-summer,html[data-season=autumn] .scene-autumn,html[data-season=winter] .scene-winter{opacity:1}html[data-season=spring]{--wash1:#d4728b2e;--wash2:#a8c6a133}html[data-season=summer]{--wash1:#3e8fa82e;--wash2:#e0b84e33}html[data-season=autumn]{--wash1:#c4713f2e;--wash2:#8a9a5b33}html[data-season=winter]{--wash1:#7f94b833;--wash2:#b9c7d938}.rain{transform-box:fill-box;transform-origin:50%;animation:2.8s linear infinite rainFall}.rain.r2{animation-duration:3.3s;animation-delay:.5s}.rain.r3{animation-duration:2.4s;animation-delay:1.1s}.rain.r4{animation-duration:3.7s;animation-delay:.2s}.rain.r5{animation-duration:2.9s;animation-delay:1.6s}.rain.r6{animation-duration:3.1s;animation-delay:.9s}@keyframes rainFall{0%{opacity:0;transform:translate(10px,-300px)}12%{opacity:.9}to{opacity:0;transform:translate(-30px,380px)}}.sun-rays{transform-box:fill-box;transform-origin:50%;animation:120s linear infinite spin}.leaf{animation:7s ease-in-out infinite alternate leafFloat}.leaf.l2{animation-duration:8.5s;animation-delay:1.2s}.leaf.l3{animation-duration:6.8s;animation-delay:2.4s}.leaf.l4{animation-duration:9.2s;animation-delay:.8s}@keyframes leafFloat{0%{transform:translate(0)}to{transform:translate(-34px,30px)}}.snow{animation:12s linear infinite snowDrift}.snow.s1{animation-delay:0s}.snow.s2{animation-delay:2.2s}.snow.s3{animation-delay:4.5s}.snow.s4{animation-delay:1.1s}.snow.s5{animation-delay:6.3s}.snow.s6{animation-delay:3.4s}.snow.s7{animation-delay:7.7s}.snow.s8{animation-delay:5.2s}@keyframes snowDrift{0%{opacity:0;transform:translateY(-160px)}12%{opacity:.9}to{opacity:0;transform:translate(70px,320px)}}.page-ornament{z-index:6;pointer-events:none;width:100px;height:100px;position:fixed}.orn-tr{top:74px;right:6px}.orn-bl{bottom:16px;left:6px}.orn{opacity:0;transition:opacity 1.2s var(--ease);position:absolute;inset:0}.orn svg{width:100%;height:100%;display:block}html[data-season=spring] .orn-spring{opacity:.55}html[data-season=summer] .orn-summer{opacity:.5}html[data-season=autumn] .orn-autumn,html[data-season=winter] .orn-winter{opacity:.55}.section-title:after{content:"❦";color:var(--accent);vertical-align:.32em;margin-left:14px;font-size:.48em}.login-wrap:before,.login-wrap:after{content:"♥";font-family:var(--serif);color:var(--accent);opacity:.22;pointer-events:none;animation:16s ease-in-out infinite floatHeart;position:absolute}.login-wrap:before{font-size:30px;top:14%;left:9%}.login-wrap:after{font-size:22px;animation-delay:7s;top:64%;right:8%}@keyframes floatHeart{0%,to{transform:translateY(0)rotate(-8deg)}50%{transform:translateY(-42px)rotate(10deg)}}.btn-primary:active{transform:translateY(0)scale(.97)}.song-play:active{transform:scale(.92)}.weather-opt:active span,.season-dock button:active{transform:scale(.9)}@media (max-width:760px){.page-ornament{display:none}}.nav-logout{letter-spacing:.16em;color:var(--ink-45);cursor:pointer;transition:color .4s var(--ease);background:0 0;border:0;padding:4px 0;font-size:11px}.nav-logout:hover{color:#a4604f}.menu-btn{cursor:pointer;background:0 0;border:0;flex-direction:column;gap:5px;padding:8px;display:none}.menu-btn span{background:var(--ink);width:21px;height:1.5px;transition:transform .4s var(--ease)}.mobile-menu{z-index:90;background:color-mix(in srgb, var(--paper) 93%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);opacity:0;visibility:hidden;transition:opacity .5s var(--ease), visibility .5s;position:fixed;inset:0}.mobile-menu.is-open{opacity:1;visibility:visible}.mobile-menu nav{flex-direction:column;height:100%;padding:96px clamp(28px,8vw,60px) 40px;display:flex;position:relative;overflow-y:auto}.menu-close{color:var(--ink-70);cursor:pointer;background:0 0;border:0;font-size:32px;line-height:1;position:absolute;top:20px;right:22px}.menu-eyebrow{letter-spacing:.46em;text-transform:uppercase;color:var(--accent);margin:0 0 24px;font-size:10px}.menu-links{flex-direction:column;gap:2px;display:flex}.menu-links a{border-bottom:1px solid var(--line);font-family:var(--serif);letter-spacing:.12em;color:var(--ink);opacity:0;transition:opacity .5s var(--ease), transform .5s var(--ease), color .3s;align-items:baseline;gap:16px;padding:13px 0;font-size:21px;display:flex;transform:translateY(14px)}.mobile-menu.is-open .menu-links a{opacity:1;transition-delay:calc(var(--i,0) * 45ms + 60ms);transform:none}.menu-links a em{font-style:normal;font-family:var(--display);letter-spacing:.1em;color:var(--accent);min-width:24px;font-size:12px}.menu-links a.is-current{color:var(--accent)}.menu-foot{justify-content:center;margin-top:auto;padding-top:28px;display:flex}.logout-btn{border:1px solid var(--line);letter-spacing:.3em;text-indent:.3em;color:var(--ink-70);cursor:pointer;transition:all .4s var(--ease);background:0 0;border-radius:999px;padding:8px 28px;font-size:11px}.logout-btn:hover{color:#a4604f;border-color:#a4604f}.upload-note{letter-spacing:.08em;color:var(--accent);margin:0;font-size:12px}@media (max-width:600px){.menu-btn{display:flex}.site-header{justify-content:space-between}}.export-link{display:inline-block}.video-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px;display:grid}.video-card{border:1px solid var(--line);transition:transform .6s var(--ease), box-shadow .6s var(--ease);background:#fffdf9db;border-radius:14px;margin:0;position:relative;overflow:hidden;box-shadow:0 20px 44px -32px #241e1973}.video-card:hover{transform:translateY(-4px);box-shadow:0 30px 60px -34px #241e198c}.video-frame{aspect-ratio:16/9;background:#241e19}.video-frame video{object-fit:contain;width:100%;height:100%}.video-card figcaption{flex-direction:column;gap:4px;padding:14px 16px;display:flex}.video-title{font-family:var(--serif);letter-spacing:.06em;font-size:15px}.video-desc{color:var(--ink-45);letter-spacing:.04em;font-size:12px}.card-wall{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:26px;padding:14px 4px;display:grid}.lovecard{border:1px solid color-mix(in srgb, var(--accent) 30%, var(--line));background:linear-gradient(170deg, #fffdf8, var(--accent-soft));cursor:pointer;min-height:240px;transform:rotate(var(--r,0deg));transition:transform .6s var(--ease), box-shadow .6s var(--ease);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:40px 22px 24px;display:flex;position:relative;overflow:hidden;box-shadow:0 18px 38px -26px #241e1973}.lovecard:before{content:"";background:color-mix(in srgb, var(--accent) 16%, #fff);clip-path:polygon(0 0,100% 0,50% 100%);border-bottom:1px solid var(--line);height:62px;position:absolute;top:0;left:0;right:0}.lovecard:hover{z-index:2;transform:rotate(0)translateY(-6px)scale(1.02);box-shadow:0 30px 60px -30px #241e198c}.lovecard-seal{background:var(--accent);color:#fff;width:34px;height:34px;box-shadow:0 8px 16px -8px color-mix(in srgb, var(--accent) 80%, transparent);border-radius:999px;place-items:center;margin-bottom:6px;font-size:13px;display:grid}.lovecard em{font-style:normal;font-family:var(--serif);letter-spacing:.1em;font-size:17px}.lovecard small{letter-spacing:.3em;text-transform:uppercase;color:var(--accent);font-size:10px}.card-overlay{z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:lbIn .35s var(--ease);background:#14100ce6;place-items:center;display:grid;position:fixed;inset:0}.card-sheet{text-align:center;width:min(560px,90vw);max-height:84vh;animation:sheetIn .6s var(--ease);background:#fffdf8;border-radius:14px;padding:56px 46px;position:relative;overflow-y:auto;box-shadow:0 50px 100px -40px #000000d9}@keyframes sheetIn{0%{opacity:0;transform:scale(.92)rotate(-1deg)}}.card-sheet-seal{background:var(--accent);color:#fff;text-align:center;border-radius:999px;width:40px;height:40px;margin:0 auto 22px;font-size:15px;line-height:40px;display:block}.card-sheet h3{font-family:var(--serif);letter-spacing:.16em;margin:0 0 22px;font-size:24px;font-weight:400}.card-sheet p{font-family:var(--serif);letter-spacing:.05em;white-space:pre-wrap;color:var(--ink-70);margin:0 0 22px;font-size:15.5px;line-height:2.1}.card-sheet em{color:var(--accent);letter-spacing:.1em;font-style:italic}.page-fade{animation:.45s both pageFadeIn}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(6px)}}::view-transition-old(root){animation:.26s both vtOut}::view-transition-new(root){animation:.38s both vtIn}@keyframes vtOut{to{opacity:0;transform:scale(.996)}}@keyframes vtIn{0%{opacity:0;transform:scale(1.004)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}}.card{-webkit-backdrop-filter:blur(16px)saturate(1.08);backdrop-filter:blur(16px)saturate(1.08);background:#fffdf97a;border:1px solid #ffffff8c;box-shadow:0 1px 2px #241e1908,0 20px 50px -32px #241e1961}.card:hover{border-color:color-mix(in srgb, var(--accent) 42%, #ffffff8c)}.section-title:after{color:var(--gold)}.footer{background:#241e19;border-top:1px solid #9a7b5473}.footer-mark{color:var(--gold);-webkit-text-fill-color:var(--gold);background:0 0}.footer-text{color:#faf8f480}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:#352d26}.doodle{z-index:6;pointer-events:none;color:var(--ink-45);opacity:.5;position:fixed}.doodle svg{width:100%;height:100%;display:block}.doodle-d1{width:46px;height:31px;top:82px;left:16px}.doodle-d2{width:34px;height:34px;top:50%;left:9px}.doodle-d3{width:30px;height:30px;bottom:30%;left:13px}.doodle-d4{width:34px;height:34px;top:18%;right:13px}.doodle-d5{width:32px;height:32px;top:52%;right:10px}.doodle-d6{width:34px;height:34px;bottom:84px;right:15px}.doodle svg{animation:6.5s ease-in-out infinite doodleFloat}.doodle-d2 svg{animation-duration:7.5s;animation-delay:1.2s}.doodle-d3 svg{animation-duration:8s;animation-delay:2.4s}.doodle-d4 svg{animation-duration:6.2s;animation-delay:.4s}.doodle-d5 svg{animation-duration:7.8s;animation-delay:1.8s}.doodle-d6 svg{animation-duration:7.2s;animation-delay:3s}@keyframes doodleFloat{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-8px)rotate(3deg)}}@media (max-width:760px){.doodle{display:none}}.field input,.field select,.inline-form input,.checkin-input,.mood-note{border-radius:999px;padding-left:18px;padding-right:18px}.field textarea,.note-form textarea{border-radius:18px}.note-form textarea{border-radius:24px 24px 24px 8px}.btn-primary{border-radius:999px;padding-left:26px;padding-right:26px}.card--quote{border-radius:30px 30px 30px 10px}.card--date{border-radius:20px 48px}.card--weather{border-radius:44px 18px}.card--music{border-radius:50px 50px 20px}.card--map{border-radius:24px 24px 48px}.card--wishes{border-radius:20px 20px 44px}.card--messages{border-radius:44px 20px 20px 44px}.card--timeline{border-radius:20px 44px 44px 20px}.mood-card{border-radius:40px 40px 40px 14px}.section-head{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='7' viewBox='0 0 28 7'%3E%3Cpath d='M0 4 Q7 0 14 4 T28 4' fill='none' stroke='%239a7b54' stroke-width='1'/%3E%3C/svg%3E");background-position:0 100%;background-repeat:repeat-x;background-size:28px 7px;border-bottom:none;padding-bottom:22px}.section-title:before{vertical-align:.02em;background:0 0;width:auto;height:auto;margin-right:14px;font-size:.85em;line-height:1}html[data-page=weather] .section-title:before{content:"☁";color:var(--accent)}html[data-page=album] .section-title:before{content:"❖";color:var(--accent)}html[data-page=videos] .section-title:before{content:"▶";color:var(--gold);font-size:.62em}html[data-page=timeline] .section-title:before{content:"✦";color:var(--accent)}html[data-page=map] .section-title:before{content:"⌖";color:var(--accent)}html[data-page=music] .section-title:before{content:"♪";color:var(--accent)}html[data-page=messages] .section-title:before{content:"✉";color:var(--accent)}html[data-page=wishes] .section-title:before{content:"☆";color:var(--gold)}html[data-page=checkin] .section-title:before{content:"✓";color:var(--accent)}html[data-page=cards] .section-title:before{content:"♥";color:var(--accent)}html[data-page=admin] .section-title:before{content:"⚙";color:var(--gold)}html[data-page=weather] .section-head{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px}html[data-page=weather] .section-title{font-size:clamp(28px,4.5vw,46px)}html[data-page=videos] .section-head{color:var(--paper);background:#241e19;border-radius:22px;padding:24px 30px}html[data-page=videos] .section-title{color:var(--paper)}html[data-page=videos] .section-meta{color:#faf8f499}html[data-page=music] .section-head,html[data-page=timeline] .section-head,html[data-page=cards] .section-head{justify-content:center}html[data-page=music] .section-title,html[data-page=cards] .section-title{font-size:clamp(24px,3.4vw,38px)}html[data-page=messages] .section-meta{border:1px solid var(--line);border-radius:999px;padding:3px 14px}html[data-page=wishes] .section-title{text-shadow:0 0 30px color-mix(in srgb, var(--gold) 35%, transparent)}.shape{z-index:5;pointer-events:none;display:block;position:fixed}.shape svg{width:100%;height:100%;display:block}.shape-1{width:26px;color:var(--accent);opacity:.4;top:18%;left:6%}.shape-2{width:15px;color:var(--gold);opacity:.5;top:30%;right:7%}.shape-3{width:22px;color:var(--accent-2);opacity:.35;top:12%;right:24%}.shape-4{width:20px;color:var(--gold);opacity:.5;top:60%;left:5%}.shape-5{width:20px;color:var(--accent);opacity:.4;bottom:22%;right:6%}.shape-6{width:22px;color:var(--ink-30);opacity:.5;top:44%;left:3%}.shape-7{width:18px;color:var(--ink-30);opacity:.45;bottom:34%;right:4%}.shape-8{width:26px;color:var(--accent);opacity:.4;bottom:8%;left:30%}.shape-9{width:30px;color:var(--ink-30);opacity:.5;top:22%;left:28%}.shape svg{animation:9s ease-in-out infinite shapeFloat}.shape-2 svg{animation-duration:7s;animation-delay:1s}.shape-3 svg{animation-duration:11s;animation-delay:.6s}.shape-4 svg{animation-duration:6.5s;animation-delay:2s}.shape-5 svg{animation-duration:10s;animation-delay:1.4s}.shape-6 svg{animation-duration:8s;animation-delay:.3s}.shape-7 svg{animation-duration:7.5s;animation-delay:2.6s}.shape-8 svg{animation-duration:12s;animation-delay:.9s}.shape-9 svg{animation-duration:9.5s;animation-delay:1.8s}@keyframes shapeFloat{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-12px)rotate(14deg)}}@media (max-width:760px){.shape{display:none}}.tabbar{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:70;-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);background:#faf8f4cc;border:1px solid #fff9;border-radius:22px;justify-content:space-around;align-items:center;padding:7px 6px;display:none;position:fixed;box-shadow:0 18px 40px -22px #241e1980}.tabbar a,.tabbar button{color:var(--ink-45);letter-spacing:.08em;cursor:pointer;transition:color .3s var(--ease), background .3s var(--ease);background:0 0;border:0;border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:4px 2px;font-size:9.5px;display:flex}.tabbar svg{width:21px;height:21px;transition:transform .35s var(--ease)}.tabbar a.is-active svg,.tabbar button.is-active svg{transform:translateY(-1px)scale(1.08)}.tabbar a.is-active,.tabbar button.is-active{color:var(--accent)}@media (max-width:600px){.tabbar{display:flex}.season-dock{bottom:calc(88px + env(safe-area-inset-bottom,0px))}.footer{padding-bottom:132px}}.bubbles{z-index:4;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bubble{background:radial-gradient(circle at 30% 28%,#ffffff9e,#ffffff0f 58%,#0000 72%);border:1px solid #ffffff80;border-radius:50%;animation-name:bubbleFloat;animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute}@keyframes bubbleFloat{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-22px)scale(1.03)}}@media (max-width:760px){.bubble:nth-child(n+5){display:none}}.site-header{transition:transform .45s var(--ease)}.site-header.is-hidden{transform:translateY(-115%)}.dnav{-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);background:#fffdf98c;border:1px solid #ffffff8c;border-radius:999px;align-items:center;gap:1px;padding:5px 7px;display:flex;box-shadow:0 10px 26px -20px #241e1973}.dnav a{letter-spacing:.1em;color:var(--ink-70);white-space:nowrap;transition:color .35s var(--ease), background .35s var(--ease);border-radius:999px;padding:6px 11px;font-size:12.5px}.dnav a:hover{color:var(--ink);background:#ffffff8c}.dnav a.is-active{color:var(--ink);background:var(--accent-soft)}.dnav .dnav-admin{color:var(--gold)}.dnav-logout{letter-spacing:.12em;color:var(--ink-45);cursor:pointer;transition:color .3s var(--ease), background .3s var(--ease);background:0 0;border:0;border-radius:999px;padding:6px 10px;font-size:11px}.dnav-logout:hover{color:#a4604f;background:#ffffff80}@media (max-width:1150px){.dnav a{letter-spacing:.06em;padding:6px 8px;font-size:12px}}@media (max-width:900px){.dnav a{letter-spacing:.04em;padding:5px 6px;font-size:11px}}@media (max-width:600px){.dnav{display:none}}.section{padding-top:clamp(60px,6.5vw,112px);padding-bottom:clamp(60px,6.5vw,112px)}@media (min-width:1500px){.section{max-width:1440px}.bento{gap:26px}}@media (min-width:1800px){.section{max-width:1580px}}@media (min-width:1200px) and (min-height:800px){.hero{min-height:84svh;padding:104px 24px 58px}.hero-day{font-size:clamp(180px,16vw,292px)}.hero-eyebrow{margin-bottom:24px}.hero-names{margin-top:30px}.hero-rule{height:52px;margin:26px auto}}.chat-shell{border:1px solid var(--line);-webkit-backdrop-filter:blur(14px)saturate(1.05);backdrop-filter:blur(14px)saturate(1.05);background:#fffdf9a8;border-radius:24px;flex-direction:column;max-width:900px;display:flex;overflow:hidden;box-shadow:0 22px 50px -34px #241e1973}.chat-status{border-bottom:1px solid var(--line);letter-spacing:.06em;color:var(--ink-45);flex-wrap:wrap;justify-content:center;gap:24px;padding:12px 18px;font-size:12px;display:flex}.chat-person{align-items:center;gap:7px;display:inline-flex}.chat-person i{background:var(--ink-30);border-radius:999px;width:7px;height:7px}.chat-person.is-online{color:var(--ink-70)}.chat-person.is-online i{background:#6fae7f;animation:2.2s ease-in-out infinite pulseDot;box-shadow:0 0 0 3px #6fae7f2e}@keyframes pulseDot{50%{box-shadow:0 0 0 7px #6fae7f00}}.chat-list{flex-direction:column;gap:10px;height:min(54vh,440px);min-height:280px;padding:18px 16px;display:flex;overflow-y:auto}.chat-empty{color:var(--ink-45);letter-spacing:.1em;margin:auto;font-size:13px}.chat-row{display:flex}.chat-row.is-mine{justify-content:flex-end}.chat-bubble{border:1px solid var(--line);background:#ffffffeb;border-radius:18px 18px 18px 6px;max-width:76%;padding:10px 14px 8px}.chat-row.is-mine .chat-bubble{background:var(--accent-soft);border-color:#0000;border-radius:18px 18px 6px}.chat-bubble p{white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px;line-height:1.75}.chat-bubble span{color:var(--ink-45);text-align:right;letter-spacing:.04em;margin-top:4px;font-size:10px;display:block}.chat-composer{border-top:1px solid var(--line);background:#ffffff73;gap:10px;padding:12px;display:flex}.chat-composer input{border:1px solid var(--line);transition:border-color .35s var(--ease);background:#ffffffd9;border-radius:999px;outline:none;flex:1;padding:11px 18px;font-size:14px}.chat-composer input:focus{border-color:color-mix(in srgb, var(--accent) 60%, var(--line))}.chat-send{background:var(--ink);width:44px;height:44px;color:var(--paper);cursor:pointer;transition:transform .3s var(--ease), background .3s var(--ease);border:0;border-radius:999px;flex:none;font-size:17px}.chat-send:hover{background:var(--accent);transform:scale(1.06)}.game-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf9b3;border-radius:24px;max-width:900px;padding:26px 28px;box-shadow:0 22px 50px -36px #241e1966}.game-head{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.game-stats{letter-spacing:.16em;color:var(--accent);font-size:11px}.game-question{font-family:var(--serif);letter-spacing:.06em;margin:14px 0 18px;font-size:clamp(17px,2.2vw,21px);font-weight:400;line-height:1.7}.game-form{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.game-form input{border:1px solid var(--line);min-width:200px;transition:border-color .35s var(--ease);background:#ffffffd9;border-radius:999px;outline:none;flex:1;padding:11px 18px;font-size:14px}.game-form input:focus{border-color:color-mix(in srgb, var(--accent) 60%, var(--line))}.game-answers{flex-direction:column;gap:10px;display:flex}.game-answer{background:#ffffffa6;border-radius:14px;align-items:baseline;gap:14px;padding:10px 16px;display:flex}.game-answer em{letter-spacing:.2em;color:var(--accent);font-size:11px;font-style:normal}.game-answer span{font-family:var(--serif);font-size:15px}.game-result{color:var(--ink-45);letter-spacing:.06em;margin:2px 0 0;font-size:13px}.game-result.is-match{color:var(--accent)}:root{--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:72px}body{font-size:15px;line-height:1.8}.section-title{letter-spacing:.05em;text-wrap:balance;font-size:clamp(22px,2.9vw,36px);line-height:1.25}.hero-day{letter-spacing:-.045em;line-height:.78}.hero-names{letter-spacing:.26em;line-height:1.4}.card-heading{letter-spacing:.05em;line-height:1.35}.empty,.tl-body,.quote-text{text-wrap:pretty}.card:not(.card--album){gap:24px;padding:28px}.card{transition-duration:.45s}.card:hover{transform:rotate(0)translateY(-5px)}.btn-primary,.chat-send,.song-play,.season-dock button{transition-duration:.25s}:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 72%, transparent);outline-offset:3px;border-radius:8px}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--ink-30) 60%, transparent) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--ink-30) 55%, transparent);border-radius:999px}::-webkit-scrollbar-track{background:0 0}.photo img{filter:saturate(.96)contrast(1.02);transition:filter .6s var(--ease), transform .7s var(--ease)}.photo:hover img{filter:saturate(1.05)contrast(1.03)}.dnav-group{align-items:center;display:flex;position:relative}.dnav-trigger{letter-spacing:.07em;color:var(--ink-70);cursor:default;transition:color .3s var(--ease), background .3s var(--ease);border-radius:999px;padding:6px 11px;font-size:12.5px}.dnav-group:hover .dnav-trigger,.dnav-group:focus-within .dnav-trigger{color:var(--ink);background:#ffffff8c}.dnav-group.is-active .dnav-trigger{background:var(--accent-soft);color:var(--ink)}.dnav-pop{-webkit-backdrop-filter:blur(16px)saturate(1.1);backdrop-filter:blur(16px)saturate(1.1);opacity:0;visibility:hidden;z-index:60;min-width:136px;transition:opacity .26s var(--ease), transform .26s var(--ease), visibility .26s;background:#fffdf9f0;border:1px solid #ffffffb3;border-radius:16px;padding:8px;position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(-6px);box-shadow:0 24px 48px -28px #241e1980}.dnav-pop:before{content:"";height:12px;position:absolute;top:-12px;left:0;right:0}.dnav-group:hover .dnav-pop,.dnav-group:focus-within .dnav-pop{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.dnav-pop a{letter-spacing:.06em;color:var(--ink-70);transition:background .25s var(--ease), color .25s var(--ease);border-radius:10px;padding:8px 12px;font-size:13px;display:block}.dnav-pop a:hover{color:var(--ink);background:#ffffffd9}.dnav-pop a.is-active{background:var(--accent-soft);color:var(--ink)}.hero-day{font-size:inherit;flex-direction:column;align-items:center;line-height:1;display:flex}.hero-day-kicker{font-family:var(--sans);letter-spacing:.52em;text-indent:.52em;color:var(--gold);margin-bottom:18px;font-size:11px}.hero-day-number{font-family:var(--display);letter-spacing:-.045em;font-variant-numeric:lining-nums tabular-nums;color:var(--ink);font-size:clamp(120px,20vw,300px);line-height:.8}.hero-day-unit{font-family:var(--sans);letter-spacing:.46em;text-indent:.46em;color:var(--ink-45);margin-top:16px;font-size:11px}@media (min-width:1200px) and (min-height:800px){.hero-day-number{font-size:clamp(200px,17vw,320px)}}.photo-hero{border-radius:20px;margin:0 0 30px;position:relative;overflow:hidden;box-shadow:0 34px 64px -42px #241e198c}.photo-hero img{object-fit:cover;width:100%;max-height:64vh;animation:heroPhoto 1s var(--ease) both;display:block}@keyframes heroPhoto{0%{opacity:0;transform:scale(1.03)}}.photo-hero figcaption{color:#fff;font-family:var(--serif);letter-spacing:.08em;background:linear-gradient(#0000,#14100c9e);padding:28px 30px 22px;font-size:15px;position:absolute;bottom:0;left:0;right:0}.empty-frame:before{content:"✦";font-family:var(--serif);color:color-mix(in srgb, var(--accent) 52%, transparent);text-align:center;margin-bottom:10px;font-size:26px;display:block}.login-wrap{background:var(--paper);grid-template-columns:1.05fr 1fr;min-height:100svh;padding:0;display:grid}.login-art{background:radial-gradient(120% 90% at 20% 10%, var(--accent-soft), transparent 62%), radial-gradient(100% 80% at 90% 90%, color-mix(in srgb, var(--accent-2) 30%, transparent), transparent 60%), var(--paper-2);flex-direction:column;justify-content:flex-end;padding:clamp(32px,5vw,72px);display:flex;position:relative;overflow:hidden}.login-art:after{content:"";opacity:.42;filter:saturate(.92)contrast(1.02);mix-blend-mode:soft-light;background:url(/textures/login.jpg) 50%/cover no-repeat;position:absolute;inset:0}.login-art-inner{z-index:1;max-width:30ch;position:relative}.login-art-kicker{letter-spacing:.5em;text-transform:uppercase;color:var(--gold);margin:0 0 20px;font-size:10px}.login-art-title{font-family:var(--serif);letter-spacing:.1em;margin:0;font-size:clamp(34px,4.6vw,58px);font-weight:400;line-height:1.24}.login-art-sub{letter-spacing:.16em;color:var(--ink-70);margin:22px 0 0;font-size:12px}.login-art-seal{border:1px solid var(--gold);width:66px;height:66px;font-family:var(--display);color:var(--gold);z-index:1;border-radius:999px;place-items:center;font-size:24px;display:grid;position:absolute;top:clamp(24px,4vw,48px);right:clamp(24px,4vw,48px)}.login-panel{place-items:center;padding:clamp(32px,5vw,72px) clamp(24px,4vw,56px);display:grid}.login-form-wrap{text-align:left;width:min(380px,100%)}.login-form-wrap .login-title{text-align:left;margin:16px 0 8px;font-size:clamp(24px,3vw,30px)}.login-form-wrap .login-sub{margin:0 0 28px}.login-form-wrap .login-foot{text-align:left;margin-top:24px}.login-card{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0}@media (max-width:900px){.login-wrap{grid-template-columns:1fr}.login-art{display:none}.login-panel{padding-top:56px}}.footer{padding:clamp(48px,6vw,76px) clamp(20px,5vw,72px) clamp(80px,8vw,96px)}.footer-grid{text-align:left;grid-template-columns:1.3fr 1fr auto;align-items:start;gap:32px 48px;width:100%;max-width:1320px;margin:0 auto;display:grid}.footer-mark{letter-spacing:.24em;font-size:20px;display:block}.footer-line{font-family:var(--serif);letter-spacing:.12em;color:#faf8f480;margin:12px 0 0;font-size:13px}.footer-links{flex-wrap:wrap;gap:10px 22px;display:flex}.footer-links a{letter-spacing:.14em;color:#faf8f49e;transition:color .3s var(--ease);font-size:12px}.footer-links a:hover{color:var(--gold)}.footer-meta{text-align:right;letter-spacing:.22em;text-transform:uppercase;color:#faf8f461;flex-direction:column;gap:8px;font-size:10px;display:flex}@media (max-width:820px){.footer-grid{text-align:center;grid-template-columns:1fr}.footer-meta{text-align:center;align-items:center}.footer-links{justify-content:center}.footer-mark,.footer-line{text-align:center}}.hero-divider{color:var(--gold);font-family:var(--serif);opacity:.7;justify-content:center;align-items:center;gap:18px;margin:0 auto clamp(8px,2vw,20px);font-size:15px;display:flex}.hero-divider:before,.hero-divider:after{content:"";background:linear-gradient(to right, transparent, color-mix(in srgb, var(--gold) 55%, transparent));width:min(18vw,140px);height:1px}.hero-divider:after{background:linear-gradient(to left, transparent, color-mix(in srgb, var(--gold) 55%, transparent))}.section-head{flex-wrap:wrap}.section-head:after{font-family:var(--serif);letter-spacing:.1em;color:var(--ink-45);flex-basis:100%;margin-top:10px;font-size:12.5px;line-height:1.7}html[data-page=home] .section-head:after{content:"那些一起走过的日子，都收在这里。"}html[data-page=weather] .section-head:after{content:"今天你们的心情，是晴还是雨。"}html[data-page=album] .section-head:after{content:"光落下来的地方，都有你们。"}html[data-page=videos] .section-head:after{content:"会动的那些瞬间。"}html[data-page=timeline] .section-head:after{content:"按时间排好的故事，一页一页往回翻。"}html[data-page=map] .section-head:after{content:"去过的地方，连成一条属于你们的线。"}html[data-page=music] .section-head:after{content:"有些歌，一响起来就想起某个人。"}html[data-page=messages] .section-head:after{content:"那些没当面说出口的话。"}html[data-page=wishes] .section-head:after{content:"想一起做的事，一件件勾掉。"}html[data-page=checkin] .section-head:after{content:"每天来签个到，证明今天也在一起。"}html[data-page=cards] .section-head:after{content:"写给你的，慢慢拆。"}html[data-page=anniversaries] .section-head:after{content:"那些不能忘的日子，都替你记着。"}html[data-page=chat] .section-head:after{content:"想说什么就说，反正只有我们看得见。"}.backtop{z-index:60;border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:42px;height:42px;color:var(--ink-70);cursor:pointer;opacity:0;visibility:hidden;transition:opacity .35s var(--ease), transform .35s var(--ease), visibility .35s, color .3s var(--ease), border-color .3s var(--ease);background:#fffdf9db;border-radius:999px;place-items:center;display:grid;position:fixed;bottom:92px;right:clamp(20px,2vw,26px);transform:translateY(8px);box-shadow:0 12px 26px -18px #241e1973}.backtop svg{width:18px;height:18px}.backtop.is-on{opacity:1;visibility:visible;transform:none}.backtop:hover{color:var(--ink);border-color:var(--accent)}@media (max-width:600px){.backtop{display:none}}.chat-day{letter-spacing:.2em;color:var(--ink-45);border:1px solid var(--line);background:#fff9;border-radius:999px;align-self:center;margin:12px 0 2px;padding:2px 12px;font-size:10.5px}.album-wall{columns:unset;gap:14px;column-gap:unset;grid-template-columns:repeat(4,minmax(0,1fr));padding:0;display:grid}.photo{aspect-ratio:1;break-inside:auto;border-radius:12px;margin:0;overflow:hidden}.photo img{object-fit:cover;width:100%;height:100%}.photo:nth-child(6n+1){aspect-ratio:auto;grid-area:span 2/span 2}.photo figcaption{color:#fff;background:linear-gradient(#0000,#14100c94);padding:12px 16px 10px;font-size:12.5px;position:absolute;bottom:0;left:0;right:0}.photo-del{top:10px;right:10px}@media (max-width:760px){.album-wall{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.photo:nth-child(6n+1){aspect-ratio:16/10;grid-area:span 1/span 2}}.tl-year-label{font-family:var(--display);letter-spacing:.12em;color:var(--gold);opacity:.9;margin:6px 0 20px;padding-left:130px;font-size:32px;line-height:1;list-style:none}.lovecard{perspective:700px}.lovecard:before{transform-origin:top;transition:transform .55s var(--ease), opacity .55s var(--ease)}.lovecard:hover:before{opacity:.5;transform:rotateX(168deg)}@media (prefers-reduced-motion:reduce){.lovecard:hover:before{transform:none}}.eq{vertical-align:-1px;align-items:flex-end;gap:2px;height:12px;margin-left:8px;display:inline-flex}.eq i{background:var(--accent);border-radius:1px;width:2px;height:4px;animation:.9s ease-in-out infinite eqBar;display:block}.eq i:nth-child(2){animation-delay:.15s}.eq i:nth-child(3){animation-delay:.3s}@keyframes eqBar{0%,to{height:4px}50%{height:12px}}.dock-sep{background:var(--line);align-self:center;width:1px;height:18px;margin:0 4px}.dock-night{width:34px;height:34px;font-family:var(--serif);color:var(--ink-45);cursor:pointer;transition:background .5s var(--ease), color .5s var(--ease), transform .5s var(--ease);background:0 0;border:0;border-radius:999px;font-size:13px}.dock-night:hover{color:var(--ink);transform:scale(1.12)}.dock-night.is-night{background:color-mix(in srgb, var(--ink) 88%, #000);color:var(--paper)}html[data-theme=night]{--paper:#14110f;--paper-2:#1b1714;--ink:#f2eade;--ink-70:#cec2b3;--ink-45:#97897a;--ink-30:#6a5f54;--line:#2f2823;--gold:#b8935f;--accent-soft:color-mix(in srgb, var(--accent) 22%, #1b1714)}html[data-theme=night] body{background-color:var(--paper);background-image:radial-gradient(1100px 720px at 88% -12%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 62%), radial-gradient(950px 640px at -12% 42%, #96785a1a, transparent 58%);color:var(--ink)}html[data-theme=night] .card{background:#1e19158c;border-color:#ffffff12;box-shadow:0 22px 50px -34px #000c,inset 0 1px #ffffff08}html[data-theme=night] .card:hover{background:#26201aad}html[data-theme=night] .card:after{opacity:.55}html[data-theme=night] .atmos{opacity:.14}html[data-theme=night] .atmos-home{mix-blend-mode:screen;opacity:.05}html[data-theme=night] .site-header{background:linear-gradient(#14110ff0,#0000)}html[data-theme=night] .dnav{background:#1e1915ad;border-color:#ffffff14;box-shadow:0 12px 30px -22px #000000e6}html[data-theme=night] .dnav a{color:var(--ink-70)}html[data-theme=night] .dnav a:hover{color:var(--ink);background:#ffffff0f}html[data-theme=night] .dnav a.is-active,html[data-theme=night] .dnav-group.is-active .dnav-trigger{color:var(--ink);background:#ffffff1f}html[data-theme=night] .dnav-pop{background:#1c1814f7;border-color:#ffffff14}html[data-theme=night] .dnav-pop a{color:var(--ink-70)}html[data-theme=night] .dnav-pop a:hover{color:var(--ink);background:#ffffff0f}html[data-theme=night] .dnav-pop a.is-active{color:var(--ink);background:#ffffff1a}html[data-theme=night] :is(.chat-shell,.game-card,.mood-card,.checkin-hero,.wish-row,.tl-card,.place-card,.lovecard,.upload-form,.admin-block,.note-form textarea,.game-answer,.admin-list li,.video-card,.photo-hero figcaption){background:#ffffff0b;border-color:#ffffff14}html[data-theme=night] .note{background:#241f1a!important}html[data-theme=night] .note:nth-child(5n+2){background:#26201d!important}html[data-theme=night] .note:nth-child(5n+3){background:#202520!important}html[data-theme=night] .note:nth-child(5n+4){background:#1f2428!important}html[data-theme=night] .note:nth-child(5n+5){background:#242029!important}html[data-theme=night] .chat-bubble{background:#28221ceb;border-color:#ffffff12}html[data-theme=night] .chat-row.is-mine .chat-bubble{background:color-mix(in srgb, var(--accent) 30%, #1b1714);border-color:#0000}html[data-theme=night] .chat-composer{background:#ffffff08}html[data-theme=night] :is(.chat-composer input,.field input,.field textarea,.field select,.inline-form input,.game-form input,.checkin-input,.mood-note,.note-form textarea){color:var(--ink);background:#ffffff0f;border-color:#ffffff1a}html[data-theme=night] .btn-primary{background:var(--ink);color:#14110f}html[data-theme=night] .btn-primary:hover{background:#fff7ea}html[data-theme=night] .empty-frame{background:#ffffff08;border-color:#ffffff1a}html[data-theme=night] .vignette{background:radial-gradient(130% 100% at 50% 42%,#0000 50%,#00000080 100%)}html[data-theme=night] .season-dock{background:#1c1814cc;border-color:#ffffff14}html[data-theme=night] .backtop{background:#1c1814e6;border-color:#ffffff14}html[data-theme=night] .footer{background:#0f0d0b}html[data-theme=night] .login-art{background:#1b1714}html[data-theme=night] .login-art:after{opacity:.12}html[data-theme=night] .section-head{border-image:}.today-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;max-width:1320px;margin:0 auto clamp(36px,5vw,72px);padding:0 clamp(20px,5vw,72px);display:grid}.today-cell{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:border-color .3s var(--ease), transform .3s var(--ease);background:#fffdf98c;border-radius:16px;flex-direction:column;gap:8px;padding:18px 20px;display:flex}.today-cell:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));transform:translateY(-2px)}.today-label{letter-spacing:.3em;text-transform:uppercase;color:var(--accent);font-size:10px}.today-value{font-family:var(--serif);letter-spacing:.06em;color:var(--ink);font-size:16px}.today-value i{color:var(--ink-30);margin:0 5px;font-style:normal}.milestone{border:1px solid color-mix(in srgb, var(--gold) 42%, var(--line));background:color-mix(in srgb, var(--gold) 10%, #fffdf9b3);border-radius:999px;justify-content:center;align-items:center;gap:14px;max-width:900px;margin:0 auto clamp(20px,4vw,34px);padding:14px 26px;animation:3.4s ease-in-out infinite milestoneGlow;display:flex}.milestone p{font-family:var(--serif);letter-spacing:.12em;margin:0;font-size:14px}.milestone-seal{color:var(--gold);font-size:17px}@keyframes milestoneGlow{0%,to{box-shadow:0 0 #0000}50%{box-shadow:0 0 26px -8px color-mix(in srgb, var(--gold) 45%, transparent)}}@media (max-width:760px){.today-strip{grid-template-columns:1fr}}html[data-theme=night] .today-cell,html[data-theme=night] .milestone{background:#ffffff0d;border-color:#ffffff1a}.quicknote{border:1px dashed color-mix(in srgb, var(--accent) 40%, var(--line));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffdf98c;border-radius:999px;flex-wrap:wrap;align-items:center;gap:12px;max-width:1320px;margin:0 auto clamp(28px,4vw,48px);padding:10px 12px 10px 20px;display:flex}.quicknote-label{letter-spacing:.3em;color:var(--accent);font-size:11px}.quicknote input{min-width:180px;color:var(--ink);background:0 0;border:0;outline:none;flex:1;padding:8px 4px;font-size:14px}.quicknote input::placeholder{color:var(--ink-45)}.quicknote-btn{background:var(--ink);color:var(--paper);letter-spacing:.2em;cursor:pointer;transition:background .25s var(--ease), opacity .25s var(--ease);border:0;border-radius:999px;padding:9px 20px;font-size:12px}.quicknote-btn:disabled{opacity:.42;cursor:default}.quicknote-btn:hover:not(:disabled){background:var(--accent)}.album-group{margin-bottom:clamp(34px,5vw,58px)}.album-group-title{font-family:var(--serif);letter-spacing:.18em;color:var(--ink-70);align-items:baseline;gap:14px;margin:0 0 16px;font-size:16px;font-weight:400;display:flex}.album-group-title:after{content:"";background:linear-gradient(to right, var(--line), transparent);flex:1;height:1px}.album-group-title span{letter-spacing:.2em;color:var(--ink-45);font-size:10px}.anniv-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;max-width:980px;margin:0;padding:0;list-style:none;display:grid}.anniv-row{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform .3s var(--ease), border-color .3s var(--ease);background:#fffdf98c;border-radius:18px;align-items:center;gap:20px;padding:20px 22px;display:flex}.anniv-row:hover{border-color:color-mix(in srgb, var(--accent) 40%, var(--line));transform:translateY(-2px)}.anniv-num{min-width:66px;font-family:var(--display);color:var(--accent);flex-direction:column;flex:none;align-items:center;font-size:40px;line-height:.9;display:flex}.anniv-num em{font-style:normal;font-family:var(--sans);letter-spacing:.24em;color:var(--ink-45);margin-top:6px;font-size:10px}.anniv-body{flex-direction:column;gap:4px;display:flex}.anniv-body strong{font-family:var(--serif);letter-spacing:.08em;font-size:17px;font-weight:400}.anniv-date{letter-spacing:.14em;color:var(--ink-45);font-size:12px}.anniv-note{color:var(--ink-45);font-size:12px}.anniv-row.is-today{border-color:color-mix(in srgb, var(--gold) 55%, var(--line));background:color-mix(in srgb, var(--gold) 10%, #fffdf999)}.anniv-row.is-today .anniv-num{color:var(--gold)}html[data-theme=night] .quicknote,html[data-theme=night] .anniv-row{background:#ffffff0d;border-color:#ffffff1a}.nav-dot{vertical-align:1px;background:#d1435b;border-radius:999px;width:6px;height:6px;margin-left:6px;display:inline-block;box-shadow:0 0 0 3px #d1435b29}.tabbar a{position:relative}.tab-dot{background:#d1435b;border-radius:999px;width:6px;height:6px;position:absolute;top:4px;right:calc(50% - 15px);box-shadow:0 0 0 3px #d1435b29}.pwd-form .btn-primary{width:fit-content}.pwd-ok{letter-spacing:.08em;color:#4f7a52;margin:0;font-size:12px}.album-tile{overflow:hidden}.album-tile img{object-fit:cover;width:100%;height:100%;transition:transform .7s var(--ease)}.card:hover .album-tile img{transform:scale(1.04)}.wh-row{flex-direction:column;align-items:stretch;gap:12px;padding:20px 0}.wh-day{letter-spacing:.14em;color:var(--ink-45);border:1px solid var(--line);background:#fff9;border-radius:999px;align-self:center;padding:3px 14px;font-size:11px}.wh-people{flex-direction:column;gap:10px}.wh-chip{border:1px solid var(--line);background:#ffffffe0;border-radius:18px;align-self:flex-start;align-items:center;gap:10px;max-width:82%;padding:10px 14px;display:flex}.wh-chip.is-mine{background:var(--accent-soft);border-color:#0000;border-radius:18px 18px 6px;align-self:flex-end}.wh-chip b{width:30px;height:30px;font-family:var(--display);border:1px solid;border-radius:999px;flex:none;place-items:center;font-size:15px;line-height:1;display:grid}.wh-chip em{letter-spacing:.18em;color:var(--ink-45);flex:none;font-size:10px;font-style:normal}.wh-chip .wh-note{white-space:normal;max-width:none;font-family:var(--serif);letter-spacing:.04em;font-size:13.5px}html[data-theme=night] .wh-chip{background:#28221ceb;border-color:#ffffff12}html[data-theme=night] .wh-chip.is-mine{background:color-mix(in srgb, var(--accent) 26%, #1b1714)}html[data-theme=night] .wh-day{background:#ffffff0f;border-color:#ffffff1a}.note-private{letter-spacing:.08em;color:var(--ink-45);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:12px;display:inline-flex}.note-private input{accent-color:var(--accent);width:15px;height:15px}.note-private-badge{letter-spacing:.2em;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, var(--line));white-space:nowrap;border-radius:999px;padding:1px 10px;font-size:10px}.album-tile img{animation:20s ease-in-out infinite alternate kenburns}.album-tile:nth-child(2n) img{animation-duration:24s;animation-delay:-8s}.album-tile:nth-child(3n) img{animation-duration:28s;animation-delay:-14s}@keyframes kenburns{0%{transform:scale(1)translate(0)}to{transform:scale(1.14)translate(-2.5%,2.5%)}}.note-text.is-folded{cursor:pointer;color:var(--accent);letter-spacing:.08em;transition:color .3s var(--ease);font-style:italic}.note-text.is-folded:hover{color:var(--ink-70)}.wish-done-at{letter-spacing:.12em;color:color-mix(in srgb, var(--accent-2) 60%, var(--ink-45));font-size:11px}.wish-row.is-done{animation:wishDone .7s var(--ease)}@keyframes wishDone{0%{transform:scale(1)}40%{background:color-mix(in srgb, var(--accent-2) 20%, #fff);transform:scale(1.015)}to{transform:scale(1)}}.doodle-d7{width:34px;height:34px;top:70%;left:6%}.doodle-d8{width:44px;height:30px;bottom:38%;right:5%}.doodle-d7 svg{animation-duration:8.4s;animation-delay:2.8s}.doodle-d8 svg{animation-duration:9.6s;animation-delay:1.6s}.section-head{animation:16s linear infinite waveFlow}@keyframes waveFlow{0%{background-position-x:0}to{background-position-x:28px}}.hero-eyebrow{animation:heroIn .9s var(--ease) backwards}.hero-day{animation:heroIn 1s .12s var(--ease) backwards}.hero-names{animation:heroIn .9s .3s var(--ease) backwards}.hero-rule{animation:heroIn .9s .4s var(--ease) backwards}.hero-tagline{animation:heroIn .9s .5s var(--ease) backwards}.hero-scroll{animation:heroIn 1s .65s var(--ease) backwards}.hero-day-hit{animation:heroIn .6s .55s var(--ease) backwards}@keyframes heroIn{0%{opacity:0;transform:translateY(16px)}}.footer{border-top:1px solid #9a7b5473;position:relative}.footer:before{content:"";background:linear-gradient(90deg, transparent, var(--gold), transparent);opacity:.85;width:min(430px,72%);height:2px;position:absolute;top:-1px;left:50%;transform:translate(-50%)}.doodle{opacity:.42}.card-num{transition:color .45s var(--ease), letter-spacing .55s var(--ease), text-shadow .55s var(--ease)}.card:hover .card-num{color:var(--gold);letter-spacing:.28em;text-shadow:0 0 18px color-mix(in srgb, var(--gold) 32%, transparent)}.chat-composer input:focus,.game-form input:focus,.quicknote input:focus{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 14%, transparent)}.field input:focus,.field textarea:focus,.field select:focus,.inline-form input:focus,.checkin-input:focus,.mood-note:focus{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 12%, transparent)}.login-art-seal{animation:9s ease-in-out infinite alternate sealSway}@keyframes sealSway{0%{transform:rotate(-7deg)}to{transform:rotate(7deg)}}.lb-count{color:#ffffff80;font-family:var(--display);letter-spacing:.22em;margin:0;font-size:13px;position:absolute;bottom:26px;left:28px}html[data-page=album] .empty-frame:before{content:"❖"}html[data-page=videos] .empty-frame:before{content:"▶";font-size:18px}html[data-page=timeline] .empty-frame:before{content:"✦"}html[data-page=map] .empty-frame:before{content:"⌖"}html[data-page=music] .empty-frame:before{content:"♪"}html[data-page=messages] .empty-frame:before{content:"✉"}html[data-page=wishes] .empty-frame:before{content:"☆"}html[data-page=checkin] .empty-frame:before{content:"✓"}html[data-page=cards] .empty-frame:before{content:"♥"}html[data-page=chat] .empty-frame:before{content:"❧"}html[data-page=anniversaries] .empty-frame:before{content:"❦"}body{transition:background-color .6s var(--ease), color .6s var(--ease)}.site-header,.dnav,.footer,.today-cell,.chat-shell,.game-card{transition-property:background-color,border-color,color,box-shadow;transition-duration:.6s;transition-timing-function:var(--ease)}.progress-ring{width:132px;height:132px;margin-bottom:26px;position:relative}.progress-ring svg{width:100%;height:100%;display:block;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--accent-soft);stroke-width:8px}.ring-fg{fill:none;stroke:var(--accent);stroke-width:8px;stroke-linecap:round;stroke-dasharray:326.7;stroke-dashoffset:calc(326.7 * (1 - var(--p,0) / 100));transition:stroke-dashoffset 1.1s var(--ease)}.ring-num{font-family:var(--display);place-items:center;font-size:27px;line-height:1;display:grid;position:absolute;inset:0}.ring-num em{color:var(--ink-45);margin-left:2px;font-size:14px;font-style:normal}html[data-theme=night] .ring-bg{stroke:#ffffff1a}:root{--bubble-bg:#ffffffeb;--bubble-mine:var(--accent-soft)}html[data-theme=night]{--bubble-bg:#28221ceb;--bubble-mine:color-mix(in srgb, var(--accent) 30%, #1b1714)}.chat-row{align-items:flex-end;gap:8px}.chat-avatar{background:var(--accent-soft);width:28px;height:28px;font-family:var(--serif);color:var(--ink-70);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:999px;flex:none;place-items:center;margin-bottom:2px;font-size:12px;display:grid}.chat-bubble{background:var(--bubble-bg);position:relative}.chat-row.is-mine .chat-bubble{background:var(--bubble-mine)}.chat-row:not(.is-mine) .chat-bubble:before{content:"";border:6px solid #0000;border-right-color:var(--bubble-bg);border-left-width:0;position:absolute;bottom:7px;left:-5px}.chat-row.is-mine .chat-bubble:after{content:"";border:6px solid #0000;border-left-color:var(--bubble-mine);border-right-width:0;position:absolute;bottom:7px;right:-5px}html[data-theme=night] .chat-avatar{background:#ffffff14;border-color:#ffffff1f}.tl-item.is-first .tl-dot{border-color:var(--gold);box-shadow:0 0 0 4px color-mix(in srgb, var(--gold) 22%, transparent), 0 0 20px -3px color-mix(in srgb, var(--gold) 45%, transparent)}.tl-item.is-first .tl-card{border-top-color:var(--gold);position:relative}.tl-item.is-first .tl-card:before{content:"故事开始";background:color-mix(in srgb, var(--gold) 14%, #fffdf9e6);border:1px solid color-mix(in srgb, var(--gold) 45%, transparent);letter-spacing:.24em;color:var(--gold);border-radius:999px;padding:1px 10px;font-size:10px;position:absolute;top:-11px;right:16px}.mood-card[data-w=sunny]{background:linear-gradient(165deg,#ffffffeb,#d8a25e29)}.mood-card[data-w=breeze]{background:linear-gradient(165deg,#ffffffeb,#8fae8f29)}.mood-card[data-w=cloudy]{background:linear-gradient(165deg,#ffffffeb,#a9adb52e)}.mood-card[data-w=rainy]{background:linear-gradient(165deg,#ffffffeb,#7f9bb82e)}.mood-card[data-w=storm]{background:linear-gradient(165deg,#ffffffeb,#7a6f8f33)}.play-progress{background:color-mix(in srgb, var(--line) 80%, transparent);border-radius:999px;width:100%;height:2px;margin-top:18px;overflow:hidden}.play-progress span{background:linear-gradient(90deg, var(--accent), var(--gold));border-radius:999px;height:100%;transition:width .3s linear;display:block}.place-card{position:relative}.place-num{font-family:var(--display);letter-spacing:.14em;color:var(--gold);opacity:.85;font-size:13px;position:absolute;top:16px;right:18px}.lovecard-num{font-family:var(--display);letter-spacing:.2em;color:var(--ink-30);font-size:11px;position:absolute;top:12px;left:14px}.chat-empty{flex-direction:column;align-items:center;gap:10px;display:flex}.chat-empty:before{content:"✉";color:color-mix(in srgb, var(--accent) 45%, transparent);font-size:30px;line-height:1}.today-cell:before{font-family:var(--serif);color:var(--gold);font-size:18px;line-height:1}.today-cell:first-child:before{content:"☁"}.today-cell:nth-child(2):before{content:"❦"}.today-cell:nth-child(3):before{content:"❧"}.streak-badge{border:1px solid color-mix(in srgb, var(--gold) 45%, var(--line));background:color-mix(in srgb, var(--gold) 10%, #fffdf9b3);font-family:var(--serif);letter-spacing:.16em;color:color-mix(in srgb, var(--gold) 80%, var(--ink));border-radius:999px;margin-top:22px;padding:8px 20px;font-size:13px;animation:3.4s ease-in-out infinite milestoneGlow;display:inline-block}.mood-grid{position:relative}.mood-grid:after{content:"&";width:42px;height:42px;font-family:var(--display);color:var(--gold);border:1px solid color-mix(in srgb, var(--gold) 40%, var(--line));z-index:2;background:#fffdf9f0;border-radius:999px;place-items:center;font-size:19px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 12px 26px -20px #241e1980}@media (max-width:760px){.mood-grid:after{display:none}}html[data-theme=night] .streak-badge{background:#ffffff0d;border-color:#ffffff1f}html[data-theme=night] .mood-grid:after{background:#1c1814f2;border-color:#ffffff1f}.card-sheet{transform-origin:top;animation:sheetOpen .7s var(--ease)}@keyframes sheetOpen{0%{opacity:0;transform:scaleY(.55)translateY(-14px)}}.chat-row{animation:chatIn .35s var(--ease) backwards}@keyframes chatIn{0%{opacity:0;transform:translateY(8px)scale(.98)}}.disc{transition:transform .6s var(--ease)}.player:hover .disc{transform:scale(1.02)rotate(3deg)}input,textarea,select{caret-color:var(--accent)}img{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.note:before{transition:transform .4s var(--ease)}.note:hover:before{transform:translate(-50%)rotate(2.4deg)}.cal-cell{transition:background .5s var(--ease), transform .2s var(--ease)}.cal-cell:hover{transform:scale(1.35)}.checkin-row{transition:background .3s var(--ease);border-radius:12px}.checkin-row:hover{background:#ffffff80}.mood-hint{letter-spacing:.18em;color:var(--ink-45);margin:0;font-size:10.5px}html[data-theme=night] .checkin-row:hover{background:#ffffff0f}.song-list li.is-current{position:relative}.song-list li.is-current:before{content:"";background:var(--accent);border-radius:99px;width:3px;position:absolute;top:22%;bottom:22%;left:0}.playing-tag{letter-spacing:.16em;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);vertical-align:1px;border-radius:999px;margin-left:10px;padding:1px 9px;font-size:10px;font-style:normal}.disc{position:relative;overflow:hidden}.disc:after{content:"";background:linear-gradient(115deg,#0000 32%,#ffffff52 46%,#0000 60%);border-radius:999px;animation:5.5s ease-in-out infinite discShine;position:absolute;inset:0}@keyframes discShine{0%,55%,to{transform:translate(-80%)}75%{transform:translate(80%)}}.section-title{letter-spacing:.02em}.hero-names{letter-spacing:.14em;text-indent:.14em}.hero-eyebrow,.card-label,.section-meta,.menu-eyebrow,.eyebrow{letter-spacing:.22em}.card-heading{letter-spacing:.02em}.dnav a{letter-spacing:.04em}.today-label{letter-spacing:.18em}.tl-year{letter-spacing:.08em}.tl-md{letter-spacing:.1em}.game-question{letter-spacing:.02em}.frame-today{max-width:1320px;margin:0 auto clamp(30px,4vw,54px);padding:0 clamp(20px,5vw,72px)}.frame-media{border-radius:22px;display:block;position:relative;overflow:hidden;box-shadow:0 34px 64px -42px #241e198c}.frame-media img{object-fit:cover;width:100%;height:clamp(240px,44vh,420px);transition:transform 1.2s var(--ease);display:block}.frame-media:hover img{transform:scale(1.03)}.frame-label{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#ffffffeb;letter-spacing:.24em;background:#14100c73;border-radius:999px;padding:4px 14px;font-size:11px;position:absolute;top:18px;left:20px}.frame-caption{color:#fff;font-family:var(--serif);letter-spacing:.08em;background:linear-gradient(#0000,#14100c99);padding:34px 26px 22px;font-size:15px;position:absolute;bottom:0;left:0;right:0}.btn-primary{letter-spacing:.16em;text-indent:.16em}.logout-btn,.nav-logout,.quicknote-btn{letter-spacing:.14em;text-indent:0}.place-card .tl-body{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.hero-day-number{text-shadow:0 0 90px color-mix(in srgb, var(--gold) 20%, transparent)}.hero:before{opacity:.52}.lightbox.has-thumbs .lb-img{max-height:62vh}.lb-thumbs{gap:6px;max-width:90vw;padding:6px;display:flex;position:absolute;bottom:84px;left:50%;overflow-x:auto;transform:translate(-50%)}.lb-thumbs button{cursor:pointer;opacity:.5;width:46px;height:46px;transition:opacity .25s var(--ease), border-color .25s var(--ease);background:#000;border:2px solid #0000;border-radius:8px;flex:none;padding:0;overflow:hidden}.lb-thumbs button img{object-fit:cover;width:100%;height:100%}.lb-thumbs button:hover{opacity:.8}.lb-thumbs button.is-on{opacity:1;border-color:#fff}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
