:root{--bg:oklch(97.5% .004 262);--surface:oklch(99.5% .0015 262);--surface-sunk:oklch(95.7% .005 262);--faint:oklch(91.2% .006 262);--faint-strong:oklch(85.8% .009 262);--text:oklch(28% .024 266);--muted:oklch(52.5% .021 264);--accent:oklch(51.5% .155 264);--accent-ink:oklch(98.5% .005 264);--accent-weak:oklch(95.5% .03 264);--accent-line:oklch(80% .08 264);--positive:oklch(58.5% .12 155);--positive-weak:oklch(95.5% .04 158);--negative:oklch(55.5% .152 22);--negative-weak:oklch(95.5% .04 25);--card-1:oklch(34.5% .05 268);--card-2:oklch(23.5% .035 272);--card-ink:oklch(98.5% .005 264);--s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s5:1.5rem;--s6:2rem;--s7:3rem;--r-sm:.625rem;--r:.875rem;--r-lg:1.25rem;--r-pill:999px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, "Helvetica Neue", Arial, sans-serif;--text-xs:.8125rem;--text-sm:.9375rem;--text-md:1.0625rem;--text-lg:1.375rem;--text-xl:1.9rem;--display:4rem;--shadow-sm:0 1px 2px oklch(30% .03 266/.06), 0 1px 1px oklch(30% .03 266/.04);--shadow:0 8px 24px oklch(30% .04 266/.1);--shadow-lg:0 20px 48px oklch(30% .04 266/.18);--tap:48px;--ease:cubic-bezier(.22, 1, .36, 1);font-family:var(--font);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font-size:var(--text-md);line-height:1.45}button{cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit}input,textarea,select{color:var(--text);background:var(--surface);border:1.5px solid var(--faint);border-radius:var(--r-sm);font-family:inherit;font-size:var(--text-md);padding:12px 14px}input:focus,textarea:focus,select:focus{border-color:var(--accent);outline:none}h1,h2,h3,p{margin:0}:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.app{max-width:480px;min-height:100dvh;padding-bottom:calc(76px + env(safe-area-inset-bottom));background:var(--bg);margin:0 auto}.appbar{z-index:10;justify-content:space-between;align-items:center;gap:var(--s3);padding:max(var(--s4), env(safe-area-inset-top)) var(--s4) var(--s3);background:color-mix(in oklch, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:border-color .2s var(--ease);border-bottom:1px solid #0000;display:flex;position:sticky;top:0}.appbar--sunk{border-bottom-color:var(--faint)}.appbar__title{font-size:var(--text-lg);letter-spacing:-.02em;font-weight:800}.appbar__mark{align-items:center;gap:var(--s3);display:flex}.brandmark{background:linear-gradient(150deg, var(--accent), oklch(40% .13 272));box-shadow:var(--shadow-sm);color:var(--accent-ink);border-radius:8px;place-items:center;display:grid}.screen{padding:var(--s4) var(--s4) var(--s6);gap:var(--s5);display:grid}.screen--flush{padding-top:var(--s2)}.avatar{border-radius:var(--r-pill);color:oklch(99% .008 264);letter-spacing:-.01em;background:var(--accent);flex:none;place-items:center;font-weight:700;display:grid}.section{gap:var(--s3);display:grid}.section__head{justify-content:space-between;align-items:baseline;gap:var(--s3);padding:0 var(--s1);display:flex}.section__title{font-size:var(--text-sm);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:700}.section__count{font-size:var(--text-xs);color:var(--accent);background:var(--accent-weak);border-radius:var(--r-pill);padding:2px 8px;font-weight:800}.btn{min-height:var(--tap);justify-content:center;align-items:center;gap:var(--s2);padding:0 var(--s5);border-radius:var(--r-sm);font-size:var(--text-md);letter-spacing:-.01em;transition:transform .12s var(--ease), background .15s var(--ease), box-shadow .15s var(--ease), border-color .15s var(--ease);border:1px solid #0000;font-weight:650;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:active{transform:none}.btn--primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.btn--primary:hover:not(:disabled){box-shadow:var(--shadow)}.btn--quiet{background:var(--surface);color:var(--text);border-color:var(--faint)}.btn--quiet:hover:not(:disabled){border-color:var(--faint-strong)}.btn--ghost{color:var(--accent);background:0 0}.btn--ghost:hover:not(:disabled){background:var(--accent-weak)}.btn--danger{background:var(--negative-weak);color:var(--negative)}.btn--danger:hover:not(:disabled){background:color-mix(in oklch, var(--negative-weak) 82%, var(--negative))}.btn--big{min-height:58px;font-size:var(--text-lg);padding:0 var(--s6)}.btn--sm{min-height:38px;font-size:var(--text-sm);padding:0 var(--s4)}.btn--block{width:100%}.card{background:var(--surface);border:1px solid var(--faint);border-radius:var(--r);padding:var(--s4);box-shadow:var(--shadow-sm)}.card--flat{box-shadow:none}.card--interactive{cursor:pointer;transition:transform .14s var(--ease), border-color .14s var(--ease), box-shadow .14s var(--ease)}.card--interactive:hover{border-color:var(--accent-line);box-shadow:var(--shadow)}.card--interactive:active{transform:scale(.985)}.kids{gap:var(--s3);padding:var(--s1);margin:0 calc(-1 * var(--s1));scrollbar-width:none;scroll-snap-type:x proximity;display:flex;overflow-x:auto}.kids::-webkit-scrollbar{display:none}.chip{scroll-snap-align:start;align-items:center;gap:var(--s2);padding:var(--s2) var(--s4) var(--s2) var(--s2);background:var(--surface);border:1.5px solid var(--faint);border-radius:var(--r-pill);min-height:50px;color:var(--text);transition:border-color .15s var(--ease), background .15s var(--ease), transform .12s var(--ease);flex:none;font-weight:650;display:flex}.chip:active{transform:scale(.97)}.chip--active{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.greeting{padding:0 var(--s1);gap:3px;display:grid}.greeting__date{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}.greeting__hi{font-size:var(--text-xl);letter-spacing:-.025em;font-weight:800}.greeting__sub{color:var(--muted);font-size:var(--text-sm)}.pcard{border-radius:var(--r-lg);padding:var(--s5);color:var(--card-ink);align-content:space-between;gap:var(--s4);background:radial-gradient(130% 130% at 88% -10%, oklch(52% .14 268/.5), transparent 55%), linear-gradient(150deg, var(--card-1), var(--card-2));min-height:188px;box-shadow:var(--shadow);display:grid;position:relative;overflow:hidden}.pcard:after{content:"";background:oklch(100% 0 0/.05);border-radius:50%;width:260px;height:260px;position:absolute;top:-110px;right:-70px}.pcard>*{z-index:1;position:relative}.pcard__top{justify-content:space-between;align-items:center;display:flex}.pcard__brand{font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;opacity:.72;font-weight:700}.pcard__chip{background:linear-gradient(150deg,oklch(86% .012 260),oklch(66% .016 262));border-radius:6px;width:40px;height:30px;position:relative;box-shadow:inset 0 0 0 1px oklch(100% 0 0/.25)}.pcard__chip:before{content:"";border:1px solid oklch(40% .02 262/.45);border-left:none;border-right:none;border-radius:3px;position:absolute;inset:6px 7px}.pcard__balance{letter-spacing:-.035em;font-variant-numeric:tabular-nums;font-size:3.4rem;font-weight:800;line-height:1}.pcard__label{font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;opacity:.68;margin-top:6px;font-weight:600}.pcard__foot{justify-content:space-between;align-items:flex-end;gap:var(--s3);display:flex}.pcard__holder-label{letter-spacing:.16em;text-transform:uppercase;opacity:.55;font-size:.66rem;font-weight:600}.pcard__name{align-items:center;gap:var(--s2);letter-spacing:.02em;margin-top:4px;font-weight:650;display:flex}.pcard__trend{font-size:var(--text-sm);border-radius:var(--r-pill);background:oklch(100% 0 0/.14);align-items:center;gap:5px;padding:5px 12px;font-weight:700;display:inline-flex}.chart{gap:var(--s2);display:grid}.chart__legend{gap:var(--s4);justify-content:flex-end;display:flex}.legend-item{font-size:var(--text-xs);color:var(--muted);align-items:center;gap:6px;font-weight:650;display:inline-flex}.legend-swatch{border-top:3px solid;border-radius:2px;width:18px}.legend-swatch--merit{border-color:var(--positive)}.legend-swatch--demerit{border-top-style:dashed;border-color:var(--negative)}.chart__plot{position:relative}.chart__axis{fill:var(--muted);letter-spacing:.02em;font-size:9px;font-weight:650}.chart__tip{background:var(--text);color:var(--surface);border-radius:var(--r-sm);font-size:var(--text-xs);pointer-events:none;box-shadow:var(--shadow);white-space:nowrap;gap:3px;padding:8px 10px;font-weight:650;display:grid;position:absolute;top:0;transform:translate(-50%)}.chart__tip-title{opacity:.7;text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.chart__tip-row{align-items:center;gap:6px;display:flex}.dot{border-radius:50%;width:8px;height:8px}.dot--merit{background:var(--positive)}.dot--demerit{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--negative)}.stats{gap:var(--s2);grid-template-columns:repeat(3,1fr);display:grid}.stat{padding:var(--s3) var(--s4);background:var(--surface);border:1px solid var(--faint);border-radius:var(--r-sm);gap:2px;display:grid}.stat__label{font-size:var(--text-xs);letter-spacing:.03em;text-transform:uppercase;color:var(--muted);font-weight:650}.stat__value{font-size:var(--text-lg);font-variant-numeric:tabular-nums;font-weight:800}.stat__value--pos{color:var(--positive)}.stat__value--neg{color:var(--negative)}.topbehavior{padding:var(--s3) var(--s4);background:var(--accent-weak);border-radius:var(--r-sm);gap:2px;display:grid}.topbehavior__label{font-size:var(--text-xs);letter-spacing:.03em;text-transform:uppercase;color:color-mix(in oklch, var(--accent) 68%, var(--text));font-weight:650}.topbehavior__value{font-weight:650}.pill{font-variant-numeric:tabular-nums;border-radius:var(--r-pill);font-weight:700;font-size:var(--text-sm);align-items:center;padding:3px 10px;display:inline-flex}.pill--pos{background:var(--positive-weak);color:var(--positive)}.pill--neg{background:var(--negative-weak);color:var(--negative)}.pill--cost{background:var(--surface-sunk);color:var(--muted)}.awards{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.award{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s4);background:var(--surface);border:1px solid var(--faint);border-radius:var(--r);text-align:left;transition:transform .13s var(--ease), border-color .13s var(--ease), box-shadow .13s var(--ease);display:flex}.award:hover{border-color:var(--accent-line);box-shadow:var(--shadow-sm)}.award:active{transform:scale(.98)}.award__label{font-weight:650;font-size:var(--text-md)}.request{gap:var(--s3);display:grid}.request__top{align-items:center;gap:var(--s3);display:flex}.request__body{flex:1;min-width:0}.request__who{font-weight:650}.request__meta{color:var(--muted);font-size:var(--text-sm)}.request__meta--short{color:var(--negative)}.request__actions{gap:var(--s2);display:flex}.request__actions .btn{flex:1}.feed{gap:var(--s4);display:grid}.feed__day{gap:var(--s1);display:grid}.feed__daylabel{font-size:var(--text-xs);color:var(--muted);letter-spacing:.03em;padding:0 var(--s1) 2px;text-transform:uppercase;font-weight:700}.feed__list{background:var(--surface);border:1px solid var(--faint);border-radius:var(--r);overflow:hidden}.feed__row{align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);display:flex}.feed__row+.feed__row{border-top:1px solid var(--faint)}.feed__text{flex:1;min-width:0}.feed__reason{overflow-wrap:anywhere;font-weight:600}.feed__reason--spent{color:var(--muted);font-weight:550}.feed__time{font-size:var(--text-xs);color:var(--muted);font-weight:600}.shelf{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.prize{gap:var(--s3);text-align:left;align-content:space-between;justify-items:start;min-height:96px;display:grid}.prize__label{font-weight:650;font-size:var(--text-md)}.prize__foot{justify-content:space-between;align-items:center;width:100%;display:flex}.prize__edit{color:var(--muted);font-size:var(--text-sm);background:0 0;border:none;padding:4px;font-weight:650}.row{align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);display:flex}.row+.row{border-top:1px solid var(--faint)}.row__label{flex:1;font-weight:600}.rows{background:var(--surface);border:1px solid var(--faint);border-radius:var(--r);overflow:hidden}.code{letter-spacing:.2em;color:var(--accent);text-align:center;padding:var(--s4);background:var(--accent-weak);border-radius:var(--r);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:800}.field{gap:var(--s2);display:grid}.field__label{font-size:var(--text-sm);color:var(--muted);padding-left:var(--s1);font-weight:650}.input{width:100%;min-height:var(--tap)}.form-actions{gap:var(--s2);display:flex}.form-actions .btn{flex:1}.empty{text-align:center;padding:var(--s6) var(--s4);gap:var(--s3);justify-items:center;display:grid}.empty__title{font-weight:800;font-size:var(--text-lg)}.empty__body{color:var(--muted);max-width:32ch}.sk{background:var(--surface-sunk);border-radius:var(--r-sm);position:relative;overflow:hidden}.sk:after{content:"";background:linear-gradient(90deg, transparent, color-mix(in oklch, var(--surface) 70%, transparent), transparent);animation:1.3s infinite sk-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes sk-shimmer{to{transform:translate(100%)}}.toast{left:50%;bottom:calc(88px + env(safe-area-inset-bottom));width:min(448px, calc(100vw - 2 * var(--s4)));justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s3) var(--s3) var(--s5);background:var(--text);color:var(--surface);border-radius:var(--r-pill);box-shadow:var(--shadow-lg);z-index:40;animation:toast-in .28s var(--ease);display:flex;position:fixed;transform:translate(-50%)}.toast__text{font-weight:650}.toast__undo{color:var(--surface);border-radius:var(--r-pill);font-weight:700;font-size:var(--text-sm);background:oklch(100% 0 0/.16);border:none;padding:10px 18px}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}}.error{color:var(--negative);background:var(--negative-weak);padding:var(--s3) var(--s4);border-radius:var(--r-sm);font-weight:600;font-size:var(--text-sm)}.tabbar{width:min(480px,100vw);padding:var(--s2) var(--s3) calc(var(--s2) + env(safe-area-inset-bottom));background:color-mix(in oklch, var(--surface) 90%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--faint);z-index:30;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{padding:var(--s2) 0;color:var(--muted);font-size:var(--text-xs);transition:color .15s var(--ease);background:0 0;border:none;flex:1;justify-items:center;gap:3px;font-weight:650;display:grid;position:relative}.tab__icon{height:24px;transition:transform .16s var(--ease);place-items:center;display:grid}.tab--active{color:var(--accent)}.tab--active .tab__icon{transform:translateY(-1px)}.tab__badge{background:var(--negative);min-width:18px;height:18px;color:var(--surface);border-radius:var(--r-pill);place-items:center;padding:0 5px;font-size:.7rem;font-weight:800;display:grid;position:absolute;top:0;left:calc(50% + 9px)}.app--wide{max-width:480px}.home__top{gap:var(--s4);display:grid}.home__card-wrap{display:grid}@media (width>=720px){.app--wide{max-width:760px}.tabbar{width:min(760px,100vw)}.home__top{grid-template-columns:1fr 1fr;align-items:stretch}.home__card-wrap>.pcard{height:100%}.home__chart-card{align-content:center;display:grid}}.signin{align-content:center;gap:var(--s5);max-width:400px;min-height:100dvh;padding:var(--s6) var(--s4);margin:0 auto;display:grid}.signin__brand{align-items:center;gap:var(--s3);justify-content:center;display:flex}.signin__card{gap:var(--s4);padding:var(--s5);display:grid}.signin__title{font-size:var(--text-xl);letter-spacing:-.025em;font-weight:800}.signin__sub{color:var(--muted);font-size:var(--text-sm);margin-top:-6px}.signin__alt{text-align:center}.linkbtn{color:var(--accent);font-weight:650;font-size:var(--text-sm);padding:var(--s2);background:0 0;border:none}.linkbtn:hover{text-decoration:underline}.iconbtn{width:40px;height:40px;color:var(--muted);border-radius:var(--r-sm);transition:background .15s var(--ease), color .15s var(--ease);background:0 0;border:none;place-items:center;display:grid}.iconbtn:hover{background:var(--surface-sunk);color:var(--text)}.pin{z-index:50;padding:var(--s4);background:color-mix(in oklch, var(--text) 45%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:pin-fade .2s var(--ease);place-items:center;display:grid;position:fixed;inset:0}@keyframes pin-fade{0%{opacity:0}}.pin__panel{background:var(--surface);border-radius:var(--r-lg);width:min(340px,100%);padding:var(--s5);gap:var(--s4);box-shadow:var(--shadow-lg);justify-items:center;display:grid}.pin__title{font-size:var(--text-lg);font-weight:800}.pin__dots{gap:var(--s3);display:flex}.pin__dot{border:2px solid var(--faint-strong);width:14px;height:14px;transition:background .12s var(--ease);border-radius:50%}.pin__dot--on{background:var(--accent);border-color:var(--accent)}.pin__dots--error .pin__dot{border-color:var(--negative);animation:pin-shake .3s var(--ease)}@keyframes pin-shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.pin__error{color:var(--negative);font-size:var(--text-sm);margin-top:-10px;font-weight:600}.pin__keys{gap:var(--s3);grid-template-columns:repeat(3,1fr);width:100%;display:grid}.pin__key{border:1px solid var(--faint);background:var(--surface);border-radius:var(--r-sm);min-height:56px;font-size:var(--text-lg);color:var(--text);transition:transform .1s var(--ease), background .15s var(--ease);font-weight:700}.pin__key:hover:not(:disabled){background:var(--surface-sunk)}.pin__key:active:not(:disabled){transform:scale(.95)}.pin__key--blank{pointer-events:none;background:0 0;border:none}.segmented{background:var(--surface-sunk);border:1px solid var(--faint);border-radius:var(--r-pill);gap:2px;padding:3px;display:flex}.seg{border-radius:var(--r-pill);min-height:36px;color:var(--muted);white-space:nowrap;transition:background .15s var(--ease), color .15s var(--ease);background:0 0;border:none;flex:1;font-size:clamp(.8rem,3.3vw,.9375rem);font-weight:650}.seg--active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.rise{animation:rise .3s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}
