:root{--bg: #0f0f10;--surface: #1a1a1d;--surface-2: #232327;--line: #2e2e33;--gold: #e0a83e;--gold-soft: #f0cd87;--text: #f5f5f4;--muted: #9b9ba3;--danger: #ef4444;--ok: #36c46b;--radius: 16px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased}a{color:var(--gold)}button{font-family:inherit;cursor:pointer}.app{max-width:560px;margin:0 auto;min-height:100%;padding-bottom:80px}.muted{color:var(--muted)}.gold{color:var(--gold)}.danger{color:var(--danger)}.ok{color:var(--ok)}.center{text-align:center}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.spacer{flex:1}.btn{background:var(--gold);color:#1a1206;border:none;border-radius:12px;padding:14px 18px;font-size:16px;font-weight:700;width:100%}.btn:disabled{opacity:.55}.btn.secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--line)}.btn.ghost{background:transparent;color:var(--gold);border:1px solid var(--gold)}.btn.sm{padding:9px 14px;font-size:14px;width:auto;border-radius:10px}.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}input,select,textarea{width:100%;background:var(--surface-2);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:13px 14px;font-size:16px;margin:6px 0}label{font-size:13px;color:var(--muted);display:block;margin-top:8px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:12px}.error{background:#ef44441f;color:#fca5a5;padding:10px 12px;border-radius:10px;font-size:14px;margin:8px 0}.badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;text-transform:uppercase;letter-spacing:.4px}.badge.gold{background:#e0a83e29;color:var(--gold)}.badge.ok{background:#36c46b29;color:var(--ok)}.badge.danger{background:#ef444429;color:#fca5a5}.badge.muted{background:var(--surface-2);color:var(--muted)}.header{position:sticky;top:0;z-index:5;background:#0f0f10eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:12px 14px}.header img{height:34px;width:34px;border-radius:8px;object-fit:cover}.header .title{font-weight:800;letter-spacing:.3px}.header .sub{font-size:12px;color:var(--muted)}.linkbtn{background:none;border:none;color:var(--muted);font-size:14px}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:30px 24px;width:100%;max-width:380px;text-align:center}.login-card .logo{width:120px;height:120px;border-radius:22px;object-fit:cover;margin-bottom:12px}.login-card h1{margin:6px 0 2px;font-size:22px}.login-card form{margin-top:16px;text-align:left}.hint{margin-top:14px;font-size:12px;color:var(--muted)}.budget{background:linear-gradient(160deg,#20180a,#14130f);border:1px solid #3a2e12;border-radius:20px;padding:22px;margin:12px;text-align:center}.budget .label{color:var(--gold-soft);font-size:13px;text-transform:uppercase;letter-spacing:1px}.budget .amount{font-size:40px;font-weight:800;color:var(--gold);margin:6px 0;line-height:1.1}.budget .sub{display:flex;justify-content:space-around;margin-top:14px;font-size:13px;color:var(--muted)}.budget .sub b{display:block;color:var(--text);font-size:15px}.bar{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden;margin-top:12px}.bar>span{display:block;height:100%;background:var(--gold)}.item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.item:last-child{border-bottom:none}.item .num{width:26px;height:26px;border-radius:50%;background:var(--surface-2);color:var(--gold);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex:none}.item .grow{flex:1;min-width:0}.item .grow .t{font-weight:600}.item .grow .s{font-size:13px;color:var(--muted)}.amt{font-weight:700;white-space:nowrap}.amt .base{display:block;font-size:12px;color:var(--muted);font-weight:500}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin:18px 12px 4px}.tabbar{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--line);display:flex;max-width:560px;margin:0 auto}.tabbar button{flex:1;background:none;border:none;color:var(--muted);padding:10px 0 14px;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:3px}.tabbar button.active{color:var(--gold)}.tabbar .ic{font-size:20px}.control{background:var(--surface-2);border-radius:14px;padding:14px;margin-top:10px}.control .grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.control .cell .k{font-size:12px;color:var(--muted)}.control .cell .v{font-size:18px;font-weight:700}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:30}.modal{background:var(--surface);border-top-left-radius:22px;border-top-right-radius:22px;width:100%;max-width:560px;padding:18px 18px 28px;max-height:92vh;overflow:auto}.modal h3{margin:4px 0 12px}.chips{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}.chip{padding:9px 14px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--text);font-size:14px}.chip.active{background:var(--gold);color:#1a1206;border-color:var(--gold);font-weight:700}.fab{position:fixed;bottom:92px;right:max(16px,calc(50% - 264px));background:var(--gold);color:#1a1206;border:none;border-radius:999px;padding:14px 20px;font-weight:800;font-size:15px;box-shadow:0 6px 20px #0006;z-index:10}.empty{text-align:center;color:var(--muted);padding:40px 20px}.thumb{width:46px;height:46px;border-radius:8px;object-fit:cover;border:1px solid var(--line)}.family{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:30px 20px}.family .logo{width:90px;height:90px;border-radius:18px;object-fit:cover}.family h1{font-size:20px;margin:14px 0 4px;text-align:center}.timeline{width:100%;max-width:420px;margin-top:20px}.tl{display:flex;gap:14px}.tl .dot{width:16px;height:16px;border-radius:50%;border:2px solid var(--line);margin-top:4px;flex:none}.tl.done .dot{background:var(--gold);border-color:var(--gold)}.tl.current .dot{border-color:var(--gold);box-shadow:0 0 0 4px #e0a83e2e}.tl .line{width:2px;background:var(--line);margin:0 7px;flex:none}.tl .txt{padding-bottom:22px}
