:root{--red: #c8102e;--red-dark: #a00c24;--red-deep: #7a0a1c;--red-soft: rgba(200, 16, 46, .09);--red-soft-2: rgba(200, 16, 46, .16);--ink: #1c1c1e;--ink-2: #3a3a3f;--ink-3: #8a8a8e;--line: rgba(60, 60, 67, .16);--line-strong: rgba(60, 60, 67, .28);--bg: #ffffff;--bg-2: #f2f2f7;--bg-3: #e9e9ee;--fill: rgba(118, 118, 128, .12);--ok: #1d7a3e;--ok-soft: #e6f5eb;--warn: #8a5a00;--warn-soft: #fff3dc;--bad: #b3261e;--bad-soft: #fdeceb;--info: #1d4f91;--info-soft: #e8f0fb;--radius: 16px;--radius-sm: 12px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 16px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .18);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);--navbar-h: 56px;--drawer-w: 300px;--ease: cubic-bezier(.32, .72, 0, 1);color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Inter,system-ui,Segoe UI,Roboto,Noto Sans,sans-serif;font-size:16px;line-height:1.45;letter-spacing:-.01em;color:var(--ink);background:var(--bg-2);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg-2);-webkit-tap-highlight-color:transparent}body.no-scroll{overflow:hidden}a{color:var(--red)}h1{font-size:1.85rem;line-height:1.15;font-weight:800;letter-spacing:-.025em;margin:0 0 14px}h2{font-size:1.12rem;font-weight:700;letter-spacing:-.015em;margin:22px 0 8px}h3{font-size:1rem;font-weight:700;margin:16px 0 6px}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.muted{color:var(--ink-3)}.small{font-size:.86rem}.neg{color:var(--bad)}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.stack>*+*{margin-top:14px}.icon{flex-shrink:0;display:block}.shell{min-height:100vh}.content{min-width:0;display:flex;flex-direction:column;min-height:100vh}.navbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;min-height:calc(var(--navbar-h) + var(--safe-top));padding:var(--safe-top) 12px 0;background:#f8f8fad1;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--line)}.navbar-title{display:flex;align-items:center;gap:8px;min-width:0}.navbar-logo{width:30px;height:30px;border-radius:50%;object-fit:contain;background:#fff;box-shadow:0 0 0 .5px var(--line)}.navbar-brand{font-weight:800;color:var(--red);letter-spacing:-.01em;font-size:1.05rem}.navbar-page{display:none;font-weight:700;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navbar-hello{display:none;color:var(--ink-3);font-size:.9rem}.icon-btn{appearance:none;border:0;background:transparent;color:var(--red);width:44px;height:44px;border-radius:12px;display:inline-grid;place-items:center;cursor:pointer;position:relative;flex-shrink:0}.icon-btn:hover{background:var(--fill)}.icon-btn:active{transform:scale(.94)}.hamburger .dot{position:absolute;top:9px;right:8px;width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2px #fff}.avatar{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;flex-shrink:0;background:linear-gradient(135deg,var(--red),var(--red-deep));color:#fff;font-weight:700;font-size:.82rem;letter-spacing:0;text-decoration:none}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:18px 16px calc(110px + var(--safe-bottom))}.drawer{position:fixed;z-index:50;top:0;bottom:0;left:0;width:min(var(--drawer-w),86vw);display:flex;flex-direction:column;background:var(--bg-2);padding:calc(10px + var(--safe-top)) 12px calc(12px + var(--safe-bottom));transform:translate(-102%);transition:transform .42s var(--ease);box-shadow:var(--shadow-lg);overflow-y:auto;overscroll-behavior:contain}.menu-open .drawer{transform:none}.scrim{position:fixed;inset:0;z-index:40;background:#00000052;opacity:0;pointer-events:none;transition:opacity .3s ease}.menu-open .scrim{opacity:1;pointer-events:auto}.drawer-brand{display:flex;align-items:center;gap:12px;padding:6px 6px 16px}.drawer-brand img{width:48px;height:48px;border-radius:50%;background:#fff;object-fit:contain;box-shadow:0 1px 3px #0000001f}.drawer-brand-text{display:flex;flex-direction:column;line-height:1.2;flex:1;min-width:0}.drawer-brand-text strong{color:var(--red);font-size:1.15rem;font-weight:800}.drawer-brand-text span{color:var(--ink-3);font-size:.82rem}.drawer-nav{flex:1}.nav-group{background:var(--bg);border-radius:var(--radius);overflow:hidden;margin-bottom:18px;box-shadow:var(--shadow)}.nav-group-title{padding:10px 16px 6px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);background:var(--bg-2)}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;min-height:50px;color:var(--ink);text-decoration:none;position:relative;font-weight:500}.nav-item+.nav-item:before{content:"";position:absolute;top:0;left:56px;right:0;border-top:.5px solid var(--line)}.nav-item:active{background:var(--bg-3)}.nav-ico{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--red);color:#fff}.nav-ico .icon{width:19px;height:19px}.nav-label{flex:1}.nav-chev{color:var(--line-strong)}.nav-badge{background:var(--red);color:#fff;font-size:.75rem;font-weight:700;border-radius:999px;padding:1px 8px}.nav-item.active{background:var(--red-soft)}.nav-item.active .nav-label{color:var(--red);font-weight:700}.drawer-foot{display:flex;align-items:center;gap:6px;background:var(--bg);border-radius:var(--radius);padding:8px 6px 8px 10px;box-shadow:var(--shadow)}.me-chip{display:flex;align-items:center;gap:10px;flex:1;min-width:0;text-decoration:none;color:var(--ink)}.me-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}.me-text strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me-text span{color:var(--ink-3);font-size:.8rem}.fab{position:fixed;z-index:35;right:18px;bottom:calc(20px + var(--safe-bottom));display:inline-flex;align-items:center;gap:8px;height:56px;padding:0 22px 0 18px;border-radius:999px;background:linear-gradient(135deg,#e01a3a,var(--red) 55%,var(--red-dark));color:#fff;font-weight:700;text-decoration:none;box-shadow:0 10px 24px #c8102e61,0 2px 6px #c8102e4d;transition:transform .2s var(--ease)}.fab:active{transform:scale(.95)}@media(max-width:767px){.navbar{justify-content:space-between}.navbar-title{position:absolute;left:50%;transform:translate(-50%);bottom:10px}.navbar-brand,.navbar-logo{display:none}.navbar-page{display:inline;max-width:56vw}.navbar .spacer{display:none}}@media(min-width:768px){:root{--drawer-w: 340px;--navbar-h: 60px}.main{padding:26px 28px calc(110px + var(--safe-bottom))}.navbar{padding-left:16px;padding-right:20px}.navbar-page{display:inline;color:var(--ink-3);font-weight:600}.navbar-page:before{content:"›";margin:0 8px 0 2px;color:var(--line-strong)}h1{font-size:2.1rem}}@media(min-width:1024px){:root{--drawer-w: 264px}.shell{display:grid;grid-template-columns:var(--drawer-w) minmax(0,1fr);transition:grid-template-columns .3s var(--ease)}.shell.collapsed{grid-template-columns:78px minmax(0,1fr)}.drawer{position:sticky;top:0;height:100vh;width:auto;transform:none;box-shadow:none;z-index:20;background:var(--bg);border-right:1px solid var(--line);padding:18px 12px}.drawer-close,.scrim,.fab{display:none!important}.nav-group{background:transparent;box-shadow:none;border-radius:0;margin-bottom:12px;overflow:visible}.nav-group-title{background:transparent;padding:14px 12px 6px}.nav-item{min-height:44px;border-radius:12px;padding:8px 10px;color:var(--ink-2)}.nav-item+.nav-item:before{display:none}.nav-item:hover{background:var(--bg-2)}.nav-ico{background:transparent;color:var(--ink-3)}.nav-chev{display:none}.nav-item.active{background:var(--red)}.nav-item.active .nav-label,.nav-item.active .nav-ico{color:#fff}.nav-item.active .nav-badge{background:#fff;color:var(--red)}.drawer-foot{box-shadow:none;border:1px solid var(--line)}.navbar{background:#ffffffdb;padding:0 28px 0 14px}.navbar-brand,.navbar-logo{display:none}.navbar-page{color:var(--ink);font-size:1.15rem;font-weight:700}.navbar-page:before{display:none}.navbar-hello{display:inline}.main{padding:28px 36px 48px;max-width:1320px}h1{font-size:1.9rem}.collapsed .drawer-brand-text,.collapsed .nav-label,.collapsed .nav-badge,.collapsed .nav-group-title,.collapsed .me-text,.collapsed .drawer-foot .icon-btn{display:none}.collapsed .drawer{padding:18px 10px}.collapsed .drawer-brand{justify-content:center;padding:6px 0 16px}.collapsed .nav-item{justify-content:center}.collapsed .drawer-foot{justify-content:center;padding:8px;border:0}}.card{background:var(--bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}@media(min-width:768px){.grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}}.stat{position:relative;overflow:hidden}.stat .label{font-size:.8rem;color:var(--ink-3);font-weight:600}.stat .value{font-size:1.32rem;font-weight:800;letter-spacing:-.02em;margin-top:4px}.hero{position:relative;overflow:hidden;border-radius:22px;padding:20px;color:#fff;background:radial-gradient(120% 140% at 100% 0%,#ff4d68 0%,var(--red) 42%,var(--red-deep) 100%);box-shadow:0 16px 40px #c8102e47}.hero:after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:#ffffff14}.hero .hero-label{font-size:.85rem;opacity:.85;font-weight:600}.hero .hero-value{font-size:2.4rem;font-weight:800;letter-spacing:-.035em;line-height:1.1;margin:4px 0 10px}.hero .hero-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:.84rem;opacity:.92}.hero .pill{background:#ffffff2e;border-radius:999px;padding:3px 10px;font-weight:600}.hero select{background:#ffffff29;color:#fff;border:1px solid rgba(255,255,255,.35);min-height:38px;border-radius:999px;padding:6px 34px 6px 14px;width:auto;font-weight:600}.hero select option{color:var(--ink)}.hero-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:14px;position:relative;z-index:1}.tile-ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--red-soft);color:var(--red);margin-bottom:10px}.btn{appearance:none;border:0;background:var(--fill);color:var(--red);border-radius:12px;padding:11px 16px;font:inherit;font-weight:600;cursor:pointer;min-height:46px;display:inline-flex;align-items:center;gap:8px;justify-content:center;text-decoration:none;transition:transform .15s var(--ease),background .15s}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--red);color:#fff;box-shadow:0 6px 16px #c8102e38}.btn.primary:hover:not(:disabled){background:var(--red-dark)}.btn.danger{color:var(--bad);background:var(--bad-soft)}.btn.block{width:100%}.btn.small{min-height:34px;padding:6px 12px;font-size:.88rem;border-radius:10px}.btn.ghost{background:transparent}label.field{display:block}label.field>span{display:block;font-size:.84rem;color:var(--ink-2);margin-bottom:6px;font-weight:600}input,select,textarea{width:100%;font:inherit;padding:11px 14px;border:1px solid transparent;border-radius:12px;background:var(--bg-2);min-height:46px;color:var(--ink);transition:border-color .15s,background .15s,box-shadow .15s}select{-webkit-appearance:none;appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238a8a8e' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}.hero select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}textarea{min-height:96px;resize:vertical}input:focus,select:focus,textarea:focus{outline:none;background:#fff;border-color:var(--red);box-shadow:0 0 0 4px var(--red-soft)}.btn:focus-visible,.icon-btn:focus-visible,.nav-item:focus-visible,a:focus-visible{outline:3px solid var(--red-soft-2);outline-offset:2px}.field .err{color:var(--bad);font-size:.82rem;margin-top:4px}.field.uncertain input{border-color:#e0a800;background:#fffbea}.form-grid{display:grid;gap:14px;grid-template-columns:1fr}@media(min-width:640px){.form-grid.two{grid-template-columns:1fr 1fr}}.badge{display:inline-block;font-size:.75rem;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--fill);color:var(--ink-2);white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.red{background:var(--red-soft);color:var(--red)}.alert{border-radius:14px;padding:12px 14px;font-size:.92rem}.alert.bad{background:var(--bad-soft);color:var(--bad)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.alert.info{background:var(--info-soft);color:var(--info)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.list{list-style:none;margin:0;padding:0}.list li{position:relative}.list li+li:before{content:"";position:absolute;top:0;left:4px;right:0;border-top:.5px solid var(--line)}.list a,.list .item{display:flex;gap:12px;padding:12px 4px;text-decoration:none;color:inherit;align-items:center;border-radius:10px}.list a:hover{background:var(--bg-2)}.list .title{font-weight:600}table.t{width:100%;border-collapse:collapse;font-size:.92rem}table.t th{text-align:left;font-size:.74rem;color:var(--ink-3);font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:8px;border-bottom:1px solid var(--line)}table.t td{padding:10px 8px;border-bottom:.5px solid var(--line);vertical-align:top}table.t tbody tr:hover td{background:var(--bg-2)}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}.filters{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:14px}.tabs{display:inline-flex;gap:2px;padding:2px;border-radius:10px;background:var(--fill);margin-bottom:14px;max-width:100%;overflow-x:auto}.tabs button{flex:1;background:none;border:0;padding:7px 16px;font:inherit;font-size:.92rem;font-weight:600;color:var(--ink);border-radius:8px;cursor:pointer;white-space:nowrap}.tabs button.active{background:#fff;box-shadow:0 2px 6px #0000001a,0 0 0 .5px #0000000a}.thumbs{display:flex;gap:10px;flex-wrap:wrap}.thumbs img{width:96px;height:96px;object-fit:cover;border-radius:14px;background:var(--bg-2);box-shadow:0 0 0 .5px var(--line)}.photo-full{max-width:100%;border-radius:14px}@media(min-width:900px){.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(90% 60% at 50% 0%,var(--red-soft-2),transparent 70%),var(--bg-2)}.login-box{width:100%;max-width:400px;background:var(--bg);border-radius:24px;padding:28px 22px;box-shadow:var(--shadow-lg)}.login-box img{width:110px;display:block;margin:0 auto 14px}.center{text-align:center}.empty{text-align:center;color:var(--ink-3);padding:28px 8px}.skeleton{background:linear-gradient(90deg,var(--bg-3),#f6f6f8,var(--bg-3));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:8px;height:16px}@keyframes sk{to{background-position:-200% 0}}@media print{.drawer,.navbar,.fab,.scrim,.no-print{display:none!important}.shell{display:block}body{background:#fff}}.install-steps{margin:0;padding-left:20px}.install-steps li{margin:6px 0}.install-banner img{flex-shrink:0}@media(display-mode:standalone){.install-banner{display:none!important}}.capture{display:grid;gap:12px;grid-template-columns:1fr 1fr}.capture-btn{appearance:none;border:0;cursor:pointer;font:inherit;border-radius:18px;padding:18px 12px;min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-weight:700;color:var(--red);background:var(--bg);box-shadow:var(--shadow);transition:transform .15s var(--ease)}.capture-btn .cap-ico{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--red-soft)}.capture-btn.primary{background:linear-gradient(135deg,#e01a3a,var(--red) 55%,var(--red-dark));color:#fff;box-shadow:0 10px 26px #c8102e4d}.capture-btn.primary .cap-ico{background:#ffffff2e}.capture-btn:active:not(:disabled){transform:scale(.97)}.capture-btn:disabled{opacity:.45}.capture-btn small{font-weight:500;opacity:.8}.thumb{position:relative}.thumb .thumb-state{position:absolute;left:6px;bottom:6px;font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:999px;background:#0000008c;color:#fff}.thumb .thumb-state.ok{background:#1d7a3ee6}.thumb .thumb-file{width:96px;height:96px;border-radius:14px;background:var(--bg-2);display:grid;place-items:center;font-size:.72rem;color:var(--ink-3);padding:6px;text-align:center;word-break:break-all}.readout{border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow);overflow:hidden}.readout-head{display:flex;align-items:center;gap:10px;padding:14px 16px 10px}.readout-head h2{margin:0;font-size:1.05rem}.readout-row{display:flex;align-items:center;gap:12px;padding:12px 16px;min-height:52px;position:relative}.readout-row+.readout-row:before{content:"";position:absolute;top:0;left:16px;right:0;border-top:.5px solid var(--line)}.readout-row .k{color:var(--ink-3);font-size:.92rem;min-width:110px}.readout-row .v{flex:1;text-align:right;font-weight:600;word-break:break-word}.readout-row .v.missing{color:var(--warn);font-weight:600}.readout-row input{text-align:right;background:var(--bg-2);min-height:40px;padding:8px 12px}.readout-row.amount .v{font-size:1.35rem;font-weight:800;letter-spacing:-.02em}.readout-row.edit{flex-wrap:wrap}.readout-row.edit .k{min-width:0;flex-basis:100%}@media(min-width:480px){.readout-row.edit{flex-wrap:nowrap}.readout-row.edit .k{flex-basis:auto;min-width:110px}}.reading{display:inline-block;width:110px;height:14px;border-radius:7px;background:linear-gradient(90deg,var(--bg-3),#f6f6f8,var(--bg-3));background-size:200% 100%;animation:sk 1.2s infinite;vertical-align:middle}.auto-badge{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;font-weight:700;color:var(--red);background:var(--red-soft);padding:3px 9px;border-radius:999px}.submit-bar{position:sticky;bottom:calc(10px + var(--safe-bottom));z-index:5;display:flex;gap:10px;padding:10px;border-radius:20px;background:#ffffffd9;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 8px 30px #0000001f}.submit-bar .btn.primary{flex:1}.month-bars{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:5px;align-items:end;height:160px;margin:8px 0}.month-bar{appearance:none;background:none;border:0;padding:0;height:100%;display:flex;flex-direction:column;align-items:stretch;gap:4px;cursor:pointer;font:inherit;color:var(--ink-2)}.month-bar:disabled{cursor:default;opacity:.45}.month-bar .bar-track{flex:1;display:flex;align-items:flex-end;background:var(--bg-2);border-radius:8px;overflow:hidden}.month-bar .bar-fill{display:block;width:100%;background:linear-gradient(180deg,#ff4d68,var(--red));border-radius:8px 8px 0 0}.month-bar:hover:not(:disabled) .bar-fill{background:var(--red-dark)}.month-bar .bar-label{font-size:.7rem;text-align:center}.cat-row{width:100%;background:none;border:0;text-align:left;cursor:pointer;font:inherit;color:inherit}.cat-row:hover{background:var(--bg-2)}.cat-row .chev{color:var(--ink-3);width:1em;text-align:center}.share{height:6px;background:var(--bg-2);border-radius:99px;overflow:hidden;margin:6px 0 3px;max-width:320px}.share>span{display:block;height:100%;background:var(--red);border-radius:99px}.cat-detail{padding:4px 0 12px}.code-box{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:1.8rem;letter-spacing:.25em;font-weight:700;text-align:center;padding:12px;background:var(--bg-2);border-radius:14px;user-select:all}.page-head{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:14px}.page-head h1{margin:0}.grid>.card+.card,.split>.card+.card,.capture>*+*{margin-top:0}.readout-head{flex-wrap:wrap;row-gap:6px}.readout-head h2{flex:1 1 auto}@media(max-width:767px){.hero-top{flex-direction:column-reverse;align-items:flex-start;gap:10px}.hero .hero-value{font-size:2.15rem}.readout-head h2{flex-basis:100%}}
