:root{color-scheme:light;--bg: #f4efe6;--bg-warm: #ede6d7;--surface: #fcfaf6;--surface-2: #f8f3ea;--text: #1c1813;--text2: #5c5046;--text3: #8c8378;--line: rgba(28, 24, 19, .08);--line-strong: rgba(28, 24, 19, .14);--accent: #c56a4d;--accent-deep: #a0492f;--accent-soft: #f1d9cc;--accent-wash: #f9ece3;--on-ink: #f6f2ea;--on-accent: #fbf8f1;--glass: rgba(252, 250, 246, .92);--font-display: "Instrument Serif", Georgia, "Times New Roman", serif;--font-body: "Geist", -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", sans-serif;--font-mono: "Geist Mono", "SF Mono", Menlo, Consolas, monospace;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--radius-xl: 24px;--shadow-card: 0 4px 16px rgba(28, 24, 19, .06);--shadow-lifted: 0 8px 24px rgba(28, 24, 19, .12);--t-fast: .12s ease;--t: .18s ease}:root[data-theme=dark]{color-scheme:dark;--bg: #16130e;--bg-warm: #1d1912;--surface: #211c15;--surface-2: #292218;--text: #ede6d9;--text2: #b5a995;--text3: #8c8172;--line: rgba(237, 230, 217, .1);--line-strong: rgba(237, 230, 217, .18);--accent: #d67a5a;--accent-deep: #e2977c;--accent-soft: #4e2f21;--accent-wash: #382418;--on-ink: #211c15;--on-accent: #fbf8f1;--glass: rgba(26, 22, 16, .78);--shadow-card: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lifted: 0 8px 24px rgba(0, 0, 0, .55)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer}#root{min-height:100vh}:root{--ink: #1c1813;--ink-soft: #5c5046;--ink-mute: #8c8378;--font-ui: var(--font-body);--sage: #7e8a6a;--sage-soft: #dde2d0;--sage-wash: #eceee2;--sky: #6e859a;--sky-soft: #d6dee5;--sky-wash: #e8ecef;--gold: #b8893b;--gold-soft: #ecddb8;--gold-wash: #f3e9d0;--rose: #b85c7a;--rose-soft: #e8c5d2;--rose-wash: #f6e4eb;--shadow-card: 0 1px 2px rgba(28, 24, 19, .04), 0 4px 16px rgba(28, 24, 19, .06);--shadow-lifted: 0 8px 24px rgba(28, 24, 19, .12), 0 2px 6px rgba(28, 24, 19, .08);--shadow-hairline: 0 0 0 1px rgba(28, 24, 19, .06);--shadow-panel: -16px 0 48px rgba(28, 24, 19, .14), -2px 0 8px rgba(28, 24, 19, .06);--shadow-pop: 0 12px 36px rgba(28, 24, 19, .16), 0 2px 6px rgba(28, 24, 19, .08);--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.25rem;--s-6: 1.5rem;--s-8: 2rem;--s-12: 3rem;--r-xs: 6px;--r-sm: 9px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--t-display-xl: 56px;--t-display-l: 40px;--t-display-m: 30px;--t-display-s: 22px;--t-body-l: 16px;--t-body: 14px;--t-body-s: 13px;--t-eyebrow: 11px;--ease: cubic-bezier(.2, .7, .3, 1);--dur-fast: .12s;--dur: .2s;--dur-slow: .36s;--shell-max: 1280px;--topbar-h: 60px;--tripnav-h: 52px;--rail-w: 264px;--detail-rail-w: 320px;--panel-w: 440px}:root[data-theme=dark]{--ink: #ede6d9;--ink-soft: #b5a995;--ink-mute: #8c8172;--sage: #93a07c;--sage-soft: #333c28;--sage-wash: #262c1f;--sky: #8299ad;--sky-soft: #2b3844;--sky-wash: #212a33;--gold: #c99e52;--gold-soft: #443617;--gold-wash: #332a15;--rose: #c97490;--rose-soft: #44212e;--rose-wash: #331a23;--shadow-card: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 16px rgba(0, 0, 0, .4);--shadow-lifted: 0 8px 24px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .4);--shadow-hairline: 0 0 0 1px rgba(237, 230, 217, .1);--shadow-panel: -16px 0 48px rgba(0, 0, 0, .55), -2px 0 8px rgba(0, 0, 0, .35);--shadow-pop: 0 12px 36px rgba(0, 0, 0, .6), 0 2px 6px rgba(0, 0, 0, .4)}:root[data-theme=dark] .cat-shop{--c: #9b89ad;--c-soft: #383044;--c-wash: #2b2534}.cat-food{--c: var(--accent);--c-soft: var(--accent-soft);--c-wash: var(--accent-wash)}.cat-sight{--c: var(--gold);--c-soft: var(--gold-soft);--c-wash: var(--gold-wash)}.cat-view{--c: var(--sage);--c-soft: var(--sage-soft);--c-wash: var(--sage-wash)}.cat-stay{--c: var(--rose);--c-soft: var(--rose-soft);--c-wash: var(--rose-wash)}.cat-move{--c: var(--sky);--c-soft: var(--sky-soft);--c-wash: var(--sky-wash)}.cat-shop{--c: #7b6b8a;--c-soft: #d8d0e0;--c-wash: #ece7f0}.wa-display{font-family:var(--font-display);font-weight:400;letter-spacing:-.02em;line-height:.98;color:var(--ink)}.wa-eyebrow{font-family:var(--font-mono);font-size:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute)}.wa-mono{font-family:var(--font-mono);letter-spacing:.03em}.wa-focusable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes wa-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes wa-panel-in{0%{transform:translate(24px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes wa-scrim-in{0%{opacity:0}to{opacity:1}}@keyframes wa-pulse-ring{0%{box-shadow:0 0 #c56a4d52}70%{box-shadow:0 0 0 7px #c56a4d00}to{box-shadow:0 0 #c56a4d00}}.app-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.app-bar{display:flex;align-items:center;gap:1.25rem;padding:1.1rem 2rem;border-bottom:1px solid var(--line);background:var(--surface)}.app-bar-title{font-family:var(--font-display);font-size:1.65rem;font-weight:400;letter-spacing:.2px;margin:0}.app-bar-title a{color:inherit;text-decoration:none}.app-bar-nav{display:flex;align-items:center;gap:.25rem;flex:1}.app-bar-nav a{font-family:var(--font-body);font-size:.85rem;font-weight:500;color:var(--text2);padding:.4rem .8rem;border-radius:var(--r-pill);text-decoration:none;transition:background var(--dur-fast),color var(--dur-fast)}.app-bar-nav a:hover{color:var(--text);text-decoration:none}.app-bar-nav a.is-active{background:var(--accent-wash);color:var(--accent-deep)}.app-main{flex:1;padding:2rem;max-width:880px;width:100%;margin:0 auto}.empty-state{text-align:center;padding:4rem 1rem;color:var(--text2)}.empty-state h2{font-family:var(--font-display);font-weight:400;font-size:1.6rem;margin:0 0 .5rem;color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.125rem;font-family:var(--font-body);font-size:.9rem;font-weight:500;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast)}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{filter:brightness(.95);text-decoration:none}.btn-primary:disabled{background:var(--accent-soft);cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--line-strong)}.btn-secondary:hover{border-color:var(--text2);text-decoration:none}.loading,.error{padding:3rem 1rem;text-align:center;color:var(--text2);font-family:var(--font-mono);font-size:.85rem}.error{color:var(--accent)}:root{--owed: #7e8a6a;--owe: #a0492f}:root[data-theme=dark]{--owed: #93a07c;--owe: #e2977c}.accent-sight{--accent: var(--gold);--accent-deep: var(--gold);--accent-soft: var(--gold-soft);--accent-wash: var(--gold-wash)}.accent-view{--accent: var(--sage);--accent-deep: var(--sage);--accent-soft: var(--sage-soft);--accent-wash: var(--sage-wash)}.accent-stay{--accent: var(--rose);--accent-deep: var(--rose);--accent-soft: var(--rose-soft);--accent-wash: var(--rose-wash)}.accent-move{--accent: var(--sky);--accent-deep: var(--sky);--accent-soft: var(--sky-soft);--accent-wash: var(--sky-wash)}.accent-shop{--accent: #7b6b8a;--accent-deep: #7b6b8a;--accent-soft: #d8d0e0;--accent-wash: #ece7f0}:root[data-theme=dark] .accent-shop{--accent: #9b89ad;--accent-deep: #9b89ad;--accent-soft: #383044;--accent-wash: #2b2534}.balance-hero{padding:2.5rem 0 2rem}.balance-sentence{font-family:var(--font-display);font-style:italic;font-size:clamp(1.9rem,4.5vw,2.6rem);line-height:1.08;letter-spacing:-.01em;color:var(--text);margin:.4rem 0 .2rem}.balance-figure{font-family:var(--font-mono);font-style:normal;letter-spacing:.01em;white-space:nowrap}.balance-actions{display:flex;gap:.6rem;margin-top:1.4rem}.month-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:2.2rem 0 .4rem}.month-total{font-family:var(--font-mono);font-size:.75rem;color:var(--text3)}.ledger-row{display:grid;grid-template-columns:3.2rem minmax(0,1fr) auto auto;align-items:center;gap:.9rem;padding:.7rem .5rem;margin:0 -.5rem;border-radius:var(--r-sm);border:none;background:none;width:calc(100% + 1rem);text-align:left;cursor:pointer;font:inherit;color:inherit;transition:background var(--dur-fast)}.ledger-row:hover{background:var(--surface)}.ledger-row+.ledger-row{border-top:1px solid var(--line);border-radius:0 0 var(--r-sm) var(--r-sm)}.ledger-date{font-family:var(--font-mono);font-size:.72rem;color:var(--text3);letter-spacing:.04em;text-transform:uppercase}.ledger-vendor{min-width:0}.paid-chip{display:inline-flex;align-items:center;gap:6px}.ledger-vendor .name{font-weight:500;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ledger-vendor .note{font-size:.78rem;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ledger-amount{font-family:var(--font-mono);font-size:.92rem;text-align:right;white-space:nowrap}.ledger-amount .native{display:block}.ledger-amount .sub{display:block;margin-top:2px;font-size:.72rem;color:var(--text3)}.amt-pos{color:var(--owed)}.amt-neg{color:var(--owe)}.amt-zero{color:var(--text3)}.sheet{max-width:640px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:1.75rem}.sheet+.sheet{margin-top:1.5rem}.sheet-grid{display:grid;gap:1rem}.sheet-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-start}.sheet-actions{display:flex;align-items:center;gap:.6rem;margin-top:1.5rem}.field-error{font-family:var(--font-mono);font-size:.72rem;color:var(--owe);margin-top:.35rem}.field-hint{font-family:var(--font-mono);font-size:.72rem;color:var(--text3);margin-top:.35rem}.member-row{display:flex;align-items:center;gap:.75rem;padding:.65rem 0}.member-row+.member-row{border-top:1px solid var(--line)}.member-row .who{flex:1;min-width:0}.member-row .email{font-size:.9rem;font-weight:500;overflow:hidden;text-overflow:ellipsis}.member-row .meta{font-family:var(--font-mono);font-size:.7rem;color:var(--text3);letter-spacing:.04em}.accent-swatches{display:flex;gap:.6rem;flex-wrap:wrap}.accent-swatch{width:40px;height:40px;border-radius:50%;cursor:pointer;border:2px solid transparent;padding:0;transition:transform var(--dur-fast),border-color var(--dur-fast)}.accent-swatch:hover{transform:scale(1.08)}.accent-swatch.is-on{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface) inset}.trip-picker{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin:1.25rem 0 1rem}.trip-select{width:100%;height:44px;padding:0 10px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-family:var(--font-ui);font-size:13.5px;outline:none;cursor:pointer}.trip-row{display:grid;grid-template-columns:3.2rem minmax(0,1fr) auto auto;align-items:center;gap:.9rem;padding:.7rem .5rem;margin:0 -.5rem;border-radius:var(--r-sm);text-align:left}.trip-row+.trip-row,.trip-confirm+.trip-row{border-top:1px solid var(--line)}.trip-row.is-blocked .ledger-vendor .name,.trip-row.is-blocked .ledger-amount{color:var(--text3)}.trip-blocked{display:block;margin-top:3px;font-family:var(--font-mono);font-size:.7rem;line-height:1.35;color:var(--text2);white-space:normal}.trip-action{display:inline-flex;align-items:center;justify-content:flex-end;min-width:6.5rem}.trip-in-ledger{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.03em;color:var(--owed);text-decoration:none;padding:5px 10px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);white-space:nowrap}.trip-in-ledger:hover{border-color:var(--owed);text-decoration:none}.trip-confirm{display:grid;gap:.9rem;margin:.25rem 0 .75rem;padding:1rem 1.1rem;border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-card)}.trip-confirm-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}@media (max-width: 640px){.app-bar{padding:.9rem 1rem}.app-main{padding:1.25rem 1rem}.sheet{padding:1.25rem}.ledger-row{grid-template-columns:2.6rem minmax(0,1fr) auto}.ledger-row .paid-chip{display:none}.trip-row{grid-template-columns:2.6rem minmax(0,1fr) auto;row-gap:.5rem}.trip-action{grid-column:2 / -1;justify-content:flex-start}}
