:root{--bg:#fff8ef;--surface:#fff;--surface-soft:#fffaf5;--ink:#5a4542;--muted:#8c716d;--line:#efd9cf;--accent:#c85f68;--accent-hover:#a94550;--leaf:#7e9d82;--radius:16px;--shadow:0 20px 60px #915e4e1f}*{box-sizing:border-box}html{background:var(--bg);color:var(--ink);scroll-behavior:smooth;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-width:320px;margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;overflow-x:hidden}button,input,textarea,select{font:inherit}button,label,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.journal-shell{--page-gutter:clamp(18px, 5vw, 72px);min-height:100svh;padding:max(44px, env(safe-area-inset-top)) max(var(--page-gutter), env(safe-area-inset-right)) max(80px, env(safe-area-inset-bottom)) max(var(--page-gutter), env(safe-area-inset-left))}.journal-header{justify-content:space-between;align-items:flex-start;gap:24px;width:min(1380px,100%);margin:0 auto 34px;display:flex}.product-mark{color:var(--accent);letter-spacing:.18em;margin:0 0 9px;font-size:11px;font-weight:800}.journal-header h1{letter-spacing:-.035em;margin:0;font-size:clamp(28px,4vw,44px)}.journal-header>div>p:last-child{color:var(--muted);margin:12px 0 0;line-height:1.7}.quiet-button{min-height:44px;color:var(--muted);border:0;border-bottom:1px solid var(--line);background:0 0;padding:10px 2px}.quiet-button:hover{color:var(--ink)}.journal-layout{grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);align-items:start;gap:24px;width:min(1380px,100%);margin:auto;display:grid}.composer-card,.timeline-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.timeline-panel{min-height:620px;padding:clamp(24px,3vw,36px)}.section-title-row{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.section-label{color:var(--accent);letter-spacing:.15em;margin:0 0 8px;font-size:10px;font-weight:800}.section-title-row h2{letter-spacing:-.025em;margin:0;font-size:clamp(21px,2.4vw,28px)}.required-note,.record-count{color:var(--muted);white-space:nowrap;font-size:12px}.moment-form{gap:22px;margin-top:32px;display:grid}.form-grid{grid-template-columns:1fr 180px;gap:16px;display:grid}.moment-form label,.editor-field,.edit-moment-form label{color:#55554f;gap:9px;font-size:13px;font-weight:650;display:grid}.moment-form input,.moment-form select,.moment-form textarea,.edit-moment-form input,.edit-moment-form select,.edit-moment-form textarea{width:100%;color:var(--ink);background:var(--surface-soft);border:1px solid var(--line);border-radius:10px;outline:none}.moment-form input,.moment-form select,.edit-moment-form input,.edit-moment-form select{min-height:48px;padding:0 14px}.moment-form textarea,.edit-moment-form textarea{resize:vertical;min-height:190px;padding:16px;line-height:1.8}.editor-toolbar{background:var(--surface-soft);border:1px solid var(--line);border-bottom:0;border-radius:10px 10px 0 0;flex-wrap:wrap;gap:6px;padding:8px;display:flex}.editor-toolbar button{color:#585852;border:1px solid var(--line);touch-action:manipulation;background:#fff;border-radius:7px;min-width:44px;height:44px;padding:0 10px;font-size:12px}.editor-toolbar button:hover{color:var(--ink);border-color:#aaa9a2}.editor-help{color:var(--muted);margin-top:-2px;font-size:11px;font-weight:400;line-height:1.6}.upload-placeholder{background:var(--surface-soft);cursor:pointer;text-align:center;border:1px dashed #b8c6c2;border-radius:12px;align-content:center;place-items:center;min-height:110px;position:relative;color:var(--accent)!important;gap:5px!important}.upload-placeholder input{opacity:0;width:1px;height:1px;position:absolute}.upload-placeholder span{font-size:14px}.upload-placeholder small{color:var(--muted);font-size:11px;font-weight:400}.image-previews{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.image-previews figure{aspect-ratio:1;background:var(--surface-soft);border:1px solid var(--line);border-radius:10px;min-width:0;margin:0;position:relative;overflow:hidden}.image-previews img{object-fit:cover;width:100%;height:100%}.image-previews button{color:#fff;background:#232320c7;border:0;border-radius:6px;min-height:40px;padding:5px 10px;font-size:10px;position:absolute;top:7px;right:7px}.save-notice{min-height:20px;color:var(--accent);opacity:0;margin:-6px 0 -8px;font-size:12px;line-height:1.6}.save-notice.is-visible{opacity:1}.form-actions{justify-content:space-between;align-items:center;gap:18px;padding-top:2px;display:flex}.form-actions>span{color:var(--muted);font-size:12px;line-height:1.5}.primary-button{color:#fff;background:var(--accent);border:0;border-radius:10px;min-height:46px;padding:0 24px;font-weight:700}.primary-button:hover{background:var(--accent-hover)}.primary-button:disabled{opacity:.58;cursor:wait}.timeline-empty{min-height:490px;color:var(--muted);text-align:center;place-content:center;justify-items:center;padding:48px 24px;display:grid}.empty-date{color:var(--accent);letter-spacing:.13em;background:#eef3f1;border-radius:999px;padding:8px 12px;font-size:10px;font-weight:800}.timeline-empty h3{color:var(--ink);margin:22px 0 8px;font-size:20px}.timeline-empty p{max-width:290px;margin:0;font-size:13px;line-height:1.8}.moment-timeline{margin:34px 0 0;padding:0 0 0 24px;list-style:none;position:relative}.moment-timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:7px;bottom:12px;left:5px}.moment-timeline>li{padding:0 0 32px;position:relative}.moment-timeline>li:last-child{padding-bottom:0}.moment-timeline>li:before{content:"";background:var(--surface);border:2px solid var(--accent);border-radius:50%;width:9px;height:9px;position:absolute;top:5px;left:-23px}.moment-timeline time{color:var(--accent);letter-spacing:.04em;margin-bottom:10px;font-size:11px;font-weight:750;display:block}.moment-card{background:var(--surface-soft);border:1px solid var(--line);border-radius:12px;padding:20px}.moment-card-heading{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.moment-card-heading>div{flex-wrap:wrap;align-items:center;gap:9px;min-width:0;display:flex}.moment-card h3{margin:0;font-size:19px;line-height:1.5}.author-badge{color:var(--accent);background:#e9f0ee;border-radius:999px;flex:none;padding:5px 8px;font-size:10px;font-weight:750}.moment-actions{flex:none;align-items:center;gap:12px!important;display:flex!important}.edit-button,.delete-button{touch-action:manipulation;background:0 0;border:0;flex:none;min-height:44px;padding:5px 2px;font-size:11px}.edit-button{color:var(--accent);border-bottom:1px solid #b7c9c4}.delete-button{color:#8b7770;border-bottom:1px solid #d8cbc6}.delete-button:hover{color:#8e3434;border-color:#c99c9c}.delete-button:disabled{opacity:.5;cursor:wait}.moment-content{color:#4e4e49;overflow-wrap:anywhere;margin-top:15px;font-size:14px;line-height:1.9}.moment-content p{white-space:pre-wrap;margin:0 0 10px}.moment-content p:last-child{margin-bottom:0}.moment-content h4{color:var(--ink);margin:18px 0 8px;font-size:16px}.moment-content blockquote{color:#69675f;border-left:3px solid #b5c6c1;margin:14px 0;padding:5px 0 5px 14px}.moment-content ul{margin:10px 0;padding-left:21px}.moment-images{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:17px;display:grid}.moment-images.image-count-1{grid-template-columns:1fr}.moment-images.image-count-3{grid-template-columns:repeat(3,minmax(0,1fr))}.moment-images img{object-fit:cover;background:#ecebe6;border-radius:8px;width:100%;height:150px}.moment-images.image-count-1 img{height:min(380px,45vw)}.edit-moment-form{gap:18px;display:grid}.edit-form-heading{justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:3px;display:flex}.edit-form-heading h3{font-size:18px}.edit-moment-form .form-grid{grid-template-columns:minmax(0,1fr) 112px}.edit-image-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.edit-image-grid figure{aspect-ratio:1;border:1px solid var(--line);background:#ecebe6;border-radius:9px;min-width:0;margin:0;position:relative;overflow:hidden}.edit-image-grid img{object-fit:cover;width:100%;height:100%}.edit-image-grid button{color:#fff;background:#232320d1;border:0;border-radius:6px;min-height:40px;padding:0 10px;font-size:10px;position:absolute;top:6px;right:6px}.edit-image-grid span{color:#fff;background:#315f59db;border-radius:5px;padding:4px 6px;font-size:9px;position:absolute;bottom:6px;left:6px}.edit-upload-button{cursor:pointer;text-align:center;background:#f1f5f3;border:1px dashed #aec2bc;border-radius:9px;place-items:center;min-height:48px;position:relative;color:var(--accent)!important}.edit-upload-button input{opacity:0;width:1px;height:1px;position:absolute}.edit-form-actions{justify-content:flex-end;align-items:center;gap:18px;display:flex}.unlock-page{min-height:100svh;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));background:radial-gradient(circle at 12% 14%,#ffe4d2 0 12%,#0000 34%),radial-gradient(circle at 84% 78%,#dfe9d8 0 10%,#0000 32%),linear-gradient(145deg,#fffaf1,#fce4df 54%,#e8efe4);place-items:center;display:grid;position:relative;overflow:hidden}.birthday-intro{z-index:20;color:#6f4542;background:linear-gradient(#fffaf129,#ffefe10a 52%,#57473714),url(/birthday-entrance-hero.webp) 50%/cover no-repeat,#f7e4cd;place-items:start center;transition:opacity .8s,visibility .8s;display:grid;position:fixed;inset:0;overflow:hidden}.birthday-intro.is-gone{opacity:0;visibility:hidden;pointer-events:none}.birthday-glow{aspect-ratio:1;background:radial-gradient(circle,#fffffff5,#ffefd49e 38%,#0000 70%);border-radius:50%;width:min(72vw,820px);animation:3.2s ease-in-out infinite birthday-breathe;position:absolute}.birthday-sparkles span{color:#c46466ad;font-family:Georgia,serif;animation:3.8s ease-in-out infinite birthday-float;position:absolute}.birthday-sparkles span:first-child{font-size:28px;top:20%;left:12%}.birthday-sparkles span:nth-child(2){font-size:52px;animation-delay:-.7s;top:72%;left:22%}.birthday-sparkles span:nth-child(3){font-size:34px;animation-delay:-1.5s;top:24%;right:15%}.birthday-sparkles span:nth-child(4){font-size:58px;animation-delay:-2.2s;top:68%;right:21%}.birthday-sparkles span:nth-child(5){font-size:22px;animation-delay:-.4s;top:12%;left:51%}.birthday-message{z-index:1;width:min(88vw,760px);margin-top:max(4vh, env(safe-area-inset-top));text-align:center;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#fffaf1c7;border:1px solid #ffffffb8;border-radius:32px;padding:23px 34px 26px;animation:1.2s cubic-bezier(.2,.8,.2,1) both birthday-arrive;position:relative;box-shadow:0 18px 80px #764e3d24}.birthday-kicker{color:#b94f59;letter-spacing:.42em;margin:0 0 10px;font-size:12px;font-weight:800}.birthday-cake-art{object-fit:contain;filter:drop-shadow(0 12px 16px #7b4f392e);width:clamp(82px,8.5vw,116px);height:clamp(82px,8.5vw,116px);margin:-5px auto 4px;animation:1s cubic-bezier(.18,.9,.24,1.25) .35s both cake-arrive,3.2s ease-in-out 1.4s infinite cake-float}.birthday-message h1,.unlock-card h1{font-family:Kaiti SC,STKaiti,KaiTi,Songti SC,serif;font-weight:600}.birthday-message h1{color:#704944;letter-spacing:.025em;white-space:nowrap;margin:0;font-size:clamp(42px,5.6vw,68px);line-height:1.12}.birthday-message p:not(.birthday-kicker){color:#88655f;letter-spacing:.06em;margin:12px 0 20px;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:clamp(16px,2vw,20px)}.birthday-message button{color:#fff;letter-spacing:.08em;background:#c85f68;border:0;border-radius:999px;min-height:46px;padding:0 27px;font-weight:750;box-shadow:0 12px 26px #aa454e3d}.birthday-message button:hover{background:#aa4852;transform:translateY(-2px)}.unlock-card{z-index:2;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffdb;border:1px solid #ffffffeb;border-radius:28px;width:min(100%,460px);padding:46px;transition:opacity .8s .28s,transform .8s cubic-bezier(.2,.8,.2,1) .28s;position:relative;box-shadow:0 28px 90px #8e5c4f2e}.unlock-card.is-waiting{opacity:0;transform:translateY(24px)scale(.97)}.unlock-card.is-ready{opacity:1;transform:none}.unlock-card h1{color:#654945;letter-spacing:.03em;margin:5px 0 0;font-size:36px}.unlock-eyebrow{color:#b07870;letter-spacing:.2em;margin:0 0 10px;font-size:9px;font-weight:800}.unlock-copy{color:var(--muted);margin:16px 0 30px;line-height:1.8}.unlock-form{gap:9px;display:grid}.unlock-form label{color:#55554f;font-size:13px;font-weight:650}.password-row{grid-template-columns:1fr auto;gap:8px;display:grid}.password-row input{border:1px solid var(--line);border-radius:9px;outline:none;min-width:0;height:46px;padding:0 13px}.password-row button{color:#fff;background:var(--accent);border:0;border-radius:9px;min-height:46px;padding:0 18px;font-weight:700}.password-row button:disabled{opacity:.55;cursor:not-allowed}.password-hint,.form-message,.privacy-note{color:var(--muted);font-size:11px;line-height:1.7}.form-message{min-height:19px;margin:0}.privacy-note{text-align:center;margin:24px 0 0}@media (max-width:900px){.journal-shell{padding-top:max(28px, env(safe-area-inset-top))}.journal-layout{grid-template-columns:1fr}.timeline-panel{min-height:440px}.timeline-empty{min-height:310px}}@media (max-width:560px){input,select,textarea{font-size:16px!important}.journal-shell{padding-bottom:max(46px, env(safe-area-inset-bottom))}.journal-header{margin-bottom:24px}.journal-header>div>p:last-child{font-size:13px}.form-grid{grid-template-columns:1fr}.section-title-row{gap:12px}.required-note{white-space:normal;text-align:right}.image-previews{grid-template-columns:repeat(2,minmax(0,1fr))}.form-actions{flex-direction:column;align-items:stretch}.primary-button{width:100%}.unlock-card{padding:32px 24px}.password-row{grid-template-columns:1fr}.password-row button{width:100%}.moment-card{padding:17px}.moment-actions{gap:16px!important}.edit-moment-form .form-grid{grid-template-columns:1fr}.edit-image-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.edit-form-actions{flex-direction:column-reverse;align-items:stretch;gap:8px}.edit-form-actions .primary-button{width:100%}.moment-images img{height:110px}.moment-images.image-count-1 img{height:min(420px,95vw)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes birthday-arrive{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:none}}@keyframes birthday-breathe{50%{opacity:.76;transform:scale(1.08)}}@keyframes birthday-float{50%{opacity:.48;transform:translateY(-13px)rotate(8deg)}}html{background:#fff8ef}body{color:var(--ink);background:radial-gradient(circle at 8% 4%,#f7c2ad47,#0000 26rem),radial-gradient(circle at 96% 22%,#bdd6c14d,#0000 28rem),linear-gradient(#fff9f1,#fffdf9 48%,#f8efe8)}.journal-shell{isolation:isolate;--page-gutter:clamp(16px, 4.5vw, 70px);padding-top:max(24px, env(safe-area-inset-top));position:relative}.journal-shell:before{content:"";z-index:-1;pointer-events:none;opacity:.24;background-image:radial-gradient(#a169592b .7px,#0000 .7px);background-size:12px 12px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 82%);mask-image:linear-gradient(#000,#0000 82%)}.journal-header{background:#fffcf7e6;border:1px solid #eccfc0c7;border-radius:34px;grid-template-columns:minmax(0,1fr) minmax(280px,400px) auto;align-items:stretch;gap:28px;min-height:260px;margin-bottom:28px;padding:clamp(30px,4vw,52px);display:grid;position:relative;overflow:hidden;box-shadow:0 24px 74px #8b57491f}.journal-heading{align-self:center;min-width:0}.product-mark{color:#bf5f67;letter-spacing:.22em}.journal-header h1{color:#654741;letter-spacing:.035em;font-family:Kaiti SC,STKaiti,KaiTi,Songti SC,serif;font-size:clamp(38px,5vw,66px);font-weight:600;line-height:1.12}.journal-header>.journal-heading>p:last-of-type{color:#836963;letter-spacing:.04em;max-width:34rem;margin-top:16px;font-size:clamp(14px,1.5vw,17px)}.journal-love-note{color:#8b6a60;letter-spacing:.05em;background:#f9e3d9;border-radius:999px 999px 999px 8px;margin-top:24px;padding:9px 15px;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:15px;display:inline-flex}.journal-header-art{border:8px solid #fff;border-radius:50% 42% 47% 40%/45% 50% 42% 48%;min-height:174px;position:relative;overflow:hidden;transform:rotate(1.2deg);box-shadow:0 18px 45px #734e3c2b}.journal-header-art img{object-fit:cover;object-position:50% 63%;width:100%;height:100%;transform:scale(1.04)}.journal-header-art span{color:#76564e;letter-spacing:.08em;background:#fff9efdb;border-radius:999px;padding:6px 11px;font-family:Georgia,serif;font-size:10px;font-style:italic;position:absolute;bottom:14px;right:18px}.journal-header>.quiet-button{color:#9a7169;background:#fffaf5;border:1px solid #ead2c7;border-radius:999px;align-self:start;min-width:54px}.journal-header>.quiet-button:hover{color:#aa4652;background:#fce8e1;border-color:#e9bbb8}.journal-layout{grid-template-columns:minmax(0,.92fr) minmax(420px,1.08fr);gap:28px}.composer-card,.timeline-panel{background:#fffdf9f0;border:1px solid #ebcfc1db;border-radius:28px;position:relative;overflow:hidden;box-shadow:0 20px 60px #87594a1a}.composer-card:before,.timeline-panel:before{content:"";background:linear-gradient(90deg,#f5b8ae,#f4d599 38%,#a8c4aa 72%,#b9d1df);height:6px;position:absolute;inset:0 0 auto}.composer-card{padding:clamp(28px,3vw,44px)}.timeline-panel{padding:clamp(28px,3vw,40px)}.section-label{color:#c05f67;letter-spacing:.18em;font-size:10px}.section-title-row h2{color:#644944;letter-spacing:.03em;font-family:Kaiti SC,STKaiti,KaiTi,Songti SC,serif;font-size:clamp(25px,2.7vw,34px);font-weight:600}.required-note,.record-count{color:#987b74;background:#faebe4;border-radius:999px;padding:7px 11px}.timeline-direction{color:#9a7b72;letter-spacing:.04em;margin:13px 0 -7px;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:15px}.moment-form label,.editor-field,.edit-moment-form label{color:#765e59;font-weight:680}.moment-form input,.moment-form select,.moment-form textarea,.edit-moment-form input,.edit-moment-form select,.edit-moment-form textarea{color:#57433f;background:#fffdf9;border-color:#ead8cf;border-radius:14px}.moment-form input:hover,.moment-form select:hover,.moment-form textarea:hover,.edit-moment-form input:hover,.edit-moment-form select:hover,.edit-moment-form textarea:hover{border-color:#dcbcb0}.moment-form input:focus,.moment-form select:focus,.moment-form textarea:focus,.edit-moment-form input:focus,.edit-moment-form select:focus,.edit-moment-form textarea:focus{border-color:#d27a7c;box-shadow:0 0 0 4px #d27a7c21}.editor-toolbar{background:#fbede7;border-color:#ead8cf;border-radius:14px 14px 0 0;gap:7px;padding:9px}.editor-toolbar+textarea{border-radius:0 0 14px 14px}.editor-toolbar button{color:#7c625d;background:#ffffffe0;border-color:#e8d0c6;border-radius:10px}.editor-toolbar button:hover{color:#af4d58;background:#fff9f5;border-color:#da9b9d;transform:translateY(-1px)}.editor-help{color:#9b7d76}.upload-placeholder,.edit-upload-button{background:linear-gradient(135deg,#fff7f2,#f9eee9);border:1px dashed #dca8a4;border-radius:18px;transition:transform .2s,border-color .2s,background .2s;color:#ae5960!important}.upload-placeholder:hover,.edit-upload-button:hover{background:#fff4ef;border-color:#c87074;transform:translateY(-2px)}.image-previews figure,.edit-image-grid figure{background:#fff;border:1px solid #eee0d8;border-radius:12px;padding:5px 5px 18px;box-shadow:0 9px 20px #744b3e1a}.image-previews figure:nth-child(2n),.edit-image-grid figure:nth-child(2n){transform:rotate(.8deg)}.image-previews figure:nth-child(odd),.edit-image-grid figure:nth-child(odd){transform:rotate(-.6deg)}.primary-button{color:#fff;letter-spacing:.04em;background:linear-gradient(135deg,#d66f76,#bd5964);border-radius:999px;min-height:50px;padding-inline:28px;transition:transform .2s,box-shadow .2s,background .2s;box-shadow:0 12px 28px #b84b5738}.primary-button:hover{background:linear-gradient(135deg,#ca626a,#a94753);transform:translateY(-2px);box-shadow:0 15px 34px #ad465242}.save-notice{color:#a54e57}.moment-timeline{padding-left:31px}.moment-timeline:before{background:linear-gradient(#e6a7a5,#f0d399 45%,#9dbda5);width:2px;left:6px}.moment-timeline>li{padding-bottom:38px}.moment-timeline>li:before{background:#fff8ef;border:3px solid #cc7075;width:12px;height:12px;top:2px;left:-30px;box-shadow:0 0 0 5px #e09b9726}.moment-timeline time{color:#b55d63;letter-spacing:.08em;margin-bottom:12px;font-family:Georgia,Times New Roman,serif;font-size:12px;font-style:italic}.moment-card{color:#614c47;background:linear-gradient(160deg,#fffffffa,#fffaf5f2);border:1px solid #ecdcd3;border-radius:20px 20px 20px 8px;padding:clamp(20px,2.4vw,28px);transition:transform .25s,box-shadow .25s;position:relative;box-shadow:0 14px 34px #7d504117}.moment-card:hover{transform:translateY(-2px);box-shadow:0 18px 42px #7d504121}.moment-card h3{color:#654944;letter-spacing:.02em;font-family:Kaiti SC,STKaiti,KaiTi,Songti SC,serif;font-size:23px;font-weight:600}.author-badge{color:#a64e56;background:#f9dedc}.author-z{color:#66806a;background:#e5efe4}.edit-button{color:#b45861;border-color:#e4b5b4}.edit-button:hover{color:#963e49;border-color:#c96f75}.delete-button{color:#a0837b}.moment-content{color:#66514c;font-size:14px;line-height:2}.moment-content h4{color:#674943;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:18px}.moment-content blockquote{color:#806963;background:#fff5ef;border-left-color:#d98987;border-radius:0 10px 10px 0;padding:9px 13px}.moment-images{gap:12px}.moment-images img{background:#fff;border:1px solid #eadfd8;border-radius:10px 10px 5px 5px;padding:7px 7px 20px;box-shadow:0 11px 24px #694a3e1f}.moment-images img:nth-child(2n){transform:rotate(.7deg)}.moment-images img:nth-child(odd){transform:rotate(-.55deg)}.timeline-empty .empty-date{color:#ad565e;background:#fae3df}.timeline-empty h3{color:#674b46;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:25px}.birthday-gift{width:min(1100px,100%);margin:clamp(34px,6vw,78px) auto 0;scroll-margin-top:24px}.gift-invitation{text-align:center;background:radial-gradient(circle at 18% 12%,#ffffffdb,#0000 28%),radial-gradient(circle at 86% 82%,#b3cbb552,#0000 27%),linear-gradient(145deg,#fff8f1,#f9e3dd 54%,#f8efd8);border:1px solid #e2b0a7b8;border-radius:36px;justify-items:center;min-height:370px;padding:clamp(34px,5vw,58px) clamp(20px,6vw,72px);display:grid;position:relative;overflow:hidden;box-shadow:0 24px 74px #89524624}.gift-invitation:before,.gift-invitation:after{content:"";pointer-events:none;border:1px solid #ca696c21;border-radius:50%;width:190px;height:190px;position:absolute}.gift-invitation:before{top:-94px;left:-90px;box-shadow:0 0 0 28px #ffffff21,0 0 0 58px #ffffff1a}.gift-invitation:after{bottom:-100px;right:-110px;box-shadow:0 0 0 34px #7e9d8214,0 0 0 68px #7e9d820d}.gift-ribbon{color:#bf596199;font:28px Georgia,serif;animation:2.6s ease-in-out infinite gift-twinkle;position:absolute;top:24px;right:28px}.gift-box{filter:drop-shadow(0 14px 18px #8f4c432b);transform-origin:50% 100%;margin-bottom:10px;font-size:clamp(72px,9vw,108px);line-height:1;animation:3.4s ease-in-out infinite gift-float;display:block}.gift-invitation .section-label{margin-bottom:10px}.gift-invitation h2{color:#674843;letter-spacing:.035em;max-width:760px;margin:0;font-family:Kaiti SC,STKaiti,KaiTi,Songti SC,serif;font-size:clamp(29px,4vw,45px);font-weight:600;line-height:1.25}.gift-invitation>p:not(.section-label){color:#8a6b64;letter-spacing:.04em;margin:14px 0 24px;font-size:14px}.gift-invitation>button{z-index:1;color:#fff;letter-spacing:.06em;background:linear-gradient(135deg,#dc777c,#b94e5a);border:0;border-radius:999px;min-height:52px;padding:0 30px;font-weight:750;transition:transform .2s,box-shadow .2s;position:relative;box-shadow:0 14px 30px #ae434f3d}.gift-invitation>button:hover{transform:translateY(-3px);box-shadow:0 18px 36px #ae434f47}.gift-player-shell{background:#fffdf9f7;border:1px solid #e5bfb4d6;border-radius:36px;grid-template-columns:minmax(260px,.82fr) minmax(360px,1.18fr);min-height:520px;animation:.72s cubic-bezier(.2,.85,.2,1) both gift-open;display:grid;overflow:hidden;box-shadow:0 26px 80px #7a4b3f26}.gift-player-intro{background:radial-gradient(circle at 20% 12%,#ffffffc2,#0000 29%),linear-gradient(155deg,#fae1db,#f9ead7 52%,#e7efe4);border-right:1px solid #e2c3b7c7;flex-direction:column;justify-content:center;padding:clamp(30px,4.5vw,56px);display:flex}.gift-cover{aspect-ratio:1;background:#ffffff8c;border:1px solid #fffc;border-radius:44% 50% 46% 52%/51% 43% 54% 45%;place-items:center;width:min(220px,72%);margin:0 auto 30px;display:grid;position:relative;box-shadow:0 20px 45px #7b4d3e21}.gift-cover img{object-fit:contain;filter:drop-shadow(0 11px 16px #7d4a3b26);width:76%;height:76%}.music-bars{opacity:.58;justify-content:center;align-items:end;gap:3px;height:30px;display:flex;position:absolute;inset:auto 14% 13%}.music-bars i{background:#bd5861;border-radius:9px;width:3px;height:5px;animation:.8s ease-in-out infinite alternate paused music-bar}.music-bars i:nth-child(2n){animation-delay:-.28s}.music-bars i:nth-child(3n){animation-delay:-.52s}.music-bars i:nth-child(4n){animation-delay:-.14s}.music-bars.is-playing i{animation-play-state:running}.gift-player-intro .section-label{margin-bottom:8px}.gift-player-intro h2{color:#61453f;letter-spacing:.08em;margin:0;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:clamp(34px,4vw,48px);font-weight:600}.gift-song-note{color:#8d7068;letter-spacing:.08em;margin:8px 0 26px;font-size:13px}.player-controls{align-items:center;gap:16px;display:flex}.play-button{color:#fff;background:linear-gradient(145deg,#d87076,#b64c57);border:0;border-radius:50%;flex:none;place-items:center;width:58px;height:58px;padding:0;font-size:18px;transition:transform .18s,box-shadow .18s;display:grid;box-shadow:0 13px 28px #ab444f42}.play-button:hover{transform:scale(1.05);box-shadow:0 16px 32px #ab444f4d}.play-button span{transform:translate(1px)}.player-progress{flex:1;min-width:0}.player-progress input{-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:100%;height:20px;margin:0}.player-progress input::-webkit-slider-runnable-track{background:linear-gradient(90deg, #bf5962 var(--song-progress), #ffffffb3 var(--song-progress));border-radius:999px;height:5px}.player-progress input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;border:4px solid #bd5660;border-radius:50%;width:17px;height:17px;margin-top:-6px;box-shadow:0 3px 8px #7e3e3d33}.player-progress input::-moz-range-track{background:#ffffffb3;border-radius:999px;height:5px}.player-progress input::-moz-range-progress{background:#bf5962;border-radius:999px;height:5px}.player-progress input::-moz-range-thumb{background:#fff;border:3px solid #bd5660;border-radius:50%;width:11px;height:11px}.player-time{color:#8d716a;letter-spacing:.06em;justify-content:space-between;margin-top:2px;font:11px Georgia,serif;display:flex}.gift-player-error{color:#a84e57;opacity:0;min-height:18px;margin:12px 0 0;font-size:11px;line-height:1.5}.gift-player-error.is-visible{opacity:1}.lyrics-panel{background:linear-gradient(#fffefa,#fffaf5);min-width:0;padding:clamp(28px,4vw,46px)}.lyrics-heading{border-bottom:1px solid #f0ddd4;justify-content:space-between;align-items:baseline;gap:20px;padding-bottom:17px;display:flex}.lyrics-heading span{color:#72514b;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:23px;font-weight:600}.lyrics-heading small{color:#a2847d;font-size:11px}.lyrics-scroll{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#e1b5ad transparent;height:390px;position:relative;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000,#000 14% 86%,#0000);mask-image:linear-gradient(#0000,#000 14% 86%,#0000)}.lyrics-lines{display:grid;position:relative}.lyrics-spacer{height:152px}.lyrics-lines button{color:#aa918a;text-align:center;background:0 0;border:0;width:100%;min-height:46px;padding:9px 12px;font-family:Kaiti SC,STKaiti,KaiTi,Songti SC,serif;font-size:clamp(16px,1.8vw,20px);line-height:1.45;transition:color .3s,transform .3s,opacity .3s}.lyrics-lines button:hover{color:#835f58}.lyrics-lines button.is-past{color:#bba59f;opacity:.66}.lyrics-lines button.is-active{color:#b64f59;text-shadow:0 5px 18px #be515b1f;font-size:clamp(20px,2.2vw,25px);font-weight:600;transform:scale(1.03)}.lyrics-placeholder{color:#a28780;text-align:center;place-items:center;min-height:100%;margin:0;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:17px;display:grid}@keyframes gift-open{0%{opacity:0;transform:translateY(24px)scale(.98)}to{opacity:1;transform:none}}@keyframes gift-float{45%{transform:translateY(-7px)rotate(-2deg)}55%{transform:translateY(-7px)rotate(2deg)}}@keyframes gift-twinkle{50%{opacity:.35;transform:scale(.78)rotate(24deg)}}@keyframes music-bar{0%{height:4px}to{height:26px}}.quiet-button{color:#96746c;transition:color .2s,border-color .2s,background .2s}.unlock-page{background:radial-gradient(circle at 12% 14%,#ffe4d2 0 12%,#0000 34%),radial-gradient(circle at 84% 78%,#dfe9d8 0 10%,#0000 32%),linear-gradient(145deg,#fffaf1,#fce4df 54%,#e8efe4)}.birthday-intro{background:#f7e4cd}.birthday-intro:before{content:"";background:linear-gradient(#fffaf114,#ffefe108 55%,#42362d1a),url(/birthday-entrance-hero.webp) 50% 58%/cover no-repeat;animation:9s ease-out both birthday-camera;position:absolute;inset:-3%}.birthday-glow{z-index:0;opacity:.48;top:-24%;left:50%;transform:translate(-50%)}.birthday-sparkles{z-index:1;position:absolute;inset:0}.birthday-message{z-index:2}.birthday-message h1{text-shadow:0 2px 18px #ffffffb3}.birthday-message button{transition:transform .2s,background .2s,box-shadow .2s}.unlock-card{border-radius:30px;width:min(100%,500px);padding:30px 38px 38px;overflow:hidden}.unlock-card:before{content:"";background:linear-gradient(#0000 60%,#ffffff2e),url(/birthday-entrance-hero.webp) 50% 63%/cover no-repeat;height:174px;margin:-30px -38px 28px;display:block}.unlock-card h1{color:#654944;font-size:clamp(31px,7vw,39px)}.unlock-copy{color:#866d67}.password-row input{background:#fffdf9;border-color:#ead5cb;border-radius:13px}.password-row input:focus{border-color:#d27679;box-shadow:0 0 0 4px #d2767921}.password-row button{background:linear-gradient(135deg,#d16b72,#b9505c);border-radius:999px;padding-inline:21px;box-shadow:0 10px 22px #b0455133}.password-hint{color:#8b736c;background:#fff4ee;border-radius:12px;padding:10px 12px}.privacy-note{color:#a1877f}@keyframes birthday-camera{0%{transform:scale(1.01)}to{transform:scale(1.08)}}@keyframes cake-arrive{0%{opacity:0;transform:translateY(12px)scale(.72)rotate(-4deg)}to{opacity:1;transform:none}}@keyframes cake-float{50%{transform:translateY(-5px)rotate(1.5deg)}}@media (max-width:1050px){.journal-header{grid-template-columns:minmax(0,1fr) minmax(250px,34vw) auto}.journal-layout{grid-template-columns:1fr}}@media (max-width:720px){.journal-header{border-radius:26px;grid-template-columns:1fr auto;min-height:0;padding:27px}.journal-heading{grid-column:1}.journal-header-art{border-width:6px;border-radius:24px 24px 24px 8px;grid-area:2/1/auto/-1;min-height:176px}.journal-header>.quiet-button{grid-area:1/2}.journal-header h1{font-size:clamp(36px,11vw,52px)}.journal-love-note{margin-top:18px}.composer-card,.timeline-panel{border-radius:24px}.moment-card:hover{transform:none}.gift-player-shell{grid-template-columns:1fr}.gift-player-intro{border-bottom:1px solid #e2c3b7c7;border-right:0}.gift-cover{width:min(170px,55%);margin-bottom:22px}}@media (max-width:560px){.journal-shell{--page-gutter:13px;padding-top:max(13px, env(safe-area-inset-top))}.journal-header{border-radius:22px;gap:18px 10px;margin-bottom:16px;padding:23px 19px 19px}.journal-header-art{min-height:148px}.journal-header>.quiet-button{min-width:50px}.journal-love-note{font-size:14px}.journal-layout{gap:16px}.composer-card,.timeline-panel{border-radius:22px;padding:25px 18px}.section-title-row{align-items:flex-start}.section-title-row h2{font-size:27px}.required-note,.record-count{white-space:normal;text-align:center;max-width:95px;padding:6px 9px}.moment-timeline{margin-top:28px;padding-left:24px}.moment-timeline>li:before{left:-23px}.moment-card{border-radius:18px 18px 18px 7px;padding:18px 15px}.moment-card-heading{gap:8px}.moment-card-heading>div{gap:7px}.moment-card h3{width:100%;font-size:22px}.moment-images{gap:8px}.moment-images img{padding:5px 5px 14px}.birthday-intro:before{background-position:52% 58%;inset:-1%}.birthday-message{width:calc(100vw - 28px);margin-top:max(3vh, env(safe-area-inset-top));border-radius:25px;padding:18px 14px 21px}.birthday-message h1{letter-spacing:.01em;font-size:clamp(32px,8.8vw,48px)}.birthday-message p:not(.birthday-kicker){margin:9px 0 16px;font-size:15px}.birthday-cake-art{width:78px;height:78px;margin-bottom:2px}.birthday-gift{margin-top:28px}.gift-invitation{border-radius:24px;min-height:340px;padding:35px 18px}.gift-box{font-size:78px}.gift-invitation h2{font-size:28px}.gift-invitation>p:not(.section-label){max-width:270px;line-height:1.7}.gift-player-shell{border-radius:24px}.gift-player-intro{text-align:center;padding:34px 21px 28px}.gift-cover{width:150px}.gift-player-intro .section-label{text-align:center}.player-controls{gap:12px}.play-button{width:54px;height:54px}.lyrics-panel{padding:24px 14px 18px}.lyrics-heading{padding-inline:6px}.lyrics-heading small{text-align:right;max-width:142px;line-height:1.45}.lyrics-scroll{height:360px}.lyrics-lines button{padding-inline:4px}.unlock-page{padding:max(13px, env(safe-area-inset-top)) max(13px, env(safe-area-inset-right)) max(13px, env(safe-area-inset-bottom)) max(13px, env(safe-area-inset-left))}.unlock-card{border-radius:24px;padding:24px 20px 26px}.unlock-card:before{height:156px;margin:-24px -20px 23px}}.unlock-form>input{width:100%;min-width:0;height:46px;color:var(--ink);background:#fffdf9;border:1px solid #ead5cb;border-radius:13px;outline:none;padding:0 13px}.unlock-form>input:focus{border-color:#d27679;box-shadow:0 0 0 4px #d2767921}.account-actions{align-self:start;align-items:center;gap:10px;display:flex}.account-chip{color:#805e58;background:#fffaf5f0;border:1px solid #ead2c7;border-radius:15px;justify-items:end;min-height:48px;padding:7px 13px;display:grid;box-shadow:0 8px 20px #764d4114}.account-chip span{font-weight:750;line-height:1.25}.account-chip small{color:#ae8177;font-size:10px;line-height:1.25}:is(.account-chip:hover,.account-chip:focus-visible){color:#a44952;border-color:#d99594;outline:none}.account-actions .quiet-button{color:#9a7169;background:#fffaf5;border:1px solid #ead2c7;border-radius:999px;min-width:50px}.current-author-field{color:#8b6d66;background:#fff8f2;border:1px solid #ead8cf;border-radius:14px;align-content:center;min-height:48px;padding:8px 13px;display:grid}.current-author-field span{font-size:10px;font-weight:700}.current-author-field strong{color:#ad535b;font-size:14px}.current-author-field small{margin-top:2px;font-size:9px;font-weight:400}.current-author-field.compact{min-height:48px}.account-dialog-backdrop{z-index:400;padding:max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#4b33308a;place-items:center;display:grid;position:fixed;inset:0;overflow-y:auto}.account-dialog{background:linear-gradient(150deg,#fffdf9fc,#fff4effa);border:1px solid #ffffffe6;border-radius:28px;width:min(620px,100%);max-height:calc(100svh - 36px);padding:clamp(24px,4vw,38px);overflow-y:auto;box-shadow:0 30px 100px #492c294d}.account-dialog-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.account-dialog-heading h2{color:#654944;margin:0;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:clamp(28px,5vw,38px)}.account-dialog-close{color:#8f6b64;background:#fffaf5;border:1px solid #e7cfc4;border-radius:50%;flex:none;width:44px;height:44px;font-size:26px;line-height:1}.account-dialog-note{color:#8b716b;margin:14px 0 23px;font-size:13px;line-height:1.8}.account-form{gap:17px;display:grid}.account-form label{color:#735c57;gap:7px;font-size:13px;font-weight:680;display:grid}.account-form input{color:#57433f;background:#fffdf9;border:1px solid #ead8cf;border-radius:13px;outline:none;width:100%;min-height:48px;padding:0 14px}.account-form input:focus{border-color:#d27679;box-shadow:0 0 0 4px #d2767921}.account-form label small,.account-password-help{color:#9d817a;font-size:10px;font-weight:400;line-height:1.55}.account-password-grid{grid-template-columns:1fr 1fr;gap:13px;display:grid}.account-password-help{margin-top:-7px}.account-message{color:#aa4d57;opacity:0;min-height:18px;margin:-3px 0;font-size:12px}.account-message.is-visible{opacity:1}.account-form-actions{justify-content:flex-end;align-items:center;gap:16px;display:flex}.account-form-actions .quiet-button{min-width:64px}.moment-image-button{touch-action:manipulation;background:0 0;border:0;border-radius:10px;min-width:0;padding:0;transition:transform .22s,filter .22s;position:relative;overflow:visible}.moment-image-button:nth-child(2n){transform:rotate(.7deg)}.moment-image-button:nth-child(odd){transform:rotate(-.55deg)}.moment-image-button:hover{filter:brightness(1.025);transform:translateY(-2px)rotate(0)}.moment-image-button:focus-visible{outline-offset:4px;outline:3px solid #c85f6885}.moment-images .moment-image-button img{object-fit:cover;background:#fff;border:1px solid #eadfd8;border-radius:10px 10px 5px 5px;width:100%;height:150px;padding:7px 7px 20px;display:block;transform:none;box-shadow:0 11px 24px #694a3e1f}.moment-images.image-count-1 .moment-image-button img{height:min(560px,48vw)}.moment-image-hint{color:#fff;letter-spacing:.04em;opacity:0;pointer-events:none;background:#4a3330b3;border-radius:999px;padding:5px 8px;font-size:9px;transition:opacity .2s;position:absolute;bottom:27px;right:13px}:is(.moment-image-button:hover .moment-image-hint,.moment-image-button:focus-visible .moment-image-hint){opacity:1}.photo-lightbox{z-index:350;color:#fff9f5;overscroll-behavior:contain;background:radial-gradient(circle at 50% 42%,#99656047,#0000 45%),#231919f5;grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0}.photo-lightbox-topbar,.photo-lightbox-footer{z-index:3;padding-right:max(18px, env(safe-area-inset-right));padding-left:max(18px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1f16168a;justify-content:space-between;align-items:center;gap:18px;display:flex;position:relative}.photo-lightbox-topbar{min-height:72px;padding-top:max(12px, env(safe-area-inset-top));padding-bottom:11px}.photo-lightbox-topbar>div{gap:3px;min-width:0;display:grid}.photo-lightbox-topbar strong{text-overflow:ellipsis;white-space:nowrap;font-family:Kaiti SC,STKaiti,KaiTi,serif;font-size:18px;overflow:hidden}.photo-lightbox-topbar span,.photo-lightbox-footer small{color:#fff5f1ad;font-size:11px}.photo-lightbox-close,.photo-lightbox-nav{color:#fff;touch-action:manipulation;background:#ffffff1f;border:1px solid #ffffff38;border-radius:50%;place-items:center;display:grid}.photo-lightbox-close{flex:none;width:46px;height:46px;font-size:29px;line-height:1}.photo-lightbox-stage{cursor:zoom-in;touch-action:none;place-items:center;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.photo-lightbox-stage.is-zoomed{cursor:grab}.photo-lightbox-stage.is-zoomed:active{cursor:grabbing}.photo-lightbox-image{object-fit:contain;filter:drop-shadow(0 18px 45px #00000057);transform-origin:50%;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform;max-width:calc(100vw - 120px);max-height:calc(100svh - 176px);transition:transform .12s ease-out;display:block}.photo-lightbox-stage.is-zoomed .photo-lightbox-image{transition:none}.photo-lightbox-nav{z-index:2;width:48px;height:48px;font-size:40px;position:absolute;top:50%;transform:translateY(-50%)}.photo-lightbox-nav.is-previous{left:max(14px, env(safe-area-inset-left))}.photo-lightbox-nav.is-next{right:max(14px, env(safe-area-inset-right))}.photo-lightbox-footer{min-height:58px;padding-top:10px;padding-bottom:max(10px, env(safe-area-inset-bottom))}.photo-lightbox-footer>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.photo-lightbox-footer small{flex:none}@media (max-width:720px){.account-actions{grid-area:1/2;align-items:flex-start}.account-chip{min-height:44px;padding:6px 10px}.account-actions .quiet-button{display:none}.photo-lightbox-nav{width:44px;height:44px;top:auto;bottom:13px}.photo-lightbox-image{max-width:100vw;max-height:calc(100svh - 165px)}.photo-lightbox-footer{flex-direction:column;align-items:flex-start;gap:3px;min-height:63px}.photo-lightbox-footer small{flex:0 auto}}@media (max-width:560px){.account-dialog-backdrop{align-items:end;padding:0}.account-dialog{width:100%;max-height:calc(100svh - max(10px, env(safe-area-inset-top)));padding:25px 18px max(24px, env(safe-area-inset-bottom));border-radius:26px 26px 0 0}.account-password-grid{grid-template-columns:1fr}.account-form-actions{flex-direction:column-reverse;align-items:stretch}.account-form-actions .primary-button{width:100%}.moment-images .moment-image-button img{height:116px;padding:5px 5px 14px}.moment-images.image-count-1 .moment-image-button img{height:min(520px,112vw)}.moment-image-hint{opacity:.88;bottom:19px;right:9px}.photo-lightbox-topbar{min-height:66px}.photo-lightbox-footer>span{max-width:100%}}@media (prefers-reduced-motion:reduce){.photo-lightbox-image,.moment-image-button{transition:none}}
