@import"https://fonts.googleapis.com/css2?family=Archivo+Black&family=Space+Mono:wght@400;700&display=swap";:root{--bg:#f1f5f9;--ink:#1e293b;--muted:#64748b;--blue:#3b82f6;--red:#ef4444;--green:#22c55e;--white:#fff;--line:#1e293b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Space Mono,monospace}button,input,select{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}.app{min-height:100vh;display:flex}aside{width:260px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:2px solid var(--line);padding:28px 20px;display:flex;flex-direction:column}.brand{font:32px Archivo Black;letter-spacing:-1px;margin-bottom:35px}.brand span{font-size:.72em}.brand b{color:var(--blue)}.user-chip{display:flex;gap:10px;align-items:center;border:2px solid var(--line);padding:10px;margin-bottom:25px}.avatar{width:38px;height:38px;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700}.user-chip b,.user-chip small{display:block}.user-chip small{font-size:8px;color:var(--muted);margin-top:2px;max-width:140px;overflow:hidden;text-overflow:ellipsis}nav{display:grid;gap:5px}nav button{border:2px solid transparent;background:transparent;text-align:left;padding:11px 12px;border-radius:4px;font-weight:700}nav button:hover,nav button.active{background:var(--ink);color:#fff}nav button span{display:inline-block;width:25px}.side-foot{margin-top:auto;font-size:10px;font-weight:700}.side-foot span{color:var(--muted);font-size:8px}main{margin-left:260px;width:calc(100% - 260px);padding:30px 40px}header{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}header h2{font:28px Archivo Black;margin-top:5px}.eyebrow{font-size:10px;letter-spacing:1.2px;color:var(--muted);font-weight:700}.page{max-width:1250px}.stack{display:grid;gap:14px}.stack-lg{display:grid;gap:20px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.grid-main{display:grid;grid-template-columns:1.4fr 1fr;gap:20px}.card{background:#fff;border:2px solid var(--line);border-radius:5px;box-shadow:4px 4px 0 var(--line);padding:20px}.hero-card{background:var(--ink);color:#fff;border:2px solid var(--ink);border-radius:5px;padding:28px;display:flex;justify-content:space-between;align-items:center;overflow:hidden}.hero-card .eyebrow{color:#cbd5e1}.big-money{font:42px Archivo Black;margin:7px 0}.hero-orb{width:90px;height:90px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;font-size:40px;transform:rotate(-20deg)}.stat span{display:block;font-size:10px;color:var(--muted);font-weight:700}.stat strong{font:23px Archivo Black;display:block;margin-top:10px}.green{color:var(--green)}.red{color:var(--red)}.blue{color:var(--blue)}.section-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px}.section-head h3{font:18px Archivo Black}.muted{font-size:11px;color:var(--muted);line-height:1.6}.text-btn,.link-btn{border:0;background:transparent;text-decoration:underline;font-weight:700;font-size:10px;color:var(--ink)}.btn{border:2px solid var(--line);padding:11px 15px;border-radius:4px;font-weight:700;background:#fff}.btn:hover{box-shadow:3px 3px 0 var(--line);transform:translate(-1px,-1px)}.btn.primary{background:var(--blue);color:#fff}.btn.success{background:var(--green);color:#102313}.btn.danger{background:var(--red);color:#fff}.btn.ghost{background:#fff}.bar-row{margin:15px 0}.bar-row>div:first-child,.flex-between{display:flex;justify-content:space-between;align-items:center;gap:10px}.bar{height:10px;background:#e2e8f0;border:2px solid var(--line);margin-top:6px;overflow:hidden}.bar i{height:100%;display:block;background:var(--blue)}.bar.big{height:13px}.bar i.redbar{background:var(--red)}.goal-list{display:grid;gap:15px}.goal-mini{display:flex;gap:12px}.goal-thumb{width:55px;height:55px;border:2px solid var(--line);display:grid;place-items:center;background:#e2e8f0;overflow:hidden;flex-shrink:0}.goal-thumb img,.goal-image img{width:100%;height:100%;object-fit:cover}.goal-thumb span{font-size:25px}.goal-mini small,.small{font-size:10px;color:var(--muted)}.grow{flex:1}.goal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.goal-card{background:#fff;border:2px solid var(--line);box-shadow:4px 4px 0 var(--line);border-radius:5px;overflow:hidden}.goal-card.done{border-color:var(--green)}.goal-image{height:190px;background:#e2e8f0;position:relative;display:grid;place-items:center;overflow:hidden}.goal-image>span{font-size:70px;color:#94a3b8}.goal-image>b{position:absolute;top:12px;right:12px;background:var(--green);padding:6px 8px;font-size:10px;border:2px solid var(--line)}.goal-body{padding:18px}.goal-body h3,.budget-card h3{font:18px Archivo Black}.goal-actions{display:flex;gap:8px;margin-top:15px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:11px}th{text-align:left;font-size:9px;border-bottom:2px solid var(--line);padding:12px 8px}td{padding:13px 8px;border-bottom:1px solid #cbd5e1}.tag{font-size:8px;border:2px solid;padding:4px 6px;font-weight:700}.tag.expense{border-color:var(--red);color:var(--red)}.tag.income{border-color:var(--green);color:var(--green)}.tag.saving{border-color:var(--blue);color:var(--blue)}.danger-link{border:0;background:transparent;color:var(--red);font-size:9px;text-decoration:underline}.budget-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.budget-card{min-height:150px}.history{max-width:850px}.history-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid #cbd5e1;padding:15px 0}.history-icon{width:38px;height:38px;background:var(--ink);color:#fff;display:grid;place-items:center}.history-row small{display:block;color:var(--muted);font-size:9px;margin-top:4px}.profile{max-width:750px}.profile h3{font:30px Archivo Black;margin:10px 0 20px}.profile-line{display:grid;grid-template-columns:130px 1fr;border-top:1px solid #cbd5e1;padding:14px 0;gap:15px}.profile-line span{font-size:10px;color:var(--muted)}code{font-size:10px;word-break:break-all}.auth-wrap,.welcome{min-height:100vh;display:grid;place-items:center;background:var(--ink);color:#fff}.auth-card{width:min(460px,calc(100% - 30px));background:#fff;color:var(--ink);padding:28px;border:2px solid #fff;box-shadow:8px 8px 0 var(--blue)}.auth-card h1{font:30px Archivo Black;margin:10px 0}.auth-card .link-btn{margin-top:20px}.notice{border:2px solid var(--red);padding:10px;color:var(--red);font-size:10px}.input{width:100%;padding:12px;border:2px solid var(--line);background:#fff;outline:0;border-radius:4px}.input:focus{box-shadow:3px 3px 0 var(--blue)}.welcome{position:fixed;inset:0;z-index:99}.welcome-logo{font:40px Archivo Black;display:flex;align-items:center;gap:12px}.welcome-logo span{font-size:.7em}.welcome-logo b{color:var(--blue)}.logo-mark{width:55px;height:55px;border:3px solid #fff;display:grid;place-items:center}.welcome p{position:absolute;margin-top:125px;color:#cbd5e1;font-size:11px}.welcome-line{position:absolute;margin-top:190px;width:150px;height:3px;background:var(--blue);transform-origin:center}.modal-bg{position:fixed;inset:0;background:#0f172acc;z-index:80;display:grid;place-items:center;padding:15px}.modal{width:min(520px,100%);max-height:90vh;overflow:auto;background:#fff;border:2px solid var(--line);box-shadow:7px 7px #000;padding:22px;border-radius:5px}.upload-box{height:180px;border:2px dashed var(--line);display:grid;place-items:center;overflow:hidden;background:#f1f5f9;cursor:pointer;text-align:center;font-size:11px}.upload-box img{width:100%;height:100%;object-fit:cover}.empty{text-align:center;color:var(--muted);font-size:11px;padding:30px}.empty-card{min-height:200px;display:grid;place-items:center}.skeleton{height:300px;background:linear-gradient(90deg,#e2e8f0,#fff,#e2e8f0);background-size:200% 100%;animation:sk 1.2s infinite}@keyframes sk{to{background-position:-200% 0}}@media(max-width:1050px){aside{width:220px}main{margin-left:220px;width:calc(100% - 220px);padding:25px}.grid-4,.goal-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){aside{display:none}main{margin:0;width:100%;padding:18px 18px 30px}header{align-items:center}.grid-main,.goal-grid,.budget-grid{grid-template-columns:1fr}.hero-card{padding:22px}.big-money{font-size:30px}.hero-orb{width:65px;height:65px;font-size:28px}.grid-4{grid-template-columns:1fr 1fr}.stat{padding:15px}.stat strong{font-size:17px}.table-wrap{padding:12px}.welcome-logo{font-size:31px}}
