:root{--bg:#f3f5f7;--surface:#fff;--surface-2:#f7f8f9;--text:#17221d;--muted:#78817c;--line:#e4e8e5;--green:#176b4a;--green-2:#2e9970;--mint:#dcefe6;--coral:#ee7a68;--yellow:#e7b655;--blue:#6594c7;--purple:#9a7cc1;--shadow:0 12px 35px rgba(24,43,34,.07);--radius:20px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{color:inherit}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:#fbfcfb;border-right:1px solid var(--line);padding:28px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:11px;color:var(--text);font-weight:750;font-size:20px;text-decoration:none;padding:0 10px 34px}.brand img{border-radius:10px}.desktop-nav{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:var(--muted);border-radius:12px;padding:11px 13px;display:flex;gap:12px;align-items:center;text-align:left;cursor:pointer;font-weight:600}.nav-item span{font-size:20px;width:22px;text-align:center}.nav-item:hover,.nav-item.active{background:var(--mint);color:var(--green)}.privacy-note{margin-top:auto;font-size:11px;color:var(--muted);padding:14px 10px;border-top:1px solid var(--line)}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#47b580;margin-right:7px}main{margin-left:236px;max-width:1500px;padding:28px 4.4vw 70px}.topbar{height:76px;display:flex;justify-content:space-between;align-items:flex-start}.eyebrow{color:#8a928e;font-size:10px;letter-spacing:.14em;font-weight:750;margin:0 0 6px;text-transform:uppercase}.topbar h1{font-size:25px;margin:0;letter-spacing:-.03em}.top-actions{display:flex;gap:10px}.icon-button,.avatar{border:1px solid var(--line);background:var(--surface);width:40px;height:40px;border-radius:50%;cursor:pointer}.avatar{background:var(--text);color:white;font-size:11px;font-weight:700}.page{display:none}.page.active{display:block}.hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:18px}.balance-card,.score-card{min-height:267px;border-radius:24px;padding:25px;background:var(--surface);box-shadow:var(--shadow)}.balance-card{background:linear-gradient(135deg,#123f31,#176b4a 70%,#207c58);color:white;overflow:hidden;position:relative}.balance-card:after{content:"";position:absolute;width:310px;height:310px;border-radius:50%;background:rgba(255,255,255,.035);right:-120px;bottom:-170px}.balance-card .card-label{color:#bcd3ca}.card-label{font-size:10px;letter-spacing:.13em;font-weight:750;color:var(--muted)}.info{border:1px solid currentColor;border-radius:50%;background:none;color:inherit;font-size:9px;width:15px;height:15px;padding:0}.balance-row{display:flex;justify-content:space-between;align-items:center;margin:27px 0 39px}.balance-row h2{font-size:46px;letter-spacing:-.05em;margin:0}.month-switcher{display:flex;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.2);border-radius:20px;padding:4px 8px;font-size:12px}.month-switcher button{border:0;background:none;color:white;cursor:pointer;font-size:19px}.balance-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(255,255,255,.18);padding-top:21px}.balance-stats div{position:relative;padding-left:17px}.balance-stats p{font-size:10px;color:#bcd3ca;margin:0 0 6px}.balance-stats strong{font-size:16px}.dot{position:absolute;left:0;top:4px;width:7px;height:7px;border-radius:50%}.dot.income{background:#92deb9}.dot.expense{background:#f2a294}.dot.saved{background:#e9cd77}.score-head,.panel-head{display:flex;justify-content:space-between;align-items:flex-start}.score-head h3{font-size:21px;margin:7px 0}.trend{font-size:10px;background:var(--mint);color:var(--green);padding:7px 9px;border-radius:15px;font-weight:650}.score-content{display:flex;gap:28px;align-items:center;margin-top:18px}.score-ring{width:138px;height:138px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) 0deg,#e4e9e6 0);position:relative;flex:none}.score-ring:after{content:"";position:absolute;inset:12px;background:var(--surface);border-radius:50%}.score-ring div{z-index:1;display:grid;text-align:center}.score-ring strong{font-size:36px;line-height:1}.score-ring span{font-size:10px;color:var(--muted)}.score-factors{flex:1;display:grid;gap:14px}.factor{display:grid;grid-template-columns:1fr auto;gap:5px;font-size:11px}.factor span:last-child{font-weight:700}.factor-track{grid-column:1/-1;height:5px;border-radius:9px;background:var(--line);overflow:hidden}.factor-track i{display:block;height:100%;background:var(--green-2);border-radius:9px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:39px 0 16px}.section-heading h2{font-size:23px;margin:0;letter-spacing:-.03em}.section-heading.compact{margin-top:32px}.subtitle{font-size:13px;color:var(--muted);margin:7px 0 0}.text-button{border:0;background:none;color:var(--green);font-size:12px;font-weight:700;cursor:pointer}.dashboard-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:18px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 4px 22px rgba(30,45,38,.035)}.spending-panel,.bills-preview{padding:22px}.panel-head h3{font-size:15px;margin:0}.panel-head>span{font-size:11px;color:var(--muted)}.spending-visual{display:flex;align-items:center;gap:45px;padding:24px 14px 5px}.donut{width:156px;height:156px;border-radius:50%;background:conic-gradient(var(--green) 0 40%,var(--coral) 40% 65%,var(--yellow) 65% 80%,var(--blue) 80% 91%,var(--purple) 91%);display:grid;place-items:center;position:relative;flex:none}.donut:after{content:"";position:absolute;inset:24px;background:var(--surface);border-radius:50%}.donut div{z-index:1;display:grid;text-align:center}.donut strong{font-size:19px}.donut span{font-size:9px;color:var(--muted)}.legend{display:grid;gap:12px;flex:1}.legend-item{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;font-size:11px}.legend-dot{width:8px;height:8px;border-radius:3px}.legend-item span:last-child{font-weight:700}.upcoming-item{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:11px;padding:14px 0;border-bottom:1px solid var(--line)}.upcoming-item:last-child{border:0}.date-box{background:var(--surface-2);border-radius:10px;text-align:center;padding:6px 2px}.date-box small{display:block;font-size:8px;color:var(--muted)}.date-box strong{font-size:15px}.upcoming-item h4,.transaction-info h4{font-size:12px;margin:0 0 4px}.upcoming-item p,.transaction-info p{font-size:9px;color:var(--muted);margin:0}.upcoming-item>strong{font-size:12px}.transaction-list{overflow:hidden}.transaction-row{display:grid;grid-template-columns:42px 1fr auto auto;align-items:center;gap:13px;padding:13px 18px;border-bottom:1px solid var(--line)}.transaction-row:last-child{border:0}.category-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--surface-2);font-size:17px}.transaction-amount{text-align:right;font-size:12px}.transaction-amount strong{display:block}.transaction-amount small{color:var(--muted);font-size:9px}.income-text{color:var(--green-2)}.row-actions{display:flex}.row-actions button,.menu-button{border:0;background:none;color:var(--muted);cursor:pointer;padding:5px}.page-heading{margin-top:22px}.primary-button,.secondary-button{border:0;border-radius:12px;padding:11px 16px;cursor:pointer;font-size:12px;font-weight:700}.primary-button{background:var(--green);color:#fff}.primary-button:hover{background:#0e563a}.secondary-button{background:var(--surface-2);border:1px solid var(--line)}.toolbar{display:flex;gap:10px;margin-bottom:16px}.toolbar select,.settings-card select{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:0 12px;color:var(--text);font-size:12px}.search{height:42px;background:var(--surface);border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;padding:0 13px;flex:1;max-width:460px;color:var(--muted)}.search input{border:0;outline:0;background:transparent;width:100%;padding:10px;color:var(--text)}.summary-strip{background:var(--mint);color:var(--green);border-radius:16px;padding:18px 22px;margin-bottom:18px;display:flex;justify-content:space-between;font-size:13px}.summary-strip strong{font-size:18px}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.budget-card,.goal-card{padding:20px}.card-top{display:flex;justify-content:space-between;gap:10px}.card-top h3{font-size:14px;margin:0}.card-top p{font-size:10px;color:var(--muted);margin:5px 0}.progress-track{height:8px;background:var(--surface-2);border-radius:10px;overflow:hidden;margin:22px 0 10px}.progress-track span{display:block;height:100%;background:var(--green-2);border-radius:10px}.progress-track span.warning{background:var(--yellow)}.progress-track span.over{background:var(--coral)}.progress-meta{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.goal-card{min-height:210px}.goal-icon{width:45px;height:45px;border-radius:14px;background:var(--mint);display:grid;place-items:center;font-size:21px;margin-bottom:24px}.goal-card .primary-button{width:100%;margin-top:16px}.bill-list{padding:0 18px}.bill-row{display:grid;grid-template-columns:50px 1fr auto auto;gap:13px;align-items:center;padding:17px 4px;border-bottom:1px solid var(--line)}.bill-row:last-child{border:0}.bill-date{width:45px;height:45px;background:var(--surface-2);border-radius:12px;display:grid;place-items:center;text-align:center}.bill-date small{font-size:8px;color:var(--muted)}.bill-date strong{font-size:16px;line-height:1}.bill-info h3{font-size:13px;margin:0 0 4px}.bill-info p{font-size:10px;color:var(--muted);margin:0}.bill-amount{text-align:right}.bill-amount strong{display:block;font-size:13px}.bill-amount small{font-size:9px;color:var(--muted)}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.settings-card{padding:22px}.settings-card h3{font-size:15px;margin:0 0 12px}.setting-row,.setting-action{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 0;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;color:var(--text);cursor:pointer}.setting-row:last-child,.setting-action:last-child{border:0}.setting-row span,.setting-action span{display:grid;gap:4px}.setting-row strong,.setting-action span{font-size:12px}.setting-row small,.setting-action small{font-size:10px;color:var(--muted);font-weight:400}.setting-action b{color:var(--green)}.setting-action.danger span,.setting-action.danger b{color:var(--coral)}.toggle{appearance:none;width:42px;height:24px;border-radius:15px;background:var(--line);position:relative;cursor:pointer}.toggle:after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:white;border-radius:50%;transition:.2s;box-shadow:0 1px 4px #999}.toggle:checked{background:var(--green)}.toggle:checked:after{transform:translateX(18px)}dialog{width:min(500px,calc(100% - 28px));border:0;border-radius:22px;background:var(--surface);color:var(--text);padding:0;box-shadow:0 30px 90px rgba(0,0,0,.22)}dialog::backdrop{background:rgba(14,24,19,.45);backdrop-filter:blur(3px)}dialog form{padding:24px}.modal-head{display:flex;justify-content:space-between;margin-bottom:22px}.modal-head h2{margin:0;font-size:22px}.close-button{border:0;background:var(--surface-2);width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:grid;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:10px;font-weight:700;color:var(--muted)}.field input,.field select{border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:11px;padding:11px;outline:none}.field input:focus,.field select:focus{border-color:var(--green-2)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,30px);background:var(--text);color:var(--surface);padding:11px 18px;border-radius:12px;font-size:12px;opacity:0;pointer-events:none;transition:.25s;z-index:99}.toast.show{opacity:1;transform:translate(-50%,0)}.empty{text-align:center;padding:50px 20px;color:var(--muted);font-size:12px}.mobile-nav{display:none}
body.dark{--bg:#101713;--surface:#17201b;--surface-2:#202a24;--text:#edf4ef;--muted:#94a199;--line:#2c3831;--mint:#203d30;--shadow:0 12px 35px rgba(0,0,0,.18)}body.dark .sidebar{background:#131c17}
.auth-gate{position:fixed;inset:0;z-index:200;background:radial-gradient(circle at 20% 10%,#e8f4ee 0,transparent 34%),linear-gradient(145deg,#f8faf9,#edf2ef);display:grid;place-items:center;padding:20px}.auth-gate.hidden{display:none}.auth-card{width:min(430px,100%);background:var(--surface);border:1px solid var(--line);border-radius:26px;padding:30px;box-shadow:0 30px 90px rgba(18,51,37,.15)}.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:34px}.auth-brand img{border-radius:13px}.auth-brand div{display:grid}.auth-brand strong{font-size:19px}.auth-brand span{font-size:10px;color:var(--muted)}.auth-card h2{font-size:26px;letter-spacing:-.04em;margin:0 0 6px}.auth-form{display:grid;gap:12px;margin-top:24px}.auth-form label{font-size:10px;font-weight:700;color:var(--muted);display:grid;gap:6px}.auth-form input{border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:12px;padding:12px;outline:none}.auth-form input:focus{border-color:var(--green-2)}.auth-form button{width:100%}.auth-divider{height:1px;background:var(--line);position:relative;margin:26px 0 20px}.auth-divider span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--surface);padding:0 10px;color:var(--muted);font-size:10px}.auth-signout{display:block;margin:20px auto 0}.auth-status{min-height:18px;margin:18px 0 0;text-align:center;color:var(--coral);font-size:11px}.live-badge{font-size:9px;color:var(--green);background:var(--mint);padding:6px 8px;border-radius:12px}.live-badge i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#34b679;margin-right:4px;animation:pulse 1.8s infinite}@keyframes pulse{50%{opacity:.35}}#cloud-invite-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em}
@media(max-width:1050px){.card-grid{grid-template-columns:repeat(2,1fr)}.spending-visual{gap:20px}.sidebar{width:205px}main{margin-left:205px;padding-left:3vw;padding-right:3vw}}
@media(max-width:800px){.sidebar{display:none}main{margin-left:0;padding:18px 18px 104px}.topbar{height:69px}.topbar h1{font-size:22px}.hero-grid,.dashboard-grid,.settings-grid{grid-template-columns:1fr}.balance-card,.score-card{min-height:auto}.balance-row{margin:22px 0 30px}.balance-row h2{font-size:39px}.score-card{padding:22px}.score-content{justify-content:space-around}.dashboard-grid{gap:14px}.section-heading{margin-top:30px}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;bottom:0;left:0;right:0;height:75px;padding:6px 12px calc(6px + env(safe-area-inset-bottom));background:rgba(255,255,255,.94);border-top:1px solid var(--line);backdrop-filter:blur(15px);z-index:30}.dark .mobile-nav{background:rgba(23,32,27,.94)}.mobile-nav .nav-item{padding:5px;display:grid;justify-items:center;gap:1px;font-size:18px}.mobile-nav small{font-size:8px}.mobile-add{width:47px;height:47px;border-radius:50%;border:0;background:var(--green);color:#fff;font-size:26px;justify-self:center;box-shadow:0 7px 18px rgba(23,107,74,.3)}.card-grid{grid-template-columns:1fr 1fr}.page-heading{align-items:center}.toolbar{flex-wrap:wrap}.search{max-width:none;flex-basis:100%}.toolbar select{height:40px;flex:1}}
@media(max-width:530px){main{padding-left:14px;padding-right:14px}.hero-grid{gap:12px}.balance-card{padding:21px}.balance-stats strong{font-size:14px}.score-content{gap:15px}.score-ring{width:125px;height:125px}.section-heading h2{font-size:20px}.spending-visual{padding:25px 0 4px;gap:22px}.donut{width:130px;height:130px}.donut:after{inset:20px}.transaction-row{grid-template-columns:38px 1fr auto;padding:12px}.transaction-row .row-actions{grid-column:2/-1;justify-content:flex-end;margin-top:-9px}.card-grid{grid-template-columns:1fr}.page-heading{align-items:flex-start}.page-heading .primary-button{padding:10px 11px;font-size:10px}.summary-strip{font-size:11px}.summary-strip strong{font-size:15px}.bill-row{grid-template-columns:45px 1fr auto}.bill-row .row-actions{grid-column:2/-1;justify-content:flex-end}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}
