:root{color-scheme:dark;--ink:#f8f2f5;--muted:#aca5b4;--line:rgba(255,255,255,.13);--rose:#ff6685;--rose2:#ffa6b8;--glass:rgba(14,15,34,.62);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}
html{min-height:100%;background:#070813}
body{margin:0;min-height:100vh;color:var(--ink);overflow-x:hidden;background:radial-gradient(circle at 50% -20%,#302142 0,#0b0c1c 47%,#060711 100%)}
button,input{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
#sky{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;opacity:.72}
.aurora{position:fixed;border-radius:50%;filter:blur(100px);opacity:.16;pointer-events:none;animation:drift 11s ease-in-out infinite alternate}
.aurora-one{width:46vw;height:46vw;background:#b63d74;left:-18vw;top:10vh}
.aurora-two{width:42vw;height:42vw;background:#5c58ba;right:-18vw;bottom:-12vh;animation-delay:-5s}
.lock-stage{position:relative;z-index:1;min-height:100vh;display:grid;place-items:center;padding:30px 18px}
.lock-card{width:min(510px,100%);padding:46px 48px 38px;border:1px solid var(--line);border-radius:30px;background:linear-gradient(145deg,rgba(23,24,49,.78),rgba(10,11,26,.74));box-shadow:0 35px 100px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.08);backdrop-filter:blur(24px);text-align:center;animation:arrive .9s cubic-bezier(.2,.8,.2,1) both}
.seal{width:82px;height:82px;margin:0 auto 28px;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:5px;color:#fff3f6;background:radial-gradient(circle at 30% 22%,#ff8ea5,#b62c57 60%,#731733);box-shadow:0 12px 35px rgba(255,68,112,.3),inset 0 0 0 3px rgba(255,255,255,.13);font-family:"Playfair Display",serif;font-size:24px;transform:rotate(-5deg)}
.seal i,.brand i{font-style:normal;color:#ffdbe3;font-size:.58em}
.eyebrow{margin:0 0 14px;color:var(--rose2);font-size:12px;font-weight:700;letter-spacing:.24em}
.lock-card h1{max-width:390px;margin:0 auto;font-family:"Noto Serif SC",serif;font-size:clamp(29px,6vw,42px);line-height:1.35;letter-spacing:.03em}
.hint{margin:18px auto 30px;max-width:350px;color:var(--muted);font-size:15px;line-height:1.8}
.error{margin:-10px 0 18px;padding:10px 12px;border:1px solid rgba(255,102,133,.25);border-radius:12px;color:#ffc3d0;background:rgba(255,73,114,.08);font-size:14px}
.unlock-form{text-align:left}
.unlock-form label{display:block;margin:0 0 9px;color:#d3cbd5;font-size:14px}
.password-row{position:relative}
.password-row input{width:100%;height:56px;border:1px solid rgba(255,255,255,.15);border-radius:15px;padding:0 54px 0 17px;outline:none;color:#fff;background:rgba(2,3,13,.44);letter-spacing:.1em;transition:.25s}
.password-row input:focus{border-color:rgba(255,102,133,.7);box-shadow:0 0 0 4px rgba(255,102,133,.1)}
.password-row input::placeholder{color:#747080}
.password-row input::-ms-reveal,.password-row input::-ms-clear{display:none;width:0;height:0}
.password-row input::-webkit-credentials-auto-fill-button{visibility:hidden;display:none!important;pointer-events:none;position:absolute;right:0}
.peek{position:absolute;right:8px;top:8px;width:40px;height:40px;border:0;border-radius:11px;color:#b9b3c0;background:transparent;cursor:pointer;transition:color .2s,background .2s,transform .2s}
.peek:hover{color:#fff;background:rgba(255,255,255,.07)}
.peek:active{transform:scale(.94)}
.peek[aria-pressed="true"]{color:#ff9db1;background:rgba(255,102,133,.1)}
.unlock{width:100%;height:56px;margin-top:14px;padding:0 18px;border:0;border-radius:15px;display:flex;align-items:center;justify-content:center;gap:13px;color:#251019;background:linear-gradient(135deg,#ff9db1,#ff6383);font-weight:800;cursor:pointer;box-shadow:0 14px 32px rgba(244,74,113,.2);transition:transform .25s,box-shadow .25s}
.unlock:hover{transform:translateY(-2px);box-shadow:0 18px 38px rgba(244,74,113,.31)}
.unlock b{font-size:21px;transition:transform .2s}.unlock:hover b{transform:translateX(4px)}
.since{margin:28px 0 0;color:#777382;font-family:"Playfair Display",serif;font-size:13px;letter-spacing:.16em}
.home-stage{position:relative;z-index:1;width:min(1180px,calc(100% - 40px));margin:auto;padding-bottom:90px}
.home-head{height:96px;display:flex;align-items:center;justify-content:space-between}
.brand{font-family:"Playfair Display",serif;font-size:25px;letter-spacing:.08em}
.logout{border:1px solid var(--line);border-radius:999px;padding:10px 16px;color:#c7c0cc;background:rgba(255,255,255,.035);cursor:pointer;transition:.2s}.logout:hover{border-color:#8e8795;color:#fff}
.welcome{padding:7vh 0 7vh;display:grid;grid-template-columns:minmax(0,1fr) 280px;align-items:center;gap:clamp(34px,6vw,90px);animation:arrive .8s both}
.welcome-copy{min-width:0}
.welcome h1{max-width:800px;margin:0;font-family:"Noto Serif SC",serif;font-size:clamp(48px,8vw,92px);font-weight:600;line-height:1.17;letter-spacing:-.04em}
.welcome h1 em{color:transparent;background:linear-gradient(105deg,#fff,#ff9fb3 70%);-webkit-background-clip:text;background-clip:text;font-style:normal}
.welcome-copy>p:last-child{max-width:570px;margin:25px 0 0;color:var(--muted);font-size:17px;line-height:1.9}
.welcome-photo{position:relative;width:280px;aspect-ratio:1;margin:0;border:1px solid rgba(255,255,255,.2);border-radius:50%;overflow:hidden;background:#181827;box-shadow:0 28px 70px rgba(0,0,0,.4),0 0 0 12px rgba(255,255,255,.025)}
.welcome-photo:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 35px rgba(6,6,16,.25);pointer-events:none}
.welcome-photo img{width:100%;height:100%;display:block;object-fit:cover;object-position:50% 43%;transform:scale(1.02)}
.anniversaries{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);gap:20px}
.year-card,.future-card{position:relative;min-height:430px;border:1px solid var(--line);border-radius:30px;overflow:hidden;background:rgba(14,15,32,.64);backdrop-filter:blur(20px)}
.year-card{padding:36px;color:inherit;text-decoration:none;box-shadow:0 30px 80px rgba(0,0,0,.22);transition:transform .45s cubic-bezier(.2,.8,.2,1),border-color .3s}
.year-card:hover{transform:translateY(-8px);border-color:rgba(255,166,184,.45)}
.year-card:after{content:"";position:absolute;inset:auto -12% -55% 35%;height:100%;background:radial-gradient(circle,rgba(255,81,126,.27),transparent 68%);pointer-events:none}
.year-top{display:flex;align-items:center;justify-content:space-between;color:#e8dfe5}.year-top span{font-family:"Noto Serif SC",serif;font-size:18px}.year-top small{color:#918a98;letter-spacing:.12em}
.number{margin-top:46px;font-family:"Playfair Display",serif;font-size:132px;line-height:.8;color:#fff;text-shadow:0 10px 38px rgba(255,104,137,.2)}
.number sup{font-size:24px;color:var(--rose2);vertical-align:top;margin-left:3px}
.year-card h2{margin:30px 0 10px;font-family:"Noto Serif SC",serif;font-size:30px}.year-card p{max-width:450px;margin:0;color:var(--muted);line-height:1.8}
.enter{position:absolute;left:36px;bottom:34px;color:#ffc0cd;font-weight:700}.enter b{display:inline-block;margin-left:7px;transition:transform .25s}.year-card:hover .enter b{transform:translate(4px,-4px)}
.orbit{position:absolute;right:-90px;top:45px;width:310px;height:310px;border:1px solid rgba(255,255,255,.08);border-radius:50%;animation:spin 18s linear infinite}.orbit:before,.orbit:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.06);border-radius:50%}.orbit:before{inset:35px}.orbit:after{inset:76px}.orbit span{position:absolute;left:38px;top:20px;width:11px;height:11px;border-radius:50%;background:#ff9db1;box-shadow:0 0 18px #ff6685}
.future-card{padding:34px;display:flex;flex-direction:column;justify-content:flex-end;color:#85818e;background:linear-gradient(165deg,rgba(18,19,38,.52),rgba(8,9,20,.58))}.future-card>span{position:absolute;left:30px;top:29px;font-size:13px;letter-spacing:.17em}.future-card div{font-family:"Playfair Display",serif;font-size:112px;line-height:1;color:#3a3949}.future-card p{margin:10px 0 0;line-height:1.7}
.chapter-tools{height:430px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto 1fr;gap:14px;align-content:stretch}
.tool-card{position:relative;aspect-ratio:1;border:1px solid var(--line);border-radius:25px;padding:18px;display:flex;flex-direction:column;color:inherit;text-decoration:none;overflow:hidden;background:linear-gradient(145deg,rgba(23,24,49,.78),rgba(10,11,26,.72));transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .3s,background .3s}.tool-card:hover{transform:translateY(-7px);border-color:rgba(255,166,184,.48);background:linear-gradient(145deg,rgba(39,27,52,.85),rgba(13,13,31,.8))}.tool-card>span{color:#817987;font-size:11px;letter-spacing:.15em}.tool-card>b{margin:auto 0;color:#ff9fb3;font-family:"Noto Serif SC",serif;font-size:clamp(40px,5vw,62px);font-weight:500;line-height:1;text-shadow:0 0 30px rgba(255,102,133,.2)}.tool-card>strong{font-family:"Noto Serif SC",serif;font-size:19px}.tool-card>small{margin-top:5px;color:#8d8793;font-size:11px}.tool-card:after{content:"↗";position:absolute;right:17px;bottom:16px;color:#ff9fb3;font-size:14px}
.diary-tool{grid-column:1/-1;aspect-ratio:auto;min-height:0;padding:20px 24px}.diary-tool>span{position:static}.diary-tool>b{margin:24px 0 auto;font-size:clamp(40px,5vw,62px)}.diary-tool>strong{margin-top:10px}.diary-tool>small{margin-top:5px;text-align:left}
.transition-spacer{height:100vh;min-height:640px}
.love-transition{--ring-opacity:1;--ring-scale:1;--ring-rotate:0deg;position:fixed;z-index:100;inset:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at center,#2b1020 0,#0d0813 48%,#05050b 100%);will-change:opacity;transform:translateZ(0);touch-action:none}
.love-transition:before{content:"";position:absolute;width:min(72vw,720px);aspect-ratio:1;border:1px solid rgba(255,142,166,.12);border-radius:50%;box-shadow:0 0 120px rgba(255,62,108,.08);opacity:var(--ring-opacity);transform:scale(var(--ring-scale)) rotate(var(--ring-rotate))}
.love-transition.is-past{pointer-events:none}
#heart-transition{position:absolute;inset:0;width:100%;height:100%}
.transition-copy{position:absolute;left:50%;top:50%;display:flex;flex-direction:column;align-items:center;transform:translate(-50%,-50%);white-space:nowrap;text-align:center;text-shadow:0 3px 24px rgba(8,3,7,.9);will-change:opacity,transform}
.transition-copy span{color:#ff9bad;font-family:"Noto Serif SC",serif;font-size:13px;letter-spacing:.34em}.transition-copy strong{margin-top:8px;font-family:"Noto Serif SC",serif;font-size:clamp(25px,4vw,40px);font-weight:600;letter-spacing:.16em}.transition-copy small{margin-top:11px;color:#71636d;font-size:9px;letter-spacing:.28em}
.transition-scroll-cue{position:absolute;left:50%;bottom:34px;display:flex;flex-direction:column;align-items:center;gap:8px;transform:translateX(-50%);color:#8e7c87;font-size:12px;letter-spacing:.18em;animation:cue-breathe 1.8s ease-in-out infinite}.transition-scroll-cue i{font-style:normal;color:#ff8ca2;font-size:20px}
.not-found-page{min-height:100svh;overflow:hidden}.not-found-stage{position:relative;z-index:1;min-height:100svh;padding:30px 18px;display:grid;place-items:center}.not-found-card{position:relative;width:min(720px,100%);padding:52px 48px 48px;border:1px solid var(--line);border-radius:34px;overflow:hidden;background:linear-gradient(145deg,rgba(23,24,49,.78),rgba(10,11,26,.74));box-shadow:0 35px 100px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.08);backdrop-filter:blur(24px);text-align:center;animation:arrive .9s cubic-bezier(.2,.8,.2,1) both}.not-found-card:after{content:"";position:absolute;left:50%;bottom:-210px;width:430px;height:330px;border-radius:50%;background:rgba(255,70,115,.12);filter:blur(70px);transform:translateX(-50%);pointer-events:none}.not-found-heart{position:relative;z-index:1;width:62px;height:62px;margin:0 auto 22px;border-radius:50%;display:grid;place-items:center;color:#ffd9e1;background:linear-gradient(145deg,#ff829b,#b92954);box-shadow:0 12px 34px rgba(255,68,112,.28),inset 0 0 0 2px rgba(255,255,255,.14);font-size:25px;animation:heart-pulse 2.2s ease-in-out infinite}.not-found-number{margin:12px 0 4px;color:rgba(255,255,255,.08);font-family:"Playfair Display",Georgia,serif;font-size:clamp(96px,20vw,168px);font-weight:700;line-height:.76;letter-spacing:-.06em}.not-found-card h1{position:relative;z-index:1;margin:22px auto 0;font-family:"Noto Serif SC","Songti SC",serif;font-size:clamp(27px,5vw,43px);font-weight:600;line-height:1.48;letter-spacing:.02em}.not-found-card h1 em{color:#ff9eb2;font-style:normal}.not-found-note{position:relative;z-index:1;margin:20px auto 0;color:var(--muted);font-size:15px;line-height:1.8}.not-found-back{position:relative;z-index:1;width:min(260px,100%);height:54px;margin:30px auto 0;border:1px solid rgba(255,159,179,.25);border-radius:999px;display:flex;align-items:center;justify-content:center;gap:12px;color:#241019;background:linear-gradient(135deg,#ff9db1,#ff6383);box-shadow:0 14px 32px rgba(244,74,113,.18);font-weight:800;text-decoration:none;transition:transform .25s,box-shadow .25s}.not-found-back:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(244,74,113,.3)}.not-found-back b{font-size:20px}@keyframes heart-pulse{50%{transform:scale(1.07);box-shadow:0 15px 42px rgba(255,68,112,.4),inset 0 0 0 2px rgba(255,255,255,.18)}}
@keyframes arrive{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@keyframes drift{to{transform:translate3d(9vw,-4vh,0) scale(1.08)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes cue-breathe{50%{transform:translate(-50%,6px);opacity:.55}}
@media(max-width:760px){.transition-spacer{display:none}.love-transition{display:grid}.transition-scroll-cue{display:none}.love-transition:before{width:min(92vw,430px)}.lock-stage{padding:18px 14px}.lock-card{padding:36px 22px 28px;border-radius:25px}.seal{width:72px;height:72px;margin-bottom:24px}.hint{margin-bottom:25px}.home-stage{width:min(100% - 28px,1180px);padding-bottom:55px}.home-head{height:76px}.logout{padding:9px 13px;font-size:13px}.welcome{padding:5vh 2px 5vh;grid-template-columns:1fr;gap:30px}.welcome-copy{order:1}.welcome-photo{order:2;width:min(62vw,245px);justify-self:center}.welcome h1{font-size:clamp(40px,12.5vw,64px);line-height:1.2}.welcome-copy>p:last-child{font-size:16px;line-height:1.8}.anniversaries{grid-template-columns:1fr}.year-card{min-height:410px;padding:27px}.year-card .number{margin-top:42px;font-size:102px}.year-card h2{margin-top:27px;font-size:26px}.year-card .enter{left:27px;bottom:27px}.year-card .orbit{right:-100px;top:38px;width:250px;height:250px}.chapter-tools{height:auto;grid-template-rows:auto minmax(180px,auto)}.tool-card{border-radius:21px;padding:17px}.tool-card>strong{font-size:18px}.diary-tool{min-height:180px;padding:20px}.diary-tool>b{margin-top:20px}.future-card{min-height:185px;padding:27px}.future-card>span{left:27px;top:25px}.future-card div{font-size:74px}}
@media(max-width:380px){.lock-card{padding:30px 18px 24px}.lock-card h1{font-size:27px}.password-row input,.unlock{height:52px}.welcome h1{font-size:36px}.year-card{min-height:390px}.year-top small{display:none}.year-card p{max-width:230px;font-size:14px}.future-card{min-height:170px}}
@media(max-width:560px){.not-found-stage{padding:18px 14px}.not-found-card{padding:38px 20px 32px;border-radius:27px}.not-found-heart{width:56px;height:56px;margin-bottom:18px}.not-found-number{margin-top:8px;font-size:112px}.not-found-card h1{margin-top:20px;font-size:27px;line-height:1.55}.not-found-note{max-width:270px;margin-top:16px;font-size:14px}.not-found-back{height:52px;margin-top:25px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
