:root{--bg: #FBF8F3;--surface: #FFFFFF;--surface-sunk: #F4EFE7;--hairline: #ECE4D8;--divider: #F2ECE1;--chip-border-on: #EADDBF;--text: #2A2621;--text-soft: #6E655B;--text-muted: #A79C8E;--text-on-brand: #FFFFFF;--brand: #B27A12;--brand-strong: #935F0C;--brand-300: #E8B54A;--brand-tint: #FBF0D9;--hero-from: #C6871F;--hero-to: #9A6413;--good: #2F7D5B;--good-to: #245F47;--good-tint: #E7F1EB;--due: #C0492E;--due-tint: #FBEBE6;--info: #5B6B7A;--info-tint: #EEF1F3;--font: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--tnum: "tnum" 1;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s8: 32px;--s10: 40px;--safe-b: env(safe-area-inset-bottom, 0px);--h-tabbar: 84px;--h-floatbar: 62px;--h-sendbar: 140px;--inset-bottom: calc(var(--h-tabbar) + var(--safe-b));--inset-bottom-float: calc(var(--h-tabbar) + var(--h-floatbar) + var(--safe-b));--inset-bottom-sendbar: calc(var(--h-sendbar) + var(--safe-b));--r-sm: 12px;--r-md: 18px;--r-lg: 24px;--r-pill: 999px;--r-phone: 33px;--shadow-card: 0 4px 14px -9px rgba(40,30,15,.14);--shadow-float: 0 10px 24px -14px rgba(40,30,15,.2);--shadow-hero: 0 14px 26px -12px rgba(154,100,19,.45);--shadow-good: 0 14px 26px -12px rgba(47,125,91,.42);--ease-spring: cubic-bezier(.22,1,.36,1);--ease-out: cubic-bezier(.33,1,.68,1);--dur-fast: .15s;--dur-base: .22s;--dur-slow: .32s}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;font-feature-settings:var(--tnum)}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}.tnum{font-feature-settings:var(--tnum)}.app{max-width:440px;margin:0 auto;height:100%;display:flex;flex-direction:column;position:relative;background:var(--bg)}.screen{flex:1;min-height:0;overscroll-behavior-y:contain;padding:0 var(--s5) var(--inset-bottom) var(--s5);padding-top:max(var(--s5),env(safe-area-inset-top));overflow-y:auto;animation:screen-in var(--dur-base) var(--ease-out) both}@keyframes screen-in{0%{opacity:0}}.screen.has-floatbar{padding-bottom:var(--inset-bottom-float)}.screen.has-sendbar{padding-bottom:var(--inset-bottom-sendbar)}.t-hero{font-size:25px;line-height:1.1;font-weight:800;letter-spacing:-.02em}.t-title{font-size:22px;line-height:1.15;font-weight:800;letter-spacing:-.03em}.t-display{font-size:26px;line-height:1.1;font-weight:800;letter-spacing:-.02em}.t-section{font-size:13px;line-height:1.3;font-weight:700}.t-body{font-size:14px;font-weight:500}.t-body-sm{font-size:13px;font-weight:500}.t-label{font-size:11px;line-height:1.3;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.t-caption{font-size:12px;font-weight:500;color:var(--text-muted)}.soft{color:var(--text-soft)}.muted{color:var(--text-muted)}.card{background:var(--surface);border-radius:var(--r-md);padding:var(--s4);box-shadow:var(--shadow-card)}.card+.card,.stack>*+*{margin-top:var(--s3)}.stack-4>*+*{margin-top:var(--s4)}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:18px var(--s1) 10px}.hero{display:block;border-radius:var(--r-lg);padding:var(--s5);color:var(--text-on-brand);background:linear-gradient(155deg,var(--hero-from),var(--hero-to));box-shadow:var(--shadow-hero);position:relative;overflow:hidden}.hero:after{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:#ffffff1a}.hero>*{position:relative;z-index:1}.hero .kicker{color:#ffffffe6}.hero .t-hero{margin-top:var(--s1)}.hero .items{font-size:12.5px;line-height:1.55;margin-top:var(--s2);opacity:.95}.greet{font-size:13px;font-weight:600;color:var(--text-muted)}.gear{width:38px;height:38px;border-radius:50%;flex:none;background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow-card);color:var(--text-soft);display:flex;align-items:center;justify-content:center}.gear svg{width:18px;height:18px}.pill{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--r-pill);font-size:10.5px;font-weight:800;letter-spacing:.02em}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.pill.good{background:var(--good-tint);color:var(--good)}.pill.due{background:var(--due-tint);color:var(--due)}.pill.info{background:var(--info-tint);color:var(--info)}.pill.brand{background:var(--brand-tint);color:var(--brand-strong)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);padding:13px var(--s5);border-radius:var(--r-sm);font-weight:700;font-size:14px;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast);min-height:44px;width:100%}.btn:active{transform:scale(.97)}.btn.primary{background:var(--brand);color:var(--text-on-brand);box-shadow:var(--shadow-float)}.btn.primary:active{background:var(--brand-strong)}.btn.ghost{background:var(--surface-sunk);color:var(--text)}.btn.tinted{background:var(--brand-tint);color:var(--brand-strong)}.btn.on-hero{background:var(--surface);color:var(--brand-strong);box-shadow:var(--shadow-float)}.btn.on-hero:active{background:var(--surface-sunk)}.btnrow{display:flex;gap:9px}.btnrow .btn{flex:1;width:auto}.row{display:flex;align-items:center;gap:var(--s3)}.row .grow{flex:1;min-width:0}.row .trailing{text-align:right;white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card>.row{padding:11px 0}.card>.row+.row{border-top:1px solid var(--divider)}.cat-head{font-size:11px;line-height:1.3;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);padding:16px 0 6px}.card>.cat-head:first-child{padding-top:0}.list{display:flex;flex-direction:column;gap:10px}.list>.row{background:var(--surface);border-radius:var(--r-md);padding:13px 15px;box-shadow:var(--shadow-card)}.group{background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-card);overflow:hidden}.group>.row{padding:15px 16px}.group>.row+.row{border-top:1px solid var(--divider)}.week{display:flex;justify-content:space-between}.week .day{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding-bottom:5px;border-radius:6px}.week .day .d{font-size:11px;font-weight:700;color:var(--text-muted)}.week .day .n{font-size:13px;font-weight:700;width:30px;height:30px;border-radius:10px;display:flex;align-items:center;justify-content:center}.week .day.on .n{background:var(--brand-tint);color:var(--brand-strong)}.week .day.due{box-shadow:inset 0 -3px 0 var(--brand-300)}.week-key{display:flex;justify-content:center;gap:var(--s4);margin-top:var(--s3);font-size:11.5px;font-weight:600;color:var(--text-muted)}.week-key .sw{display:inline-block;width:15px;height:15px;vertical-align:-3px;margin-right:5px;border-radius:4px;background:var(--surface-sunk)}.week-key .sw.on{background:var(--brand-tint)}.week-key .sw.due{box-shadow:inset 0 -3px 0 var(--brand-300)}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:440px;display:flex;justify-content:space-around;padding:var(--s2) var(--s4) max(var(--s3),env(safe-area-inset-bottom));background:#fbf8f3e6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid var(--hairline);z-index:20}.tab-pill{position:absolute;top:0;left:0;width:44px;height:30px;border-radius:999px;background:var(--brand-tint);box-shadow:inset 0 1px #ffffffbf,0 1px 2px #0000000b;pointer-events:none;z-index:0}.tab-pill.ready{transition:transform var(--dur-base) var(--ease-spring)}.tab-pill[hidden]{display:none}.tab{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--text-muted);font-size:9.5px;font-weight:700;padding:var(--s1) var(--s3);min-width:44px;position:relative;z-index:1;transition:color var(--dur-fast) var(--ease-out)}.tab.active{color:var(--brand)}.tab svg{width:21px;height:21px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}.tile{background:var(--surface);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--shadow-card)}.tile .thumb{aspect-ratio:4/3;background:linear-gradient(150deg,var(--brand-tint),var(--surface-sunk));display:flex;align-items:center;justify-content:center;color:var(--brand-strong);font-weight:800;font-size:22px}.tile .thumb:after{content:"";position:absolute;width:52px;height:52px;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;background:radial-gradient(circle at 38% 32%,#ffffff8c,#fff0 62%)}.tile .meta{padding:9px 11px 11px}.chips{display:flex;gap:var(--s2);overflow-x:auto;padding-bottom:2px}.chips::-webkit-scrollbar{display:none}.chip{flex:none;padding:7px 13px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--hairline);font-size:12px;font-weight:700;color:var(--text-soft);white-space:nowrap}.chip.on{background:var(--brand-tint);color:var(--brand-strong);border-color:var(--chip-border-on)}.seg{display:flex;background:var(--surface-sunk);border-radius:var(--r-pill);padding:4px}.seg button{flex:1;padding:8px;border-radius:var(--r-pill);font-size:13px;font-weight:700;color:var(--text-soft);background:transparent}.seg button.on{background:var(--surface);color:var(--brand-strong);box-shadow:var(--shadow-card)}.remind{background:var(--surface);border:1px solid var(--hairline);border-left:4px solid var(--brand);border-radius:var(--r-md);padding:15px 16px;box-shadow:var(--shadow-card)}.remind .k{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--brand-strong)}.remind .t{font-size:15px;font-weight:800;margin-top:5px;letter-spacing:-.01em}.remind .s{font-size:12.5px;color:var(--text-soft);margin-top:6px;line-height:1.5}.reward{background:var(--surface);border:1px solid var(--hairline);border-left:4px solid var(--brand);border-radius:var(--r-md);padding:13px 15px;box-shadow:var(--shadow-card)}.reward .t{font-size:14.5px;font-weight:800;letter-spacing:-.01em;color:var(--brand-strong);font-feature-settings:var(--tnum)}.reward .s{font-size:11.5px;color:var(--text-soft);margin-top:7px;line-height:1.45;font-feature-settings:var(--tnum)}.reward .bar{height:6px;border-radius:999px;background:var(--surface-sunk);margin-top:9px;overflow:hidden}.reward .bar span{display:block;height:100%;border-radius:999px;background:var(--brand);transition:width var(--dur-slow) var(--ease-spring)}.reward.earned{border-left-color:var(--good);background:var(--good-tint)}.reward.earned .t{color:var(--good)}.reward.earned .bar{background:#2f7d5b29}.reward.earned .bar span{background:var(--good)}.hist-group+.hist-group{margin-top:22px}.cat-head{font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-soft);margin:0 var(--s1) 9px}.summary{background:var(--surface);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow-float)}.summary .k{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.summary .amt{font-size:30px;font-weight:800;letter-spacing:-.02em;margin-top:4px}.summary .amt .c{font-size:18px;vertical-align:top}.summary .sub{font-size:12px;color:var(--text-soft);margin-top:4px}.summary.good{background:var(--good-tint)}.summary.good .k{color:var(--good)}.summary.good .amt{color:var(--good);font-size:20px}.linkrow{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--brand-strong)}.linkrow svg{width:16px;height:16px;flex:none}.note-italic{font-size:11.5px;color:var(--text-muted);font-style:italic}.skel{background:linear-gradient(90deg,var(--surface-sunk),var(--hairline),var(--surface-sunk));background-size:200% 100%;animation:sh 1.2s infinite;border-radius:var(--r-sm)}@keyframes sh{to{background-position:-200% 0}}.empty{text-align:center;color:var(--text-muted);padding:var(--s10) var(--s5)}.auth{min-height:100%;display:flex;flex-direction:column;justify-content:center;gap:var(--s5);padding:var(--s6);max-width:440px;margin:0 auto}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;font-weight:700;color:var(--text-soft)}.field input,.field select,.field textarea{padding:13px var(--s4);border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--surface);font:inherit;color:var(--text);box-shadow:var(--shadow-card)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--brand-tint);border-color:var(--brand)}.field .chips{flex-wrap:wrap;overflow-x:visible}.error-msg{color:var(--due);font-size:13px;font-weight:600}.stepper{width:34px;height:34px;border-radius:var(--r-sm);background:var(--surface-sunk);color:var(--brand-strong);font-size:20px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;transition:transform var(--dur-fast) var(--ease-out)}.stepper:active{transform:scale(.9)}.switch{width:46px;height:28px;border-radius:999px;background:var(--surface-sunk);position:relative;transition:background var(--dur-base);flex:none}.switch.on{background:var(--brand)}.switch .knob{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:var(--shadow-card);transition:transform var(--dur-base) var(--ease-spring)}.switch.on .knob{transform:translate(18px)}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}.screen{animation:screen-in var(--dur-fast) var(--ease-out) both!important}}.tour-mark{width:64px;height:64px;margin:0 auto;display:grid;place-items:center;border-radius:var(--r-lg);background:linear-gradient(160deg,var(--hero-from),var(--hero-to));color:var(--text-on-brand);box-shadow:var(--shadow-hero)}.tour-mark svg{width:30px;height:30px}.dots-nav{display:flex;gap:7px;justify-content:center}.dots-nav i{width:7px;height:7px;border-radius:999px;background:var(--hairline);transition:background .18s,width .18s}.dots-nav i.on{width:20px;background:var(--brand)}@media (prefers-reduced-motion: reduce){.dots-nav i{transition:none}}.tile .thumb{position:relative}.tile .thumb .mine{position:absolute;top:8px;right:8px;z-index:1;padding:3px 7px;border-radius:var(--r-pill);background:#ffffffeb;color:var(--brand-strong);font-size:9px;font-weight:800;letter-spacing:.02em}.tile .add-btn{margin-top:var(--s2);padding:8px;font-size:12.5px;min-height:0}.tile .thumb .qty-badge{position:absolute;top:8px;left:8px;z-index:1;padding:3px 8px;border-radius:var(--r-pill);background:var(--brand);color:var(--text-on-brand);font-size:11px;font-weight:800;letter-spacing:.01em;box-shadow:var(--shadow-card)}.tile.in-order{box-shadow:var(--shadow-card),inset 0 0 0 1.5px var(--brand)}.floatbar{position:fixed;left:50%;translate:-50%;bottom:var(--inset-bottom);width:auto;max-width:380px;padding:13px 22px;box-shadow:var(--shadow-float)}.week .day.today .n{background:var(--brand);color:var(--text-on-brand)}.week a.day{cursor:pointer}.week a.day:active{transform:scale(.96)}.hero.today{background:linear-gradient(155deg,var(--good),var(--good-to));box-shadow:var(--shadow-good)}.icard{background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-card);padding:14px 0 12px 15px}.icard+.icard{margin-top:var(--s3)}.icard-head{display:flex;align-items:baseline;gap:var(--s3);padding-right:15px}.icard-head .usual{margin-left:auto;white-space:nowrap;flex:none;color:var(--brand-strong);font-weight:700;font-size:11px;background:var(--brand-tint);padding:3px 9px;border-radius:var(--r-pill)}.strip{display:flex;gap:var(--s2);padding:12px 15px 4px 0;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;overscroll-behavior-x:contain}.strip::-webkit-scrollbar{height:0}.strip .cell{flex:none;scroll-snap-align:start;width:58px;padding:9px 6px;border-radius:14px;background:var(--surface-sunk);display:flex;flex-direction:column;align-items:center;gap:3px}.strip .cell.latest{background:var(--brand-tint)}.strip .cell .cd{font-size:9px;font-weight:700;color:var(--text-muted);white-space:nowrap;text-transform:uppercase;letter-spacing:.03em}.strip .cell .cw{color:var(--text-soft)}.strip .cell .cdate{font-size:8.5px;font-weight:600;opacity:.62;margin-top:1px}.strip .cell .cq{font-size:19px;font-weight:800}.strip .cell.latest .cq{color:var(--brand-strong)}.icard{position:relative;overflow:hidden}.icard:after{content:"";position:absolute;top:38px;bottom:12px;right:0;width:32px;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,0) 40%,rgba(255,255,255,.85) 78%,var(--surface) 100%)}button.switch{border:0;padding:0;cursor:pointer}button.switch:disabled{opacity:.55;cursor:default}button.switch:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.cat-box{display:block;width:100%;text-align:left;position:relative;border-radius:var(--r-md)}.cat-box .icard{margin-bottom:0}.cat-box .icard-head{padding-right:68px}.cat-chev{position:absolute;top:14px;right:var(--s4);color:var(--text-soft);display:flex;transition:transform var(--dur-fast) var(--ease-out)}.cat-box.open .cat-chev{transform:rotate(180deg)}.cat-count{position:absolute;top:17px;right:calc(var(--s4) + 22px);color:var(--text-soft)}.cat-items{margin:var(--s2) 0 var(--s4) var(--s3);padding-left:var(--s3);border-left:2px solid var(--hairline)}.cat-items .icard:last-child{margin-bottom:0}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#1c160e61;display:flex;align-items:flex-end;justify-content:center;animation:sheet-fade .16s ease-out}.sheet{width:100%;max-width:440px;background:var(--bg);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:var(--s5) var(--s5) max(var(--s5),env(safe-area-inset-bottom));max-height:85vh;overflow-y:auto;animation:sheet-rise .18s ease-out}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@keyframes sheet-rise{0%{transform:translateY(14px)}to{transform:none}}@media (prefers-reduced-motion: reduce){.sheet-backdrop,.sheet{animation:none}}
