@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/noto-sans-lao-400.woff2)format("woff2")}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/noto-sans-lao-700.woff2)format("woff2")}@font-face{font-family:Phajot Baht;font-style:normal;font-weight:400;font-display:swap;unicode-range:U+E3F;src:url(../fonts/phajot-baht-400.woff2)format("woff2")}@font-face{font-family:Phajot Baht;font-style:normal;font-weight:700;font-display:swap;unicode-range:U+E3F;src:url(../fonts/phajot-baht-700.woff2)format("woff2")}:root{--font-stack:"Noto Sans Lao", "Phajot Baht", sans-serif;--ink-rgb:45, 45, 58;--radius-chip:8px;--radius-control:12px;--radius-card:16px;--radius-hero:20px;--radius-sheet:28px 28px 0 0;--radius-pill:9999px;--app-bg:#f7fcf5;--app-bg-rgb:247, 252, 245;--surface:#ffffffeb;--text-primary:#2d2d3a;--text-muted:#9b9bad;--brand-accent:#ace1af;--brand-accent-rgb:172, 225, 175;--brand-accent-soft:#e9ffdb;--brand-accent-strong:#3d8a42;--brand-on-accent:#1a4d2b;--brand-accent-deep:#1a4020;--brand-accent-vivid:#2a7a40;--brand-accent-mid:#5aae5f;--brand-on-fill:#1a4020;--brand-on-fill-soft:#1a4020b3;--brand-on-fill-track:#1a402026;--focus-ring:#1a402099;--chart-brand-primary:#7bc8a4;--brand-gradient-from:#ace1af;--brand-gradient-to:#7bc8a4;--pattern-tint-opacity:0;--currency-lak:#ffaa5e;--currency-thb:#c9b8ff;--currency-usd:#ace1af;--status-income:#1a5a30;--status-expense:#c0392b;--status-expense-dark:#a03020;--status-success:#1a5a30;--status-success-bar:#1a7f3a;--status-success-tint:#e7f6e9;--status-warning:#b07b26;--status-warning-text:#9a6410;--status-warning-tint:#fff8ec;--status-error:#c0392b;--status-error-dark:#991b1b;--status-error-tint:#fdecea;--status-danger-tint:#ffb3a7;--status-danger-tint-rgb:255, 179, 167;--color-primary:var(--brand-accent);--color-secondary:var(--brand-accent-soft);--color-tertiary:#ffc6c2;--color-bg:var(--app-bg);--color-surface:#e9f5e3;--color-card:#fff;--color-text:#1a2e1a;--color-text-sub:#5a7a5a;--color-text-hint:#96b396;--color-accent:#5aae5f;--color-accent-dk:var(--brand-accent-strong);--color-accent-bg:var(--brand-accent-soft);--color-income:#3da873;--color-income-bg:#ddf5e8;--color-expense:#c75050;--color-expense-bg:#fce4e4;--color-warn:#d4993a;--color-warn-bg:#fdf1da}:root[data-app-theme=celadon]{--app-bg:#f7fcf5;--app-bg-rgb:247, 252, 245;--surface:#ffffffeb;--text-primary:#2d2d3a;--text-muted:#9b9bad;--brand-accent:#ace1af;--brand-accent-soft:#e9ffdb;--brand-accent-rgb:172, 225, 175;--brand-accent-strong:#3d8a42;--brand-on-accent:#1a4d2b;--brand-accent-deep:#1a4020;--brand-accent-vivid:#2a7a40;--brand-accent-mid:#5aae5f;--focus-ring:#1a402099;--chart-brand-primary:#7bc8a4;--pattern-tint-opacity:0}:root[data-app-theme=sage]{--app-bg:#f6faf5;--app-bg-rgb:246, 250, 245;--surface:#fff;--text-primary:#2e3c33;--text-muted:#87958b;--brand-accent:#3e8e5a;--brand-accent-soft:#c8e6c9;--brand-accent-rgb:62, 142, 90;--brand-accent-strong:#2f6b44;--brand-on-accent:#fff;--brand-accent-deep:#244b31;--brand-accent-vivid:#35804c;--brand-accent-mid:#4f9e6c;--brand-on-fill:#fff;--brand-on-fill-soft:#ffffffc7;--brand-on-fill-track:#ffffff47;--brand-gradient-from:#3e8e5a;--brand-gradient-to:#2f6b44;--focus-ring:#244b3199;--chart-brand-primary:#6fb588;--pattern-tint-opacity:.14}:root[data-app-theme=indigo]{--app-bg:#f6f8ff;--app-bg-rgb:246, 248, 255;--text-primary:#26324a;--text-muted:#7d879b;--brand-accent:#4a62d8;--brand-accent-soft:#dde4ff;--brand-accent-rgb:74, 98, 216;--brand-accent-strong:#3a4cad;--brand-on-accent:#fff;--brand-accent-deep:#26366f;--brand-accent-vivid:#4358b3;--brand-accent-mid:#556ccc;--brand-on-fill:#fff;--brand-on-fill-soft:#ffffffc7;--brand-on-fill-track:#ffffff47;--brand-gradient-from:#4a62d8;--brand-gradient-to:#3a4cad;--focus-ring:#26366f99;--chart-brand-primary:#8296e8;--pattern-tint-opacity:.14}:root[data-app-theme=orchid]{--app-bg:#fcf9fe;--app-bg-rgb:252, 249, 254;--text-primary:#332741;--text-muted:#8a7f94;--brand-accent:#8a5cc8;--brand-accent-soft:#e9ddfc;--brand-accent-rgb:138, 92, 200;--brand-accent-strong:#6f49a5;--brand-on-accent:#fff;--brand-accent-deep:#4a2f6c;--brand-accent-vivid:#7653a8;--brand-accent-mid:#9a6fd2;--brand-on-fill:#fff;--brand-on-fill-soft:#ffffffc7;--brand-on-fill-track:#ffffff47;--brand-gradient-from:#8a5cc8;--brand-gradient-to:#6f49a5;--focus-ring:#4a2f6c99;--chart-brand-primary:#ac8bdd;--pattern-tint-opacity:.14}:root[data-app-theme=sunset]{--app-bg:#fffbf5;--app-bg-rgb:255, 251, 245;--text-primary:#3a2f23;--text-muted:#8e8070;--brand-accent:#e0820f;--brand-accent-soft:#ffe7c2;--brand-accent-rgb:224, 130, 15;--brand-accent-strong:#b5680c;--brand-on-accent:#fff;--brand-accent-deep:#68390f;--brand-accent-vivid:#c4720d;--brand-accent-mid:#d18a26;--brand-on-fill:#fff;--brand-on-fill-soft:#ffffffc7;--brand-on-fill-track:#ffffff47;--brand-gradient-from:#e0820f;--brand-gradient-to:#b5680c;--focus-ring:#68390f99;--chart-brand-primary:#eba84f;--pattern-tint-opacity:.14}.splash-seq{background:var(--app-bg);justify-content:center;align-items:center;min-height:100dvh;display:flex}.splash-seq__logo{width:min(72vw,320px);height:auto;display:block}.splash-seq svg{width:100%;height:auto;display:block}.splash-seq #book path,.splash-seq #spiral path,.splash-seq #wordmark,.splash-seq #capybara{transform-box:fill-box;transform-origin:50%}.splash-seq #capybara{transform-origin:100% 100%}.splash-seq #book path,.splash-seq #spiral path{--i:0}.splash-seq.is-animating.v-a #book path{animation:.62s ease-out backwards splashDraw;animation-delay:calc(var(--i) * 8ms)}.splash-seq.is-animating.v-a #spiral path{animation:.3s cubic-bezier(.2,1.5,.4,1) backwards splashRing;animation-delay:calc(.43s + var(--i) * 12ms)}.splash-seq.is-animating.v-a #wordmark{animation:.36s ease-out .78s backwards splashRise}.splash-seq.is-animating.v-a #capybara{animation:.54s cubic-bezier(.2,1.3,.35,1) .96s backwards splashPeek}.splash-seq.is-animating.v-c #capybara{animation:.42s cubic-bezier(.2,1.45,.35,1) 80ms backwards splashPeekSmall}.splash-seq.is-animating.v-c #spiral path{animation:.32s ease-out backwards splashFade;animation-delay:calc(var(--i) * 6ms)}@keyframes splashDraw{0%{stroke-dasharray:1;stroke-dashoffset:1px;fill-opacity:0}60%{fill-opacity:0}to{stroke-dasharray:1;stroke-dashoffset:0;fill-opacity:1}}@keyframes splashRing{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes splashRise{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes splashPeek{0%{opacity:0;transform:translate(14px,46px)}to{opacity:1;transform:translate(0)}}@keyframes splashPeekSmall{0%{opacity:0;transform:translate(10px,26px)scale(.9)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes splashFade{0%{opacity:.25}to{opacity:1}}@media (prefers-reduced-motion:reduce){.splash-seq *{animation:none!important}}
