:root{--bg:#fbf6ee;--ink:#3f403a;--muted:#939087;--pink:#b77174;--line:#e9e2d8;--sage:#6e8b7b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:15px}button,input,select,textarea{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;background:#fffdf9;border:1px solid var(--line);border-radius:12px;padding:10px 15px}button:hover{border-color:var(--pink);background:#faf0eb}button:disabled{opacity:.6;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #be8588;outline-offset:3px}[hidden]{display:none!important}.primary{background:var(--pink);color:white;border:0;padding:14px 24px;box-shadow:0 6px 16px #b7717420}.primary:hover{background:#a56367}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,"Songti SC","SimSun",serif;font-weight:500;line-height:1.5}h2{font-size:24px}h3{font-size:18px}p{line-height:1.9}small,.muted{color:var(--muted);font-size:12px}.eyebrow,.little{font-size:11px;letter-spacing:2.4px;color:var(--pink)}main{max-width:1280px;margin:auto;padding:0 40px}header{display:flex;justify-content:space-between;align-items:center;padding:28px 0;border-bottom:1px solid var(--line);gap:20px}.brand{text-decoration:none;color:var(--ink);font-size:20px;font-weight:600;white-space:nowrap}.brand-icon{display:inline-block;color:var(--pink);font-size:29px;margin-right:5px;vertical-align:middle}.account{display:flex;gap:12px;align-items:center;font-size:12px;color:#847e73}.text-btn{border:0;background:transparent;padding:8px}.intro{display:flex;align-items:center;justify-content:space-between;padding:45px 0 30px;gap:20px}.intro h1{font-size:34px;margin:10px 0}.intro em{font-style:normal;color:var(--pink)}.intro p{color:#8a857c;font-size:14px;margin:0}.calendar-shell{background:#fffdf9;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 16px 45px #64452a06}.calendar-top{display:flex;justify-content:space-between;align-items:center;padding:27px 28px 18px;gap:16px}.calendar-top h2{margin:7px 0 0;font-size:27px;font-weight:500}.month-controls{display:flex;gap:7px;align-items:center}.month-controls input{width:155px;margin:0;padding:9px;background:transparent}.calendar-meta{display:flex;justify-content:space-between;padding:0 28px 22px;font-size:12px;color:#8c867d;gap:8px}.person{margin-left:16px}.p1{color:var(--sage)}.p2{color:var(--pink)}.weekdays,.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{padding:13px 0;background:#f5f1e9;color:#90897f;text-align:center;font-size:12px;border-top:1px solid var(--line)}.day,.blank{min-height:154px;border:0;border-top:1px solid var(--line);border-right:1px solid var(--line);border-radius:0;padding:12px;background:#fffdf9;text-align:left;position:relative;overflow:hidden}.day:nth-child(7n),.blank:nth-child(7n){border-right:0}.day{display:flex;flex-direction:column;gap:7px}.day:hover{background:#fcf2ed}.blank{background:#f8f5ef}.day.today{background:#fff3ec;box-shadow:inset 0 0 0 2px #cc9894}.day-number{font-size:14px;font-weight:600;display:flex;justify-content:space-between;width:100%;align-items:center}.day-number small{font-size:9px;color:var(--pink);font-weight:400}.thumbs{display:flex;gap:4px;width:100%}.thumbs img,.note-thumb,.empty-thumb{width:calc(50% - 2px);height:54px;border-radius:7px;object-fit:cover}.note-thumb{background:#f0eee5;display:grid;place-items:center;font-size:23px}.empty-thumb{display:none}.snippets{width:100%;font-size:10px;line-height:1.6}.snippets span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-copy{font-size:10px;color:#c3b9ad;margin:auto 0}.future{opacity:.5}.calendar-foot{padding:18px 28px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#969087;font-size:11px}.calendar-foot span{letter-spacing:2px;font-size:9px}footer{text-align:center;color:#998e81;padding:35px;line-height:2.1;font-size:13px}footer span{font-size:11px;color:#b4aa9e}dialog{width:min(720px,calc(100% - 24px));max-height:90dvh;padding:28px;border:1px solid var(--line);border-radius:22px;background:var(--bg);color:var(--ink);box-shadow:0 25px 100px #30251d30}dialog::backdrop{background:#39352b66;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px}.dialog-head h2{margin:6px 0}.dialog-head button{font-size:24px;border:0;background:transparent}.stories{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:25px}.story{background:#fffdf9;border:1px solid var(--line);border-radius:14px;padding:16px;min-width:0}.story-person{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:12px;gap:8px}.story-person small{font-size:10px;font-weight:400}.story p{font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0 0}.story-photo{padding:0;border:0;width:100%;display:block;overflow:hidden}.story-photo img{width:100%;max-height:280px;object-fit:cover;display:block}label{display:block;font-size:13px;margin-bottom:17px}input,select,textarea{display:block;width:100%;padding:12px;border:1px solid #dfd8ce;border-radius:10px;background:#fffdf9;color:var(--ink);margin-top:8px;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--pink);box-shadow:0 0 0 3px #b7717414}textarea{resize:vertical;line-height:1.7}.upload{background:#f5ece6;border:1px dashed #ccb5a5;padding:15px;border-radius:12px;color:#94766a}.upload input{background:#fff9f3;font-size:12px}.upload small{display:block;margin-top:8px}.check{display:flex;align-items:center;gap:8px;color:#8b8075}.check input{width:auto;margin:0}.form-actions{display:flex;justify-content:space-between;gap:10px;align-items:center}.danger{color:#ad6464;background:transparent;border:0}.local-preview{max-width:180px;max-height:150px;border-radius:10px;margin-bottom:15px}#entryForm{border-top:1px solid var(--line);padding-top:22px}#entryForm>.muted{margin:16px 0 0;text-align:right}#passwordDialog{max-width:440px}#imageDialog{max-width:1000px;width:fit-content;padding:12px}#imageDialog>button{position:absolute;right:16px;top:16px;background:#fffdf9;font-size:24px}#fullImage{display:block;max-width:100%;max-height:80dvh;object-fit:contain}.gate{max-width:1050px;min-height:660px;margin:7vh auto;display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:25px;overflow:hidden;background:#fffdf9}.gate-art{background:#eee6da;padding:60px 45px;position:relative;overflow:hidden}.gate-art::after{content:'';width:300px;height:300px;border:1px solid #d4b6a8;border-radius:50%;position:absolute;right:-150px;bottom:40px}.gate-art .heart{font-size:90px;line-height:1;margin:50px 0 30px;color:#ba8580;transform:rotate(-12deg)}.gate-art h1{font-size:36px}.gate-art p{font-size:13px;color:#948271}.stamp{font:14px Georgia,serif;letter-spacing:3px;line-height:1.8;color:#ad8a7e;margin-top:65px}.gate-form{padding:70px 45px;align-self:center}.gate-form h2{font-size:25px;font-weight:500;margin:16px 0 30px}.gate-form .primary{width:100%;margin-top:10px}.gate-form>.muted{text-align:center;margin-top:30px}#notice{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(30px);z-index:100;background:#49473f;color:#fff;padding:13px 22px;border-radius:13px;box-shadow:0 5px 30px #0002;max-width:90%;width:max-content;opacity:0;pointer-events:none;transition:.2s}#notice.show{opacity:1;transform:translateX(-50%)}body:has(dialog[open]){overflow:hidden}#notice{top:16px;bottom:auto}body:has(dialog[open]) #notice{z-index:2147483647} @media(max-width:760px){main{padding:0 14px}header{padding:17px 2px;align-items:flex-start;gap:8px}.brand{font-size:17px}.account{gap:0;flex-wrap:wrap;justify-content:flex-end;max-width:155px}.account>span{width:100%;font-size:10px;text-align:right}.text-btn{font-size:11px}.intro{padding:30px 3px 24px;align-items:flex-start;flex-direction:column;gap:15px}.intro h1{font-size:27px}.intro p{font-size:12px}.intro .primary{padding:11px 20px}.calendar-shell{border-radius:15px}.calendar-top{padding:18px 12px;align-items:flex-start;gap:8px;flex-wrap:wrap}.calendar-top h2{font-size:23px}.calendar-top .eyebrow{font-size:9px}.month-controls{gap:4px;flex-wrap:wrap}.month-controls button{padding:8px 11px}.month-controls input{width:140px;font-size:13px;padding:8px}.calendar-meta{padding:0 12px 14px;font-size:10px;flex-wrap:wrap}.person{margin-left:8px}.day,.blank{min-height:94px;padding:5px 3px;gap:4px}.day-number{font-size:12px}.day-number small{font-size:7px}.thumbs{gap:2px}.thumbs img,.note-thumb{width:calc(50% - 1px);height:29px;border-radius:4px}.note-thumb{font-size:15px}.snippets{font-size:8px}.snippets span{max-height:13px}.empty-copy{font-size:8px;line-height:1.5}.calendar-foot{padding:13px 10px;font-size:10px}.calendar-foot span{display:none}.weekdays{font-size:10px}.gate{margin:18px 12px;display:block;min-height:auto}.gate-art{padding:28px}.gate-art .little{font-size:9px}.gate-art .heart{position:absolute;right:35px;top:50px;font-size:65px;margin:0}.gate-art h1{font-size:28px;margin:22px 0 12px}.gate-art p{margin:0;font-size:11px}.stamp{display:none}.gate-form{padding:30px 26px}.gate-form h2{font-size:22px}.stories{gap:10px}.story{padding:11px}.story-person{flex-wrap:wrap;gap:3px}.story-person small{width:100%}.story p{font-size:12px}.story-photo img{max-height:180px}dialog{padding:19px 16px;border-radius:17px}.form-actions{font-size:13px}.form-actions .primary{padding:13px 17px}input,textarea,select{font-size:16px}footer{padding:26px 0}}

.dialog-feedback{background:#f6dfd6;color:#8a4549;padding:12px;border-radius:10px;font-size:13px}
/* v2 · pink scrapbook */
:root{--bg:#fff5f8;--ink:#674653;--muted:#ac8795;--pink:#d8739a;--line:#f3dce5;--sage:#ac78b7}body{background:radial-gradient(ellipse at 95% 0,#ffe3ee,transparent 45%),var(--bg)}.brand-icon{background:#ffe2ed;border-radius:14px;width:40px;text-align:center}.calendar-shell{background:#fffcfd;box-shadow:0 15px 50px #b3457210}.intro em{color:#cf6992}.gate-art{background:linear-gradient(145deg,#ffdeeb,#f8e1ef)}.gate-art h1{color:#95556e}.gate-art .heart{color:#d67fa2}.gate{background:#fffcfd}.weekdays{background:#fff0f6}.day{background:#fffcfd}.day:hover{background:#ffeaf2}.blank{background:#fff7fa}.day.today{background:#fff0f5;box-shadow:inset 0 0 0 2px #eaa0be}.day.future{opacity:.65}.view-tabs{display:flex;gap:5px;padding:5px;background:#fbe6ef;border-radius:16px;width:max-content;margin:0 0 18px}.view-tabs button{min-width:75px;border:0;background:transparent;border-radius:12px}.view-tabs button.active{background:#fff;color:#c55b87;box-shadow:0 3px 10px #a2497515;font-weight:600}.thumbs .photo-chip{width:calc(50% - 2px);display:flex;flex-direction:column;gap:3px;min-width:0}.thumbs .photo-chip img{width:100%;height:62px}.photo-chip small{font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day{min-height:180px}.event-count{font-size:10px;color:#c888a1;margin-top:auto}.mini-month{padding:16px;background:#fffafd;border:1px solid var(--line);border-radius:16px}.view-year{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:20px}.mini-title{display:flex;justify-content:space-between;width:100%;border:0;background:transparent;font-size:18px;font-weight:600;padding:0 2px 14px}.mini-title span{font-size:14px;color:#d89fb6}.mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center;align-items:center}.mini-grid small{font-size:9px;padding-bottom:8px}.mini-day{border:0;background:transparent;padding:5px 0;font-size:11px;border-radius:8px;min-height:27px}.mini-day.has-memory{background:#f8d3e3;color:#a33b68;font-weight:600}.mini-day.is-today{outline:2px solid #d8739a}.view-day,.view-week{display:block;padding:0 28px 25px}.agenda-day{padding:22px 0;border-top:1px solid var(--line)}.agenda-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.agenda-title h3{margin:0}.agenda-title h3 small{margin-left:10px}.agenda-title button{font-size:12px}.agenda-photos{display:flex;gap:15px;margin-bottom:12px}.agenda-photos figure{width:160px;margin:0}.agenda-photos img{width:100%;height:130px;object-fit:cover;border-radius:12px}.agenda-photos figcaption{font-size:11px;padding:6px;color:#b56c8c}.timeline-item{display:flex;gap:20px;padding:16px 0}.timeline-item time{font-size:15px;color:#c46b92;min-width:45px}.timeline-item>div{border-left:2px solid #f1cada;padding-left:18px;min-width:0}.timeline-item strong{font-size:13px}.timeline-item p,.event-item p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;margin:8px 0;line-height:1.8}.shared-section{margin-bottom:26px}.event-item{background:#fffafd;border:1px solid var(--line);padding:16px;border-radius:14px;margin-bottom:12px}.event-item time{display:inline-block;padding:4px 10px;background:#ffe6f0;border-radius:8px;margin-right:10px;color:#b75b81}.event-item strong{font-size:13px;overflow-wrap:anywhere}.event-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.event-actions button{font-size:12px;padding:6px 12px}.photos-heading{margin-top:20px}#eventForm{margin-top:16px;padding:18px;background:#ffecf4;border-radius:15px}#eventForm input[type=hidden]{display:none}#entryForm input[type=hidden]{display:none}.story-person small{color:#b87592}.story{background:#fffafd}.upload{background:#fff0f6;border-color:#e0a7be;color:#ad6c87}.calendar-top h2{font-size:24px}.view-week .agenda-day:nth-child(even){background:#fff8fb;border-radius:12px;padding:20px 14px}.calendar-meta{flex-wrap:wrap}@media(max-width:1000px){.view-year{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.view-tabs{width:100%;justify-content:space-between}.view-tabs button{flex:1;min-width:0}.day{min-height:118px}.thumbs .photo-chip{width:calc(50% - 1px)}.thumbs .photo-chip img{height:29px}.photo-chip small{font-size:6px}.event-count{font-size:7px}.view-year{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px;gap:8px}.mini-month{padding:10px 7px}.mini-grid{gap:2px}.mini-day{font-size:10px;min-height:24px;padding:4px 0}.mini-title{font-size:16px}.view-day,.view-week{padding:0 12px 15px}.agenda-title{align-items:flex-start}.agenda-title h3{font-size:16px}.agenda-title h3 small{display:block;margin:5px 0 0;font-size:11px}.agenda-title button{font-size:11px;padding:8px}.agenda-photos figure{width:calc(50% - 8px);max-width:180px}.agenda-photos img{height:135px}.calendar-top h2{font-size:20px}.timeline-item{gap:8px}.timeline-item p{font-size:13px}.event-item{padding:12px}.event-item strong{display:block;margin-top:8px}.intro h1{font-size:25px}.month-controls input{width:145px}}
