:root{--cream:#f7f3ee;--paper:#fffcf9;--oat:#e9ddd4;--ink:#51494a;--muted:#92858a;--rose:#d99da7;--sage:#a9b5a2;--lav:#d9c9e6;--line:#ded5ce}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--cream);color:var(--ink);margin:0;font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif;font-size:14px;line-height:1.7}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:500}h1,h2{font-family:Noto Serif SC,Songti SC,STSong,serif;line-height:1.35}a{color:inherit}img{max-width:100%;display:block}.serif{font-family:Cormorant Garamond,Georgia,serif}.eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.button{letter-spacing:.02em;min-height:46px;color:var(--ink);background:0 0;border:0;justify-content:center;align-items:center;gap:11px;padding:0 21px;transition:background .2s,transform .2s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button.primary{background:var(--ink);color:var(--paper)}.button.outline{border:1px solid var(--ink)}.button.link{padding:0}.text-button,.subtle-link{color:var(--ink);border:0;border-bottom:1px solid var(--ink);background:0 0;align-items:center;gap:8px;padding:3px 0;display:inline-flex}.text-button:hover,.subtle-link:hover{color:#ae6d7a}.pill{color:#7c6e70;background:#eee7e0;border-radius:99px;margin-right:6px;padding:3px 10px;font-size:11px;display:inline-block}.field{color:#75696b;flex-direction:column;gap:8px;margin:14px 0;font-size:12px;font-weight:600;display:flex}.field input,.field select,.field textarea,.comment-box input,.contributions textarea{background:var(--paper);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:0;outline:none;padding:11px 13px}.field textarea,.contributions textarea{resize:vertical}.field input:focus,.field textarea:focus,.field select:focus,.comment-box input:focus{border-color:#b78791}.check-label{align-items:center;gap:9px;margin:16px 0;display:flex}.check-label input{accent-color:var(--ink)}.form-grid{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}.loading{place-items:center;min-height:100vh;font-family:Noto Serif SC,Songti SC,STSong;font-size:22px;display:grid}.setup{max-width:650px;margin:14vh auto;padding:40px}.setup h1{margin:18px 0;font-size:46px}.setup p{color:var(--muted);margin-bottom:20px}.setup code{background:var(--paper);padding:15px;display:block}.auth-shell{background:var(--paper);grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.auth-art{background:#d9c9be;align-items:stretch;padding:5vw;display:flex}.auth-frame{color:#fff8f3;background:radial-gradient(circle at 75% 20%,#e9d7c9 0%,#0000 45%),linear-gradient(135deg,#aa8f89,#c8aaa0 65%,#d5bcae);border:1px solid #f6eee8;flex-direction:column;justify-content:space-between;width:100%;padding:36px;display:flex}.auth-frame>span{letter-spacing:.18em;font-family:Cormorant Garamond,Georgia;font-size:24px}.auth-line{font-family:Noto Serif SC,Songti SC,STSong;font-size:clamp(46px,5vw,82px);line-height:1.4}.auth-frame small{letter-spacing:.15em}.auth-panel{flex-direction:column;justify-content:center;max-width:650px;padding:7vw;display:flex}.auth-panel h1{margin:12px 0;font-size:clamp(50px,6vw,78px)}.auth-panel>p{color:var(--muted)}.auth-panel form{margin-top:42px}.auth-panel .button{width:100%;margin:14px 0 20px}.auth-panel .text-button{align-self:flex-start}.auth-note{margin-top:40px;font-size:12px}.onboard{place-items:center;min-height:100vh;padding:30px;display:grid}.onboard-card{background:var(--paper);width:100%;max-width:950px;padding:clamp(30px,5vw,70px)}.onboard h1{margin:12px 0;font-size:clamp(32px,4vw,52px)}.onboard p{color:var(--muted)}.onboard-grid{grid-template-columns:1fr 1fr;gap:45px;margin:45px 0;display:grid}.onboard-grid form+form{border-left:1px solid var(--line);padding-left:45px}.onboard-grid h2{margin-bottom:22px}.topbar{border-bottom:1px solid var(--line);background:var(--paper);justify-content:space-between;align-items:center;gap:25px;height:83px;padding:0 clamp(22px,3.7vw,72px);display:flex}.brand{text-align:left;color:var(--ink);white-space:nowrap;background:0 0;border:0;align-items:center;gap:13px;font-family:Noto Serif SC,Songti SC,STSong;font-size:20px;display:flex}.brand-mark{background:var(--ink);width:41px;height:41px;color:var(--paper);place-items:center;padding-bottom:5px;font:italic 32px Cormorant Garamond,Georgia;display:grid}.brand small{letter-spacing:.18em;color:var(--muted);margin-top:-2px;font:9px Noto Sans SC;display:block}.desktop-nav{align-items:center;gap:clamp(12px,1.5vw,28px);display:flex;overflow:auto}.desktop-nav button{white-space:nowrap;color:var(--muted);background:0 0;border:0;padding:31px 0;font-size:12px;position:relative}.desktop-nav button.active,.desktop-nav button:hover{color:var(--ink)}.desktop-nav button.active:after{content:"";background:var(--rose);height:2px;position:absolute;bottom:0;left:0;right:0}.top-actions{align-items:center;gap:18px;display:flex}.top-actions>button{color:var(--ink);background:0 0;border:0;padding:4px}.avatar-stack{display:flex}.avatar-stack span{background:var(--oat);border:2px solid var(--paper);border-radius:50%;place-items:center;width:30px;height:30px;margin-left:-6px;font-size:11px;display:grid}.avatar-stack span:nth-child(2){background:var(--sage)}.home-hero{background:#eee5db;grid-template-columns:49% 51%;min-height:570px;display:grid}.hero-copy{flex-direction:column;align-items:flex-start;padding:clamp(40px,5.6vw,100px) clamp(28px,5vw,90px);display:flex}.hero-copy h1{letter-spacing:.03em;max-width:650px;margin:40px 0 20px;font-size:clamp(48px,5.1vw,80px)}.hero-copy>p{color:#807678;letter-spacing:.04em}.hero-actions{align-items:center;gap:20px;margin-top:45px;display:flex}.hero-days{align-items:baseline;gap:13px;margin-top:auto;display:flex}.hero-days strong{font:500 clamp(56px,6.5vw,104px)/1 Cormorant Garamond,Georgia}.hero-days span{letter-spacing:.2em;font-size:12px;line-height:1.5}.hero-visual{background:#ccc3b7;min-height:520px;position:relative;overflow:hidden}.hero-photo{object-fit:cover;cursor:pointer;width:100%;height:100%}.hero-placeholder{height:100%;min-height:520px;color:var(--paper);text-align:center;background:linear-gradient(125deg,#c1aaa0,#9e9d91 58%,#ad8d87);flex-direction:column;justify-content:center;align-items:center;display:flex}.hero-placeholder>span{letter-spacing:.2em;font-size:10px;position:absolute;top:45px;left:45px}.hero-placeholder p{margin:30px 0 15px;font-family:Noto Serif SC,Songti SC,STSong;font-size:25px}.hero-placeholder button{color:var(--paper);border:0;border-bottom:1px solid var(--paper);background:0 0;align-items:center;gap:8px;display:flex}.hero-caption{color:#fff;letter-spacing:.1em;background:linear-gradient(#0000,#0005);padding:35px 45px 24px;font-size:11px;position:absolute;bottom:0;left:0;right:0}.home-meta{border-bottom:1px solid var(--line);letter-spacing:.15em;color:var(--muted);justify-content:space-between;padding:17px clamp(22px,5vw,90px);font-size:11px;display:flex}.section{max-width:1500px;margin:auto;padding:80px clamp(22px,5vw,90px)}.section-head,.page-top,.subhead{justify-content:space-between;align-items:end;gap:25px;display:flex}.section-head h2{margin-top:10px;font-size:38px}.story-grid{grid-template-rows:260px 260px;grid-template-columns:1.35fr .9fr .9fr;gap:20px;margin-top:34px;display:grid}.story{cursor:pointer;background:#e6dcd2;position:relative;overflow:hidden}.story-0{grid-row:span 2}.story-3{grid-column:span 2}.story-photo{object-fit:cover;width:100%;height:100%;transition:transform .4s}.story:hover .story-photo{transform:scale(1.035)}.story-text-only{background:#d7d5ca;flex-direction:column;justify-content:space-between;height:100%;padding:35px;display:flex}.story-text-only span{letter-spacing:.14em;font:17px Cormorant Garamond,Georgia}.story-text-only p{font-family:Noto Serif SC,Songti SC,STSong;font-size:20px}.story-info{color:#fff;background:linear-gradient(#0000,#0009);padding:32px;position:absolute;bottom:0;left:0;right:0}.story-info span{letter-spacing:.12em;font-size:11px}.story-info h3{margin-top:7px;font:500 25px Noto Serif SC,Songti SC,STSong}.home-bottom{grid-template-columns:1fr 1fr;gap:0;padding-top:0;display:grid}.home-bottom>div{background:#eee8e1;min-height:270px;padding:44px}.home-bottom p{color:var(--muted)}.remember-link{text-align:left;background:0 0;border:1px solid #cfc7c1;border-left:0;border-right:0;align-items:center;gap:20px;width:100%;margin-bottom:18px;padding:20px 0;display:flex}.remember-link span{font-size:11px}.remember-link strong{flex:1;font-family:Noto Serif SC,Songti SC,STSong;font-size:18px}.date-line{border-top:1px solid #c7cbbf;justify-content:space-between;padding:15px 0;display:flex}.date-line strong{font-weight:500}.page{min-height:calc(100vh - 160px)}.page.narrow{max-width:1120px}.page-top h1{margin:8px 0 11px;font-size:clamp(42px,5vw,64px)}.page-top p{color:var(--muted)}.toolbar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);align-items:center;gap:30px;margin-bottom:28px;padding:15px 0;display:flex}.search-box{align-items:center;gap:8px;min-width:260px;display:flex}.search-box input{width:100%;color:var(--ink);background:0 0;border:0;outline:none}.filters{gap:6px;display:flex;overflow:auto}.filters button{color:var(--muted);white-space:nowrap;background:0 0;border:0;padding:7px 11px;font-size:12px}.filters button.chosen{background:var(--ink);color:#fff}.memory-list{gap:0;display:grid}.memory-row{border-bottom:1px solid var(--line);grid-template-columns:200px 1fr auto;align-items:center;gap:30px;padding:24px 0;display:grid}.row-image{color:#fff;background:#d5c9bb;border:0;width:200px;height:145px;padding:0;font:38px Cormorant Garamond,Georgia;overflow:hidden}.row-image img{object-fit:cover;width:100%;height:100%}.row-copy{cursor:pointer}.row-copy h3{margin:7px 0;font:500 26px Noto Serif SC,Songti SC,STSong}.row-copy p{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:650px;overflow:hidden}.row-copy>div{margin-top:13px}.heart{color:var(--muted);background:0 0;border:0}.heart.liked{color:#b57883}.heart.liked svg{fill:#b57883}.gallery-item{break-inside:avoid;cursor:pointer;margin-bottom:28px}.gallery-item img{object-fit:contain;width:100%;height:auto;transition:transform .3s}.gallery-item img:hover{transform:translateY(-4px)}.gallery-item figcaption{border-bottom:1px solid var(--line);color:var(--ink);justify-content:space-between;gap:15px;padding:11px 0;font-size:12px;display:flex}.gallery-item small{color:var(--muted);white-space:nowrap}.gallery-item.g-1{padding-top:55px}.gallery-item.g-3{padding-top:25px}.year-jump{border-bottom:1px solid var(--line);background:var(--cream);z-index:2;gap:22px;padding-bottom:17px;display:flex;position:sticky;top:0}.year-jump a{font:24px Cormorant Garamond,Georgia;text-decoration:none}.timeline-year{padding-top:55px}.timeline-year>h2{border-bottom:1px solid var(--ink);padding-bottom:10px;font:500 60px Cormorant Garamond,Georgia}.timeline-year>h2 span{letter-spacing:.2em;font:11px Noto Sans SC}.timeline-entry{text-align:left;border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);background:0 0;grid-template-columns:92px 1fr 110px 20px;align-items:center;gap:22px;padding:25px 0;display:grid}.timeline-entry>span{font:21px Cormorant Garamond,Georgia}.timeline-entry small{color:var(--muted);letter-spacing:.08em}.timeline-entry h3{margin:5px 0;font:500 22px Noto Serif SC,Songti SC,STSong}.timeline-entry p{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.timeline-entry img{object-fit:cover;width:110px;height:80px}.timeline-entry.important h3:before{content:"✳";color:#af7580;margin-right:9px;font-family:serif}.diary-list{grid-template-columns:1fr 1fr;gap:25px;display:grid}.diary-card{background:var(--paper);cursor:pointer;flex-direction:column;min-height:300px;padding:35px;display:flex}.diary-card:nth-child(4n+2){background:#e9e5dd}.diary-card:nth-child(4n+3){background:#e5e7dc}.diary-card h2{margin:20px 0;font-size:29px}.diary-card p{color:#766b6e;white-space:pre-wrap;line-height:2}.diary-footer{color:var(--muted);justify-content:space-between;align-items:center;margin-top:auto;padding-top:25px;font-size:11px;display:flex}.place-grid,.letter-grid,.book-grid{grid-template-columns:repeat(3,1fr);gap:22px;display:grid}.place-card{background:var(--paper);flex-direction:column;align-items:flex-start;min-height:290px;padding:30px;display:flex}.place-index{letter-spacing:.12em;margin-bottom:35px;font:18px Cormorant Garamond,Georgia}.place-card h2{margin:15px 0 3px;font-size:28px}.place-card p{color:var(--muted)}.place-foot{gap:10px;margin-top:auto;padding-top:20px;display:flex}.place-card>button{background:0 0;border:0;border-bottom:1px solid;align-items:center;gap:8px;margin-top:14px;display:flex}.minor-note{color:var(--muted);margin-top:20px;font-size:11px}.two-col{grid-template-columns:1fr 1fr;gap:60px;display:grid}.subhead{border-bottom:1px solid var(--ink);margin-bottom:20px;padding-bottom:16px}.subhead h2{font-size:29px}.subhead button{background:0 0;border:0}.anniv-row{border-bottom:1px solid var(--line);align-items:center;gap:15px;padding:17px 0;display:flex}.anniv-row>div{flex:1}.anniv-row strong,.anniv-row small{display:block}.anniv-row small{color:var(--muted);margin-top:5px;font-size:11px}.anniv-row>span{font:30px Cormorant Garamond,Georgia}.anniv-row>span small{font:10px Noto Sans SC}.anniv-row>button{background:0 0;border:0}.progress-line{color:var(--muted);margin-bottom:16px;font-size:11px}.progress-line>div{background:var(--line);height:2px;margin-top:8px}.progress-line i{background:var(--rose);height:100%;display:block}.wish-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 0;display:flex}.wish-row button{border:1px solid var(--ink);background:0 0;place-items:center;width:22px;height:22px;display:grid}.wish-row button.checked{background:var(--sage)}.wish-row span{cursor:pointer}.letter-card{border:1px solid var(--line);text-align:left;min-height:310px;color:var(--ink);background:#f0e9e2;padding:27px}.letter-card:nth-child(2n){background:#e8e8dd}.envelope{border:1px solid var(--ink);place-items:center;width:70px;height:50px;margin:25px 0;font:38px Cormorant Garamond,Georgia;display:grid;transform:rotate(-5deg)}.letter-card h2{font-size:25px}.letter-card p{color:var(--muted);margin-top:10px;font-size:11px}.book-cover{background:var(--paper);cursor:pointer;padding:13px 13px 25px}.book-cover-art{text-align:center;color:#fff;letter-spacing:.15em;background:#c5b6a8;place-items:center;height:270px;font:33px Cormorant Garamond,Georgia;display:grid;overflow:hidden}.book-cover-art img{object-fit:cover;width:100%;height:100%}.book-cover>span{letter-spacing:.19em;color:var(--muted);margin:20px 12px 8px;font-size:10px;display:block}.book-cover h2{margin:0 12px;font:45px Cormorant Garamond,Georgia}.book-cover h2 small{font:15px Noto Serif SC,Songti SC,STSong}.book-cover p{color:var(--muted);margin:8px 12px;font-size:11px}.settings-group{border-top:1px solid var(--line);margin-top:25px;padding:30px 0}.settings-group h2{margin-bottom:18px;font-size:25px}.settings-group p{color:var(--muted);margin-bottom:20px}.settings-group>.button{margin:7px 10px 7px 0}.text-danger{color:#a85d67}.profile-line{align-items:center;gap:13px;margin:12px 0;display:flex}.profile-avatar{background:var(--oat);border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.profile-line button{background:0 0;border:0;margin-left:auto;text-decoration:underline}.trash-row{border-bottom:1px solid var(--line);gap:16px;padding:20px 0;display:flex}.trash-row>div{flex:1}.trash-row small{color:var(--muted);display:block}.trash-row button{background:0 0;border:0;text-decoration:underline}.empty{text-align:center;border:1px solid var(--line);background:#f9f6f1;padding:70px 25px}.empty-mark{letter-spacing:.18em;color:#b9aaa6;font:18px Cormorant Garamond,Georgia}.empty h3{margin:18px 0 10px;font:500 27px Noto Serif SC,Songti SC,STSong}.empty p{color:var(--muted);margin-bottom:20px}.footer{border-top:1px solid var(--line);color:var(--muted);letter-spacing:.13em;justify-content:space-between;padding:25px clamp(22px,5vw,90px);font-size:10px;display:flex}.mobile-nav{display:none}.overlay{z-index:10;background:#251e1f9c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.dialog{background:var(--paper);width:min(100%,760px);max-height:92vh;padding:clamp(24px,4vw,48px);position:relative;overflow:auto}.dialog h2{margin:8px 0 25px;font-size:36px}.dialog h1{margin:16px 0 18px;font-size:48px}.dialog-close{z-index:2;background:0 0;border:0;position:absolute;top:20px;right:20px}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.detail-dialog{width:min(100%,900px);padding:clamp(28px,6vw,80px)}.detail-meta{letter-spacing:.16em;color:var(--muted);font-size:11px}.detail-place{color:var(--muted);align-items:center;gap:5px;display:flex}.detail-body{white-space:pre-wrap;margin:35px 0;font-size:16px;line-height:2.2}.detail-media{gap:20px;display:grid}.detail-media img,.detail-media video{object-fit:contain;background:#eee;width:100%;max-height:600px}.detail-media figcaption{color:var(--muted);margin-top:7px;font-size:11px}.detail-tools{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:20px;margin:30px 0;padding:15px 0;display:flex}.detail-tools button{background:0 0;border:0;align-items:center;gap:6px;font-size:12px;display:flex}.contributions,.comments{margin-top:40px}.contributions h3,.comments h3{margin-bottom:20px;font:24px Noto Serif SC,Songti SC,STSong}.contributions>div,.comments>div:not(.comment-box){border-top:1px solid var(--line);padding:15px 0}.contributions p,.comments p{white-space:pre-wrap;margin:6px 0}.contributions textarea{min-height:90px}.comments button{color:var(--muted);background:0 0;border:0}.comment-box{margin-top:25px;display:flex}.comment-box button{border:1px solid var(--line);padding:0 15px}.diary-perspectives{grid-template-columns:1fr 1fr;gap:22px;margin:40px 0;display:grid}.diary-perspectives section{background:var(--cream);min-height:220px;padding:30px}.diary-perspectives p{white-space:pre-wrap;margin:16px 0;font-size:15px;line-height:2.1}.diary-perspectives button{background:0 0;border:0;text-decoration:underline}.letter-body{white-space:pre-wrap;border-top:1px solid var(--line);margin-top:35px;padding-top:35px;font:17px/2.4 Noto Serif SC,Songti SC,STSong}.book-detail>.book-stats{border-block:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin:40px 0;padding:20px;display:grid}.book-stats span{font:44px Cormorant Garamond,Georgia}.book-stats small{color:var(--muted);font:11px Noto Sans SC;display:block}.book-detail section{border-bottom:1px solid var(--line);padding:30px 0}.book-detail section h2{margin:10px 0}.book-detail section p{white-space:pre-wrap;line-height:2}.book-detail section img{max-height:420px;margin-top:20px}.lightbox{z-index:20;color:#fff;background:#151314f2;flex-direction:column;justify-content:center;align-items:center;padding:50px;display:flex;position:fixed;inset:0}.lightbox>img,.lightbox>video{object-fit:contain;max-width:100%;max-height:78vh}.lightbox .close{color:#fff;background:0 0;border:0;position:absolute;top:25px;right:25px}.lightbox>div{gap:25px;margin-top:18px;display:flex}.lightbox>div button{color:#fff;background:0 0;border:0;align-items:center;gap:6px;display:flex}.toast{z-index:30;background:var(--ink);color:#fff;padding:13px 18px;position:fixed;bottom:25px;right:25px;box-shadow:0 10px 35px #0002}.toast.error{background:#9b5d65}.toast button{color:#fff;background:0 0;border:0;margin-left:15px}.upload-progress{text-align:center;background:#eee;padding:5px;position:relative}.upload-progress i{background:#c5d0c1;position:absolute;top:0;bottom:0;left:0}.upload-progress{isolation:isolate}.upload-progress i{z-index:-1}@media (max-width:1200px){.desktop-nav{gap:12px}.desktop-nav button{font-size:11px}.brand{font-size:17px}.topbar{gap:12px;padding:0 20px}.top-actions{gap:8px}}@media (max-width:900px){.desktop-nav{display:none}.topbar{height:67px}.mobile-nav{background:var(--paper);border-top:1px solid var(--line);z-index:5;justify-content:space-around;height:68px;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-nav button{color:var(--muted);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:60px;font-size:10px;display:flex}.mobile-nav button.active{color:var(--ink)}.footer{padding-bottom:95px}.home-hero{grid-template-columns:1fr}.hero-copy{min-height:420px}.hero-visual{min-height:430px;max-height:530px}.hero-placeholder{min-height:430px}.hero-days{margin-top:50px}.story-grid{grid-template-rows:250px 250px;grid-template-columns:1fr 1fr}.story-0{grid-row:span 2}.story-3{grid-column:auto}.gallery-grid{columns:3}.place-grid,.letter-grid,.book-grid{grid-template-columns:repeat(2,1fr)}.toolbar{flex-direction:column;align-items:stretch}.filters{width:100%}}@media (max-width:600px){.auth-shell{grid-template-columns:1fr}.auth-art{display:none}.auth-panel{min-height:100vh;padding:35px}.onboard-grid,.two-col,.home-bottom,.diary-list,.diary-perspectives{grid-template-columns:1fr}.onboard-grid form+form{border-left:0;border-top:1px solid var(--line);padding:30px 0 0}.section{padding:55px 22px}.page-top{flex-direction:column;align-items:flex-start}.page-top h1{font-size:42px}.home-hero{flex-direction:column;display:flex}.hero-copy{min-height:385px;padding:45px 25px}.hero-copy h1{margin:25px 0 10px;font-size:46px}.hero-visual,.hero-placeholder{min-height:350px}.hero-days strong{font-size:64px}.home-meta{padding:14px 22px}.home-meta span:last-child{display:none}.story-grid{gap:12px;display:flex;overflow-x:auto}.story{min-width:240px;height:310px}.story-0{min-width:280px}.story-info{padding:20px}.story-info h3{font-size:21px}.home-bottom>div{padding:30px}.gallery-grid{columns:2;column-gap:12px}.gallery-item{margin-bottom:18px}.gallery-item figcaption,.gallery-item figcaption small{display:block}.gallery-item.g-1,.gallery-item.g-3{padding-top:0}.memory-row{grid-template-columns:100px 1fr auto;gap:13px}.row-image{width:100px;height:105px}.row-copy h3{font-size:18px}.row-copy p{display:none}.row-copy .eyebrow{font-size:9px}.heart{padding:0}.place-grid,.letter-grid,.book-grid,.form-grid{grid-template-columns:1fr}.timeline-entry{grid-template-columns:55px 1fr 16px;gap:10px}.timeline-entry img{display:none}.timeline-entry h3{font-size:18px}.timeline-entry>span{font-size:16px}.dialog{max-height:96vh;padding:28px 20px}.dialog h1{font-size:34px}.dialog h2{font-size:28px}.overlay{padding:8px}.detail-tools{flex-wrap:wrap}.book-stats{gap:8px}}@media print{.topbar,.mobile-nav,.footer,.dialog-close,.dialog-actions,.detail-tools{display:none!important}.overlay{background:#fff;padding:0;position:static}.dialog{width:100%;max-height:none;padding:0;overflow:visible}.app-shell>main{display:none}.book-detail section{break-inside:avoid}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.bulk-list{max-height:250px;overflow:auto}.bulk-list>div{border-bottom:1px solid var(--line);grid-template-columns:1fr 150px 1fr;align-items:center;gap:10px;padding:10px 0;display:grid}.bulk-list input{border:1px solid var(--line);background:var(--paper);min-width:0;padding:8px}.bulk-list strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}@media (max-width:600px){.bulk-list>div{grid-template-columns:1fr 1fr}.bulk-list>div input:last-child{grid-column:span 2}}.media-tools{gap:15px;margin:10px 0 20px;display:flex}.media-tools button{border:0;border-bottom:1px solid var(--line);color:var(--muted);background:0 0;padding:4px 0;font-size:11px}.notification-row{border-bottom:1px solid var(--line);align-items:center;gap:15px;padding:10px 0;display:flex}.notification-row span{flex:1}.notification-row small{color:var(--muted)}.notification-row button{background:0 0;border:0;font-size:11px;text-decoration:underline}.more-links{grid-template-columns:repeat(2,1fr);gap:0 20px;display:grid}.more-links button{border:0;border-bottom:1px solid var(--line);color:var(--ink);background:0 0;justify-content:space-between;padding:13px 0;display:flex}.hero-age{letter-spacing:.08em;color:var(--muted);margin-top:12px;font-size:11px}.letter-attachment{object-fit:contain;max-height:500px;margin-top:35px}.version-history{border-top:1px solid var(--line);margin:20px 0;padding:20px 0}.version-history summary{cursor:pointer;font-size:12px}.version-history>div{border-bottom:1px solid var(--line);padding:10px 0}.version-history small{color:var(--muted)}.version-history p{white-space:pre-wrap;font-size:12px}.avatar-stack img,.profile-avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}@keyframes letterReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.letter-body{animation:.65s both letterReveal}@media (prefers-reduced-motion:reduce){.letter-body{animation:none}}.gallery-toolbar{border-block:1px solid var(--line);margin-bottom:28px;padding:15px 0}.gallery-selects{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.gallery-selects select,.gallery-selects button{background:var(--paper);border:1px solid var(--line);color:var(--ink);padding:7px 10px;font-size:11px}.gallery-selects button.chosen{background:var(--ink);color:var(--paper)}.gallery-item figcaption button{color:var(--muted);background:0 0;border:0;padding:0}.gallery-item figcaption button.liked{color:#b57883}.gallery-item figcaption button.liked svg{fill:#b57883}.quick-actions{grid-template-columns:repeat(4,1fr);gap:1px;max-width:1500px;margin:0 auto;padding:25px clamp(22px,5vw,90px) 0;display:grid}.quick-actions button{background:var(--paper);min-height:84px;color:var(--ink);border:0;justify-content:center;align-items:center;gap:12px;display:flex}.quick-actions button:hover{background:#eee8e1}@media (max-width:600px){.quick-actions{grid-template-columns:repeat(2,1fr);padding:15px 22px 0}.quick-actions button{min-height:70px}}.diary-photos{grid-template-columns:repeat(2,1fr);gap:12px;margin:28px 0;display:grid}.diary-photos img{object-fit:cover;width:100%;height:260px}@media (max-width:600px){.diary-photos img{height:160px}}.annual-picks{background:#ece5dd;margin:30px 0;padding:24px}.annual-picks h2{margin-bottom:12px;font-size:22px}.annual-picks p{border-top:1px solid #d8cac0;padding:9px 0}.place-toolbar{flex-wrap:wrap;gap:10px;margin-bottom:25px;display:flex}.place-toolbar select,.place-toolbar button{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:8px 12px;font-size:11px}.place-toolbar button.chosen{background:var(--ink);color:#fff}.map-panel{background:var(--paper);grid-template-columns:1fr 220px;min-height:420px;margin-bottom:25px;display:grid}.map-panel iframe{border:0;width:100%;height:420px}.map-panel>div{max-height:420px;padding:20px;overflow:auto}.map-panel button{border:0;border-bottom:1px solid var(--line);text-align:left;width:100%;color:var(--ink);background:0 0;padding:12px;display:block}@media (max-width:600px){.map-panel{grid-template-columns:1fr}.map-panel iframe{height:330px}.map-panel>div{padding:10px;display:flex;overflow:auto}.map-panel button{white-space:nowrap;width:auto}}.save-error{color:#8a4854;background:#f8e9e8;margin:20px 0;padding:14px 16px}.save-error small{margin-top:8px;display:block}.save-status{color:#52624b;background:#edf0e8;margin:18px 0;padding:12px 16px}.dialog:has(.save-status) .field{pointer-events:none;opacity:.75}:root{--content:1440px;--gutter:clamp(20px, 4.5vw, 72px)}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline-offset:5px;outline:2px solid #ae6d7a}button:disabled{cursor:wait}button svg{flex-shrink:0}h1,h2,h3,p,figcaption,.detail-body,.letter-body{overflow-wrap:anywhere}.clamp-two{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;white-space:normal!important}.section{max-width:var(--content);padding:56px var(--gutter)}.section-head h2{font-size:34px}.section-head,.page-top{align-items:center}.page-top{margin-bottom:32px}.page-top h1{font-size:clamp(36px,4.4vw,58px)}.page-top>div,.row-copy,.timeline-copy,.form-grid>*,.two-col>*,.story,.gallery-item,.home-bottom>div{min-width:0}.button{border-radius:4px}.button.primary{background:#685257}.button.primary:hover{background:#805d66}.pill{color:#83666c;background:#eee5e3}.pill:nth-child(3n+2){color:#687260;background:#e4e9df}.pill:nth-child(3n){color:#83708e;background:#ece5f0}.empty{border-style:dashed;border-radius:5px;padding:56px 24px}.empty-mark{color:#b1848e}.topbar{height:82px;padding:0 var(--gutter);gap:28px}.brand{font-size:19px}.brand-mark{background:#685257}.desktop-nav{flex-shrink:0;gap:25px;overflow:visible}.desktop-nav>button{padding:29px 0;font-size:13px}.nav-more{color:var(--muted);font-size:13px;position:relative}.nav-more summary{cursor:pointer;align-items:center;gap:5px;min-height:44px;list-style:none;display:flex}.nav-more summary::-webkit-details-marker{display:none}.nav-more summary.active{color:#9b5d70}.nav-more>div{z-index:6;background:var(--paper);border:1px solid var(--line);width:220px;padding:12px 20px;position:absolute;top:52px;right:0;box-shadow:0 12px 30px #51494a0d}.nav-more>div button{border-bottom:1px solid #eee5df;justify-content:space-between;align-items:center;width:100%;padding:12px 0;font-size:13px;display:flex}.top-actions{gap:12px}.top-actions>button{min-width:36px;min-height:40px}.avatar-stack span{width:32px;height:32px}.home-hero{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);max-width:1680px;min-height:550px;margin:auto}.hero-copy{padding:38px var(--gutter) 40px}.hero-copy h1{letter-spacing:.015em;margin:26px 0 18px;font-size:clamp(40px,4.4vw,68px)}.hero-copy>p{font-size:13px;line-height:1.9}.hero-actions{flex-wrap:wrap;gap:20px;margin:30px 0}.hero-days{gap:14px;margin-top:auto}.hero-days strong{font-size:66px}.hero-days span{letter-spacing:.12em}.hero-age{line-height:1.8}.hero-visual{min-height:550px}.hero-photo{position:absolute;inset:0}.hero-caption{pointer-events:none;padding:45px 28px 24px}.cover-edit{min-height:42px;color:var(--ink);background:#fffcf9ed;border:0;border-radius:3px;align-items:center;gap:7px;padding:10px 14px;font-size:11px;display:flex;position:absolute;top:20px;right:20px}.couple-signature{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:25px;font-size:12px;display:flex}.couple-signature>span{align-items:center;gap:8px;display:flex}.couple-signature i{color:#fff;border:2px solid var(--paper);background:#d7b6b9;border-radius:50%;place-items:center;width:30px;height:30px;font-style:normal;display:grid}.couple-signature img{object-fit:cover;border-radius:50%;width:100%;height:100%}.couple-signature>span+span:before{content:"&";color:#b17c86;margin-right:4px;font-family:Georgia;font-style:italic}.couple-signature>button{color:var(--muted);background:0 0;border:1px dashed #baa8a5;border-radius:30px;align-items:center;gap:6px;padding:5px 10px;font-size:11px;display:flex}.quick-actions{max-width:var(--content);padding:22px var(--gutter) 0;gap:12px}.quick-actions button{border:1px solid #e4d9d0;border-radius:4px;min-height:68px;font-size:13px}.quick-actions button:nth-child(2) svg{color:#b87b89}.quick-actions button:nth-child(3) svg{color:#8d7d9d}.quick-actions button:nth-child(4) svg{color:#7f9078}.story-grid{grid-template-rows:225px 225px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr);gap:18px;margin-top:26px}.stories-1{grid-template-rows:400px;grid-template-columns:1fr}.stories-1 .story-0{grid-row:auto}.stories-2{grid-template-rows:390px;grid-template-columns:1.2fr 1fr}.stories-2 .story-0{grid-row:auto}.stories-3{grid-template-rows:360px}.stories-3 .story-0{grid-row:auto}.story-text-only{background:#dfe2d6}.story-info h3{overflow-wrap:anywhere}.home-bottom{max-width:calc(var(--content) - 2 * var(--gutter));gap:20px;margin:0 auto 56px}.home-bottom>div{min-height:260px;padding:32px}.home-bottom>div:first-child{background:#eee3e1}.home-bottom>div+div{background:#e7e9df}.home-bottom h2{margin:10px 0 22px;font-size:27px}.remember-link{color:var(--ink);gap:16px;padding:16px 0}.remember-link>img{object-fit:cover;flex-shrink:0;width:92px;height:110px}.remember-copy{flex-direction:column;flex:1;gap:7px;min-width:0;display:flex}.remember-copy small{color:#8c777d;font-size:10px}.remember-copy strong{font-size:20px}.remember-copy>span{color:#8c777d;font-size:12px}.date-line{align-items:center;gap:20px}.date-line>strong{white-space:nowrap;align-items:baseline;gap:7px;display:flex}.date-line b{font:32px Georgia,serif}.date-line small{color:#74806b;font-size:11px}.toolbar{flex-wrap:wrap;gap:22px;padding:14px 0}.search-box{background:var(--paper);border:1px solid var(--line);border-radius:4px;flex:260px;min-width:0;max-width:360px;padding:10px 13px}.filters{flex-wrap:wrap;flex:1;min-width:0;overflow:visible}.filters button{border-radius:3px;min-height:38px}.filters button.chosen{color:#6c4f57;background:#e8d5d7}.memory-row{cursor:pointer;grid-template-columns:230px minmax(0,1fr) 44px;gap:28px;padding:24px 0}.row-image{border-radius:3px;width:100%;height:174px}.row-copy h3{margin:8px 0;font-size:28px;line-height:1.45}.row-copy p{-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:13px;line-height:1.9;display:-webkit-box}.row-copy>div{flex-wrap:wrap;gap:5px;margin-top:12px;display:flex}.row-copy .pill{margin:0}.row-copy .eyebrow{letter-spacing:.08em;font-size:10px}.heart{align-self:center;place-items:center;width:44px;height:44px;display:grid}.gallery-grid{columns:3;column-gap:24px}.gallery-item{margin-bottom:30px}.gallery-item img{border-radius:2px}.gallery-item figcaption{grid-template-columns:minmax(0,1fr) 30px;align-items:start;gap:5px 12px;padding:12px 0;display:grid}.gallery-item figcaption>small{white-space:normal;grid-area:2/1;font-size:10px}.gallery-item figcaption>button{grid-area:1/2/span 2;min-height:36px}.gallery-selects select{min-width:0;max-width:100%;min-height:40px}.gallery-selects button{min-height:40px}.year-jump{letter-spacing:.05em;justify-content:space-between;align-items:center;gap:15px;font-size:12px;display:flex;position:static}.year-jump select{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:3px;margin-left:8px;padding:9px}.timeline-year{padding-top:32px;scroll-margin-top:24px}.timeline-year>h2{border-color:var(--line);color:#94717b;padding-bottom:12px;font-size:46px}.timeline-year>h2 span{color:var(--muted);margin-left:12px}.timeline-entry{grid-template-columns:70px minmax(0,1fr) 144px;align-items:center;gap:24px;padding:25px 0}.timeline-entry>time{border-right:1px solid var(--line);flex-direction:column;align-self:start;align-items:center;padding-top:3px;font-family:Georgia,serif;display:flex}.timeline-entry time b{font-size:30px;font-weight:400;line-height:1.3}.timeline-entry time small{margin-top:5px;font-size:11px}.timeline-entry>.timeline-copy{font:inherit;display:block}.timeline-copy h3{margin:6px 0;font-size:23px;line-height:1.5}.timeline-copy p{white-space:normal;font-size:13px;line-height:1.85}.timeline-copy>small{letter-spacing:.08em;font-size:10px}.timeline-place{color:var(--muted);overflow-wrap:anywhere;align-items:center;gap:5px;margin-top:8px;font-size:11px;display:flex}.timeline-entry>.timeline-thumb{aspect-ratio:4/3;color:#ad9e98;background:#e8e1d8;border-radius:3px;place-items:center;width:144px;display:grid;overflow:hidden}.timeline-entry .timeline-thumb img{object-fit:cover;width:100%;height:100%;display:block}.timeline-entry.important h3:before{content:"";background:var(--rose);vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-right:8px;display:inline-block}.timeline-entry:hover .timeline-copy h3{color:#9c6676}.diary-list{gap:24px}.diary-card{border-top:3px solid #d8b3bc;min-width:0;padding:30px;transition:transform .2s}.diary-card:nth-child(2n){border-color:#a9b5a2}.diary-card h2{font-size:27px}.diary-card p{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.diary-card:hover{transform:translateY(-3px)}.diary-editor textarea{background:repeating-linear-gradient(var(--paper), var(--paper) 32px, #e9e1da 33px, var(--paper) 34px);border:0;border-bottom:1px solid var(--line);min-height:300px;padding-top:7px;font-size:16px;line-height:2.1}.diary-save{background:var(--paper);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:15px;margin-top:26px;padding:18px 0 4px;display:flex;position:sticky;bottom:-28px}.diary-save>span{color:var(--muted);font-size:11px}.diary-perspectives section{border-top:3px solid #dcb5be;min-width:0;padding:25px}.diary-perspectives section:nth-child(2){background:#f0f1e9;border-color:#a9b5a2}.diary-perspectives section>span{color:#8d6672;font-size:13px}.version-history{grid-column:1/-1}.dialog{overscroll-behavior:contain;border-radius:6px}.dialog-close{background:var(--paper);border-radius:50%;place-items:center;width:40px;height:40px;display:grid;top:12px;right:12px}.detail-dialog h1{padding-right:12px;font-size:clamp(30px,4vw,44px)}.detail-body{max-width:65ch;margin:28px 0 36px;font-size:16px;line-height:2.1}.detail-media{gap:28px}.detail-media img{background:#f2eee8;border-radius:3px}.detail-tools{flex-wrap:wrap;gap:12px}.detail-tools button{min-height:40px}.field input,.field textarea,.field select{border-radius:4px;min-width:0}.field input[type=file]{width:100%;padding:10px;font-size:12px}.field input[type=range]{accent-color:#b88190}.cover-preview{background:var(--oat);height:280px;margin:24px 0 8px}.cover-preview img{object-fit:cover;width:100%;height:100%}.cover-choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-height:260px;margin-top:20px;display:grid;overflow:auto}.cover-choices button{aspect-ratio:1;background:0 0;border:2px solid #0000;padding:3px}.cover-choices button[aria-pressed=true]{border-color:#b88190}.cover-choices img{object-fit:cover;width:100%;height:100%}.lightbox{padding:70px 80px 100px}.lightbox>img{max-width:100%;max-height:calc(100dvh - 200px)}.lightbox>button{color:#fff;background:#ffffff12;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute}.lightbox .photo-prev{top:45%;left:18px}.lightbox .photo-next{top:45%;right:18px}.lightbox>.lightbox-count{color:#c8bfc0;letter-spacing:.15em;margin:0;font-size:12px;position:absolute;top:28px;left:28px}.lightbox>.lightbox-caption{align-items:center;gap:20px;width:calc(100% - 100px);max-width:900px;margin:0;font-size:12px;display:flex;position:absolute;bottom:30px}.lightbox-caption>span{overflow-wrap:anywhere;flex:1;min-width:0}.lightbox-caption small{color:#ac9fa3;margin-top:5px;display:block}.lightbox-caption button{white-space:nowrap;min-height:44px}.toast{overflow-wrap:anywhere;border-radius:4px;max-width:calc(100vw - 32px)}.more-links button{min-height:50px}.footer{max-width:1680px;margin:auto}.app-shell>main>.minor-note{padding:8px var(--gutter);background:#e9ecdf;margin:0}@media (min-width:1700px){.gallery-grid{columns:4}.home-hero,.hero-visual{min-height:600px}}@media (max-width:1150px){.topbar{gap:16px;padding:0 24px}.desktop-nav{gap:17px}.brand{font-size:17px}.brand small{font-size:8px}.top-actions{gap:5px}.hero-copy{padding:34px}.hero-copy h1{font-size:48px}.home-bottom{margin-left:var(--gutter);margin-right:var(--gutter)}}@media (max-width:900px){.home-hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:490px;display:grid}.hero-copy{min-height:490px;padding:30px 24px}.hero-copy h1{font-size:39px}.hero-visual{min-height:490px;max-height:none}.hero-days{margin-top:20px}.hero-days strong{font-size:54px}.hero-actions{gap:12px}.home-bottom{grid-template-columns:1fr 1fr;gap:14px}.home-bottom>div{padding:24px}.home-bottom h2{font-size:23px}.memory-row{grid-template-columns:190px minmax(0,1fr) 44px;gap:20px}.row-image{height:150px}.mobile-nav{height:calc(66px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}.footer{padding-bottom:calc(100px + env(safe-area-inset-bottom))}.mobile-nav button.active{color:#a8677c}.mobile-nav button.active svg{stroke-width:2.4px}.toast{bottom:calc(80px + env(safe-area-inset-bottom));right:16px}.lightbox{z-index:30}.toolbar{flex-direction:row}.search-box{max-width:none}.filters{flex-basis:100%}}@media (max-width:600px){:root{--gutter:20px}.topbar{gap:8px;height:66px;padding:0 16px}.brand{gap:8px;font-size:17px}.brand-mark{width:34px;height:34px;font-size:27px}.top-actions{gap:0}.top-actions>button{min-width:34px}.avatar-stack span{width:28px;height:28px}.home-hero{flex-direction:column;display:flex}.hero-copy{min-height:0;padding:28px 24px 26px}.couple-signature{gap:10px;margin-bottom:20px}.hero-copy h1{max-width:330px;margin:20px 0 14px;font-size:40px}.hero-copy>p{font-size:12px}.hero-actions{margin:24px 0}.hero-days{gap:12px;margin:0}.hero-days strong{font-size:48px}.hero-days span{font-size:11px}.hero-age{font-size:10px}.hero-visual{width:100%;height:330px;min-height:330px}.cover-edit{min-height:38px;padding:8px 10px;top:14px;right:14px}.hero-caption{padding:35px 22px 18px;font-size:10px}.quick-actions{gap:8px;padding-top:16px}.quick-actions button{gap:9px;min-height:58px;font-size:12px}.section{padding:36px 20px}.section-head{align-items:center;gap:15px}.section-head h2{font-size:28px}.section-head>.subtle-link{white-space:nowrap;font-size:11px}.story-grid{grid-template-rows:200px 200px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;display:grid;overflow:visible}.story{min-width:0;height:auto}.story-0{grid-row:span 2;min-width:0}.story-3{grid-column:span 2;height:200px}.story-info{padding:18px 12px}.story-info h3{font-size:18px}.story-info span{font-size:9px}.stories-1{grid-template-rows:310px;grid-template-columns:1fr}.stories-1 .story-0{grid-row:auto}.stories-2{grid-template-rows:290px}.stories-2 .story-0{grid-row:auto}.stories-3{grid-template-rows:180px 180px}.stories-3 .story-0{grid-row:span 2}.home-bottom{grid-template-columns:1fr;gap:14px;margin:0 20px 36px;display:grid}.home-bottom>div{min-height:0;padding:24px}.home-bottom h2{margin-bottom:18px;font-size:25px}.page-top{align-items:flex-start;gap:20px;margin-bottom:26px}.page-top h1{font-size:36px}.page-top p{font-size:12px}.page-top>.button{width:100%}.toolbar{gap:12px}.search-box{flex-basis:100%;width:100%;padding:10px}.filters{gap:4px}.filters button{padding:7px 9px;font-size:11px}.memory-row{grid-template-columns:104px minmax(0,1fr) 30px;align-items:start;gap:12px;padding:20px 0}.row-image{height:135px}.row-copy h3{margin:7px 0;font-size:19px;line-height:1.5}.row-copy .eyebrow{letter-spacing:0;font-size:9px;line-height:1.7;display:block}.row-copy p{font-size:12px;line-height:1.75;display:-webkit-box}.row-copy>div{gap:4px;margin-top:8px}.row-copy .pill{padding:2px 7px;font-size:9px}.heart{align-self:start;width:30px;height:44px}.gallery-grid{columns:2;column-gap:12px}.gallery-item figcaption{gap:4px;font-size:11px;display:grid}.gallery-item figcaption>small{font-size:9px}.gallery-item.g-1,.gallery-item.g-3{padding-top:0}.gallery-selects{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.timeline-year{padding-top:26px}.timeline-year>h2{font-size:38px}.timeline-entry{grid-template-columns:42px minmax(0,1fr) 76px;gap:12px;padding:22px 0}.timeline-entry time b{font-size:25px}.timeline-entry time small{font-size:10px}.timeline-entry>.timeline-thumb{align-self:start;width:76px;margin-top:5px}.timeline-copy h3{font-size:18px;line-height:1.5}.timeline-copy>small{letter-spacing:0;font-size:9px}.timeline-copy p{font-size:12px;line-height:1.8}.timeline-place{font-size:10px}.year-jump{flex-wrap:wrap;gap:8px;font-size:10px}.year-jump select{padding:8px 4px;font-size:11px}.diary-card{min-height:250px;padding:26px}.diary-card h2{font-size:26px}.diary-card p{font-size:14px}.dialog{width:100%;max-height:calc(100dvh - 24px);padding:36px 20px 22px}.dialog h2{padding-right:20px}.dialog .field input:not([type=range]),.dialog .field select,.dialog textarea{font-size:16px}.dialog-actions{flex-wrap:wrap}.dialog-actions .button{flex:1;min-width:120px}.diary-save{flex-wrap:wrap;bottom:-22px}.diary-save .button{margin-left:auto}.diary-perspectives{gap:16px;margin:28px 0}.diary-perspectives section{padding:22px}.cover-preview{height:230px}.cover-choices{grid-template-columns:repeat(3,minmax(0,1fr))}.lightbox{padding:70px 14px 150px}.lightbox>img{max-height:calc(100dvh - 230px)}.lightbox .photo-prev,.lightbox .photo-next{background:#ffffff20;width:44px;height:44px;top:auto;bottom:96px}.lightbox .photo-prev{left:20px}.lightbox .photo-next{right:20px}.lightbox>.lightbox-caption{gap:12px;width:calc(100% - 40px);font-size:11px;bottom:20px}.lightbox-caption>span{max-width:46%}.lightbox-caption button{font-size:11px;gap:4px!important}.lightbox .close{top:14px;right:14px}.lightbox>.lightbox-count{top:28px;left:20px}.detail-body{font-size:15px;line-height:2.1}.media-tools{flex-wrap:wrap;gap:12px}.more-links{gap:0 16px}.book-detail>.book-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.two-col{gap:36px}.notification-row{flex-wrap:wrap}.notification-row span{min-width:0}.place-grid,.letter-grid,.book-grid{grid-template-columns:minmax(0,1fr)}.memory-row{grid-template-columns:96px minmax(0,1fr) 44px;gap:10px}.memory-row .heart{width:44px}.gallery-item figcaption{grid-template-columns:minmax(0,1fr) 36px}.gallery-item figcaption>button{min-height:44px}.diary-save{padding-bottom:calc(4px + env(safe-area-inset-bottom))}}
:root{--cream:#f6f0e6;--paper:#fffdf6;--oat:#e9dfce;--ink:#353035;--muted:#776c68;--rose:#d94f4a;--sage:#86a18a;--lav:#eaa2b4;--line:#d8cebf;--tomato:#d94f4a;--yellow:#f1cb64;--blue:#5265bd;--pink:#eaa2b4;--green:#86a18a;--display:"Noto Serif SC", "Songti SC", "STSong", serif;--hand:"LXGW WenKai", "Kaiti SC", "STKaiti", serif}body{background-color:var(--cream);color:var(--ink);background-image:radial-gradient(#776c6810 .6px,#0000 .6px);background-size:5px 5px}h1,h2{font-family:var(--display)}.eyebrow{letter-spacing:.04em;text-transform:none;color:var(--muted);font-weight:500}.handwritten{font-family:var(--hand);font-weight:400;line-height:1.7}.hand-loop{width:155px;height:32px;color:var(--tomato);pointer-events:none;margin-top:-8px;display:block}.button{border-radius:3px;min-height:46px;font-weight:500}.button.primary{background:var(--tomato);color:#fff;box-shadow:3px 3px #35303516}.button.primary:hover{background:#b83936}.button.outline{background:var(--paper);border-color:var(--line)}.button.link{color:var(--blue)}:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.topbar{background:var(--cream);border-bottom:1px dashed var(--line);z-index:30;position:relative}.brand-mark{color:var(--tomato);border:2px solid var(--tomato);background:0 0;border-radius:50%;transform:rotate(-9deg)}.brand>span:last-child small{letter-spacing:.04em}.desktop-nav{gap:5px}.desktop-nav>button{border-radius:3px;padding:8px 12px}.desktop-nav>button.active{background:var(--yellow);color:var(--ink);border-color:#0000;transform:rotate(-2deg)}.nav-more summary{padding:8px 12px}.nav-more>div{background:var(--paper);border:1px solid var(--line);border-radius:3px}.photo-frame{min-width:0;margin:0;position:relative}.photo-frame img{width:100%;height:auto;display:block}.photo-frame--polaroid{background:var(--paper);padding:12px 12px 0;box-shadow:2px 4px #35303510}.photo-frame--polaroid>figcaption{font-family:var(--hand);padding:13px 3px 17px}.photo-frame--film{background:var(--ink);color:var(--paper);border-left:7px dotted var(--cream);border-right:7px dotted var(--cream);padding:13px 19px}.photo-frame--film>figcaption{padding-top:10px;font-size:12px}.photo-frame--full-bleed{box-shadow:none;background:0 0;padding:0}.paper-note{color:var(--ink);padding:22px;box-shadow:2px 3px #3530350c}.paper-note--yellow{background:var(--yellow)}.paper-note--pink{background:var(--pink)}.paper-note--blue{background:#e3e6f5}.paper-note--green{background:#dce7dc}.archive-label{background:var(--yellow);letter-spacing:.05em;border:1px dashed #35303555;padding:5px 12px;font-size:11px;display:inline-block;transform:rotate(-2deg)}.home-hero{max-width:1320px;padding:48px var(--gutter) 24px;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);align-items:start;gap:16px 42px;min-height:0;margin:0 auto;display:grid;position:relative}.hero-copy{z-index:2;min-width:0;padding:16px 0 0;display:block}.couple-signature{gap:12px;margin-bottom:26px}.couple-signature i{border:2px solid var(--paper);box-shadow:0 0 0 1px var(--line)}.hero-copy h1{letter-spacing:-.03em;max-width:8em;color:var(--tomato);margin:20px 0;font-size:clamp(36px,4vw,57px);line-height:1.3}.hero-copy>p{color:var(--ink);font-size:18px}.hero-actions{gap:12px;margin:20px 0}.hero-days{background:var(--yellow);border:1px dashed #35303570;gap:12px;margin:10px 0;padding:8px 20px;display:inline-flex;position:relative;transform:rotate(-3deg)}.hero-days strong{font-family:Georgia,serif;font-size:42px;line-height:1.2}.hero-days span{letter-spacing:0;font-size:11px}.hero-age{max-width:280px;color:var(--muted);margin-top:13px;font-size:11px}.hero-visual{isolation:isolate;background:var(--paper);height:460px;min-height:0;margin:10px 8px 0 0;padding:12px 12px 52px;overflow:visible;transform:rotate(2deg);box-shadow:3px 6px #35303512}.hero-visual:before{content:"";z-index:2;pointer-events:none;clip-path:polygon(3% 0,100% 5%,97% 100%,0 92%);background:#f1cb64a8;width:100px;height:30px;position:absolute;top:-14px;left:40%;transform:rotate(-8deg)}.hero-photo{object-fit:cover;cursor:zoom-in;width:100%;height:100%;position:static}.hero-caption{color:var(--ink);font-family:var(--hand);white-space:nowrap;text-overflow:ellipsis;background:0 0;padding:0;font-size:14px;position:absolute;bottom:10px;left:16px;right:12px;overflow:hidden}.cover-edit{z-index:3;background:#fffdf6eb;border-radius:2px;min-height:40px;padding:6px 10px;font-size:11px;top:22px;right:22px}.hero-placeholder{background:#e9dfce;height:100%;min-height:0}.hero-scraps{z-index:3;pointer-events:none;grid-column:1/-1;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:38px;margin:-32px 7% 0 25%;display:grid}.hero-scraps>*{pointer-events:auto}.hero-scrap{max-width:240px;transform:rotate(-6deg)}.hero-scrap img{object-fit:cover;cursor:zoom-in;height:145px}.hero-scrap figcaption{overflow-wrap:anywhere;font-size:12px}.hero-scrap.scrap-1{margin-top:42px;transform:rotate(5deg)}.hero-note{margin-top:35px;padding:22px 16px;transform:rotate(-3deg)}.hero-note .handwritten{font-size:21px;display:block}.hero-note>span:last-child{margin-top:12px;font-size:10px;display:block}.home-meta{border-top:1px dashed var(--line);border-bottom:0;max-width:1200px;margin:20px auto 0;padding:16px 0}.quick-actions{border:0;gap:12px;max-width:1200px;margin:0 auto 24px;padding:0}.quick-actions button{background:var(--paper);border:1px solid var(--line);min-height:54px;padding:15px}.quick-actions button:first-child{background:var(--yellow)}.quick-actions button:nth-child(3){color:#3f5099;background:#e3e6f5}.quick-actions button:last-child{background:#dce7dc}.section-head{border-bottom:0;align-items:end}.section-head h2{font-size:32px}.section-head .eyebrow{color:var(--tomato)}.story-grid{gap:22px}.story{border-radius:0}.story-info{padding:24px!important}.home-bottom{background:0 0;gap:30px}.today-memory{background:#e3e6f5;position:relative}.today-memory:before{content:"";background:var(--blue);height:5px;position:absolute;top:0;left:0;right:0}.upcoming{background:var(--yellow);border:1px dashed #35303566;transform:rotate(1deg)}.upcoming .date-line{border-color:#35303530}.remember-link{background:var(--paper);padding:12px}.home-bottom h2{font-size:26px}.page-top{border-bottom:0;margin-bottom:28px}.page-top h1{color:var(--tomato);font-size:clamp(32px,4vw,52px)}.page-top .eyebrow{font-family:var(--hand);letter-spacing:0;font-size:15px}.page-top p{max-width:50ch}.gallery-page .page-top{padding:18px 0 22px;position:relative}.gallery-page .page-top:after{content:"每一张，都是我们的生活。";font-family:var(--hand);color:var(--blue);margin-left:auto;margin-right:30px;font-size:19px;transform:rotate(-5deg)}.gallery-toolbar{border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);margin-bottom:35px;padding:18px 0}.filters button.chosen,.filters button.active{background:var(--yellow);color:var(--ink)}.gallery-grid{columns:3;column-gap:36px;padding:12px}.gallery-item{break-inside:avoid;margin:0 0 36px;transition:transform .2s;transform:rotate(-1.4deg)}.gallery-item:nth-child(2n){transform:rotate(1.5deg)}.gallery-item:hover{z-index:2;transform:translateY(-4px)rotate(0)}.gallery-item img{object-fit:contain;cursor:zoom-in;border-radius:0;max-height:none;height:auto!important}.gallery-item.g-0:before{content:"";z-index:1;pointer-events:none;background:#eaa2b4a6;width:65px;height:23px;position:absolute;top:-10px;left:38%;transform:rotate(8deg)}.gallery-item figcaption{font-family:var(--hand);padding:13px 4px 16px;font-size:16px}.gallery-item figcaption small{color:inherit;opacity:.8;font-family:inherit;font-size:12px}.gallery-item.photo-frame--film figcaption button{color:var(--paper)}.gallery-item.photo-frame--full-bleed{border-bottom:2px solid var(--blue)}.scrapbook-detail{background:var(--paper);width:min(980px,100vw - 48px);max-width:980px;padding:45px 56px}.scrapbook-detail .detail-meta{color:var(--blue);margin:24px 0 12px}.scrapbook-detail h1{margin-bottom:12px;font-size:clamp(30px,4vw,46px)}.scrapbook-detail .detail-media{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:25px;margin-top:28px;display:grid}.scrapbook-detail .detail-media figure{background:var(--cream);min-width:0;padding:10px;transform:rotate(-1deg)}.scrapbook-detail .detail-media figure:nth-child(2n){transform:rotate(1deg)}.scrapbook-detail .detail-media figure:first-child{background:0 0;grid-column:1/-1;padding:0;transform:none}.scrapbook-detail .detail-media img{object-fit:contain;border-radius:0;width:100%;height:auto;max-height:640px}.scrapbook-detail .detail-media figcaption{font-family:var(--hand);overflow-wrap:anywhere;font-size:15px}.media-tools{flex-wrap:wrap;gap:8px}.detail-story{border-top:1px dashed var(--line);max-width:65ch;margin:32px auto;padding:28px 0}.detail-story>.handwritten{color:var(--blue);font-size:19px}.detail-story .detail-body{white-space:pre-wrap;overflow-wrap:anywhere;margin:14px 0 0}.contributions{background:#f6f0e6;padding:22px}.comments{border-top:1px dashed var(--line)}.liked svg{fill:var(--tomato);color:var(--tomato);animation:.25s ease-out collect}.lightbox{background:#252025f5}.lightbox-caption{color:#fffdf6}.dialog{border-radius:3px}.dialog-close{border:1px solid var(--line)}@keyframes collect{50%{transform:scale(1.25)rotate(-8deg)}}@keyframes paper-in{0%{opacity:0;transform:translateY(7px)rotate(-.25deg)}to{opacity:1;transform:none}}.app-shell>main{animation:.22s ease-out paper-in}.scrapbook-detail{animation:.2s ease-out paper-in}@media (min-width:1600px){.hero-visual{height:510px}.hero-copy h1{font-size:60px}}@media (max-width:1000px){.home-hero{gap:24px;padding-top:30px}.hero-copy h1{font-size:38px}.hero-visual{height:430px}.hero-scraps{gap:22px;margin-left:16%}.hero-scrap img{height:115px}.hero-note .handwritten{font-size:17px}.home-meta,.quick-actions{margin-left:var(--gutter);margin-right:var(--gutter)}.gallery-grid{columns:2}.gallery-page .page-top:after{display:none}}@media (max-width:640px){.home-hero{grid-template-columns:minmax(0,1fr);gap:24px;padding:24px 22px 14px;display:grid}.hero-copy{grid-template-columns:minmax(0,1fr) auto;gap:0 12px;padding:0;display:grid}.couple-signature{grid-column:1/-1;margin-bottom:19px}.hero-copy>.eyebrow{grid-column:1/-1}.hero-copy h1{grid-column:1/-1;max-width:10em;margin:13px 0;font-size:35px}.hero-copy>p{grid-column:1/-1;font-size:17px}.hero-actions{flex-direction:column;grid-column:1;align-items:start;gap:4px;margin:18px 0 0}.hero-actions .button{padding:0 14px;font-size:13px}.hero-days{grid-area:5/2;align-self:center;gap:7px;padding:9px 12px;transform:rotate(4deg)}.hero-days strong{font-size:31px}.hero-days span{font-size:10px}.hero-age{grid-column:1/-1;max-width:none;margin-top:10px}.hero-visual{grid-column:1;height:360px;margin:0 3px;padding:9px 9px 43px;transform:rotate(1.5deg)}.hero-caption{font-size:12px;bottom:10px;left:12px}.cover-edit{font-size:10px;top:18px;right:18px}.hero-scraps{grid-column:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin:-8px 8px 0}.hero-scrap{max-width:none}.hero-scrap img{height:125px}.hero-scrap.scrap-1{margin-top:15px}.hero-note{grid-column:1/-1;justify-content:space-between;align-items:center;gap:18px;margin:8px 0 0;padding:12px 18px;display:flex;transform:rotate(-1deg)}.hero-note .handwritten{font-size:17px}.hero-note .handwritten br{display:none}.hero-note>span:last-child{margin:0;font-size:9px}.hero-scrap.photo-frame--film{border-width:5px;padding:9px}.home-meta{gap:12px;margin-top:12px;font-size:10px}.quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.quick-actions button{padding:12px;font-size:12px}.section-head h2{font-size:27px}.home-bottom{gap:18px}.today-memory,.upcoming{padding:24px}.upcoming{transform:none}.page-top h1{font-size:35px}.gallery-grid{columns:2;column-gap:17px;padding:8px 3px}.gallery-item{margin-bottom:22px}.gallery-item.photo-frame--polaroid{padding:7px 7px 0}.gallery-item.photo-frame--film{border-width:4px;padding:8px 6px}.gallery-item figcaption{grid-template-columns:minmax(0,1fr) 30px;gap:3px;padding:8px 0 10px;font-size:13px}.gallery-item figcaption small{font-size:10px}.gallery-item figcaption>button{min-width:32px;min-height:44px}.gallery-item.g-0:before{width:45px;height:18px}.scrapbook-detail{width:calc(100vw - 20px);padding:34px 20px}.scrapbook-detail .detail-media{grid-template-columns:minmax(0,1fr);gap:14px}.scrapbook-detail .detail-media figure,.scrapbook-detail .detail-media figure:nth-child(2n){transform:none}.detail-story{margin-top:20px;padding-top:20px}.contributions{padding:16px}.mobile-nav{background:var(--paper);border-top:1px dashed var(--line)}.mobile-nav button.active{color:var(--tomato);background:#f1cb6435}.footer{padding-bottom:100px}.photo-frame figcaption,.hero-copy,.detail-meta{overflow-wrap:anywhere}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.hero-visual .hero-photo{object-fit:cover;width:100%;height:100%}.page-diary .page-top{border-left:7px solid var(--blue);background:#e3e6f5;padding:24px 28px}.page-diary .page-top h1{color:var(--blue)}.diary-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;display:grid}.diary-card{background:var(--paper);border:0;border-top:7px solid var(--blue);margin:0;padding:30px 28px 25px;position:relative;box-shadow:3px 4px #35303510}.diary-card:nth-child(2n){border-top-color:var(--pink);background:#fff8fa}.diary-card h2{font-size:27px}.diary-card p{max-width:60ch;line-height:2}.diary-card:before{content:"";border-left:1px solid #d94f4a20;position:absolute;top:24px;bottom:20px;left:16px}.diary-footer{border-top:1px dashed var(--line)}.diary-perspectives section{border-left:4px solid var(--blue);background:#eef0f9;max-width:68ch;padding:25px;line-height:2.1}.diary-perspectives .perspective-yours{border-left-color:var(--pink);background:#fff0f3}.diary-perspectives section p{white-space:pre-wrap;overflow-wrap:anywhere}.diary-perspectives section>span{font-family:var(--hand);font-size:18px}.diary-editor{background:#fffdf6}.diary-editor textarea{background:repeating-linear-gradient(#0000,#0000 32px,#5265bd1a 33px,#0000 34px);min-height:270px;line-height:2.1}.diary-save{border-top:1px dashed var(--line);background:var(--paper)}.page-timeline .page-top h1{color:var(--blue)}.timeline-year>h2{background:var(--blue);color:#fff;border:0;justify-content:space-between;align-items:end;margin:35px 0 22px;padding:25px 30px;font-family:Georgia,serif;font-size:54px;display:flex}.timeline-year>h2 span{font:14px var(--hand);color:#fff}.timeline-entry{border-bottom:1px dashed var(--line);grid-template-columns:64px minmax(0,1fr) 144px;gap:24px;width:100%;min-width:0;padding:23px 0}.timeline-entry>time{background:var(--yellow);border:1px dashed #35303555;align-self:start;padding:10px 4px;transform:rotate(-3deg)}.timeline-copy{min-width:0}.timeline-copy h3,.timeline-copy p{overflow-wrap:anywhere;white-space:normal}.timeline-thumb{width:100%;min-width:0;max-width:100%}.timeline-thumb img{object-fit:cover;width:100%;height:100%}.timeline-entry.important{background:var(--paper);grid-template-columns:64px minmax(0,1fr);margin:20px 0;padding:22px}.timeline-entry.important .timeline-thumb{aspect-ratio:16/9;grid-column:2;height:auto}.timeline-entry.important .timeline-copy h3{font-size:27px}.page-places .page-top h1{color:var(--blue)}.place-grid{gap:28px}.place-card{background:var(--paper);border:0;border-bottom:5px solid var(--green);padding:22px;position:relative;box-shadow:3px 4px #35303510}.place-card:nth-child(2n){border-bottom-color:var(--blue)}.place-index{font-family:var(--hand);color:var(--blue);border-bottom:1px dashed var(--line);padding-bottom:12px}.place-photo{background:0 0;width:100%;margin:16px 0;display:block;border:0!important;padding:0!important}.place-photo img{object-fit:cover;width:100%;height:190px}.place-note{overflow-wrap:anywhere;margin-top:14px;font-size:17px!important}.place-foot{border-top:1px dashed var(--line)}.page-dates .two-col{align-items:start;gap:40px}.page-dates .two-col>div{background:#efe7d9;padding:25px}.page-dates .two-col>div:nth-child(2){background:#eee7e2}.anniv-row{background:var(--yellow);border:0;margin:18px 0;padding:20px;transform:rotate(-1deg);box-shadow:2px 3px #35303510}.anniv-row:nth-child(odd){background:#f5dfa0;transform:rotate(1deg)}.wish-row{background:#f7d9e1;border:0;gap:12px;min-width:0;margin:15px 0;padding:20px;position:relative}.wish-row>span{overflow-wrap:anywhere;min-width:0}.wish-row>button{border:1px solid #35303566;flex-shrink:0;width:44px;height:44px}.wish-done{background:#dde8de}.wish-done:after{content:"已完成";font-family:var(--hand);color:#41664a;white-space:nowrap;border:2px solid #41664a;margin-left:auto;padding:2px 7px;font-size:14px;animation:.25s ease-out stamp;transform:rotate(-10deg)}.wish-done>span{color:var(--muted)}.page-letters .letter-grid{gap:30px}.letter-card{background:var(--paper);border:1px solid var(--line);text-align:left;padding:27px;position:relative;box-shadow:4px 5px #35303512}.letter-card:nth-child(2n){background:#f9e5e8}.letter-card h2{font-size:26px}.envelope{border:1px solid var(--line);background:linear-gradient(150deg,#0000 49.5%,#d8cebf 50%,#0000 50.5%),linear-gradient(210deg,#0000 49.5%,#d8cebf 50%,#0000 50.5%);place-items:center;height:110px;margin:24px 0;display:grid;position:relative}.envelope span{background:var(--tomato);color:#fff;border-radius:50%;place-items:center;width:38px;height:38px;font-family:Georgia,serif;font-size:20px;font-style:italic;display:grid;box-shadow:0 0 0 3px #d94f4a25}.letter-open{transform-origin:top;animation:.35s ease-out open-letter}.letter-body{font-family:var(--display);white-space:pre-wrap;overflow-wrap:anywhere;max-width:65ch;margin:25px auto;font-size:17px;line-height:2.2}.book-grid{gap:35px}.book-cover{background:var(--blue);color:var(--paper);border-left:10px solid #3530353d;padding:20px 20px 26px;transform:rotate(-2deg);box-shadow:6px 6px #35303519}.book-cover:nth-child(2n){background:var(--tomato);transform:rotate(2deg)}.book-cover-art{height:330px}.book-cover-art img{object-fit:cover;width:100%;height:100%}.book-cover h2{font:60px Georgia,serif}.book-cover h2 small{font:17px var(--hand)}.book-cover>span,.book-cover>p{color:var(--paper)}.book-detail>h1{color:var(--tomato)}.book-stats{background:var(--yellow);border:1px dashed var(--ink);padding:20px}.annual-picks{background:#e3e6f5;padding:22px}.book-detail h2{border-top:1px dashed var(--line);color:var(--blue);padding-top:24px}.memory-row{border-bottom:1px dashed var(--line);padding:24px 0}.row-image{background:var(--paper);padding:8px;transform:rotate(-1deg)}.row-copy h3{font-family:var(--display)}.pill{color:#414f96;background:#e3e6f5;border:0}.empty{background:var(--paper);border:1px dashed var(--line);padding:45px 24px}.empty-mark{color:var(--tomato);font-family:var(--hand);letter-spacing:.04em;transform:rotate(-4deg)}.settings-group{border-bottom:1px dashed var(--line)}.upload-prints{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px;display:grid}.upload-print{background:var(--paper);font-family:var(--hand);overflow-wrap:anywhere;padding:8px;font-size:12px;display:block;transform:rotate(-2deg);box-shadow:2px 3px #35303515}.upload-print:nth-child(2n){transform:rotate(2deg)}.local-photo{object-fit:contain;width:100%;height:130px;margin-bottom:7px}.bulk-list .local-photo{background:var(--paper);width:100px;height:90px;padding:7px}.upload-progress{border:1px dashed var(--tomato);background:#fffdf6;padding:10px}.toast{background:var(--blue);color:#fff;border-radius:3px}.toast.error{background:#a73734}@keyframes stamp{0%{opacity:0;transform:scale(1.3)rotate(-10deg)}to{opacity:1;transform:scale(1)rotate(-10deg)}}@keyframes open-letter{0%{opacity:0;transform:perspective(1000px)rotateX(-7deg)translateY(15px)}to{opacity:1;transform:none}}@media (max-width:640px){.diary-list{grid-template-columns:minmax(0,1fr);gap:22px}.page-diary .page-top{padding:20px}.diary-card{padding:25px}.diary-perspectives section{padding:20px}.timeline-year>h2{padding:20px;font-size:44px}.timeline-entry{grid-template-columns:42px minmax(0,1fr) 76px;gap:12px;padding:20px 0}.timeline-entry>time{padding:7px 2px}.timeline-entry.important{grid-template-columns:42px minmax(0,1fr);padding:14px}.timeline-entry.important .timeline-copy h3{font-size:22px}.page-dates .two-col{gap:25px}.page-dates .two-col>div{padding:17px}.anniv-row{padding:16px}.wish-row{flex-wrap:wrap;padding:14px}.wish-done:after{font-size:12px}.place-grid,.letter-grid,.book-grid{grid-template-columns:minmax(0,1fr)}.book-cover{margin:0 6px;transform:none}.book-cover:nth-child(2n){transform:none}.book-cover-art{height:300px}.upload-prints{grid-template-columns:repeat(2,minmax(0,1fr))}.local-photo{height:110px}.bulk-list>div{grid-template-columns:minmax(0,1fr)}.bulk-list .local-photo{width:100%;height:140px}.memory-row{padding:18px 0}.row-image{padding:5px;transform:none}.letter-body,.field input,.field select,.field textarea{font-size:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.gallery-options{margin-top:12px}.gallery-options summary{cursor:pointer;min-height:44px;color:var(--blue);align-items:center;gap:10px;font-size:13px;display:flex}.gallery-options summary:before{content:"+";font-size:22px}.gallery-options[open] summary:before{content:"−"}.gallery-options .gallery-selects{padding-bottom:8px}.book-month{background:var(--blue);color:#fff;align-items:end;gap:20px;margin:40px 0 25px;padding:15px 25px;display:flex}.book-month>span{font:64px Georgia,serif}.book-month>strong{font:16px var(--hand);padding-bottom:10px}.subhead>button,.anniv-row>button{min-width:44px;min-height:44px}@media (max-width:640px){.gallery-toolbar{margin-bottom:20px;padding:9px 0}.gallery-page .page-top{margin-bottom:12px;padding-top:0}.gallery-options summary{font-size:12px}.page-gallery .page{padding-top:26px}.book-month{gap:12px;padding:15px}.book-month>span{font-size:48px}.book-month>strong{font-size:13px}}.overlay{z-index:100}.lightbox{z-index:200}@media print{body{background:#fff}.dialog{width:100%;max-width:none;box-shadow:none;padding:0;animation:none;transform:none}.book-month,.book-stats{-webkit-print-color-adjust:exact;print-color-adjust:exact}.book-detail .text-button{display:none}.book-detail img{object-fit:contain;max-height:70vh}.book-detail section{break-inside:avoid}}.upload-tray{z-index:150;background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--blue);width:min(390px,100vw - 32px);position:fixed;bottom:20px;right:20px;box-shadow:0 8px 28px #35303520}.upload-tray summary{cursor:pointer;justify-content:space-between;gap:12px;padding:12px 16px;font-weight:600;list-style:none;display:flex}.upload-tray summary>span{color:var(--blue);font-size:11px;font-weight:400}.upload-tray-note{color:var(--muted);padding:0 16px 10px;font-size:11px}.upload-tray-list{overscroll-behavior:contain;max-height:42vh;padding:0 14px;overflow:auto}.upload-task{border-top:1px dashed var(--line);gap:12px;padding:12px 0;display:flex}.upload-task .local-photo{object-fit:cover;background:var(--cream);flex-shrink:0;width:52px;height:62px;padding:3px}.upload-task-copy{flex:1;min-width:0}.upload-task-copy strong{overflow-wrap:anywhere;font-size:12px;display:block}.upload-task-copy>span{color:var(--blue);font-size:11px;display:block}.upload-task-copy small{color:var(--muted);font-size:10px;display:block}.upload-task-copy progress{width:100%;height:6px;accent-color:var(--blue);margin:7px 0;display:block}.upload-task-copy button,.upload-dismiss{min-height:44px;color:var(--blue);background:0 0;border:0;font-size:12px}.upload-task-copy .upload-task-error{color:#a73734}.upload-dismiss{border-top:1px solid var(--line);width:100%}@media (max-width:640px){.upload-tray{right:12px;bottom:calc(78px + env(safe-area-inset-bottom));width:calc(100vw - 24px)}.upload-tray-list{max-height:32vh}}@media print{.upload-tray{display:none}}.save-fields{border:0;min-width:0;margin:0;padding:0}
