:root{--bg: #f4f6f8;--surface: #ffffff;--text: #1c2733;--muted: #5c6b7a;--line: #e1e6eb;--primary: #0b6e4f;--primary-ink: #ffffff;--primary-soft: #e3f3ec;--danger: #b3261e;--danger-soft: #fbe9e7;--info-soft: #e8f0fb;--warn: #8a5a00;--radius: 14px}@media (prefers-color-scheme: dark){:root{--bg: #11181f;--surface: #1a232c;--text: #e8edf2;--muted: #9aa9b8;--line: #2b3844;--primary: #3fbf94;--primary-ink: #06281d;--primary-soft: #14352a;--danger: #ff8a80;--danger-soft: #3a1f1d;--info-soft: #1b2a3f;--warn: #f0c36a}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Noto Sans Thai,system-ui,-apple-system,Segoe UI,sans-serif;font-size:17px;line-height:1.5}h1{font-size:1.35rem;margin:0;line-height:1.3}h2{font-size:1.1rem;margin:0}p{margin:0}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;max-width:640px;margin:0 auto}.top{display:flex;align-items:center;gap:12px;justify-content:center;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line)}.logo{width:64px;height:64px;flex:0 0 auto;background:#fff;border-radius:50%}.brand{display:flex;flex-direction:column;line-height:1.3;font-size:.95rem}.brand strong{font-weight:700;color:var(--primary)}.brand span{color:var(--muted);font-size:.85rem}.profile{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--primary-soft)}.profile-text{display:flex;flex-direction:column;min-width:0;line-height:1.3}.profile-text strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:0 0 auto;background:var(--surface);border:2px solid var(--surface)}.avatar-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--primary);color:var(--primary-ink);font-weight:700}.content{flex:1;padding:16px 16px 96px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:12px;align-items:center}.between{justify-content:space-between;align-items:flex-start}.center{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 0}.muted{color:var(--muted);font-size:.92rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}label{display:flex;flex-direction:column;gap:6px;font-weight:500}input,select{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;min-height:48px;width:100%}input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.year-select{flex-direction:row;align-items:center;gap:8px;font-weight:400}.year-select select{width:auto;min-height:44px}.btn{font:inherit;font-weight:600;border-radius:12px;border:1px solid transparent;min-height:48px;padding:0 18px;cursor:pointer}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-ink)}.btn-ghost{background:transparent;color:var(--primary);border-color:var(--primary)}.link{background:none;border:0;color:var(--primary);font:inherit;font-size:.9rem;padding:8px 4px;min-height:40px;cursor:pointer;text-decoration:underline}.alert{border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-ok{background:var(--primary-soft);color:var(--primary)}.alert-info{background:var(--info-soft)}.net{text-align:center;background:var(--primary-soft);border-color:transparent}.net-owe{background:var(--danger-soft)}.net-owe .net-amount{color:var(--danger)}.net-amount{font-size:2.2rem;font-weight:700;color:var(--primary);line-height:1.2;font-variant-numeric:tabular-nums}.net-amount span{font-size:1rem;font-weight:500}.lines{margin:12px 0 0;display:flex;flex-direction:column}.lines>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.lines dt{color:var(--muted)}.lines dd{margin:0;font-variant-numeric:tabular-nums;font-weight:500}.lines .sum{border-bottom:0;font-weight:700}.lines .sum dt{color:var(--text)}.chip{display:inline-block;background:var(--primary-soft);color:var(--primary);border-radius:999px;padding:4px 12px;font-size:.9rem;font-weight:600}.chips{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px}.stats{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;gap:8px}.stats b{display:block;font-size:1.5rem;font-variant-numeric:tabular-nums}.stats span{color:var(--muted);font-size:.9rem}.bar{height:10px;background:var(--line);border-radius:999px;overflow:hidden}.bar>div{height:100%;background:var(--primary);border-radius:999px}.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.tabs button{flex:0 0 auto;font:inherit;font-size:.92rem;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer}.tabs button.on{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.members,.issues{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.members li,.issues li{display:flex;justify-content:space-between;gap:8px;padding:12px 0;border-bottom:1px solid var(--line)}.issues li{display:block}.members li>div:first-child{display:flex;flex-direction:column;min-width:0}.row-actions{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 auto}.nav{position:fixed;bottom:0;left:0;right:0;max-width:640px;margin:0 auto;display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.nav button{flex:1;font:inherit;font-weight:600;min-height:56px;background:none;border:0;color:var(--muted);cursor:pointer}.nav button.on{color:var(--primary);box-shadow:inset 0 3px 0 var(--primary)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:10}.modal{background:var(--surface);width:100%;max-width:640px;border-radius:18px 18px 0 0;padding:20px 16px;padding-bottom:max(20px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.modal-actions .btn{flex:1}.spinner{width:36px;height:36px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--primary);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:3s}}.grow{flex:1}.check{flex-direction:row;align-items:flex-start;gap:12px;font-weight:400;cursor:pointer}.check input{width:24px;height:24px;min-height:24px;flex:0 0 auto;margin:2px 0 0;accent-color:var(--primary)}.consent{border:1px solid var(--line);border-radius:12px;padding:12px 14px}.consent summary{cursor:pointer;font-weight:600;min-height:32px;display:flex;align-items:center}.consent section{margin-top:10px}.consent h2{font-size:.95rem;color:var(--primary)}.consent p{font-size:.92rem;color:var(--muted)}.counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;text-align:center}.counts>div{background:var(--bg);border-radius:12px;padding:10px 6px}.counts b{display:block;font-size:1.3rem;font-variant-numeric:tabular-nums}.counts span{color:var(--muted);font-size:.85rem}.plain{margin:8px 0 0;padding-left:20px;font-size:.92rem}input[type=file]{padding:10px;background:var(--bg)}.tabs{scrollbar-width:none}
