:root{--bg: #f7f5ef;--surface: #ffffff;--ink: #1b1f1d;--ink-2: #4c524e;--muted: #7d827c;--line: #e6e2d8;--line-soft: #efece4;--accent: #2f6b57;--accent-2: #3f8a70;--accent-soft: #e4efe9;--ok: #3d7a57;--warn: #c28a3e;--low: #c9584f;--over: #a3262a;--danger-soft: #fbeceb;--radius: 18px;--shadow: 0 1px 2px rgba(27, 31, 29, .04), 0 6px 20px rgba(27, 31, 29, .05);--nav-h: calc(68px + env(safe-area-inset-bottom)) ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:Heebo,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}h1,h2,h3,p{margin:0}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}.muted{color:var(--muted)}.small{font-size:.82rem}.center{text-align:center}.grow{flex:1;min-width:0}.pad{padding:16px}.big{font-size:1.6rem;font-weight:800}.left{text-align:left}.rot{transform:rotate(180deg)}.stack{display:flex;flex-direction:column;gap:12px}.danger{color:var(--over)!important}.shell{min-height:100dvh;padding-bottom:calc(var(--nav-h) + 24px)}.page{max-width:640px;margin:0 auto}.page-header{padding:20px 16px 8px;display:flex;flex-direction:column;gap:10px}.page-header h1{font-size:1.5rem;font-weight:800;letter-spacing:-.01em}.page-body{padding:8px 16px 16px}.home-header{padding:18px 16px 4px;display:flex;flex-direction:column;gap:14px;align-items:stretch}.admin-header-top{display:flex;justify-content:space-between;align-items:center}.back-link{display:inline-flex;align-items:center;gap:4px;text-decoration:none;font-weight:600;font-size:.9rem}.section-title{font-size:.95rem;font-weight:700;color:var(--ink-2);margin:18px 16px 10px}.page-body .section-title{margin:10px 0 0}.home-header+.banner,.page>.banner,.page>.summary,.page>.stack{margin-left:16px;margin-right:16px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:1.25rem;letter-spacing:-.02em;direction:ltr;align-self:center}.brand img{width:36px;height:36px}.brand b{color:var(--accent)}.brand-sm{font-size:1rem;align-self:flex-start}.brand-sm img{width:26px;height:26px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.page-body .card:not(.list):not(.budget-card):not(.client):not(.kpi):not(.tile):not(.chip-grid){padding:16px}.card-title{font-size:.95rem;font-weight:700;margin-bottom:12px}.summary{padding:22px 20px 18px;margin-top:14px;text-align:center;display:flex;flex-direction:column;gap:6px}.summary-label{font-weight:600;color:var(--ink-2)}.summary-amount{font-size:2.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}.summary .bar-track{margin:10px 0 6px;height:10px}.summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}.summary-stats>div{display:flex;flex-direction:column;align-items:center;gap:2px}.summary-stats strong{font-size:1.05rem;font-variant-numeric:tabular-nums}.summary-stats span{font-size:.78rem;color:var(--muted)}.bar-track{height:6px;background:var(--line-soft);border-radius:999px;overflow:hidden;grid-column:1 / -1}.bar-fill{height:100%;border-radius:999px;transition:width .4s ease}.budget-card{display:grid;grid-template-columns:1fr auto;gap:12px 8px;padding:14px 16px;align-items:center}.budget-card.clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}.budget-card.clickable:hover{transform:translateY(-1px);box-shadow:0 8px 24px #1b1f1d14}.budget-main{display:flex;gap:12px;align-items:center;min-width:0}.budget-name{font-weight:700;display:flex;gap:6px;align-items:center}.budget-left{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.budget-left strong{font-size:1.1rem;font-variant-numeric:tabular-nums}.budget-left span{font-size:.75rem;font-weight:600}.cat-badge{width:42px;height:42px;flex:none;display:grid;place-items:center;border-radius:13px;background:var(--accent-soft);color:var(--accent);font-size:1.1rem}.cat-badge.sm{width:36px;height:36px;border-radius:11px}.skeleton{height:78px;background:linear-gradient(90deg,#fff,#f4f2ec,#fff);background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{to{background-position:-200% 0}}.empty{text-align:center;padding:36px 16px;color:var(--ink-2);display:flex;flex-direction:column;align-items:center;gap:6px}.empty svg{color:var(--muted);margin-bottom:4px}.pill{display:inline-flex;align-items:center;padding:1px 9px;border-radius:999px;font-size:.72rem;font-weight:700;background:var(--line-soft);color:var(--ink-2);white-space:nowrap}.pill-accent{background:var(--accent-soft);color:var(--accent)}.pill-ok,.pill-create{background:#e3f1e8;color:var(--ok)}.pill-warn,.pill-edit{background:#f8eedd;color:#9a6a26}.pill-danger,.pill-delete{background:var(--danger-soft);color:var(--over)}.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:14px;background:#fbf6ea;border:1px solid #efe2c2;font-size:.9rem;margin-top:12px}.banner-note{background:var(--accent-soft);border-color:#c9ddd2}.banner-ok{background:#e3f1e8;border-color:#c4e0cd;color:var(--ok);font-weight:600}.banner-err{background:var(--danger-soft);border-color:#f0c8c5;color:var(--over);font-weight:600}.toast{position:fixed;z-index:400;bottom:calc(var(--nav-h) + 16px);left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 12px 10px 16px;border-radius:14px;display:flex;gap:14px;align-items:center;box-shadow:0 10px 30px #00000040;animation:rise .2s ease;width:max-content;max-width:calc(100vw - 32px)}.toast button{display:inline-flex;gap:4px;align-items:center;background:#ffffff24;border:none;color:#fff;font-weight:700;padding:6px 12px;border-radius:10px;cursor:pointer}.impersonation{position:sticky;top:0;z-index:250;display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;background:var(--ink);color:#fff;padding:9px 16px;font-size:.88rem}.impersonation button{background:#fff;color:var(--ink);border:none;border-radius:999px;padding:4px 12px;font-weight:700;cursor:pointer}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:11px;border:none;background:transparent;color:var(--ink-2);cursor:pointer}.icon-btn:hover:not(:disabled){background:var(--line-soft)}.icon-btn:disabled{opacity:.3;cursor:default}.month-picker{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:3px}.month-picker select{border:none;background:transparent;font-weight:700;font-size:1rem;text-align:center;text-align-last:center;cursor:pointer;flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 18px;border-radius:13px;border:1px solid transparent;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap;transition:transform .1s,background .15s,opacity .15s}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-2)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}.btn-ghost:hover:not(:disabled){background:var(--line-soft)}.btn-soft{background:var(--surface);border-color:var(--line);color:var(--ink);font-weight:600;font-size:.88rem;padding:10px 12px}.btn-soft:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-danger{background:var(--over);color:#fff}.btn-dashed{background:transparent;border:1.5px dashed #cfc9bb;color:var(--ink-2);padding:14px}.btn-dashed:hover{border-color:var(--accent);color:var(--accent)}.btn-wa{background:#1f9d55;color:#fff}.btn-sm{padding:7px 12px;font-size:.85rem;border-radius:10px}.btn-block{width:100%}.fab{position:fixed;z-index:150;bottom:calc(var(--nav-h) + 18px);left:max(18px,calc(50vw - 302px));width:60px;height:60px;border-radius:20px;border:none;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 10px 26px #2f6b5761;transition:transform .15s}.fab:hover{transform:translateY(-2px)}.form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:7px}.label{font-size:.8rem;font-weight:700;color:var(--ink-2)}.input{width:100%;padding:12px 14px;border-radius:13px;border:1px solid var(--line);background:#fbfaf7;outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:#fff}textarea.input{resize:vertical}.amount-input{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:14px;padding:4px 16px;background:#fbfaf7}.amount-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.amount-input span{font-size:1.4rem;color:var(--muted)}.amount-input input{flex:1;border:none;outline:none;background:transparent;font-size:2rem;font-weight:800;padding:6px 0;min-width:0;text-align:right}.form-error{color:var(--over);font-size:.88rem;font-weight:600}.success{color:var(--ok);font-weight:700}.chip-grid{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:.86rem;font-weight:600;cursor:pointer;white-space:nowrap;color:var(--ink-2)}.chip-on{background:var(--accent);border-color:var(--accent);color:#fff}.filter-row{display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.search{display:flex;align-items:center;gap:8px;padding:0 14px;border-radius:13px;border:1px solid var(--line);background:var(--surface);color:var(--muted)}.search input{flex:1;border:none;outline:none;background:transparent;padding:11px 0;color:var(--ink);min-width:0}.page-body>.search,.page-body>.filter-row{margin-bottom:10px}.name-row{display:flex;gap:10px;align-items:center}.row-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#14161566;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s ease}.sheet{width:100%;max-width:560px;max-height:90dvh;overflow-y:auto;background:var(--surface);border-radius:24px 24px 0 0;padding:8px 20px calc(28px + env(safe-area-inset-bottom));animation:rise .25s cubic-bezier(.3,.7,.2,1);display:flex;flex-direction:column;gap:14px}.sheet-handle{width:40px;height:4px;border-radius:4px;background:var(--line);margin:4px auto 0}.sheet-header{display:flex;align-items:center;justify-content:space-between}.sheet-header h2{font-size:1.15rem;font-weight:800}.confirm-text{color:var(--ink-2)}@media(min-width:700px){.overlay{align-items:center}.sheet{border-radius:24px}}@keyframes rise{0%{transform:translateY(24px);opacity:0}}@keyframes fade{0%{opacity:0}}.menu{display:flex;flex-direction:column;gap:8px}.menu button{display:flex;gap:12px;align-items:center;text-align:right;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--surface);cursor:pointer}.menu button:hover:not(:disabled){border-color:var(--accent)}.menu button:disabled{opacity:.45;cursor:default}.menu button div{display:flex;flex-direction:column}.menu button span{font-size:.8rem;color:var(--muted)}.icon-pick{flex:none;width:64px;height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:13px;border:1px solid var(--line);background:var(--accent-soft);color:var(--accent);cursor:pointer}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.icon-cell{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:12px;border:1px solid transparent;background:transparent;cursor:pointer;color:var(--ink-2);font-size:.72rem}.icon-cell:hover{background:var(--line-soft)}.icon-cell.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.list{padding:4px 0;overflow:hidden}.list-row{display:flex;align-items:center;gap:12px;padding:11px 14px}.list-row+.list-row{border-top:1px solid var(--line-soft)}.row-title{font-weight:700;display:flex;gap:6px;align-items:center;flex-wrap:wrap;overflow-wrap:anywhere}.amount{font-variant-numeric:tabular-nums;white-space:nowrap}.row-tools{display:flex}.row-tools .icon-btn{width:32px;height:32px}.day-group{margin-bottom:14px}.day-head{display:flex;justify-content:space-between;font-size:.82rem;font-weight:700;color:var(--muted);padding:0 4px 6px}.cat-summary{margin-bottom:14px}.cat-summary-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}.kpis>div{background:var(--bg);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:2px}.kpis span{font-size:.75rem;color:var(--muted)}.kpis strong{font-variant-numeric:tabular-nums}.usage{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;margin-top:14px;font-size:.85rem}.usage .bar-track{grid-column:auto;height:8px}.hbars{display:flex;flex-direction:column;gap:10px}.hbar{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;gap:10px;align-items:center;font-size:.88rem}.hbar-label{display:flex;gap:6px;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ink-2)}.hbar-track{height:10px;border-radius:999px;background:var(--line-soft);overflow:hidden}.hbar-fill{height:100%;border-radius:999px}.hbar b{font-variant-numeric:tabular-nums;min-width:56px;text-align:left}.insights ul{margin:0;padding:0 18px 0 0;display:flex;flex-direction:column;gap:8px}.insights li::marker{color:var(--accent)}.kpi-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.kpi{padding:14px;display:flex;flex-direction:column;gap:2px}.kpi span{font-size:.78rem;color:var(--muted)}.kpi strong{font-size:1.35rem;font-weight:800;font-variant-numeric:tabular-nums}@media(min-width:560px){.kpi-grid{grid-template-columns:repeat(4,1fr)}}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tile{padding:14px 12px;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--ink);transition:border-color .15s}.tile:hover{border-color:var(--accent)}.tile svg{color:var(--accent)}.tile span{font-size:.75rem;color:var(--muted)}.client{overflow:hidden}.client.inactive{opacity:.75}.client-head{display:flex;gap:12px;align-items:center;width:100%;text-align:right;background:none;border:none;padding:14px 16px 10px;cursor:pointer}.client-head>svg{color:var(--muted);transition:transform .2s}.client-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:0 16px 14px}.client-stats div{display:flex;flex-direction:column}.client-stats span{font-size:.72rem;color:var(--muted)}.client-stats b{font-variant-numeric:tabular-nums}.client-note{margin:0 16px 14px;padding:8px 12px;border-radius:10px;background:var(--accent-soft);font-size:.85rem}.client-actions{border-top:1px solid var(--line-soft);padding:12px 16px 14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.note-edit{width:100%}.action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;width:100%}.avatar{width:40px;height:40px;flex:none;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800}.avatar.lg{width:52px;height:52px;font-size:1.3rem}.profile{display:flex;gap:14px;align-items:center}.credential{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--bg);border:1px solid var(--line)}.credential span{font-size:.8rem;color:var(--muted);min-width:80px}.credential code{flex:1;font-weight:700;font-size:1.05rem}.switcher{display:flex;flex-direction:column;gap:2px}.switcher select{padding:9px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-weight:600}.tabs{display:flex;gap:4px;overflow-x:auto;background:var(--line-soft);padding:4px;border-radius:14px;scrollbar-width:none}.tabs button{flex:1;border:none;background:transparent;padding:8px 12px;border-radius:10px;font-weight:600;font-size:.86rem;cursor:pointer;white-space:nowrap;color:var(--ink-2)}.tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #00000014}.lead{display:flex;flex-direction:column;gap:8px}.lead-est{font-size:.9rem}.status-select{padding:6px 10px;border-radius:10px;border:1px solid var(--line);background:var(--bg);font-weight:600;font-size:.85rem}.post{display:flex;flex-direction:column;gap:12px}.post-part{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.post-cta{font-weight:700;color:var(--accent)}.login,.calc{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:32px 16px}.login-brand{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.login-logo{width:76px;height:76px;margin-bottom:6px}.login-brand h1{font-size:1.8rem;font-weight:800;direction:ltr;letter-spacing:-.02em}.login-brand h1 b{color:var(--accent)}.login-brand p{color:var(--muted)}.login-card{width:100%;max-width:400px;padding:28px 24px 22px}.login-calc{font-weight:600;text-decoration:none}.calc h1{font-size:1.7rem;font-weight:800;text-align:center}.calc>.card{width:100%;max-width:520px;padding:22px}.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:420px){.calc-grid{grid-template-columns:1fr}}.calc-result{text-align:center;padding:18px;border-radius:16px;background:var(--accent-soft);display:flex;flex-direction:column;gap:4px}.calc-result strong{font-size:1.8rem;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}.calc-result small{color:var(--ink-2)}.bottom-nav{position:fixed;z-index:200;bottom:0;left:0;right:0;height:var(--nav-h);padding-bottom:env(safe-area-inset-bottom);background:#fffffff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;justify-content:center}.bottom-nav a{flex:1;max-width:128px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--muted);font-size:.72rem;font-weight:600}.bottom-nav a.on{color:var(--accent)}.app-loading{min-height:100dvh;display:grid;place-items:center}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.dropzone{display:flex;flex-direction:column;align-items:center;gap:8px;padding:26px 18px;border:2px dashed var(--line);border-radius:var(--radius);background:var(--surface);color:var(--accent);text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone strong{color:var(--ink)}.dropzone:hover,.dropzone.over,.dropzone:focus-within{border-color:var(--accent);background:var(--accent-soft)}.imp-help{margin:0;padding:0 18px 0 0;color:var(--ink-2);font-size:.88rem;line-height:1.8}.imp-group{padding:12px 14px;display:flex;flex-direction:column;gap:8px}.imp-group+.imp-group{border-top:1px solid var(--line-soft)}.imp-group.off .imp-name,.imp-group.off .imp-total{opacity:.5}.imp-head{display:flex;align-items:center;gap:10px}.imp-head input[type=checkbox]{width:20px;height:20px;flex:none;accent-color:var(--accent)}.imp-name{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:start;cursor:pointer}.imp-total{font-weight:800;white-space:nowrap}.imp-select{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:#fbfaf7;font:inherit;font-size:.88rem}.imp-select.missing{border-color:var(--warn);background:#fbf6ea}.imp-txs{list-style:none;margin:0;padding:6px 10px;border-radius:10px;background:var(--bg);font-size:.84rem}.imp-txs.flat{background:none;padding:0 14px 10px}.imp-txs li{display:flex;gap:10px;padding:5px 0}.imp-txs li span:nth-child(2){flex:1;min-width:0;color:var(--ink-2);overflow-wrap:anywhere}.imp-bar{position:sticky;bottom:calc(var(--nav-h) + 10px);z-index:5;display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:var(--radius);background:var(--surface);box-shadow:0 8px 30px #1b1f1d24}.imp-missing{color:#9a6a26}
