:root{--paper:#f7f2f1;--card:#fff;--ink:#1f191b;--ink-2:#6d5f63;--ink-3:#a2949a;--line:#e9dedf;--line-soft:#f1e8e8;--rose:#a8505f;--rose-deep:#8a3a49;--rose-soft:#f3e6e8;--heat-0:#f3ebeb;--heat-1:#eedadd;--heat-2:#d7b0b7;--heat-3:#bb7b87;--heat-4:#984a57;--font-serif:"Didot", "Bodoni 72", "Songti SC", "STSong", "Times New Roman", serif;--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", sans-serif;--gutter:22px;--pad-x:max(var(--gutter), env(safe-area-inset-left,0px), env(safe-area-inset-right,0px));--radius:16px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{min-height:100%;margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:15px;line-height:1.6}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(58% 34% at 6% 0,#cc8a9b4d,#0000 70%),radial-gradient(52% 32% at 98% 6%,#aca0ca3d,#0000 70%),radial-gradient(70% 40% at 40% 100%,#e9ac9e3d,#0000 72%);position:fixed;inset:0}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}input,textarea{color:var(--ink);font-family:inherit;font-size:15px}img{max-width:100%;display:block}.app{max-width:520px;min-height:100dvh;margin:0 auto}.main{padding:14px var(--pad-x) calc(84px + env(safe-area-inset-bottom))}.main-plain{padding-bottom:calc(30px + env(safe-area-inset-bottom))}.page{animation:.22s backwards rise}.boot{background:var(--paper);min-height:100dvh}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.page{animation:none}}.topbar{z-index:15;height:calc(44px + env(safe-area-inset-top,0px));margin:-14px calc(var(--pad-x) * -1) 14px;padding:env(safe-area-inset-top,0px) var(--pad-x) 0;border-bottom:1px solid var(--line-soft);-webkit-backdrop-filter:blur(18px)saturate(170%);background:#f7f2f1b8;justify-content:space-between;align-items:center;gap:10px;display:flex;position:sticky;top:0}.wordmark{letter-spacing:.26em;color:var(--ink-3);font-size:12px}.topbar-spacer{width:36px}.topbar-tools{align-items:center;gap:4px;display:flex}.lang-toggle{letter-spacing:.06em;min-width:44px;min-height:44px;color:var(--ink-3);justify-content:center;align-items:center;margin:-12px -10px -12px 0;padding:0 4px;font-size:11.5px;transition:color .15s;display:inline-flex}.lang-toggle i{border:1px solid var(--line);border-radius:999px;justify-content:center;align-items:center;min-width:28px;height:22px;padding:0 7px;font-style:normal;display:inline-flex}.lang-toggle:active{color:var(--ink)}.lang-toggle-inline{margin:0}.topbar-action{letter-spacing:.04em;min-height:44px;color:var(--rose-deep);align-items:center;margin:-12px -2px -12px 0;padding:0 2px 0 12px;font-size:13px;transition:opacity .15s;display:inline-flex}.topbar-action:active{opacity:.55}.page-title{font-family:var(--font-serif);letter-spacing:.04em;margin:0 0 6px;font-size:34px;font-weight:500;line-height:1.1}.page-sub{color:var(--ink-3);margin:0 0 20px;font-size:13px}.icon-btn{width:36px;height:36px;color:var(--ink-2);border-radius:50%;justify-content:center;align-items:center;margin-right:-8px;font-size:22px;line-height:1;transition:background .15s;display:inline-flex;position:relative}.icon-btn:active{background:var(--line-soft)}.gear-dot{background:var(--rose);border-radius:50%;width:6px;height:6px;position:absolute;top:6px;right:6px}.goal{-webkit-backdrop-filter:blur(26px)saturate(160%);background:#ffffff8c;border:1px solid #fffc;border-radius:22px;margin:0 0 16px;overflow:hidden;box-shadow:inset 0 1px #fffffff2,0 16px 40px -22px #663a444d}.goal-track{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;overflow-x:auto}.goal-track::-webkit-scrollbar{display:none}.goal-slide{scroll-snap-align:start;flex-direction:column;flex:0 0 100%;justify-content:space-between;padding:13px 16px 10px;display:flex}.goal-dots{justify-content:center;align-items:center;gap:2px;padding-bottom:6px;display:flex}.goal-dot{background:0 0;justify-content:center;align-items:center;width:24px;height:26px;display:flex}.goal-dot i{background:var(--line);border-radius:999px;width:6px;height:6px;transition:width .2s,background .2s}.goal-dot-on i{background:var(--ink-3);border-radius:3px;width:16px}.goal-aside{color:var(--ink-3);white-space:nowrap;font-size:12px}.goal-foot{min-height:18px;color:var(--ink-3);letter-spacing:.02em;align-items:center;font-size:12px;display:flex}.goal-foot .goal-bar{flex:1}.goal-foot-split{justify-content:space-between;gap:10px;font-size:11.5px}.goal-foot-split>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.goal-money{white-space:nowrap;font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:baseline;min-height:44px;margin:-12px -2px -12px 0;padding:0 2px;display:inline-flex}.goal-money b{color:var(--rose)}.goal-money:active{opacity:.6}.spend-hint{color:var(--ink-3);white-space:nowrap}.goal-top{justify-content:space-between;align-items:baseline;display:flex}.goal-label{letter-spacing:.14em;margin:0}.goal-sessions{color:var(--ink-3);font-size:12px}.goal-main{justify-content:space-between;align-items:center;gap:10px;margin:2px 0 11px;display:flex}.goal-hours{font-family:var(--font-serif);color:var(--ink-2);font-size:14px}.goal-hours b{letter-spacing:.01em;color:var(--ink);font-size:30px;font-weight:500}.goal-edit{min-height:44px;color:var(--ink-3);white-space:nowrap;align-items:center;margin:-14px -4px -14px 0;padding:0 4px;font-size:12px;transition:color .15s;display:inline-flex}.goal-edit:active{color:var(--ink)}.goal-bar{background:var(--heat-0);border-radius:3px;height:6px;overflow:hidden}.goal-bar i{background:var(--rose);border-radius:3px;height:100%;transition:width .4s cubic-bezier(.22,.8,.3,1);display:block}@media (prefers-reduced-motion:reduce){.goal-bar i{transition:none}}.goal-gift{letter-spacing:.01em;color:var(--ink-2);align-items:center;gap:6px;margin:10px 0 -4px;font-size:12.5px;display:flex}.goal-gift-mark{flex:none;font-size:13px;line-height:1}.goal-gift-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.goal-gift-act{letter-spacing:.02em;color:var(--rose);white-space:nowrap;flex:none;padding:2px;font-size:12px;position:relative}.goal-gift-act:after{content:"";position:absolute;inset:-13px -8px}.goal-gift-act:active{opacity:.6}.goal-gift-done{color:var(--ink-3);flex:none;font-size:11.5px}.goal-gift-quiet{color:var(--ink-3)}.goal-gift-field{margin:2px 0 20px;display:block}.goal-gift-field .label{margin-bottom:7px;display:block}.goal-gift-field .input{width:100%}.cal-panel,.split{-webkit-backdrop-filter:blur(26px)saturate(150%);background:#ffffff80;border:1px solid #ffffffc7;box-shadow:inset 0 1px #fffffff2,0 16px 40px -24px #663a4447}.cal-panel{border-radius:22px;padding:14px 16px 13px;position:relative}.month-head{flex-direction:column;display:flex}.mh-bar{justify-content:flex-end;align-items:center;min-height:28px;display:flex}.month-nav{align-items:center;gap:2px;display:flex}.month-nav .icon-btn{width:34px;height:28px;color:var(--ink-2);border-radius:8px;margin:0}.mh-row{justify-content:space-between;align-items:baseline;gap:10px;margin-top:-1px;display:flex}.mh-title{flex-direction:column;align-items:flex-start;display:flex}.month-num{min-height:44px;font-family:var(--font-serif);letter-spacing:.04em;font-variant-numeric:lining-nums tabular-nums;color:var(--ink);align-items:flex-start;gap:6px;margin:-6px 0;padding:6px 0;font-size:30px;font-weight:500;line-height:1.06;transition:opacity .15s;display:flex}.month-num:active{opacity:.6}.month-num svg{color:var(--ink-3);flex:none;margin-top:9px}.cal-foot{justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.cal-foot .cal-hint{margin:0}.back-today{letter-spacing:.02em;min-height:34px;color:var(--rose);flex:none;padding:0 2px;font-size:11.5px}.back-today:active{opacity:.6}.month-sum{white-space:nowrap;font-family:var(--font-serif);color:var(--ink-2);align-items:baseline;gap:5px;display:flex}.month-sum b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:16px;font-weight:500}.month-sum span{color:var(--ink-3);letter-spacing:.01em;font-size:12px}.month-sum i{color:var(--ink-3);opacity:.75;margin:0 4px;font-size:12px;font-style:normal}.month-sum-empty{color:var(--ink-3);letter-spacing:.02em;font-size:12px}.cal-hint{letter-spacing:.02em;color:var(--ink-3);margin:8px 0 0;font-size:11.5px}.split{border-radius:22px;margin:16px 0 2px;padding:14px 16px 15px}.split-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 10px;display:flex}.split-swipe{padding:0;overflow:hidden}.split-swipe .goal-track{align-items:flex-start;transition:height .24s;overflow-y:hidden}.split-swipe .goal-slide{justify-content:flex-start;gap:4px;padding:14px 16px 4px}@media (prefers-reduced-motion:reduce){.split-swipe .goal-track{transition:none}}.yhm-nav{align-items:center;gap:2px;display:flex}.yhm-step{width:40px;height:40px;color:var(--ink-2);border-radius:999px;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:all .15s;display:flex}.yhm-step:active:not(:disabled){transform:scale(.92)}.yhm-step:disabled{opacity:.22}.yhm-year{text-align:center;min-width:36px;color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:13px}.yhm-body{margin-top:10px}.yhm-months{height:13px;position:relative}.yhm-months span{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:8.5px;position:absolute;top:0}.yhm-grid{grid-template-rows:repeat(7,auto);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:2.5px 1.5px;display:grid}.yhm-cell{aspect-ratio:1;background:var(--heat-0);border-radius:2px}.yhm-cell[data-level="-1"]{background:0 0}.yhm-cell[data-level="1"]{background:var(--heat-1)}.yhm-cell[data-level="2"]{background:var(--heat-2)}.yhm-cell[data-level="3"]{background:var(--heat-3)}.yhm-cell[data-level="4"]{background:var(--heat-4)}.yhm-foot{color:var(--ink-3);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;font-size:11.5px;display:flex}.yhm-legend{white-space:nowrap;align-items:center;gap:3px;font-size:10px;display:flex}.yhm-legend i{background:var(--heat-0);border-radius:2px;width:8px;height:8px}.yhm-legend i[data-level="1"]{background:var(--heat-1)}.yhm-legend i[data-level="2"]{background:var(--heat-2)}.yhm-legend i[data-level="3"]{background:var(--heat-3)}.yhm-legend i[data-level="4"]{background:var(--heat-4)}.split-title{letter-spacing:.14em;color:var(--ink-3);font-size:11px}.split-chips{gap:4px}.split-chips .chip{height:30px;padding:0 9px;font-size:12px}.donut-wrap{width:100%;max-width:348px;margin:6px auto 0;position:relative}.donut-svg{width:100%;height:auto;display:block}.donut-core{pointer-events:none;white-space:nowrap;flex-direction:column;align-items:center;gap:3px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.donut-core span{letter-spacing:.08em;color:var(--ink-3);font-size:9px}.donut-core b{font-family:var(--font-serif);letter-spacing:.02em;color:var(--ink);font-variant-numeric:tabular-nums;font-size:18px;font-weight:500;line-height:1}.donut-empty{letter-spacing:.02em;color:var(--ink-3);margin:14px 0 0;font-size:12.5px}.cal{margin:14px 0 0}.cal-week{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:8px;display:grid}.cal-week span{text-align:center;letter-spacing:.08em;color:var(--ink-3);font-size:11px}.cal-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal-cell{aspect-ratio:1;font-family:var(--font-serif);font-variant-numeric:tabular-nums;color:var(--ink-3);background:0 0;border-radius:11px;flex-direction:column;justify-content:center;align-items:center;font-size:14px;font-weight:500;line-height:1;transition:transform .1s;display:flex;position:relative}.cal-num{font-variant-numeric:tabular-nums}.cal-hours{font-family:var(--font-sans);letter-spacing:.01em;opacity:.72;margin-top:3px;font-size:8.5px;font-weight:400}.cal-cell:active{transform:scale(.93)}.cal-blank{background:0 0}.cal-cell[data-level="1"]{background:var(--heat-1);color:var(--ink-2)}.cal-cell[data-level="2"]{background:var(--heat-2);color:var(--ink)}.cal-cell[data-level="3"]{background:var(--heat-3);color:#fff}.cal-cell[data-level="4"]{background:var(--heat-4);color:#fff}.cal-today{box-shadow:inset 0 0 0 1.5px var(--rose)}.cal-selected{box-shadow:inset 0 0 0 2px var(--ink)}.cal-gift{pointer-events:none;font-size:8px;line-height:1;position:absolute;top:2px;right:3px}.sheet-picker{padding-bottom:calc(20px + env(safe-area-inset-bottom))}.wheel-row{justify-content:center;align-items:center;gap:0;height:200px;margin:8px 0 6px;display:flex;position:relative}.wheel-band{pointer-events:none;background:#1f191b0d;border-radius:12px;width:232px;height:40px;margin-left:-116px;position:absolute;top:80px;left:50%}.wheel{scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;height:200px;padding-block:80px;position:relative;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000,#000 24% 76%,#0000);mask-image:linear-gradient(#0000,#000 24% 76%,#0000)}.wheel::-webkit-scrollbar{display:none}.wheel-item{scroll-snap-align:center;width:100%;height:40px;font-family:var(--font-serif);font-variant-numeric:lining-nums tabular-nums;letter-spacing:.04em;color:var(--ink-3);justify-content:center;align-items:center;font-size:22px;transition:color .15s;display:flex}.wheel-item-on{color:var(--ink);font-weight:500}.wheel-dot{font-family:var(--font-serif);color:var(--ink-3);font-size:22px;position:relative;transform:translateY(-1px)}.section-label{letter-spacing:.16em;color:var(--ink-3);align-items:baseline;gap:8px;margin:30px 0 4px;font-size:11px;font-weight:500;display:flex}.month-list{margin-top:18px}.entry-row{border-top:1px solid var(--line);text-align:left;align-items:center;gap:14px;width:100%;padding:15px 0;display:flex}.entry-row:last-child{border-bottom:1px solid var(--line)}.entry-day{text-align:center;flex-shrink:0;width:34px}.entry-day b{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-size:21px;font-weight:500;line-height:1.1;display:block}.entry-day i{color:var(--ink-3);letter-spacing:.04em;font-size:10px;font-style:normal;display:block}.entry-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.entry-line{align-items:center;gap:6px;display:flex}.dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.entry-title{white-space:nowrap;text-overflow:ellipsis;font-size:14.5px;font-weight:500;overflow:hidden}.entry-note{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.entry-dur{font-family:var(--font-serif);color:var(--rose-deep);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:14px}.entry-dur-quiet{color:var(--ink-3);font-size:12px}.empty{color:var(--ink-3);padding:28px 2px;font-size:13.5px;line-height:1.8}.empty-home{text-align:center;padding:2px 2px 40px}.empty-block{text-align:center;color:var(--ink-2);padding:56px 0;font-size:14px}.empty-sub{color:var(--ink-3);margin-top:8px;font-size:12.5px;line-height:1.8}.lede{color:var(--ink-3);letter-spacing:.02em;margin:0 0 22px;font-size:13px}.count{color:var(--ink-3);letter-spacing:.06em;margin:18px 2px 6px;font-size:12px}.notes-tools{justify-content:space-between;align-items:center;gap:10px;margin:14px 2px 6px;display:flex}.notes-tools .count{margin:0}.notes-export{letter-spacing:.02em;color:var(--rose);white-space:nowrap;padding:4px 2px;font-size:12px;position:relative}.notes-export:after{content:"";position:absolute;inset:-12px -6px}.export-block{margin:16px 0 0}.export-block .label{margin-bottom:8px;display:block}.export-chips{gap:6px}.export-photos{flex-wrap:wrap;gap:8px;display:flex}.export-thumb.export-thumb-bg{width:51px;height:68px}.export-hint{color:var(--ink-3);margin:8px 0 0;font-size:12px;line-height:1.6}.export-thumb{background:var(--line-soft);border-radius:10px;width:68px;height:68px;display:block;position:relative;overflow:hidden}.export-thumb img{object-fit:cover;width:100%;height:100%}.export-thumb-x{color:#fff;background:#1f191b99;border-radius:50%;width:22px;height:22px;font-size:14px;line-height:1;position:absolute;top:2px;right:2px}.export-add{border:1px dashed var(--line);width:68px;height:68px;color:var(--ink-3);border-radius:10px;justify-content:center;align-items:center;font-size:12px;display:flex}.export-preview{background:var(--paper);border:1px solid var(--line-soft);border-radius:16px;margin:18px 0 4px;padding:10px}.export-preview img{border-radius:6px;width:100%;height:auto;display:block}.export-preview .empty{text-align:center;margin:20px 0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.chips-scroll::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);background:var(--card);height:34px;color:var(--ink-2);white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:0 14px;font-size:13px;transition:all .15s;display:inline-flex}.chip:active{transform:scale(.96)}.chip.chip-dragging{z-index:2;transition:transform .12s,box-shadow .12s;position:relative;transform:scale(1.06);box-shadow:0 6px 18px #1f191b29}.chip-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.chip-quiet{background:0 0;border-color:#0000;padding:0 10px}.chip-quiet.chip-on{background:var(--ink)}.chip-dot i{border-radius:50%;width:7px;height:7px;display:block}.filter-row{margin-bottom:10px}.range-row{align-items:center;gap:8px;margin:4px 0 10px;display:flex}.range-dash{color:var(--ink-3)}.notes{margin-top:4px}.month-divider{font-family:var(--font-serif);letter-spacing:.04em;align-items:baseline;gap:8px;margin:26px 0 2px;font-size:19px;font-weight:500;display:flex}.month-divider span{font-family:var(--font-sans);color:var(--ink-3);letter-spacing:.1em;font-size:11px}.note{border-top:1px solid var(--line);grid-template-columns:38px 1fr;gap:14px;padding:18px 0;display:grid}.note-head{display:contents}.note-day{text-align:center}.note-day b{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-size:23px;font-weight:500;line-height:1.1;display:block}.note-day i{color:var(--ink-3);font-size:10px;font-style:normal;display:block}.note-meta{color:var(--ink-3);flex-wrap:wrap;grid-column:2;align-items:center;gap:6px 10px;font-size:12px;display:flex}.note-moves{color:var(--rose-deep);letter-spacing:.02em;font-weight:500}.note-cat{align-items:center;gap:5px;display:inline-flex}.note-points{grid-column:2;margin-top:8px}.note-points-block+.note-points-block{margin-top:9px}.note-points-title{letter-spacing:.08em;color:var(--ink-3);margin-bottom:2px;font-size:11px}.note-points ul{margin:0;padding:0;list-style:none}.note-points li{word-break:break-word;padding-left:12px;font-size:14.5px;line-height:1.7;position:relative}.note-points li+li{margin-top:1px}.note-points li:before{content:"•";color:var(--rose);position:absolute;left:0}.note-points li.is-sub{color:var(--ink-2);padding-left:26px;font-size:13.5px}.note-points li.is-sub:before{content:"↳";color:var(--ink-3);font-size:12px;left:13px}.is-muted{opacity:.45}.note-photos{flex-wrap:wrap;grid-column:2;gap:7px;margin-top:10px;display:flex}.note-photos img{object-fit:cover;background:var(--line-soft);border-radius:10px;width:74px;height:74px}.places{flex-direction:column;gap:12px;display:flex}.place{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 17px}.place-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.place-name{letter-spacing:.01em;margin:0;font-size:15.5px;font-weight:600}.place-type{color:var(--rose-deep);background:var(--rose-soft);border-radius:999px;flex-shrink:0;padding:2px 9px;font-size:11px}.place-sub{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;font-size:12px;display:flex}.stars{color:var(--rose);letter-spacing:1px;font-size:11px}.stars i{color:var(--line);font-style:normal}.place-review{white-space:pre-wrap;margin:10px 0 0;font-size:14px;line-height:1.75}.place .note-photos{grid-column:auto}.block{margin-bottom:34px}.block .section-label{margin-top:0}.hint{color:var(--ink-3);margin:6px 0 12px;font-size:12.5px;line-height:1.75}.hint.center{text-align:center}.backup-when{margin-top:-6px}.backup-when.is-due,.hint.warn{color:var(--rose-deep)}.code-box{border:1px solid var(--line);background:var(--card);border-radius:16px;flex-direction:column;gap:10px;margin:4px 0 14px;padding:14px;display:flex}.code-value{font-family:var(--font-serif);letter-spacing:.08em;text-align:center;color:var(--ink);word-break:break-all;font-size:17px}.restore-box{flex-direction:column;gap:10px;margin-top:10px;display:flex}.link-btn{min-height:44px;color:var(--ink-2);letter-spacing:.02em;text-align:left;background:0 0;margin-top:14px;padding:10px 0;font-size:13px}.input{border:1px solid var(--line);background:var(--card);border-radius:12px;width:100%;padding:11px 13px;transition:border-color .15s}.input:focus{border-color:var(--rose);outline:none}.input-sm{padding:9px 12px;font-size:14px}.textarea{resize:none;line-height:1.7}.date-line{width:100%;font-family:var(--font-serif);color:var(--ink);letter-spacing:.04em;appearance:none;background:0 0;border:none;padding:0;font-size:17px;display:block}.date-line:focus{outline:none}.btn{letter-spacing:.04em;border-radius:13px;justify-content:center;align-items:center;gap:6px;height:48px;padding:0 18px;font-size:15px;font-weight:500;transition:transform .1s,opacity .15s;display:flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55}.btn-primary{background:var(--rose);color:#fff;flex:1}.btn-outline{border:1px solid var(--line);background:var(--card);color:var(--ink);flex:1}.btn-quiet{color:var(--ink-3);background:0 0;flex:none;width:96px}.btn-row{gap:10px;display:flex}.btn-row+.btn-row{margin-top:10px}.sheet-mask{z-index:40;-webkit-backdrop-filter:blur(2px);background:#2b1e2342;justify-content:center;align-items:flex-end;animation:.18s both fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{-webkit-overflow-scrolling:touch;-webkit-backdrop-filter:blur(34px)saturate(170%);width:100%;max-width:520px;max-height:90dvh;padding:0 var(--pad-x) calc(20px + env(safe-area-inset-bottom));background:#fffdfcde;border-top:1px solid #ffffffe6;border-radius:24px 24px 0 0;animation:.24s cubic-bezier(.22,.8,.3,1) both slide;overflow-y:auto;box-shadow:inset 0 1px #fffffff2,0 -20px 50px -28px #502a346b}@keyframes slide{0%{transform:translateY(28px)}}@media (prefers-reduced-motion:reduce){.sheet,.sheet-mask{animation:none}}.sheet-grip{background:#1f191b24;border-radius:2px;width:38px;height:4px;margin:10px auto 6px}.sheet-head{justify-content:space-between;align-items:flex-start;padding:6px 0 14px;display:flex}.sheet-kicker{letter-spacing:.14em;color:var(--ink-3);font-size:11.5px}.sheet-head-slim{align-items:center;min-height:30px;padding:0 0 6px}.sheet-title{font-family:var(--font-serif);letter-spacing:.02em;margin:2px 0 0;font-size:26px;font-weight:500}.sheet-close{width:40px;height:40px;color:var(--ink-3);margin:-6px -10px 0 0;font-size:26px;font-weight:300;line-height:1}.sheet-body{padding-top:2px}.field{margin-bottom:22px}.label{letter-spacing:.14em;color:var(--ink-3);margin-bottom:9px;font-size:11px}.label-row{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:9px;display:flex}.label-row .label{margin-bottom:0}.label-action{letter-spacing:.08em;color:var(--ink-3);padding:4px 0 4px 10px;font-size:11px;transition:color .15s;position:relative}.label-action:after{content:"";position:absolute;inset:-12px -10px -8px 0}.label-action:active{color:var(--ink)}.label-hint{letter-spacing:.08em;color:var(--ink-3);padding:4px 0;font-size:11px}.label-actions{align-items:baseline;gap:14px;margin-left:auto;display:flex}.chip-plus{width:34px;color:var(--ink-2);justify-content:center;padding:0;font-size:15px;line-height:1}.chip-drop{color:var(--ink-2);border-style:dashed}.chip-x{color:var(--ink-3);margin-left:1px;font-size:12px;line-height:1}.chip-input{border-style:dashed;width:104px;padding:0 12px;font-size:13px}.chip-input:focus{border-color:var(--ink-3);outline:none}.chip-input-num{text-align:center;font-variant-numeric:tabular-nums;width:86px;padding:0 8px}.dur-hint{color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;align-self:center;font-size:12px}.mv{margin-bottom:16px}.mv-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:2px;display:flex}.mv-name{letter-spacing:.04em;color:var(--ink);font-size:13px}.mv-x{color:var(--ink-3);padding:0 4px;font-size:14px;line-height:1;position:relative}.mv-x:after{content:"";position:absolute;inset:-14px -10px}.point{align-items:flex-start;gap:7px;min-height:24px;display:flex}.point-mark{text-align:right;width:11px;color:var(--rose);-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex:none;padding:0;font-family:inherit;font-size:14px;line-height:1.5;position:relative}.point-mark:after{content:"";position:absolute;inset:-8px -11px -8px -9px}.point-mark-sub{color:var(--ink-3);font-size:12px;line-height:1.7}.point-sub{padding-left:15px}.point-sub .point-input{color:var(--ink-2);font-size:13.5px}.point-input{resize:none;min-width:0;font:inherit;color:var(--ink);background:0 0;border:none;flex:1;padding:2px 0;font-size:14px;line-height:1.55;overflow:hidden}.point-input:focus{outline:none}.point-input::placeholder{color:var(--ink-3)}.mv-add{color:var(--ink-3);margin-left:16px;padding:6px 0;font-size:12px}.mv-add:active{color:var(--ink)}.mv-picker{margin-top:2px}.day-list{border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:4px}.day-item{text-align:left;border-bottom:1px dashed var(--line-soft);justify-content:space-between;align-items:center;gap:12px;width:100%;padding:9px 0;display:flex}.day-item:last-child{border-bottom:none}.day-item-text{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.day-item-dur{font-family:var(--font-serif);color:var(--rose-deep);white-space:nowrap;font-size:13px}.custom-dur{color:var(--ink-3);align-items:center;gap:8px;margin-top:10px;font-size:13px;display:flex}.num-input{border:1px solid var(--line);background:var(--card);width:84px;font-family:var(--font-serif);font-variant-numeric:tabular-nums;appearance:textfield;border-radius:10px;padding:9px 11px;font-size:17px}.num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.num-input:focus{border-color:var(--rose);outline:none}.sheet-compact{max-height:82dvh}.goal-input-row{align-items:baseline;gap:10px;margin:10px 0 4px;display:flex}.goal-unit{font-family:var(--font-serif);color:var(--ink-3);font-size:13px}.sheet-note{letter-spacing:.01em;color:var(--ink-3);margin:8px 0 18px;font-size:12px;line-height:1.55}.split-cta{margin-top:10px}.split-list{margin:2px 0 6px}.split-row{border-bottom:1px solid var(--line-soft);align-items:center;gap:9px;padding:2px 0;display:flex}.split-row:last-child{border-bottom:none}.split-modes{gap:8px;margin:0 0 14px;display:flex}.split-mode{border:1px solid var(--line);background:var(--card);letter-spacing:.02em;min-height:44px;color:var(--ink-2);border-radius:13px;flex:1;padding:0 10px;font-size:13px;transition:background .14s,color .14s,border-color .14s}.split-mode.on{border-color:var(--ink);background:var(--ink);color:var(--paper)}.split-name{min-width:0;color:var(--ink);flex:1;font-size:15px}.split-sub{letter-spacing:.02em;color:var(--ink-3);font-variant-numeric:tabular-nums;margin-top:2px;font-size:11.5px;display:block}.split-hours{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.split-input{border:1px solid var(--line);background:var(--card);width:64px;height:44px;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;border-radius:12px;padding:0 10px;font-size:16px}.split-input:focus{border-color:var(--rose);outline:none}.split-input::placeholder{color:var(--ink-3)}.split-unit{color:var(--ink-3);font-size:12px}.split-sum{margin:10px 0 4px}.split-pct{letter-spacing:.02em;color:var(--ink-3);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-size:11.5px}.split-step{flex-shrink:0;align-items:center;display:flex}.split-btn{width:44px;height:44px;color:var(--ink-2);border-radius:12px;font-size:17px;line-height:1;transition:background .12s}.split-btn:disabled{color:var(--line)}.split-btn:active:not(:disabled){background:var(--rose-soft)}.split-num{text-align:center;min-width:16px;font-family:var(--font-serif);color:var(--ink);font-variant-numeric:tabular-nums;font-size:16px}.num-lg{width:132px;padding:10px 14px;font-size:28px}.tag-box{border:1px solid var(--line);background:var(--card);border-radius:12px;flex-wrap:wrap;align-items:center;gap:7px;min-height:44px;padding:8px 10px;display:flex}.tag{background:var(--rose-soft);color:var(--rose-deep);border-radius:999px;align-items:center;gap:4px;padding:3px 8px 3px 10px;font-size:13px;display:inline-flex}.tag button{color:var(--rose-deep);opacity:.55;font-size:13px;line-height:1}.tag-input{background:0 0;border:none;flex:1;min-width:90px;padding:3px 2px;font-size:14px}.tag-input:focus{outline:none}.suggestions{margin-top:9px}.photos{flex-wrap:wrap;gap:8px;display:flex}.photo{width:76px;height:76px;position:relative}.photo img{object-fit:cover;border-radius:11px;width:100%;height:100%}.photo-x{color:#fff;background:#1f191b9e;border-radius:50%;justify-content:center;align-items:center;width:21px;height:21px;font-size:13px;line-height:1;display:flex;position:absolute;top:-6px;right:-6px}.photo-add{border:1px dashed var(--ink-3);width:76px;height:76px;color:var(--ink-3);border-radius:11px;font-size:24px;font-weight:300}.sheet-hint{color:var(--rose);margin:-6px 0 14px;font-size:13px}.sheet-actions{align-items:center;gap:12px;padding-top:6px;display:flex}.stars-input{gap:6px;display:flex}.stars-input button{color:var(--line);font-size:24px;line-height:1;transition:color .12s,transform .12s}.stars-input button.on{color:var(--rose)}.stars-input button:active{transform:scale(.9)}.tabbar{z-index:20;max-width:520px;padding:8px env(safe-area-inset-right,0px) calc(6px + env(safe-area-inset-bottom)) env(safe-area-inset-left,0px);-webkit-backdrop-filter:saturate(180%)blur(16px);border-top:1px solid var(--line-soft);background:#f7f2f1e6;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--ink-3);letter-spacing:.08em;flex-direction:column;flex:1;align-items:center;gap:3px;padding:2px 0;font-size:10px;text-decoration:none;display:flex}.tab-icon{line-height:0;display:flex}.tab-on{color:var(--ink)}.toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:60;color:#fff;white-space:nowrap;background:#1f191be6;border-radius:999px;padding:9px 17px;font-size:13px;animation:.18s both rise;position:fixed;transform:translate(-50%)}.lightbox{z-index:70;background:#141011eb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox img{border-radius:8px;max-width:92vw;max-height:86vh}.spend-list{-webkit-overflow-scrolling:touch;max-height:30dvh;margin:2px 0 16px;overflow-y:auto}.spend-item{border-bottom:1px solid var(--line-soft);text-align:left;align-items:baseline;gap:10px;width:100%;min-height:44px;padding:7px 0;display:flex}.spend-item:active{background:#a8505f0a}.spend-item-on .spend-item-cat,.spend-item-on .spend-item-amt{color:var(--rose)}.spend-item-day{letter-spacing:.01em;width:60px;color:var(--ink-3);white-space:nowrap;flex:none;font-size:11px}.spend-item-cat{min-width:0;color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.spend-item-amt{color:var(--ink);font-variant-numeric:tabular-nums;flex:none;font-size:14px}.spend-form{flex-direction:column;gap:16px;display:flex}.spend-amount{flex-direction:column;align-items:flex-start;display:flex}.spend-amount-field{border:1px solid var(--line);background:var(--card);border-radius:12px;align-items:center;gap:4px;padding:6px 14px;display:flex}.spend-amount-field:focus-within{border-color:var(--rose)}.spend-amount-field i{font-style:normal;font-family:var(--font-serif);color:var(--ink-3);font-size:17px;line-height:1}.spend-amount-field .num-input{text-align:left;background:0 0;border:0;border-radius:0;padding:6px 0}.spend-field{flex-direction:column;display:flex}.spend-date{font-variant-numeric:tabular-nums;width:100%}
