:root{--ink:#14201b;--forest:#102820;--forest-2:#1e4537;--cream:#f5f2ea;--paper:#fffdf8;--line:#ded9cd;--muted:#6e756f;--gold:#eca94c;--green:#39876b;--yellow:#d4a428;--orange:#cf6e37;--red:#b9473e;--shadow:0 18px 50px rgba(28,43,35,.10);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--cream)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.ambient{position:fixed;border-radius:999px;filter:blur(110px);opacity:.15;pointer-events:none}.ambient-one{width:380px;height:380px;background:#e4a64e;top:-140px;right:-100px}.ambient-two{width:360px;height:360px;background:#5c9d81;bottom:-180px;left:22%}.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;font-weight:800;letter-spacing:-.02em;font-size:21px}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:var(--gold);color:var(--forest);font-family:Georgia,serif;font-size:23px}.auth-shell{position:relative;min-height:100vh;display:grid;grid-template-columns:1.2fr .8fr;align-items:center;gap:7vw;max-width:1180px;margin:auto;padding:48px}.auth-copy{max-width:620px}.auth-copy .brand{position:absolute;top:42px}.eyebrow{font-weight:800;font-size:11px;letter-spacing:.18em;color:var(--green);margin:0 0 10px}.auth-copy h1{font-family:Georgia,serif;font-size:clamp(42px,5.4vw,74px);line-height:1.02;letter-spacing:-.045em;margin:16px 0}.lede{font-size:19px;line-height:1.6;color:var(--muted);max-width:560px}.trust-row{display:flex;gap:18px;flex-wrap:wrap;margin-top:34px;font-size:13px;color:var(--forest-2)}.auth-card{background:rgba(255,253,248,.92);border:1px solid rgba(255,255,255,.9);box-shadow:var(--shadow);padding:36px;border-radius:28px}.auth-card h2{font-family:Georgia,serif;font-size:32px;margin:0 0 8px}.auth-card form{display:grid;gap:16px;margin-top:28px}.auth-card label,.form-card label{display:grid;gap:7px;font-size:13px;font-weight:700}.auth-card input,.form-card input,.form-card select,.header-actions input{border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 14px;outline:none;min-height:48px}.auth-card input:focus,.form-card input:focus,.form-card select:focus,.header-actions input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(57,135,107,.12)}.primary,.danger,.text-button,.filter-chip,.icon-button{border:0;cursor:pointer}.primary{background:var(--forest);color:#fff;padding:13px 18px;border-radius:12px;font-weight:750;box-shadow:0 8px 20px rgba(16,40,32,.15)}.primary:hover{background:var(--forest-2)}.danger{background:#f9e7e5;color:var(--red);padding:12px 16px;border-radius:12px;font-weight:750}.wide{width:100%;margin-top:8px}.button-link{display:inline-block;text-decoration:none;text-align:center}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--forest);color:#e9efe9;padding:30px 20px;display:flex;flex-direction:column;z-index:5}.sidebar .brand{padding:0 10px 32px}.sidebar nav{display:grid;gap:7px}.nav-item{width:100%;display:flex;align-items:center;gap:12px;border:0;background:transparent;color:#b9c9c1;border-radius:11px;padding:12px 14px;text-align:left;cursor:pointer;font-size:14px}.nav-item span{width:22px;text-align:center;font-size:18px}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.09);color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--gold)}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:14px}.user-pill{display:flex;align-items:center;gap:10px;margin:12px 6px 0}.user-pill div{display:grid;min-width:0}.user-pill small{color:#9eb1a7;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--gold);color:var(--forest);font-weight:900}.app-main{margin-left:248px;min-height:100vh}.view{display:none;max-width:1180px;margin:auto;padding:46px clamp(24px,4vw,60px) 100px}.view.active{display:block}.page-header{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:32px}.page-header h1{font-family:Georgia,serif;font-size:44px;letter-spacing:-.035em;margin:0}.muted,.section-title p{color:var(--muted);margin:6px 0 0}.header-actions{display:flex;gap:10px;align-items:center}.header-actions input{background:var(--paper)}.reserve-card{position:relative;overflow:hidden;background:linear-gradient(125deg,#102820,#23513f);color:#fff;border-radius:24px;padding:26px 30px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:24px;box-shadow:var(--shadow);min-height:160px}.reserve-card:after{content:"";position:absolute;width:280px;height:280px;border:60px solid rgba(255,255,255,.05);border-radius:50%;right:-110px;top:-120px}.reserve-value{font-family:Georgia,serif;font-size:42px;margin:5px 0}.reserve-meta{display:flex;gap:22px;color:#bbcbc3;font-size:13px}.gauge{width:112px;height:112px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--gold) calc(var(--percent)*1%),rgba(255,255,255,.12) 0);position:relative;z-index:1}.gauge:after{content:"";position:absolute;inset:9px;background:var(--forest-2);border-radius:50%}.gauge span{position:relative;z-index:1;text-align:center;font-weight:800}.gauge small{display:block;color:#bbc9c2;font-size:10px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0 36px}.metric{background:var(--paper);border:1px solid var(--line);border-radius:17px;padding:18px}.metric small{color:var(--muted);font-weight:650}.metric strong{display:block;font-family:Georgia,serif;font-size:25px;margin:8px 0 3px}.metric em{font-style:normal;font-size:11px;color:var(--muted)}.metric.positive strong{color:var(--green)}.metric.warning strong{color:var(--orange)}.section-title{display:flex;justify-content:space-between;align-items:end;margin:30px 0 14px}.section-title h2,.form-card h2{margin:0;font-family:Georgia,serif;font-size:24px}.section-title p{font-size:13px}.text-button{background:transparent;color:var(--green);font-weight:750}.category-list{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.category-row{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:15px 17px}.category-top{display:flex;justify-content:space-between;gap:12px}.category-top strong{font-size:14px}.category-top span{font-size:13px;color:var(--muted)}.progress{height:7px;background:#e8e5dc;border-radius:99px;overflow:hidden;margin-top:11px}.progress span{display:block;height:100%;width:min(100%,var(--progress));background:var(--green);border-radius:inherit}.progress.over span{background:var(--red)}.budget-note{font-size:11px;color:var(--orange);margin-top:7px}.transaction-list{display:grid;gap:8px}.transaction{display:grid;grid-template-columns:44px 1fr auto auto;align-items:center;gap:12px;background:var(--paper);border:1px solid var(--line);padding:12px 15px;border-radius:13px}.tx-date{font-weight:800;color:var(--forest-2);text-align:center}.tx-date small{display:block;color:var(--muted);font-size:9px;text-transform:uppercase}.tx-main{min-width:0}.tx-main strong,.tx-main small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-main small{color:var(--muted);font-size:11px;margin-top:3px}.tx-amount{font-weight:800;text-align:right}.tx-amount.income{color:var(--green)}.status{font-size:10px;border-radius:99px;padding:5px 8px;background:#eeeae1;color:var(--muted)}.status.pending{background:#fff0cf;color:#8d6410}.filter-chip{background:#ece9e1;color:var(--forest-2);border-radius:99px;padding:8px 12px;font-size:12px;font-weight:700}.filter-chip.active{background:var(--gold)}.notice{background:#fff4db;border:1px solid #f0d294;border-radius:14px;padding:14px 17px;display:flex;gap:10px;margin-bottom:16px}.notice span{color:#755d2e}.form-card,.projection-card{background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 8px 30px rgba(30,45,37,.04)}.form-card{max-width:780px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);background:#ece9e1;padding:4px;border-radius:13px;margin-bottom:26px}.segmented label{display:block}.segmented input{position:absolute;opacity:0}.segmented span{display:block;text-align:center;padding:10px;border-radius:10px;cursor:pointer}.segmented input:checked+span{background:#fff;box-shadow:0 3px 10px rgba(0,0,0,.08);color:var(--forest);font-weight:800}.money-field{margin-bottom:24px}.money-field div{display:flex;align-items:center;border-bottom:1px solid var(--line)}.money-field small{font-size:22px;color:var(--muted)}.money-field input{border:0!important;box-shadow:none!important;background:transparent;font-family:Georgia,serif;font-size:48px;padding:8px 12px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-card details{margin:24px 0}.form-card summary{cursor:pointer;color:var(--green);font-weight:750}.details-grid{margin-top:18px}.categories-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.category-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:20px;min-height:170px;display:flex;flex-direction:column}.category-card h3{font-family:Georgia,serif;font-size:21px;margin:12px 0 5px}.category-card p{font-size:13px;color:var(--muted);margin:0}.category-card .tags{display:flex;gap:6px;flex-wrap:wrap}.tag{background:#e7eee9;color:var(--forest-2);border-radius:99px;padding:5px 8px;font-size:10px;font-weight:750}.tag.invest{background:#fff0cf;color:#87600b}.category-card footer{margin-top:auto;display:flex;justify-content:space-between;align-items:end;padding-top:16px}.category-card footer strong{font-family:Georgia,serif;font-size:20px}.chart{display:flex;align-items:end;gap:8px;height:230px;padding:20px 0;border-bottom:1px solid var(--line)}.bar-group{height:100%;flex:1;display:flex;align-items:end;justify-content:center;gap:2px;position:relative}.bar{width:22%;min-width:5px;border-radius:5px 5px 0 0}.bar.installment{background:var(--forest-2)}.bar.recurring{background:var(--gold)}.bar.known{background:#8da397}.bar-label{position:absolute;bottom:-19px;font-size:9px;color:var(--muted)}.projection-table{width:100%;border-collapse:collapse;margin-top:28px;font-size:13px}.projection-table th,.projection-table td{text-align:right;padding:11px;border-bottom:1px solid #ebe7df}.projection-table th:first-child,.projection-table td:first-child{text-align:left}.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.settings-grid .form-card{max-width:none}.settings-grid li{margin:8px 0;color:var(--muted)}.mobile-header,.bottom-nav{display:none}dialog{border:0;padding:0;background:transparent;max-width:580px;width:calc(100% - 32px)}dialog::backdrop{background:rgba(7,19,14,.65);backdrop-filter:blur(4px)}.dialog-card{position:relative;background:var(--paper);border-radius:22px;padding:28px;box-shadow:var(--shadow)}.dialog-close{position:absolute;right:15px;top:12px;border:0;background:transparent;font-size:28px;color:var(--muted);cursor:pointer}.dialog-card h2{font-family:Georgia,serif;font-size:28px;margin:0 30px 10px 0}.dialog-card .form-grid{margin:20px 0}.dialog-card label{display:grid;gap:6px;font-size:13px;font-weight:700}.dialog-card input,.dialog-card select{padding:12px;border:1px solid var(--line);border-radius:10px}#toast{position:fixed;z-index:20;right:24px;bottom:24px;background:var(--forest);color:#fff;border-radius:12px;padding:13px 18px;box-shadow:var(--shadow);transform:translateY(80px);opacity:0;transition:.25s;max-width:360px}#toast.show{transform:none;opacity:1}.skeleton{min-height:90px;border-radius:14px;background:linear-gradient(90deg,#e8e5dd 25%,#f4f1ea 50%,#e8e5dd 75%);background-size:200% 100%;animation:pulse 1.3s infinite}.skeleton.tall{min-height:300px}@keyframes pulse{to{background-position:-200% 0}}.empty{padding:30px;text-align:center;color:var(--muted);background:var(--paper);border:1px dashed var(--line);border-radius:14px}
@media(max-width:900px){.auth-shell{grid-template-columns:1fr;max-width:620px;padding-top:110px}.auth-copy h1{font-size:46px}.sidebar{display:none}.app-main{margin-left:0}.mobile-header{display:flex;position:sticky;top:0;z-index:4;justify-content:space-between;align-items:center;background:rgba(245,242,234,.9);backdrop-filter:blur(15px);padding:12px 20px;border-bottom:1px solid rgba(222,217,205,.8)}.mobile-actions{display:flex;gap:8px}.icon-button{width:40px;height:40px;border-radius:11px;background:var(--forest);color:#fff;font-size:22px}.view{padding:30px 20px 100px}.bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;z-index:7;bottom:0;left:0;right:0;background:rgba(255,253,248,.96);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:7px max(8px,env(safe-area-inset-left)) calc(7px + env(safe-area-inset-bottom))}.bottom-nav button{border:0;background:transparent;color:var(--muted);display:grid;justify-items:center;gap:2px}.bottom-nav button span{font-size:20px}.bottom-nav button.active{color:var(--forest);font-weight:800}.page-header{align-items:start}.metric-grid{grid-template-columns:repeat(2,1fr)}.categories-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.auth-shell{padding:92px 18px 30px}.auth-copy .brand{top:26px}.auth-copy h1{font-size:38px}.auth-copy .lede{font-size:16px}.trust-row{display:none}.auth-card{padding:24px}.page-header{display:block}.page-header h1{font-size:36px}.header-actions{margin-top:18px}.header-actions .primary{display:none}.reserve-card{grid-template-columns:1fr}.gauge{position:absolute;right:22px;top:24px;width:88px;height:88px}.reserve-value{font-size:34px}.reserve-meta{display:grid;gap:3px}.metric-grid{gap:9px}.metric{padding:14px}.metric strong{font-size:21px}.category-list,.categories-grid,.settings-grid,.form-grid{grid-template-columns:1fr}.transaction{grid-template-columns:38px 1fr auto}.transaction .status{display:none}.notice{display:grid}.projection-card,.form-card{padding:20px}.chart{height:190px;overflow-x:auto}.projection-table{font-size:11px}.projection-table th,.projection-table td{padding:9px 5px}.segmented span{font-size:12px}.money-field input{font-size:40px}}
.participant-manager{margin-top:22px;padding:18px;border:1px solid var(--line);border-radius:16px;background:#faf8f2}.participant-manager h3{margin:0}.participant-edit-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;margin-top:14px}.participant-edit-form label{display:grid;gap:6px;font-size:13px;font-weight:700}.participant-edit-form input{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}.projection-table-wrap{overflow-x:auto}.projection-table .viewer-total{color:var(--green);background:#f2f8f5}@media(max-width:620px){.participant-edit-form{grid-template-columns:1fr}.projection-table{min-width:640px}}
.investment-summary{margin-bottom:14px}.investment-payback{display:flex;justify-content:space-between;gap:16px;padding:14px 17px;margin-bottom:16px;border:1px solid #bcd8cc;border-radius:14px;background:#edf7f2}.investment-payback span{color:var(--muted);text-align:right}.investment-chart{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:18px}.investment-legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:12px;font-weight:700}.investment-legend span:before{content:"";display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%;vertical-align:-1px}.investment-legend .cost:before{background:var(--orange)}.investment-legend .income:before{background:var(--green)}.investment-legend .balance:before{background:var(--forest)}.investment-legend small{margin-left:auto;color:var(--muted);font-weight:500}.investment-svg-wrap{overflow-x:auto;margin-top:10px}.investment-svg-wrap svg{display:block;max-width:none}.investment-grid line{stroke:#e9e5dc;stroke-width:1}.investment-grid text,.investment-axis-labels text,.investment-boundary-label{fill:var(--muted);font-size:10px}.investment-future-area{fill:#f5f8f5}.investment-boundary{stroke:var(--green);stroke-width:1.5;stroke-dasharray:4 4}.investment-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.investment-line.cost{stroke:var(--orange)}.investment-line.income{stroke:var(--green)}.investment-line.balance{stroke:var(--forest);stroke-width:4}.investment-line.future{stroke-dasharray:8 6}.investment-dot{fill:var(--paper);stroke:var(--forest);stroke-width:2}.investment-table{min-width:1050px}.projection-phase{display:inline-block;padding:4px 7px;border-radius:99px;background:#e7eee9;color:var(--forest-2);font-size:10px;font-weight:750}.projection-phase.future{background:#fff0cf;color:#87600b}@media(max-width:620px){.investment-payback{display:grid}.investment-payback span{text-align:left}.investment-legend small{width:100%;margin-left:0}.investment-chart{padding:12px}}
.projection-overview-chart{padding-bottom:8px}.projection-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:0 0 14px;font-size:12px;font-weight:700}.projection-legend span:before{content:"";display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:3px;vertical-align:-1px}.projection-legend .installment:before{background:var(--forest-2)}.projection-legend .recurring:before{background:var(--gold)}.projection-legend .known:before{background:#8da397}.projection-legend .income-projected:before{background:#a8d5c1}.projection-legend .income-realized:before{background:var(--green)}.projection-legend .income-line:before{width:18px;height:3px;border-radius:99px;background:#21634e;vertical-align:3px}.projection-svg-wrap{overflow-x:auto}.projection-svg-wrap svg{display:block;width:100%;min-width:760px;height:auto}.projection-svg-grid line{stroke:#e9e5dc;stroke-width:1}.projection-svg-grid text,.projection-month-label,.projection-axis-title{fill:var(--muted);font-size:10px}.projection-axis-title{font-weight:700}.projection-svg-bar.installment{fill:var(--forest-2)}.projection-svg-bar.recurring{fill:var(--gold)}.projection-svg-bar.known{fill:#8da397}.projection-svg-bar.income-projected{fill:#a8d5c1}.projection-svg-bar.income-realized{fill:var(--green)}.projection-income-line{fill:none;stroke:#21634e;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.projection-income-dot{fill:var(--paper);stroke:#21634e;stroke-width:2}.owner-projection-table{min-width:850px}.projected-income-cell{color:var(--green)}.projected-income-cell strong,.projected-income-cell small{display:block}.projected-income-cell small{margin-top:3px;color:var(--muted);font-size:10px;font-weight:500}@media(max-width:620px){.projection-legend{gap:10px}.projection-legend span{font-size:10px}}
@media(max-width:900px){html,body{max-width:100%;overflow-x:hidden}.money-field,.money-field div{min-width:0}.money-field input{flex:1 1 0;width:0;min-width:0;max-width:100%}.bottom-nav{max-width:100vw}}
