:root{color:#202628;font-synthesis:none;text-rendering:optimizelegibility;--paper:#f7f8f6;--paper-deep:#e9ebea;--ink:#202628;--ink-soft:#667074;--mineral:#526d79;--mineral-dark:#28343b;--seal:#c94137;--seal-dark:#9f2e2a;--line:#d6dada;--shadow:0 18px 50px #1f2a2f17;background:#e9ebea;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Noto Sans CJK SC,sans-serif}*{box-sizing:border-box}html{background:var(--paper-deep)}body{background:radial-gradient(circle at 15% 0%, #fffc, transparent 34%), var(--paper-deep);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #526d7952}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.boot-screen{min-height:100vh;color:var(--ink-soft);letter-spacing:.12em;place-items:center;display:grid}.app-shell{background:#f7f8f6c2;width:min(100%,720px);min-height:100vh;margin:0 auto;position:relative;box-shadow:0 0 80px #1c2a3014}.app-header{height:92px;padding:max(18px, env(safe-area-inset-top)) 24px 14px;border-bottom:1px solid #20262814;align-items:center;gap:13px;display:flex}.app-header h1{letter-spacing:.08em;margin:0;font-family:STKaiti,KaiTi,serif;font-size:24px;font-weight:700}.eyebrow{color:var(--mineral);letter-spacing:.22em;text-transform:uppercase;margin:0 0 3px;font-size:11px;font-weight:700}.brand-mark{border:2px solid var(--seal);width:43px;height:43px;color:var(--seal);grid-template-columns:1fr 1fr;place-items:center;font-family:STKaiti,KaiTi,serif;font-weight:700;display:grid;transform:rotate(-2deg)}.brand-mark span:first-child{border-right:1px solid #c9413773}.page{padding:28px 22px 120px}.section-heading{justify-content:space-between;align-items:flex-end;margin-bottom:24px;display:flex}.section-heading h2{letter-spacing:.04em;margin:0;font-family:STKaiti,KaiTi,serif;font-size:clamp(27px,8vw,34px);line-height:1.15}.count-note{color:var(--ink-soft);font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.date-line{color:var(--ink-soft);justify-content:space-between;align-items:baseline;gap:14px;font-size:13px;display:flex}.day-code{letter-spacing:.08em;font-family:SFMono-Regular,Consolas,monospace;font-size:10px}.phase-track{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin:17px 4px 0;display:grid}.phase-track>div{align-items:center;gap:8px;display:flex}.phase-track>div>span{color:#7e888a;border:1px solid #aeb6b7;place-items:center;width:31px;height:31px;font-family:STKaiti,KaiTi,serif;display:grid;transform:rotate(-3deg)}.phase-track>div.done>span{border:2px solid var(--seal);color:var(--seal)}.phase-track p{color:var(--ink-soft);margin:0;font-size:10px}.phase-track strong{color:var(--ink);margin-top:2px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:500;display:block}.phase-track i{background:var(--line);height:1px}.stamp-stage{min-height:400px;box-shadow:var(--shadow);background:linear-gradient(145deg,#ffffffc7,#f1f3f0e0);border:1px solid #27363c1a;align-content:center;place-items:center;gap:28px;margin:20px 0 18px;display:grid;position:relative;overflow:hidden}.paper-fiber{opacity:.3;pointer-events:none;background-image:repeating-linear-gradient(8deg,#0000 0 22px,#2d3b4008 23px,#0000 24px),repeating-linear-gradient(98deg,#0000 0 31px,#2d3b4006 32px,#0000 33px);position:absolute;inset:0}.stamp-button{cursor:pointer;filter:drop-shadow(0 16px 15px #1c262a2e);background:0 0;border:0;flex-direction:column;justify-content:flex-end;align-items:center;width:154px;height:190px;padding:0;transition:transform .16s,filter .16s;display:flex}.stamp-button:active{filter:drop-shadow(0 4px 5px #1c262a29);transform:translateY(12px)scale(.98)}.stamp-handle{background:linear-gradient(100deg,#42555e,#26343a 58%,#526873);border:1px solid #1e2b31;border-radius:42px 42px 15px 15px;width:76px;height:104px;position:relative;box-shadow:inset 7px 0 12px #ffffff12}.stamp-handle span{background:#ffffff2b;border-radius:5px;width:28px;height:5px;position:absolute;top:20px;left:24px}.stamp-base{color:#e8edeb;letter-spacing:.18em;text-indent:.18em;background:#2e3e45;border:4px solid #1e2b31;border-bottom:10px solid #172227;place-items:center;width:144px;height:69px;margin-top:-4px;font-family:STKaiti,KaiTi,serif;font-size:24px;display:grid}.stamp-caption{z-index:1;color:var(--ink-soft);letter-spacing:.04em;margin:0;font-size:13px}.impression{border:8px double var(--seal);width:178px;height:178px;color:var(--seal);opacity:.92;align-content:center;place-items:center;animation:.4s cubic-bezier(.2,.85,.35,1.1) stamp-in;display:grid;transform:rotate(-3deg);box-shadow:inset 0 0 0 4px #c9413714}.impression-main{font-family:STKaiti,KaiTi,serif;font-size:86px;font-weight:700;line-height:.9}.impression-date{letter-spacing:.18em;margin-top:9px;font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.waiting-seal{color:#899395;opacity:.62;border:5px double #aeb6b7;place-items:center;width:142px;height:142px;display:grid;transform:rotate(-3deg)}.waiting-seal.recorded{border-color:var(--mineral);color:var(--mineral);opacity:.88}.waiting-seal span{font-family:STKaiti,KaiTi,serif;font-size:66px;font-weight:700}@keyframes stamp-in{0%{opacity:0;filter:blur(3px);transform:scale(1.7)rotate(-7deg)}55%{opacity:.96;transform:scale(.94)rotate(-3deg)}}.today-actions{gap:12px;display:grid}.photo-prompt{text-align:left;cursor:pointer;background:#ffffff73;border:1px dashed #9aa4a6;align-items:center;gap:12px;width:100%;padding:17px;display:flex}.photo-prompt strong,.photo-prompt small{display:block}.photo-prompt small{color:var(--ink-soft);margin-top:4px}.photo-card{background:var(--paper);box-shadow:var(--shadow);margin:0;overflow:hidden}.photo-card img{object-fit:cover;width:100%;max-height:420px;display:block}.photo-card figcaption{justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.photo-card figcaption>span{color:var(--ink-soft);align-items:center;gap:7px;font-size:13px;display:flex}.photo-card figcaption div{align-items:center;gap:4px;display:flex}.text-button,.undo-button{cursor:pointer;color:var(--mineral);background:0 0;border:0}.undo-button{color:var(--ink-soft);align-items:center;gap:7px;margin:5px auto 0;font-size:12px;display:flex}.calendar-card{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);padding:18px 12px 16px}.calendar-toolbar{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.calendar-toolbar h3{letter-spacing:.1em;margin:0;font-size:15px}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:38px;height:38px;display:inline-grid}.icon-button:hover{background:#526d7914}.icon-button.danger{color:var(--seal)}.weekday-row,.calendar-grid{grid-template-columns:repeat(7,1fr);display:grid}.weekday-row span{text-align:center;color:var(--ink-soft);padding:4px 0 10px;font-size:11px}.calendar-grid{gap:4px 1px}.calendar-grid button,.calendar-grid>span{aspect-ratio:1}.calendar-grid button{cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;display:grid;position:relative}.calendar-grid button.today{box-shadow:inset 0 0 0 1px var(--mineral)}.calendar-grid button.selected{background:#526d791a}.calendar-grid button.future{opacity:.28;cursor:default}.calendar-grid button i{border:2px solid var(--seal);width:31px;height:31px;color:var(--seal);opacity:.78;place-items:center;font-family:STKaiti,KaiTi,serif;font-size:13px;font-style:normal;display:grid;position:absolute;transform:rotate(-8deg)}.calendar-grid button.checked>span{opacity:.22}.calendar-grid button.single i{border-style:dashed;border-color:var(--mineral);color:var(--mineral);opacity:.72}.calendar-grid button.single>span{opacity:.3}.day-detail{background:var(--mineral-dark);color:#edf0ef;margin-top:16px;padding:20px;position:relative}.day-detail .close,.restore-modal .close{position:absolute;top:10px;right:10px}.day-detail .close{color:#fff}.day-detail h3{margin:4px 0 12px;font-family:STKaiti,KaiTi,serif;font-size:23px}.day-detail p:last-child{color:#bfc9ca;margin:10px 0 0;font-size:12px}.day-detail img{object-fit:cover;width:100%;max-height:330px}.detail-times{grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;display:grid}.detail-times span{color:#bfc9ca;border:1px solid #ffffff29;padding:10px;font-size:11px}.detail-times strong{color:#fff;margin-top:3px;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;display:block}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;display:grid}.gallery-tile{text-align:left;cursor:pointer;background:0 0;border:0;min-width:0;padding:0}.gallery-frame{aspect-ratio:4/5;background:#dfe2df;display:block;overflow:hidden;box-shadow:0 10px 28px #1e2a2f1a}.gallery-frame img{object-fit:cover;width:100%;height:100%;transition:transform .22s,filter .22s;display:block}.gallery-tile:active .gallery-frame img{filter:contrast(1.04);transform:scale(.985)}.gallery-tile time{color:var(--ink-soft);letter-spacing:.08em;margin-top:8px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:block}.gallery-empty{text-align:center;min-height:340px;color:var(--ink-soft);border:1px dashed #aeb6b7;align-content:center;place-items:center;padding:44px 30px;display:grid}.gallery-empty h3{color:var(--ink);margin:14px 0 5px;font-family:STKaiti,KaiTi,serif;font-size:22px}.gallery-empty p{max-width:290px;margin:0;font-size:12px;line-height:1.7}.gallery-backdrop{align-items:start;overflow-y:auto}.photo-detail-modal{background:var(--paper);width:min(100%,560px);max-height:calc(100dvh - 48px);position:relative;overflow-y:auto;box-shadow:0 30px 80px #0000004d}.photo-detail-modal>.close{z-index:2;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#141c1fb8;position:absolute;top:9px;right:9px}.photo-detail-modal>img{object-fit:contain;background:#172227;width:100%;max-height:min(62dvh,620px);display:block}.photo-detail-copy{padding:20px 22px 23px}.photo-detail-copy h3{margin:3px 0 15px;font-family:STKaiti,KaiTi,serif;font-size:25px}.photo-detail-times{grid-template-columns:1fr 1fr;gap:8px;display:grid}.photo-detail-times span{border:1px solid var(--line);color:var(--ink-soft);padding:10px 11px;font-size:10px}.photo-detail-times strong{color:var(--ink);margin-top:4px;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;display:block}.photo-spec{color:var(--ink-soft);margin:14px 0 0;font-family:SFMono-Regular,Consolas,monospace;font-size:10px}.photo-spec span{margin:0 7px}.stats-ledger{background:var(--mineral-dark);color:#edf0ef;box-shadow:var(--shadow);padding:26px}.hero-stat{border-bottom:1px solid #ffffff29;padding-bottom:24px}.hero-stat p{color:#b8c4c5;letter-spacing:.12em;margin:0;font-size:12px}.hero-stat strong{font-family:SFMono-Regular,Consolas,monospace;font-size:78px;font-weight:400;line-height:1.1}.hero-stat span{color:#b8c4c5;margin-left:8px}.hero-stat>small{color:#9eadaf;letter-spacing:.06em;margin-top:4px;font-size:11px;display:block}.streak-track{padding:20px 0 0}.streak-track+.streak-track{border-top:1px solid #ffffff1f;margin-top:20px}.streak-track>div:first-child{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.streak-track p{letter-spacing:.06em;margin:0;font-weight:700}.streak-track>div:first-child span{color:#9eadaf;text-align:right;font-size:10px}.streak-track>strong{color:#fff;margin:9px 0 13px;font-family:SFMono-Regular,Consolas,monospace;font-size:38px;font-weight:450;display:block}.streak-track>strong small{color:#acb9ba;font-size:12px;font-weight:400}.streak-track dl{border-top:1px solid #ffffff1a;grid-template-columns:1fr 1fr;margin:0;display:grid}.streak-track dl>div{color:#abb8b9;justify-content:space-between;padding-top:11px;font-size:11px;display:flex}.streak-track dl>div+div{border-left:1px solid #ffffff1a;margin-left:17px;padding-left:17px}.streak-track dt,.streak-track dd{margin:0}.streak-track dd{color:#fff;font-family:SFMono-Regular,Consolas,monospace}.double-track>strong{color:#cfdddf}.punch-breakdown{border:1px solid var(--line);background:var(--paper);grid-template-columns:repeat(4,1fr);margin-top:16px;display:grid}.punch-breakdown span{text-align:center;min-width:0;color:var(--ink-soft);padding:14px 5px;font-size:10px}.punch-breakdown span+span{border-left:1px solid var(--line)}.punch-breakdown strong{color:var(--ink);margin-top:5px;font-family:SFMono-Regular,Consolas,monospace;font-size:20px;font-weight:500;display:block}.punch-breakdown small{margin-left:2px;font-size:9px}.month-comparison{background:var(--paper);border:1px solid var(--line);margin-top:16px;padding:21px}.month-comparison-heading{justify-content:space-between;align-items:flex-start;margin-bottom:20px;display:flex}.month-comparison-heading h3{margin:3px 0 0;font-size:18px}.month-comparison-heading>span{color:var(--ink-soft);font-family:SFMono-Regular,Consolas,monospace;font-size:10px}.progress-row+.progress-row{margin-top:18px}.progress-row>div:first-child{justify-content:space-between;gap:10px;font-size:11px;display:flex}.progress-row>div:first-child strong{font-family:SFMono-Regular,Consolas,monospace;font-size:10px;font-weight:500}.progress-line{background:#dfe3e2;height:7px;margin-top:8px;overflow:hidden}.progress-line span{background:var(--seal);width:0;height:100%;transition:width .4s;display:block}.progress-row.muted .progress-line span{background:var(--mineral)}.month-comparison>p{border-top:1px solid var(--line);color:var(--ink-soft);margin:18px 0 0;padding-top:14px;font-size:10px;line-height:1.6}.activation-note{text-align:center;color:var(--ink-soft);letter-spacing:.08em;margin:22px 0 0;font-size:11px}.settings-group{background:var(--paper);border:1px solid var(--line);margin-bottom:16px;padding:19px}.settings-title{align-items:flex-start;gap:11px;display:flex}.settings-title>svg{color:var(--mineral);margin-top:1px}.settings-title h3{margin:0;font-size:15px}.settings-title p{color:var(--ink-soft);margin:4px 0 0;font-size:12px;line-height:1.5}.time-pair{grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 12px;display:grid}.time-pair label{color:var(--ink-soft);font-size:11px}.time-pair input{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;margin-top:5px;padding:10px;font-family:SFMono-Regular,Consolas,monospace}.primary-button,.secondary-button{cursor:pointer;justify-content:center;align-items:center;gap:9px;width:100%;min-height:46px;padding:10px 14px;font-weight:650;display:flex}.primary-button{border:1px solid var(--mineral-dark);background:var(--mineral-dark);color:#fff}.secondary-button{border:1px solid var(--line);color:var(--mineral-dark);background:0 0}.button-stack{grid-template-columns:1fr 1fr;gap:9px;margin-top:17px;display:grid}.fine-print{color:var(--ink-soft);margin:10px 0 0;font-size:10px;line-height:1.55}.storage-meter{background:#dfe3e2;height:5px;margin:18px 0 7px;overflow:hidden}.storage-meter span{background:var(--mineral);min-width:3px;height:100%;display:block}.storage-label{color:var(--ink-soft);justify-content:space-between;font-size:10px;display:flex}.privacy-note{color:#46595f;background:#526d7914;align-items:flex-start;gap:9px;margin-top:15px;padding:11px;font-size:11px;line-height:1.5;display:flex}.privacy-note svg{flex:none}.install-tip{margin-top:26px;padding:0 4px}.install-tip span{color:var(--mineral);letter-spacing:.14em;font-size:11px;font-weight:700}.install-tip p{color:var(--ink-soft);margin:7px 0 0;font-size:12px;line-height:1.6}.bottom-nav{z-index:20;width:min(100%,720px);padding:8px 10px max(8px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f7f8f6f0;border-top:1px solid #2026281f;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav button{color:#7a8385;cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:52px;padding:5px 2px;display:flex}.bottom-nav button span{font-size:10px}.bottom-nav button.active{color:var(--mineral-dark)}.bottom-nav button.active:after{content:"";width:4px;height:4px;bottom:max(5px, env(safe-area-inset-bottom));background:var(--seal);border-radius:50%;position:absolute}.toast{z-index:60;left:50%;bottom:calc(88px + env(safe-area-inset-bottom));color:#fff;white-space:nowrap;background:#172227;max-width:calc(100vw - 40px);padding:11px 16px;font-size:12px;position:fixed;transform:translate(-50%);box-shadow:0 8px 30px #0000002e}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#121c209e;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.restore-modal{background:var(--paper);width:min(100%,410px);padding:26px;position:relative;box-shadow:0 30px 80px #00000040}.restore-modal h3{margin:4px 0 12px;font-family:STKaiti,KaiTi,serif;font-size:25px}.restore-modal>p:not(.eyebrow){color:var(--ink-soft);font-size:12px;line-height:1.7}.danger-fill{border-color:var(--seal-dark);background:var(--seal-dark);margin-top:18px}@media (width>=600px){.page{padding-inline:40px}.stamp-stage{min-height:470px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 15px}}@media (width<=380px){.page{padding-inline:16px}.button-stack{grid-template-columns:1fr}.streak-track>div:first-child{display:block}.streak-track>div:first-child span{text-align:left;margin-top:4px;display:block}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
