:root{font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif;color:#29262b;background:#fffdfa;font-size:16px}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 90% 0,#fae9ed,transparent 34%),#fffdfa}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}[hidden]{display:none!important}header{height:70px;border-bottom:1px solid #eee0e3;display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,20px)}.brand{display:flex;gap:11px;align-items:center;font-weight:700;font-size:18px}.heart{display:grid;place-items:center;color:#fff;background:#a54261;border-radius:11px;width:35px;height:35px}main{max-width:1150px;margin:auto;padding:45px 25px 90px}h1,h2{font-weight:600}h1{font-family:Georgia,"Songti SC",serif;font-size:clamp(36px,5vw,57px);line-height:1.3;margin:16px 0}.intro{padding:20px 0 48px}.intro p,.login p{color:#7a6e73;line-height:1.7}.eyebrow{font-size:12px;letter-spacing:.18em;color:#a66077;font-weight:700}.layout{display:grid;grid-template-columns:minmax(0,700px) 300px;gap:70px}.heading,.date-head,.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.heading{border-bottom:1px solid #eadde1;padding-bottom:15px}.heading h2{font-size:25px}.heading button,form button[type=submit]{border:0;border-radius:11px;color:white;background:#a54261;padding:11px 17px}.tabs{display:flex;border-bottom:1px solid #eee0e3;margin:16px 0 25px}.tabs button{border:0;background:none;padding:12px 17px;color:#8b7b80}.tabs button.active{border-bottom:2px solid #a54261;color:#a54261;font-weight:700}.panel,.moment{border:1px solid #ecdde1;background:#fff;border-radius:18px;padding:23px;box-shadow:0 8px 25px #53293508}.note{background:#faecef}.note h2{font-family:Georgia,"Songti SC",serif;line-height:1.55;font-size:26px;font-weight:500}.note p{color:#9d6476;font-size:14px}.art{position:relative;width:210px;height:150px;overflow:hidden}.art img:first-child{position:absolute;width:180px;height:180px;object-fit:cover;object-position:bottom;bottom:-23px;left:-5px}.art .donut{position:absolute;width:70px;height:70px;right:0;top:12px;transform:rotate(14deg)}aside{position:sticky;top:18px;align-self:start;display:grid;gap:18px}.dates h2{font-size:18px}.text-button{border:0;background:transparent;color:#a54261;padding:6px}.date,.moment{margin:0 0 17px}.date{border-top:1px solid #f1e4e7;padding:14px 0;display:flex;justify-content:space-between;gap:12px}.date strong,.date small,.date span{display:block}.date small{color:#8d7d82;margin:5px 0}.date span{font-size:13px;color:#a54261}.date-actions{display:grid;align-content:start}.date-actions button{border:0;background:none;color:#a54261;font-size:12px;padding:5px}.moment{padding:0;overflow:hidden}.moment img{width:100%;max-height:420px;object-fit:cover;display:block}.moment-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.moment-photos:has(>a:only-child){grid-template-columns:1fr}.moment-photos a{display:block;min-width:0}.moment-photos img{width:100%;height:100%;max-height:320px;aspect-ratio:1;object-fit:cover}.moment-photos:has(>a:only-child) img{aspect-ratio:auto;max-height:420px}.moment .details{padding:20px}.moment small{color:#a66077}.moment p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.actions{display:flex;justify-content:flex-end;gap:14px;border-top:1px solid #f1e6e8;padding:9px 14px}.actions button{border:0;background:none;color:#9a6879}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.gallery a{aspect-ratio:1;overflow:hidden;border-radius:13px;background:#fae9ed}.gallery img{width:100%;height:100%;object-fit:cover}.empty{text-align:center;color:#85767b;padding:55px 20px;border:1px dashed #e4cbd2;border-radius:18px}.login{max-width:460px;margin:30px auto;padding:32px}.login .art{height:190px}.login .art img:first-child{width:210px;height:210px}.login .art .donut{right:25px}.hint{font-size:13px}form{display:grid;gap:16px}label{display:grid;gap:7px;font-size:14px;font-weight:600}input,textarea{border:1px solid #ded1d5;border-radius:9px;padding:11px;background:#fff;min-width:0;font-size:16px}input:focus,textarea:focus{outline:2px solid #cf8da2}dialog{width:min(94vw,510px);max-height:90vh;overflow:auto;border:0;border-radius:20px;padding:26px;box-shadow:0 30px 90px #2a17274d}dialog::backdrop{background:#281921a8}dialog form{margin:0}dialog img{max-width:120px;max-height:100px;object-fit:cover;border-radius:9px}#status:not(:empty){position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#30252a;color:#fff;border-radius:10px;padding:12px 18px;max-width:90vw;z-index:20}@media(max-width:850px){.layout{grid-template-columns:1fr;gap:25px}aside{position:static}.gallery{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){main{padding:35px 17px}.heading h2{font-size:21px}.heading button{font-size:14px}.login{padding:23px}.art{height:135px}}
:root{scroll-behavior:smooth}
.intro{padding:14px 0 30px}.intro p{margin:8px 0}.hero-state{display:inline-block;margin-top:12px!important;padding:8px 13px;border:1px solid #eedde2;border-radius:999px;background:#fff9fa;color:#9b6075!important;font-size:13px}
.heading-actions{display:flex;align-items:center;gap:9px}.heading-actions .secondary-button{border:1px solid #e6ccd5;border-radius:11px;background:#fff;color:#a54261;padding:10px 13px}
.tabs{overflow-x:auto;white-space:nowrap;scrollbar-width:thin}.tabs button{flex:none}.tabs span{display:inline-block;min-width:23px;padding:2px 6px;border-radius:99px;background:#f7e8ec;font-size:12px;margin-left:3px}
.note .art{height:125px}.note h2{margin:12px 0}.note p{margin-bottom:0}.countdown h2{font-size:18px;margin:10px 0 15px}.countdown-content{color:#8b7b80;font-size:14px;line-height:1.6}.countdown-content strong{display:block;color:#a54261;font-family:Georgia,"Songti SC",serif;font-size:27px}.countdown-content p{margin:4px 0 0}.dates .date:last-child{margin-bottom:0}.dates .date{min-width:0}.date>div:first-child{min-width:0}.date strong{overflow-wrap:anywhere}
.moment:not(:has(.moment-photos)) .details{padding:15px 20px}.moment:not(:has(.moment-photos)) p{margin:10px 0 3px}.moment-photos img{max-height:280px}.moment-photos:has(>a:only-child) img{max-height:360px}.memory-highlight{box-shadow:0 0 0 3px #d799ac,0 12px 30px #a5426130;transition:box-shadow .4s}
@media(max-width:650px){.heading{align-items:flex-start;flex-direction:column}.heading-actions{width:100%;justify-content:space-between}.heading-actions button{font-size:13px}.hero-state{line-height:1.5}}
.extras{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:30px}.extras h2{font-size:22px;margin:9px 0}.extras .hint{color:#8d7d82;line-height:1.6}.small-primary{border:0;border-radius:10px;background:#a54261;color:white;padding:9px 13px;white-space:nowrap}.places,.wishes{display:grid;gap:10px;margin-top:18px}.place-item,.wish{background:#fff9fa;border:1px solid #f0e0e5;border-radius:12px;padding:12px 14px}.place-item{display:flex;align-items:center;justify-content:space-between;gap:12px}.place-item strong{overflow-wrap:anywhere;font-size:14px}.place-item small,.wish small{color:#9a7884;white-space:nowrap}.wish{display:flex;align-items:center;gap:12px}.wish input{width:19px;height:19px;accent-color:#a54261;flex:none}.wish-copy{min-width:0;flex:1}.wish-copy strong,.wish-copy small{display:block;overflow-wrap:anywhere}.wish-copy strong{font-size:14px}.wish-copy small{margin-top:5px}.wish.complete .wish-copy strong{text-decoration:line-through;color:#9b8a90}.wish-actions{display:flex;gap:4px}.wish-actions button{border:0;background:none;color:#a54261;font-size:12px;padding:4px}.moment-location{display:inline-block;color:#a66077;font-size:13px;margin-top:3px}select{border:1px solid #ded1d5;border-radius:9px;padding:11px;background:#fff;font:inherit;min-width:0}@media(max-width:750px){.extras{grid-template-columns:1fr}}@media(max-width:420px){.wish{flex-wrap:wrap}.wish-actions{margin-left:31px}}
.comments{border-top:1px solid #f1e6e8;background:#f8f4f5;padding:12px 20px 15px}.comment-list{display:grid;gap:7px}.comment{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:3px 0}.comment strong{font-size:13px;color:#8e5167}.comment p{font-size:14px;line-height:1.55;margin:3px 0 0}.comment-meta{text-align:right;flex:none}.comment-meta small{display:block;color:#a3979b;font-size:11px}.comment-meta button{border:0;background:none;color:#ae7a8b;font-size:11px;padding:4px 0}.comment-form{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-top:11px;padding-top:11px;border-top:1px solid #eadde1}.comment-as{font-size:13px;color:#8e5167;white-space:nowrap}.comment-form input{padding:9px;font-size:14px}.comment-form button{border:0;border-radius:9px;background:#a54261;color:#fff;padding:8px 14px}.print-progress{border:1px solid #edd8df;border-radius:12px;background:#fff9fb;padding:14px}.print-progress>div{display:flex;justify-content:space-between;gap:12px;color:#805d69;font-size:13px}.print-progress progress{width:100%;height:9px;margin-top:10px;accent-color:#a54261}.print-ready{border:1px solid #dbb2bf;border-radius:14px;background:#fbedf1;padding:16px}.print-ready strong{color:#8e3c59}.print-ready p{color:#7d6970;font-size:13px;line-height:1.6}.print-ready small{display:block;color:#8b777e;font-size:12px;line-height:1.5;margin-top:10px}.print-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.print-actions a,.print-actions button{display:grid;place-items:center;min-height:43px;border:0;border-radius:10px;text-decoration:none;font-size:14px}.print-actions a{background:#a54261;color:#fff}.print-actions button{background:#fff;color:#a54261;border:1px solid #dfb7c4}#print-root{display:none}@media(max-width:650px){.comment-form{grid-template-columns:1fr}.heading-actions{flex-wrap:wrap}.heading-actions button{flex:1}.print-actions{grid-template-columns:1fr}}@media(max-width:420px){.comment{display:block}.comment-meta{display:flex;align-items:center;justify-content:space-between;margin-top:4px}}
@media print{@page{size:A5;margin:10mm 9mm}body{background:#fff!important;color:#2d282a;-webkit-print-color-adjust:exact;print-color-adjust:exact}body.print-mode>header,body.print-mode>main,body.print-mode>#status,body.print-mode>dialog{display:none!important}body.print-mode>#print-root{display:block!important}#print-root{font-family:"Songti SC","SimSun",serif}.print-cover{min-height:185mm;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;border:1.5px solid #d9a7b7;border-radius:14px;background:linear-gradient(145deg,#fff 0%,#fff5f7 100%);page-break-after:always}.print-cover span{font:700 9pt Arial,sans-serif;letter-spacing:.2em;color:#a54261}.print-cover h1{font-size:26pt;letter-spacing:.06em;margin:14mm 0 5mm}.print-cover p{font-size:11pt;color:#845f6b}.print-cover small{margin-top:34mm;font-size:10pt;color:#a46a7e}.print-entry{break-inside:avoid;page-break-inside:avoid;border-top:1px solid #d9b8c2;padding:6mm 0 5mm}.print-entry:first-of-type{border-top:0}.print-entry-head{display:flex;justify-content:space-between;align-items:baseline}.print-entry-head time{font-size:15pt;color:#a54261}.print-entry-head strong{font:700 9pt Arial,sans-serif;letter-spacing:.1em;color:#8d727b}.print-location{font:9pt Arial,"PingFang SC",sans-serif;color:#a06075;margin-top:2mm}.print-body{font-size:10.5pt;line-height:1.7;white-space:pre-wrap;margin:4mm 0}.print-photos{display:grid;grid-template-columns:repeat(2,1fr);gap:2mm;margin-top:4mm}.print-photos img{width:100%;height:52mm;object-fit:contain;background:#f8f2f4;border-radius:3mm}.print-photos.count-1{grid-template-columns:1fr}.print-photos.count-1 img{height:auto;max-height:105mm;object-fit:contain}.print-comments{margin-top:4mm;padding:3mm 4mm;background:#fff4f7;border-left:1.5mm solid #d89aae;border-radius:2mm;font-family:Arial,"PingFang SC",sans-serif}.print-comments h3{font-size:9pt;color:#8f5066;margin:0 0 2mm}.print-comments p{font-size:8.5pt;line-height:1.5;margin:1mm 0}}
