:root{--bg:#faf8f4;--surface:#fff;--surface-2:#f1ede6;--text:#1f1d1a;--text-2:#6b655c;--line:#e5e0d7;--accent:#2f6f4e;--accent-text:#fff;--danger:#b4452f;--ok:#2f6f4e;--warn:#c48a1c;--c0:#f4f1eb;--c1:#fbe9a6;--c2:#cfe8cf;--c3:#cfe3f5;--c4:#f7d3dc;--c5:#e3d7f3;--m0:#2f6f4e;--m1:#c48a1c;--m2:#3b6fb6;--m3:#b4452f;--m4:#7a4fb0;--m5:#2a8a8a;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--r:12px;--r-sm:8px;--fs-sm:.8125rem;--fs:1rem;--fs-lg:1.25rem;--fs-xl:1.5rem;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--shadow:0 1px 2px #0000000f, 0 4px 12px #0000000a;--tap:44px}@media (prefers-color-scheme:dark){:root{--bg:#15140f;--surface:#1f1d18;--surface-2:#2a2721;--text:#efebe3;--text-2:#a39c90;--line:#35312a;--accent:#6fb48f;--accent-text:#0f1a14;--danger:#e07a62;--c0:#2a2721;--c1:#4a3f1a;--c2:#23402a;--c3:#1f3447;--c4:#4a2a33;--c5:#352a48;--shadow:none}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:var(--fs)/1.4 var(--font);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}.app{flex-direction:column;max-width:640px;height:100%;margin:0 auto;display:flex}.header{align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);padding-top:calc(var(--s3) + env(safe-area-inset-top));display:flex}.header h1{font-size:var(--fs-lg);align-items:center;gap:var(--s2);flex:1;margin:0;display:flex}.header .back{width:var(--tap);height:var(--tap);margin-left:calc(-1 * var(--s3));font-size:var(--fs-xl);place-items:center;display:grid}.dot{background:var(--text-2);border-radius:50%;width:8px;height:8px;display:inline-block}.dot.local{background:var(--warn)}.main{padding:0 var(--s4) var(--s4);flex:1;overflow-y:auto}.menu{position:relative}.menu>button{width:var(--tap);height:var(--tap);font-size:var(--fs-xl)}.menu-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);z-index:10;min-width:220px;padding:var(--s1);position:absolute;top:100%;right:0}.menu-list button{text-align:left;width:100%;padding:var(--s3);border-radius:var(--r-sm);display:block}.menu-list button:hover{background:var(--surface-2)}.capture{gap:var(--s2);padding:var(--s2) var(--s4);border-top:1px solid var(--line);background:var(--bg);display:flex}.capture input{min-height:var(--tap);padding:0 var(--s4);border:1px solid var(--line);background:var(--surface);border-radius:999px;outline:none;flex:1}.capture input:focus{border-color:var(--accent)}.capture button{width:var(--tap);height:var(--tap);background:var(--accent);color:var(--accent-text);font-size:var(--fs-xl);border-radius:50%;place-items:center;display:grid}.capture button:disabled{opacity:.4}.tabs{border-top:1px solid var(--line);background:var(--surface);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(3,1fr);display:grid}.tabs a{padding:var(--s2) 0 var(--s3);color:var(--text-2);font-size:var(--fs-sm);flex-direction:column;align-items:center;gap:2px;display:flex}.tabs a span:first-child{font-size:var(--fs-xl);line-height:1}.tabs a.active{color:var(--accent);font-weight:600}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.row{align-items:center;gap:var(--s3);min-height:var(--tap);padding:var(--s1) var(--s3);display:flex}.row+.row{border-top:1px solid var(--line)}.muted{color:var(--text-2);font-size:var(--fs-sm)}.grow{flex:1;min-width:0}.section{margin:var(--s4) 0 var(--s2);font-size:var(--fs-sm);color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}.empty{text-align:center;color:var(--text-2);padding:var(--s6) var(--s4)}.badge{font-size:var(--fs-sm);padding:2px var(--s2);background:var(--surface-2);color:var(--text-2);white-space:nowrap;border-radius:999px}.btn{padding:var(--s2) var(--s4);background:var(--surface-2);border-radius:999px;min-height:36px}.btn.danger{color:var(--danger)}.btn.primary{background:var(--accent);color:var(--accent-text)}.avatar{color:#fff;width:28px;height:28px;font-size:var(--fs-sm);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.progress{background:var(--surface-2);border-radius:2px;height:4px;overflow:hidden}.progress>div{background:var(--accent);height:100%}.check{width:var(--tap);height:var(--tap);flex:none;place-items:center;display:grid}.check span{border:2px solid var(--text-2);width:22px;height:22px;color:var(--accent-text);border-radius:50%;place-items:center;font-size:14px;display:grid}.check.on span{background:var(--accent);border-color:var(--accent)}.item-name{text-align:left;min-height:var(--tap);align-items:center;gap:var(--s2);flex-wrap:wrap;flex:1;display:flex}.done .item-name{color:var(--text-2);text-decoration:line-through}.edit{gap:var(--s2);padding:var(--s2) var(--s3) var(--s3) calc(var(--tap) + var(--s3));border-top:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.edit input,.edit select{min-height:40px;padding:0 var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2)}.edit input[name=name]{grid-column:1/-1}.edit .actions{grid-column:1/-1;justify-content:space-between;display:flex}.notes{columns:2;column-gap:var(--s3)}@media (width>=480px){.notes{columns:3}}.note{text-align:left;break-inside:avoid;width:100%;margin-bottom:var(--s3);padding:var(--s3);border-radius:var(--r);border:1px solid var(--line);display:block}.note h3{margin:0 0 var(--s1);font-size:var(--fs)}.note p{white-space:pre-wrap;font-size:var(--fs-sm);color:var(--text-2);max-height:8em;margin:0;overflow:hidden}.note .labels{gap:var(--s1);margin-top:var(--s2);flex-wrap:wrap;display:flex}.editor{gap:var(--s3);padding:var(--s4);border-radius:var(--r);flex-direction:column;min-height:60vh;display:flex}.editor input,.editor textarea{background:0 0;border:0;outline:none;width:100%}.editor input{font-size:var(--fs-lg);font-weight:600}.editor textarea{resize:none;flex:1;min-height:40vh}.swatches{gap:var(--s2);display:flex}.swatches button{border:2px solid var(--line);border-radius:50%;width:28px;height:28px}.swatches button.on{border-color:var(--text)}.c0{background:var(--c0)}.c1{background:var(--c1)}.c2{background:var(--c2)}.c3{background:var(--c3)}.c4{background:var(--c4)}.c5{background:var(--c5)}.m0{background:var(--m0)}.m1{background:var(--m1)}.m2{background:var(--m2)}.m3{background:var(--m3)}.m4{background:var(--m4)}.m5{background:var(--m5)}.balances{gap:var(--s2);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.balance{padding:var(--s3);gap:var(--s1);flex-direction:column;display:flex}.balance strong{font-size:var(--fs-lg)}.pos{color:var(--ok)}.neg{color:var(--danger)}.amount{white-space:nowrap;font-weight:600}.dot.connected{background:var(--ok)}.dot.connecting,.dot.disconnected{background:var(--text-2)}.dot.denied{background:var(--danger)}.menu-list .section{margin:var(--s2) var(--s3) var(--s1)}.menu-list .row{padding:var(--s1) var(--s2)}.menu-list .row input{min-height:36px;padding:0 var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2)}.menu-list button.on{font-weight:600}.join{padding:var(--s5);gap:var(--s4);flex-direction:column;width:100%;max-width:420px;margin:auto;display:flex}.join h1{font-size:var(--fs-xl);margin:0}.join input{min-height:var(--tap);padding:0 var(--s4);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface)}.form{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.form .full{grid-column:1/-1}.form label{gap:var(--s1);font-size:var(--fs-sm);color:var(--text-2);flex-direction:column;display:flex}.form label.row{font-size:var(--fs);color:var(--text);flex-direction:row;align-items:center}.form input:not([type=checkbox]),.form select{min-height:var(--tap);padding:0 var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);color:var(--text)}.form input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent)}.form input.weight{text-align:right;width:84px}.seg{background:var(--surface-2);border-radius:999px;grid-auto-columns:1fr;grid-auto-flow:column;padding:3px;display:grid}.seg button{min-height:36px;color:var(--text-2);font-size:var(--fs-sm);border-radius:999px}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow);font-weight:600}.note{cursor:pointer}.note .body{font-size:var(--fs-sm);color:var(--text-2);white-space:pre-wrap}.note .body.compact{max-height:8em;overflow:hidden}.editor .body{font-size:var(--fs);color:var(--text)}.check-line{align-items:center;gap:var(--s2);cursor:pointer;min-height:28px;display:flex}.check-line input{width:18px;height:18px;accent-color:var(--accent);flex:none;margin:0}.check-line.done span{opacity:.6;text-decoration:line-through}.editor textarea{min-height:30vh}.editor .toolbar{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.editor .field{gap:var(--s1);font-size:var(--fs-sm);color:var(--text-2);flex-direction:column;display:flex}.editor .field input{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:0 var(--s3);min-height:40px;font-size:var(--fs);color:var(--text)}.chips{gap:var(--s2);padding:var(--s3) 0 0;scrollbar-width:none;display:flex;overflow-x:auto}.chips button{white-space:nowrap;padding:var(--s1) var(--s3);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-sm);border-radius:999px}.chips button.on{background:var(--accent);color:var(--accent-text)}.badge.due{background:var(--danger);color:#fff}.pill{background:var(--danger);color:#fff;text-align:center;border-radius:8px;min-width:16px;height:16px;margin-top:-4px;margin-left:2px;padding:0 4px;font-size:11px;line-height:16px;position:absolute}.header .icon{width:var(--tap);height:var(--tap);font-size:var(--fs-xl);place-items:center;display:grid}.header .search{min-height:40px;padding:0 var(--s3);border:1px solid var(--accent);background:var(--surface);border-radius:999px;outline:none}.linked{gap:var(--s3)}.linked>span:first-child{background:var(--accent);width:28px;height:28px;color:var(--accent-text);border-radius:50%;flex:none;place-items:center;display:grid}
