@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Ma+Shan+Zheng&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{--ink:#26343d;--muted:#78848a;--paper:#fff9f2;--surface:#fffefd;--pink:#ee7a74;--pink-pale:#ffe2dc;--blue:#79c5d2;--blue-pale:#dff5f6;--yellow:#f7ca72;--line:#eee5da;--radius:24px;--shadow:0 12px 34px rgba(73,53,39,.09)}
*{box-sizing:border-box}html{background:#f5eee5;scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:'Noto Sans SC',sans-serif;background:radial-gradient(circle at 95% 0,rgba(247,202,114,.24),transparent 24rem),var(--paper);min-height:100dvh;text-wrap:pretty}.shell{max-width:510px;min-height:100dvh;margin:auto;padding:0 20px 102px;background:linear-gradient(120deg,rgba(255,255,255,.6),transparent 30%),var(--paper);position:relative}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between}.wordmark{font-family:'Ma Shan Zheng',cursive;color:var(--ink);font-size:27px;text-decoration:none}.wordmark i{color:var(--pink);font-style:normal;padding:0 3px}.icon-button,.close{border:0;background:transparent;color:var(--ink);font:inherit;cursor:pointer}.icon-button{font-size:30px;width:44px;height:44px}.screen{display:none;animation:appear .35s ease}.screen.active{display:block}.welcome{padding:22px 0 17px}.eyebrow{color:var(--pink);font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin:0 0 9px}.welcome h1,.page-heading h1{font-size:clamp(33px,10vw,49px);line-height:1.08;margin:0;font-weight:700;letter-spacing:-.06em}.welcome em{font-family:'Ma Shan Zheng',cursive;font-weight:400;color:var(--pink);font-size:1.15em;letter-spacing:0}.subline{font-size:13px;color:var(--muted);margin:13px 0 0}.portrait{margin:0;position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);height:280px;background:#8a0c0c}.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block}.portrait:after{content:"";position:absolute;inset:48% 0 0;background:linear-gradient(transparent,rgba(30,17,14,.68))}.portrait-caption{position:absolute;z-index:1;bottom:17px;left:18px;color:white;display:flex;flex-direction:column;gap:3px}.portrait-caption span{font-size:19px;font-weight:600}.portrait-caption time{font:10px 'DM Mono',monospace;opacity:.84}.now-grid{display:grid;grid-template-columns:1fr .8fr 1fr;align-items:center;text-align:center;border-bottom:1px solid var(--line);padding:20px 0}.now-grid div{display:flex;flex-direction:column;gap:4px}.now-grid span{color:var(--muted);font-size:10px}.now-grid strong{font:500 20px 'DM Mono',monospace;letter-spacing:-.1em}.now-grid small{font-size:9px;letter-spacing:0}.now-grid .distance{border-left:1px solid var(--line);border-right:1px solid var(--line)}.now-grid .distance strong{font-size:15px;color:var(--pink)}.latest{padding:28px 0 19px}.section-line{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-line h2{margin:0;font-size:17px;letter-spacing:-.04em}.text-button{border:0;background:none;color:var(--pink);font:500 12px 'Noto Sans SC';padding:8px;cursor:pointer}.note-card{background:var(--pink-pale);padding:20px;border-radius:5px 22px 22px 22px;position:relative}.note-card:before{content:'“';color:var(--pink);font:45px Georgia;position:absolute;top:-5px;left:13px;opacity:.4}.note-card p{font-size:15px;line-height:1.75;margin:4px 0 8px}.note-card span{font-size:11px;color:#ad6765}.primary-button{width:100%;border:0;border-radius:16px;background:var(--ink);color:white;padding:16px 20px;font:600 14px 'Noto Sans SC';cursor:pointer;transition:transform .18s,background .18s;min-height:52px}.primary-button span{font:23px/0 'DM Mono';vertical-align:-2px;margin-right:5px}.primary-button:hover{background:#354955}.primary-button:active{transform:scale(.98)}.page-heading{padding:20px 0 27px}.page-heading h1{font-size:42px}.feed{display:grid;gap:12px;padding-bottom:15px}.feed-item{padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:18px}.feed-item .meta{font:10px 'DM Mono';color:var(--muted);display:flex;justify-content:space-between}.feed-item p{margin:11px 0 0;font-size:15px;line-height:1.7}.tag{color:var(--pink);font-weight:600}.empty-state{background:var(--blue-pale);padding:26px 21px;border-radius:23px;margin-bottom:16px}.empty-state b{font-size:16px}.empty-state p{font-size:13px;color:#598087;margin:8px 0 0}.album-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.photo-card{margin:0;grid-column:span 1;background:var(--surface);padding:6px 6px 14px;border-radius:4px;box-shadow:0 5px 16px rgba(73,53,39,.08);transform:rotate(-1deg)}.photo-card:nth-child(even){transform:rotate(1.2deg);margin-top:22px}.photo-card.hero-photo{grid-column:span 2;transform:none;margin:0}.photo-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.hero-photo img{aspect-ratio:1.5;object-position:50% 28%}.photo-card figcaption{padding:10px 8px 0;display:flex;flex-direction:column;gap:3px}.photo-card b{font-size:12px}.photo-card span{font-size:10px;color:var(--muted)}.upload-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1.5px dashed #cbbfb3;border-radius:18px;min-height:145px;margin:26px 0;color:var(--muted);font-size:12px;cursor:pointer}.upload-card span{font:30px 'DM Mono';color:var(--pink)}.calendar-hero{background:var(--yellow);padding:26px 23px;border-radius:25px;margin-bottom:24px;box-shadow:var(--shadow)}.calendar-hero span{font-size:11px}.calendar-hero strong{display:block;font-size:25px;letter-spacing:-.06em;margin:6px 0}.calendar-hero p{margin:0;font:12px 'DM Mono';color:#7c6028}.event-list{display:grid;gap:0}.event{display:grid;grid-template-columns:52px 1fr auto;gap:11px;align-items:center;padding:16px 2px;border-bottom:1px solid var(--line)}.event-day{font:500 18px 'DM Mono';color:var(--pink)}.event b,.event span{display:block}.event b{font-size:14px}.event span{font-size:11px;color:var(--muted);margin-top:2px}.event .countdown{font:10px 'DM Mono';color:var(--muted);text-align:right}.capsule-list{display:grid;gap:13px}.capsule{padding:22px;border-radius:20px;background:linear-gradient(145deg,#fee7bc,#f6c974);position:relative;overflow:hidden}.capsule:after{content:'✦';position:absolute;right:19px;top:10px;color:#bd8c2b;font-size:28px}.capsule.locked{background:var(--blue-pale)}.capsule h3{margin:0;font-size:16px}.capsule p{font-size:13px;line-height:1.65;margin:9px 0 0}.capsule small{font:10px 'DM Mono';color:#7a692e}.tabbar{position:fixed;z-index:5;bottom:0;left:50%;transform:translateX(-50%);width:min(510px,100%);height:83px;padding:7px 11px calc(7px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;background:rgba(255,253,249,.9);border-top:1px solid rgba(234,223,211,.9);backdrop-filter:blur(14px)}.tab{border:0;background:none;color:#8f9694;font:10px 'Noto Sans SC';min-width:50px;cursor:pointer}.tab span{display:block;font:20px/21px 'DM Mono'}.tab.active{color:var(--pink)}dialog{padding:0;border:0;border-radius:26px;width:min(470px,calc(100% - 28px));box-shadow:0 24px 80px rgba(46,35,27,.25)}dialog::backdrop{background:rgba(32,37,37,.35);backdrop-filter:blur(2px)}.modal{padding:30px 24px 24px;position:relative;background:var(--paper)}.modal h2{margin:0 0 20px;font-size:25px;letter-spacing:-.06em}.close{position:absolute;right:17px;top:14px;font-size:28px}.modal textarea,.modal input:not([type="datetime-local"]){width:100%;border:1px solid var(--line);border-radius:12px;background:#fffefd;padding:13px;font:14px 'Noto Sans SC';color:var(--ink);margin-bottom:12px}.modal textarea{height:128px;resize:vertical}.modal input:focus,.modal textarea:focus{outline:2px solid var(--pink-pale);border-color:var(--pink)}.moods{display:flex;gap:8px;margin-bottom:13px}.moods button{border:1px solid var(--line);border-radius:100px;background:white;padding:8px 13px;color:var(--ink);font:12px 'Noto Sans SC';cursor:pointer}.moods button.selected{background:var(--pink-pale);border-color:var(--pink)}.schedule-label{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);margin:4px 0 18px}.schedule-label input{border:0;background:transparent;color:var(--ink);font:11px 'DM Mono';max-width:185px}.toast{position:fixed;z-index:10;left:50%;bottom:100px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--ink);color:white;border-radius:100px;padding:10px 16px;font-size:12px;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
@keyframes appear{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@media(min-width:800px){body{padding:30px}.shell{border-radius:32px;box-shadow:0 20px 70px rgba(67,46,27,.1);min-height:calc(100dvh - 60px)}.tabbar{border-radius:0 0 32px 32px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Album records, countdowns, and the shared 100-things wall */
.photo-card{position:relative}.photo-card time{margin-top:2px;font:10px 'DM Mono';color:var(--muted)}.delete-photo{position:absolute;right:10px;top:10px;border:0;width:29px;height:29px;border-radius:50%;background:rgba(38,52,61,.78);color:#fff;font-size:20px;line-height:1;cursor:pointer;opacity:0;transition:opacity .2s}.photo-card:hover .delete-photo,.photo-card:focus-within .delete-photo{opacity:1}.upload-card{width:100%;border:0;background:transparent}.event .countdown{line-height:1.35}.event .countdown i{font-size:15px;color:var(--pink);font-style:normal}.checklist-hero{background:var(--pink-pale);padding:24px 23px;border-radius:24px;margin:-5px 0 18px}.checklist-hero span{font-size:12px;color:#a45c59}.checklist-hero strong{display:block;font:600 42px/1.1 'DM Mono';letter-spacing:-.1em;margin:7px 0}.checklist-hero strong i{font-style:normal;color:var(--pink)}.checklist-hero p{font-size:12px;margin:8px 0 0;color:#956462}.checklist-tabs{display:flex;gap:8px;margin-bottom:16px}.checklist-tabs button{border:1px solid var(--line);border-radius:100px;background:var(--surface);padding:8px 13px;font:12px 'Noto Sans SC';color:var(--muted);cursor:pointer}.checklist-tabs button.selected{background:var(--ink);border-color:var(--ink);color:#fff}.checklist-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.thing{min-height:88px;padding:11px;border:1px solid var(--line);background:var(--surface);border-radius:16px;text-align:left;position:relative;cursor:pointer;color:var(--ink)}.thing>span{display:block;font:10px 'DM Mono';color:var(--muted)}.thing>b{position:absolute;right:10px;top:9px;color:#c5ccca;font:18px/1 Georgia}.thing i{font:500 12px/1.4 'Noto Sans SC';display:block;font-style:normal;margin-top:11px;padding-right:15px}.thing small{display:block;font:9px 'DM Mono';color:#a06b68;margin-top:4px}.thing.done{border-color:#f0aaa4;background:#fff1ed}.thing.done>b{color:var(--pink)}.file-picker{height:52px;border:1.5px dashed #cbbfb3;border-radius:12px;display:flex;align-items:center;padding:0 13px;color:var(--muted);font-size:13px;cursor:pointer;margin-bottom:12px}.moods{flex-wrap:wrap}.tabbar{padding-left:5px;padding-right:5px}.tab{min-width:0;flex:1;font-size:9px}.tab span{font-size:19px}@media(max-width:370px){.tab{font-size:8px}.tab span{font-size:17px}.shell{padding-left:15px;padding-right:15px}}
.secondary-button{width:100%;border:0;background:none;color:#a7706d;font:12px 'Noto Sans SC';padding:14px 0 0;cursor:pointer}.secondary-button[hidden]{display:none}
.portrait img{object-position:50% 0%}
