@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/public-sans-vietnamese-400-normal-TxZB8OSn.woff2)format("woff2"),url(/assets/public-sans-vietnamese-400-normal-BO1meqcx.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/public-sans-latin-ext-400-normal-mk90oQqJ.woff2)format("woff2"),url(/assets/public-sans-latin-ext-400-normal-B02wwOdZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/public-sans-latin-400-normal-8Rpg0ruU.woff2)format("woff2"),url(/assets/public-sans-latin-400-normal-SBbinRkI.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/public-sans-vietnamese-600-normal-P4BtCUdw.woff2)format("woff2"),url(/assets/public-sans-vietnamese-600-normal-CcnAzmUX.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/public-sans-latin-ext-600-normal-DchWdWJ_.woff2)format("woff2"),url(/assets/public-sans-latin-ext-600-normal-DfkbVac2.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/public-sans-latin-600-normal-Fru-LXNs.woff2)format("woff2"),url(/assets/public-sans-latin-600-normal-BR59oU-I.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/public-sans-vietnamese-700-normal-D97ShjGS.woff2)format("woff2"),url(/assets/public-sans-vietnamese-700-normal-Dq5VrXjD.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/public-sans-latin-ext-700-normal-CgolUQuG.woff2)format("woff2"),url(/assets/public-sans-latin-ext-700-normal-jWHjnMgZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/public-sans-latin-700-normal-BqJmxWdE.woff2)format("woff2"),url(/assets/public-sans-latin-700-normal-Dm-oTPSL.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#1e2b33;--ink-soft:#5b6b76;--paper:#f5f7f8;--surface:#fff;--line:#e2e7eb;--rule:#d6e0ea;--primary:#1e5a96;--primary-soft:#e6eef7;--owes:#a8243e;--paid:#1f7a4d;--warn:#9a5b00;--sidebar:232px;--topbar:56px;--tabbar:64px;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;font-family:Public Sans,system-ui,sans-serif;font-size:15px;line-height:1.5}*{box-sizing:border-box}body{margin:0}h1{letter-spacing:-.01em;margin:0;font-size:1.6rem;font-weight:700;line-height:1.2}a{color:var(--primary)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.shell{grid-template-columns:var(--sidebar) minmax(0, 1fr);grid-template-rows:var(--topbar) 1fr;grid-template-areas:"side top""side main";min-height:100dvh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;grid-area:side;height:100dvh;padding:14px 12px;display:flex;position:sticky;top:0}.sidebar__account{color:var(--ink-soft);margin-top:auto}.sidebar__user{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar{border-bottom:1px solid var(--line);background:var(--paper);z-index:2;grid-area:top;justify-content:flex-end;align-items:center;gap:16px;padding:0 28px;display:flex;position:sticky;top:0}.main{grid-area:main;justify-self:center;width:100%;max-width:1180px;padding:24px 28px 48px}.tabbar{display:none}.brand{align-items:center;padding:2px 8px 18px;display:flex}.brand img{width:auto;display:block}.brand--compact{padding:0;display:none}.topbar__end{align-items:center;gap:12px;min-width:0;display:flex}.topbar__account{width:36px;height:36px;color:var(--ink-soft);border-radius:50%;flex:none;justify-content:center;align-items:center;display:none}.topbar__account.active{background:var(--primary-soft);color:var(--primary)}.nav-link{color:var(--ink);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-weight:600;text-decoration:none;display:flex}.nav-link:hover{background:var(--paper)}.nav-link.active{background:var(--primary-soft);color:var(--primary)}.nav-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.shop-status{color:var(--ink-soft);white-space:nowrap;align-items:center;gap:8px;min-width:0;margin:0;font-size:.87rem;display:flex}.shop-status__text{text-overflow:ellipsis;overflow:hidden}.shop-status__dot{background:#9aa7b0;border-radius:50%;flex:none;width:9px;height:9px}.shop-status--ok .shop-status__dot{background:var(--paid);box-shadow:0 0 0 3px #1f7a4d22}.shop-status--warn{color:var(--warn)}.shop-status--warn .shop-status__dot{background:var(--warn)}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px;display:flex}.page-header__meta{color:var(--ink-soft);margin:4px 0 0;font-size:.9rem}.search{background:var(--surface);border:1px solid var(--line);border-radius:8px;align-items:center;gap:8px;min-width:min(360px,100%);height:40px;padding:0 12px;display:flex}.search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.search svg{fill:none;width:18px;height:18px;stroke:var(--ink-soft);stroke-width:2px;stroke-linecap:round;flex:none}.search input{font:inherit;color:inherit;background:0 0;border:0;outline:0;width:100%;height:100%}.chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.chip{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);cursor:pointer;border-radius:999px;padding:5px 12px;font-size:.87rem;font-weight:600}.chip[aria-checked=true]{background:var(--ink);border-color:var(--ink);color:var(--surface)}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:clip}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--ink-soft);border-bottom:1px solid var(--line);top:var(--topbar);background:#fafbfc;padding:10px 16px;font-size:.82rem;font-weight:600;position:sticky}.table td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 16px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover{background:#fafbfc}.num{text-align:right;white-space:nowrap}th.num{text-align:right}.neg{color:var(--owes);font-weight:600}.muted{color:var(--ink-soft)}.cell-title{font-weight:600;display:block}.cell-sub{color:var(--ink-soft);font-size:.82rem;display:block}.list{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0;padding:0;list-style:none;overflow:hidden}.list li+li{border-top:1px solid var(--line)}.list-row{color:inherit;justify-content:space-between;align-items:center;gap:16px;padding:11px 16px;text-decoration:none;display:flex}.list-row:hover{background:#fafbfc}.list-row__main{min-width:0}.list-row__main .cell-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.amount{white-space:nowrap;font-weight:600}.amount--owes{color:var(--owes)}.amount--paid{color:var(--paid)}.amount--muted{color:var(--ink-soft);font-weight:400}.empty{text-align:center;color:var(--ink-soft);background:var(--surface);border:1px dashed var(--line);border-radius:12px;margin:0;padding:36px 16px}.footnote{color:var(--ink-soft);margin:10px 2px 0;font-size:.85rem}.back{align-items:center;gap:4px;margin-bottom:10px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.back:before{content:"‹";font-size:1.2rem;line-height:1}.party-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.party-balance{margin:0;font-size:1.35rem;font-weight:700}.book{border:1px solid var(--rule);box-shadow:0 1px 0 var(--rule), 0 3px 0 -1px #fffefc, 0 4px 0 -1px var(--rule);background:#fffefc;border-radius:4px;overflow-x:auto}.book__table{border-collapse:collapse;width:100%;min-width:560px}.book__table th{text-align:left;color:var(--primary);border-bottom:3px double var(--owes);padding:12px 14px 8px;font-size:.8rem;font-weight:700}.book__table td{border-bottom:1px solid var(--rule);vertical-align:top;padding:9px 14px}.book__table th+th,.book__table td+td{border-left:1px solid #f0d9de}.book__table .book__date{white-space:nowrap;border-right:3px double var(--owes);width:1%;color:var(--ink-soft)}.book__table .book__date+th,.book__table .book__date+td{border-left:0}.book__balance{font-weight:700}.book__amt,.book__when{display:none}.book__amt--credit{color:var(--paid)}.book__table th.num{text-align:right}.field{flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;display:flex}.field input{font:inherit;color:var(--ink);background:var(--surface);border:1px solid #c9d2d9;border-radius:8px;width:100%;height:44px;padding:0 12px;font-size:1rem;font-weight:400}.field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);outline:0}.field small{font-weight:400}.field__row{gap:8px;display:flex}.field__toggle{font:inherit;color:var(--primary);cursor:pointer;background:0 0;border:0;flex:none;padding:0 6px;font-size:.87rem;font-weight:600}.button{font:inherit;background:var(--surface);height:44px;color:var(--ink);cursor:pointer;border:1px solid #c9d2d9;border-radius:8px;padding:0 18px;font-weight:600}.button:hover{background:var(--paper)}.button--primary{background:var(--primary);border-color:var(--primary);color:#fff}.button--primary:hover{background:#174a7d}.button:disabled{opacity:.6;cursor:default}.form-error{color:var(--owes);margin:0;font-size:.9rem;font-weight:600}.form-ok{color:var(--paid);margin:0;font-size:.9rem;font-weight:600}.sign-in{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.sign-in__card{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:16px;width:min(380px,100%);padding:28px 24px;display:flex}.sign-in__logo{align-self:flex-start;width:auto;margin-bottom:4px}.sign-in__card h1{font-size:1.35rem}.sign-in__note{color:var(--ink-soft);margin:0;font-size:.9rem}.sign-in__card .button{margin-top:4px}.account{max-width:520px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:16px;padding:20px;display:flex}.panel h2{margin:0;font-size:1.05rem}.panel p{margin:0}.panel .field{align-self:stretch}.actions{flex-wrap:wrap;gap:8px;display:flex}a.button{align-items:center;text-decoration:none;display:inline-flex}.button--small{height:34px;padding:0 12px;font-size:.87rem}.button--block{justify-content:center;width:100%}.link-button{font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;padding:4px;font-size:.85rem;text-decoration:underline}.small{font-size:.82rem}.entry .list-row__main .cell-title{white-space:normal}.entry__end{flex-direction:column;flex:none;align-items:flex-end;gap:4px;display:flex}.entry__more{flex-direction:column;gap:8px;padding:0 16px 12px;display:flex}.entry__reason{color:var(--owes);margin:0;font-size:.9rem}.badge{white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.78rem;font-weight:600}.badge--muted{color:var(--ink-soft);background:#eef1f3}.badge--wait{color:var(--warn);background:#fff4d6}.badge--ok{color:var(--paid);background:#e3f3ea}.badge--bad{color:var(--owes);background:#fbe6ea}.entry-form h1{margin-bottom:16px}.entry-form__grid{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:16px;display:grid}.entry-form__side{top:calc(var(--topbar) + 16px);flex-direction:column;gap:0;display:flex;position:sticky}.entry-form .panel{align-items:stretch}.picker{position:relative}.picker__list{z-index:4;background:var(--surface);border:1px solid var(--line);border-radius:10px;max-height:320px;margin:4px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 8px 24px #1e2b3326}.picker__list button{text-align:left;width:100%;font:inherit;cursor:pointer;color:inherit;background:0 0;border:0;border-radius:6px;padding:8px 10px;display:block}.picker__list button:hover,.picker__list button:focus-visible{background:var(--primary-soft)}.picked{border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;font-weight:400;display:flex}.lines{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.line{border-top:1px solid var(--line);padding:12px 0}.line__head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.line__fields{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:8px;display:flex}.field--small{width:110px}.field--small input{height:40px}.line__total{margin-left:auto;padding-bottom:10px;font-weight:700}.line__warn{color:var(--warn);margin:6px 0 0;font-size:.85rem}.segmented{border:1px solid #c9d2d9;border-radius:8px;display:flex;overflow:hidden}.segmented button{font:inherit;background:var(--surface);height:40px;color:var(--ink-soft);cursor:pointer;border:0;flex:1;font-weight:600}.segmented button+button{border-left:1px solid #c9d2d9}.segmented button[aria-checked=true]{background:var(--primary);color:#fff}.total{border-top:1px solid var(--line);justify-content:space-between;padding-top:12px;font-size:1.2rem;font-weight:700;display:flex}@media (width<=899px){.shell{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--topbar) 1fr;grid-template-areas:"top""main"}.sidebar{display:none}.topbar{justify-content:space-between;padding:0 16px}.brand--compact,.topbar__account{display:flex}.main{padding:16px 16px calc(var(--tabbar) + 24px + env(safe-area-inset-bottom))}.tabbar{height:calc(var(--tabbar) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);z-index:3;display:flex;position:fixed;inset:auto 0 0}.tab-link{color:var(--ink-soft);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:.75rem;font-weight:600;text-decoration:none;display:flex}.tab-link.active{color:var(--primary)}.tab-link .nav-icon{width:22px;height:22px}.search{min-width:100%;height:44px}.page-header{flex-direction:column;align-items:stretch}.hide-sm{display:none}.table th,.table td{padding:10px 12px}.table th{top:var(--topbar)}.list-row{min-height:56px;padding:12px 14px}.shop-status{font-size:.8rem}.book__table{min-width:0}.book__table .book__dc{display:none}.book__table .book__amt{display:table-cell}.book__table .book__date{display:none}.book__table .book__when{display:inline}.book__table th:nth-child(2),.book__table td:nth-child(2){border-left:3px double var(--owes)}.book__table th,.book__table td{padding-left:10px;padding-right:10px}.party-balance{font-size:1.15rem}.entry-form__grid{grid-template-columns:minmax(0,1fr)}.entry-form__side{position:static}.field--small{width:calc(50% - 5px)}.line__total{text-align:right;width:100%;padding-bottom:0}.page-header .actions .button{white-space:nowrap;flex:1;justify-content:center;padding:0 8px}}
