@import"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700;12..96,800&family=Fraunces:opsz,wght@9..144,600;9..144,700&family=Public+Sans:wght@400;500;600;700&display=swap";:root{--paper: #fff8f5;--surface: #ffffff;--surface-2: #fdeef1;--ink: #23131b;--ink-2: #61434f;--ink-3: #8a6b76;--rule: #f4d9e0;--rule-soft: #faeaee;--accent: #e11d48;--accent-deep: #9f1239;--accent-ink: #fff3f6;--accent-soft: #ffe0e8;--gold: #d97706;--gold-deep: #92400e;--gold-ink: #fffaf0;--gold-soft: #fef1d6;--positive: #059669;--positive-soft: #d3f5e6;--alert: #ea580c;--alert-soft: #ffe3d1;--shadow: 0 1px 2px rgba(35, 19, 27, .07), 0 6px 20px -14px rgba(35, 19, 27, .35);--r-card: 16px;--r-row: 12px;--r-pill: 999px;--display: "Fraunces", Georgia, "Times New Roman", serif;--heading: "Public Sans", ui-sans-serif, system-ui, sans-serif;--body: "Public Sans", ui-sans-serif, system-ui, sans-serif;--numeral: "Bricolage Grotesque", "Public Sans", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box}html{color-scheme:light}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-bottom:env(safe-area-inset-bottom)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}h1,h2,h3{font-family:var(--heading);font-weight:700;margin:0;text-wrap:balance;letter-spacing:-.01em}button,input,select{font-family:inherit;font-size:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-shell{max-width:32rem;margin:0 auto;min-height:100%;display:flex;flex-direction:column}.screen{flex:1;padding:1.25rem 1rem 6rem;display:flex;flex-direction:column;gap:1.15rem}.screen>h2{font-size:1.3rem}.tabbar{position:sticky;bottom:0;display:flex;border-top:1px solid var(--rule);background:var(--surface);padding-bottom:env(safe-area-inset-bottom)}.tabbar button{position:relative;flex:1;background:none;border:none;color:var(--ink-3);padding:.7rem 0 calc(.55rem + env(safe-area-inset-bottom,0px));font-family:var(--heading);font-size:.7rem;font-weight:600;letter-spacing:0;display:flex;flex-direction:column;align-items:center;gap:.3rem;cursor:pointer;transition:color .15s ease}.tabbar button svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.tabbar button[aria-current=true]{color:var(--accent)}.tabbar .icon-wrap{padding:.3rem .75rem;border-radius:var(--r-pill);transition:background .15s ease}.tabbar button[aria-current=true] .icon-wrap{background:var(--accent-soft)}.hero-card{background:linear-gradient(155deg,var(--accent) 0%,var(--accent-deep) 100%);border-radius:20px;padding:1.7rem 1.5rem 1.5rem;text-align:center;box-shadow:0 1px 2px #9f123926,0 22px 40px -18px #9f123980;position:relative;overflow:hidden}.hero-card:before{content:"";position:absolute;top:-35%;right:-20%;width:65%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.22),transparent 70%);pointer-events:none}.hero-card.warn{background:linear-gradient(155deg,var(--alert) 0%,#9a3412 100%);box-shadow:0 1px 2px #9a34122e,0 22px 40px -18px #9a341280}.hero-label{position:relative;font-family:var(--body);font-size:.85rem;font-weight:600;color:var(--accent-ink);opacity:.85}.hero-label span{display:block;font-size:.72rem;font-weight:500;margin-top:.2rem;opacity:.85}.hero-amount{position:relative;font-family:var(--numeral);font-weight:700;font-optical-sizing:auto;font-size:clamp(2.7rem,13vw,3.6rem);letter-spacing:-.01em;color:var(--accent-ink);margin:.4rem 0 0;font-variant-numeric:tabular-nums;line-height:1;text-shadow:0 2px 14px rgba(0,0,0,.12)}.hero-strip{position:relative;margin-top:1.2rem;padding-top:.95rem;border-top:1px solid rgba(255,255,255,.28);display:flex}.hero-strip .cell{flex:1;padding:0 .4rem}.hero-strip .cell+.cell{border-left:1px solid rgba(255,255,255,.28)}.hero-strip .k{display:block;font-size:.66rem;color:var(--accent-ink);opacity:.75;margin-bottom:.2rem}.hero-strip .v{display:block;font-family:var(--numeral);font-size:.9rem;font-weight:600;color:var(--accent-ink);font-variant-numeric:tabular-nums}.hero-sub{position:relative;margin-top:.7rem;font-family:var(--body);font-size:.8rem;color:var(--accent-ink);opacity:.85}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.stat{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-row);padding:.7rem .85rem}.stat-label{font-family:var(--body);font-size:.72rem;font-weight:500;color:var(--ink-3)}.stat-value{font-family:var(--numeral);font-weight:700;font-size:1.05rem;margin-top:.15rem;font-variant-numeric:tabular-nums;color:var(--ink)}.section-title{font-family:var(--heading);font-size:1rem;font-weight:700;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:2rem}.badge{font-family:var(--body);font-size:.7rem;font-weight:600;padding:.2rem .6rem;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);white-space:nowrap}.badge.alert{background:var(--alert-soft);color:var(--alert)}.badge.positive{background:var(--positive-soft);color:var(--positive)}.badge.gold{background:var(--gold-soft);color:var(--gold-deep)}.list{display:flex;flex-direction:column;gap:.55rem}.movement-row{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-row);padding:.7rem .9rem;display:flex;justify-content:space-between;align-items:center;gap:.75rem;transition:border-color .15s ease}.movement-row:hover{border-color:var(--accent)}.movement-main{min-width:0}.movement-counterparty{font-family:var(--heading);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.movement-meta{font-family:var(--body);font-size:.75rem;color:var(--ink-3);margin-top:.2rem;display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.tag{font-family:var(--body);font-size:.68rem;font-weight:600;padding:.1rem .45rem;border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.tag.unclassified{background:var(--accent-soft);color:var(--accent)}.tag.gold{background:var(--gold-soft);color:var(--gold-deep)}.movement-amount{font-family:var(--numeral);font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}.movement-amount.income{color:var(--positive)}.empty-state{text-align:center;color:var(--ink-3);font-size:.88rem;line-height:1.6;padding:2.1rem 1.3rem;border:1px dashed var(--rule);border-radius:var(--r-row)}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-card);padding:1.05rem 1.1rem;display:flex;flex-direction:column;gap:.8rem}.field{display:flex;flex-direction:column;gap:.35rem}.field label{font-family:var(--body);font-size:.78rem;font-weight:500;color:var(--ink-2)}.field input,.field select{background:var(--surface-2);border:1px solid var(--rule);border-radius:8px;padding:.6rem .7rem;color:var(--ink);font-family:var(--body);font-variant-numeric:tabular-nums}.field input:focus-visible,.field select:focus-visible{border-color:var(--accent)}.btn{border:none;border-radius:8px;padding:.72rem 1rem;font-family:var(--heading);font-weight:600;cursor:pointer;text-align:center;transition:filter .12s ease}.btn:hover{filter:brightness(.94)}.btn-sm{padding:.4rem .75rem;font-size:.8rem;border-radius:var(--r-row)}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 18px -8px #e11d488c}.btn-gold{background:var(--gold);color:var(--gold-ink);box-shadow:0 8px 18px -8px #d977068c}.btn-secondary{background:var(--surface-2);color:var(--ink);border:1px solid var(--rule)}.btn-ghost{background:none;color:var(--ink-2);border:1px solid var(--rule)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{display:flex;gap:.6rem}.btn-row .btn,.btn-row .field{flex:1}.category-chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{font-family:var(--body);font-size:.78rem;font-weight:500;padding:.4rem .75rem;border-radius:var(--r-pill);border:1px solid var(--rule);background:var(--surface-2);color:var(--ink-2);cursor:pointer;transition:border-color .15s ease,background .15s ease}.chip[aria-pressed=true]{background:var(--accent);border-color:transparent;color:var(--accent-ink);box-shadow:0 4px 12px -6px #e11d488c}.check-toggle{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--rule);background:var(--surface);color:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.9rem;line-height:1;transition:background .15s ease,border-color .15s ease,color .15s ease}.check-toggle[aria-pressed=true]{background:var(--positive);border-color:var(--positive);color:#fff;box-shadow:0 4px 10px -4px #05966980}.row-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.login-screen{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;text-align:center;padding:2rem}.login-wordmark{display:flex;flex-direction:column;align-items:center;gap:.7rem}.login-mark-wrap{position:relative;display:flex;align-items:center;justify-content:center;width:88px;height:88px;border-radius:50%;background:radial-gradient(circle,var(--accent-soft),transparent 72%)}.login-mark{position:relative;width:60px;height:60px;stroke:var(--accent);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 6px 14px rgba(225,29,72,.35))}.login-title{font-family:var(--display);font-weight:700;font-size:2.1rem;line-height:1.1;letter-spacing:-.015em;color:var(--ink);text-wrap:balance}.login-sub{color:var(--ink-2);max-width:26rem;line-height:1.6}.error-banner{background:var(--alert-soft);color:var(--alert);border-radius:8px;padding:.7rem .9rem;font-size:.85rem}.spinner{color:var(--ink-3);font-family:var(--body);font-size:.85rem}
