:root{--bg:#f7f7f0;--ink:#243a31;--dim:#78867e;--card:#fffefa;--line:#e5eae2;--green:#2f7956;--light:#e8f4ea;--gold:#d9b063;--rose:#b86658;--shadow:0 8px 32px rgba(46,74,50,.055)}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--ink);font:15px/1.5 system-ui,-apple-system,'Segoe UI',sans-serif}button,input,select{font:inherit}button{cursor:pointer;border:0}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:2px}.container{max-width:1100px;margin:auto;padding:22px 26px 55px}header{display:flex;justify-content:space-between;align-items:center;padding:2px 0 36px}.brand{display:flex;align-items:center;gap:12px}.mark{font-size:29px;background:var(--green);color:#fff8d7;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;transform:rotate(-7deg)}.brand-title{font-size:22px;font-weight:800;line-height:1;letter-spacing:-1px}.brand-title small{display:block;font-size:9px;font-weight:800;letter-spacing:1.6px;color:var(--dim);margin-top:6px}.small{font-size:12px}.tiny{font-size:11px}.muted{color:var(--dim)}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.6px;color:var(--green)}h1{font:400 clamp(30px,5vw,44px)/1.16 Georgia,serif;letter-spacing:-1.1px;margin:9px 0}h2{font:400 23px/1.2 Georgia,serif;margin:0}.welcome{display:flex;justify-content:space-between;align-items:start;gap:14px;margin-bottom:22px}.welcome p{color:var(--dim);margin:10px 0 0}.panel{border:1px solid var(--line);background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:24px}.auth{width:min(450px,100%);margin:4vh auto 6vh;padding:34px}.auth-icon{color:var(--green);font-size:40px}.auth p{color:var(--dim)}.auth form{margin-top:24px;display:grid;gap:10px}.auth label{font-size:12px;font-weight:700}.auth input[type=password]{height:46px;border:1px solid var(--line);border-radius:11px;padding:10px 14px;background:white;width:100%}.check{display:flex;align-items:center;gap:8px;color:var(--dim);font-weight:500!important;margin:6px 0 8px}.primary{background:var(--green);border-radius:12px;padding:13px 15px;color:white;font-weight:750;display:flex;justify-content:space-between}.error{color:#b0473e!important;font-size:13px;min-height:0}.quiet{border:1px solid var(--line);background:var(--card);color:var(--green);padding:10px 14px;border-radius:12px;font-weight:700}.text-btn{color:var(--dim);background:transparent;margin-left:auto;font-size:12px}.status{display:flex;align-items:center;gap:9px;margin:0 0 18px;padding:10px 13px;border-radius:10px;background:#eef5ec;color:var(--green);font-size:12px;font-weight:650}.statusdot{height:8px;width:8px;border-radius:50%;background:#48a979}.period{display:flex;gap:8px;margin-bottom:19px}.period button{background:transparent;border:1px solid var(--line);border-radius:30px;padding:8px 14px;color:var(--dim);font-size:12px;font-weight:650}.period button.active{background:var(--ink);color:white;border-color:var(--ink)}.kpis{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:16px}.kpis .panel{min-height:194px}.hero{background:linear-gradient(135deg,#edf5e9,#fafaf1)}.amount{font-size:clamp(30px,4vw,41px);font-weight:780;letter-spacing:-1.8px;margin:13px 0 3px;line-height:1.1}.metric p{font-size:12px;color:var(--dim);margin:15px 0 0}.progress{height:8px;border-radius:8px;background:#dbe9dc;margin:19px 0 9px;overflow:hidden}.progress div{height:100%;border-radius:8px;background:var(--green);width:0%;transition:width .25s}.row{display:flex;justify-content:space-between;color:var(--dim);gap:6px}.columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:17px}.panel-head p{margin:5px 0 0}.catline{display:flex;justify-content:space-between;gap:8px;margin-top:12px;font-size:13px}.meter{height:7px;border-radius:9px;background:#f0f1e8;overflow:hidden;margin:5px 0 0}.meter div{height:100%;background:#7cab8a;border-radius:8px}.day{display:flex;align-items:center;gap:12px;margin:10px 0;font-size:12px}.day .daylabel{width:68px;color:var(--dim)}.day .track{height:9px;background:#f0f1e8;flex:1;border-radius:9px;overflow:hidden}.day .track div{background:#cda96e;height:100%;border-radius:8px}.day .daymoney{min-width:74px;text-align:right;font-weight:680}.txn-panel{margin-top:16px}.pill{font-size:12px;color:var(--green);background:var(--light);padding:4px 10px;border-radius:20px}.txn{display:grid;grid-template-columns:1fr auto;gap:12px;border-top:1px solid var(--line);padding:15px 0}.txnfirst{display:flex;gap:10px;align-items:center}.bubble{width:35px;height:35px;border-radius:12px;background:var(--light);color:var(--green);display:grid;place-items:center;font-weight:700;flex:none}.merchant{font-weight:730;font-size:14px;word-break:break-word}.txnmeta{font-size:11px;color:var(--dim)}.txn-right{text-align:right}.txn-amount{font-size:17px;font-weight:790;white-space:nowrap}.txn-edit{margin-top:7px;display:flex;gap:6px;align-items:center;justify-content:flex-end}.txn-edit select{border:1px solid var(--line);border-radius:7px;padding:6px 5px;background:#fff;color:var(--ink);font-size:11px;max-width:125px}.exclusion{font-size:11px;color:var(--dim);white-space:nowrap;display:flex;gap:4px;align-items:center}.exclusion input{accent-color:var(--green)}.disclaimer{font-size:11px;color:var(--dim);padding:20px 2px;line-height:1.65}footer{display:flex;justify-content:space-between;color:var(--dim);font-size:11px;border-top:1px solid var(--line);padding-top:18px;gap:10px}.empty{padding:18px 0;color:var(--dim);font-size:13px}@media(max-width:750px){.container{padding:18px 15px 45px}header{padding-bottom:23px}header>.small{font-size:9px}.welcome{display:block}.welcome .quiet{margin-top:17px}.kpis{grid-template-columns:1fr 1fr;gap:10px}.kpis .hero{grid-column:span 2}.panel{padding:17px;border-radius:17px}.kpis .panel{min-height:135px}.kpis .hero{min-height:200px}.amount{font-size:32px}.columns{grid-template-columns:1fr;gap:10px;margin-top:10px}.txn-panel{margin-top:10px}.txn{gap:8px}.txn-edit{flex-direction:column;align-items:end}.exclusion{align-self:end}.auth{margin:3vh auto 7vh;padding:25px}footer{flex-direction:column}.status{flex-wrap:wrap}}

/* Garden update: progress from cloud classifications, never from browser-only edits. */
.garden-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;margin:0 0 16px}
.garden{background:linear-gradient(135deg,#e7f4e4,#faf8e8 74%);position:relative;overflow:hidden;min-height:245px}
.garden-top{display:flex;justify-content:space-between;gap:12px;align-items:start;position:relative;z-index:1}
.garden .eyebrow{letter-spacing:1.25px}
.garden-title{font:400 30px/1.1 Georgia,serif;margin:8px 0}
.garden-description{font-size:12px;color:#66796b;max-width:340px;margin:0}
.garden-bottom{position:relative;z-index:2;margin-top:26px}
.level-line{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;gap:12px}
.xp-meter{height:10px;background:#cddfc8;border-radius:20px;overflow:hidden;margin:10px 0 7px}
.xp-fill{height:100%;background:linear-gradient(90deg,#57966b,#d6b56b);width:0;transition:width .4s}
.plant-scene{width:120px;height:170px;flex:none;position:relative;margin-top:0;filter:drop-shadow(0 6px 5px rgba(45,80,47,.13))}
.plant-scene .pot{position:absolute;bottom:10px;left:42px;width:50px;height:38px;border-radius:4px 4px 15px 15px;background:#c28b67;transform:perspective(50px) rotateX(-8deg)}
.plant-scene .soil{position:absolute;bottom:45px;left:40px;width:54px;height:9px;background:#946343;border-radius:100%}
.plant-scene .stem{position:absolute;bottom:48px;left:65px;width:5px;height:72px;background:#40815c;border-radius:15px;transform:rotate(5deg);transform-origin:bottom}
.plant-scene .leaf{position:absolute;background:#549871;width:38px;height:19px;border-radius:100% 6% 100% 7%;bottom:76px;left:31px;transform:rotate(24deg)}
.plant-scene .leaf.right{bottom:100px;left:65px;transform:rotate(155deg);width:41px}
.plant-scene .bloom{position:absolute;bottom:121px;left:48px;width:43px;height:43px;border-radius:50%;background:#e1b66a;border:10px solid #f1d69c;box-shadow:0 0 0 5px rgba(247,242,205,.8);transform:scale(.25);opacity:.25;transition:transform .4s,opacity .4s}
.plant-scene[data-stage="0"] .leaf,.plant-scene[data-stage="0"] .leaf.right,.plant-scene[data-stage="0"] .stem{transform:scale(.5);transform-origin:bottom}
.plant-scene[data-stage="1"] .bloom{transform:scale(.45);opacity:.28}
.plant-scene[data-stage="2"] .bloom{transform:scale(.75);opacity:.65}
.plant-scene[data-stage="3"] .bloom,.plant-scene[data-stage="4"] .bloom{transform:scale(1);opacity:1}
.quests{min-height:245px;display:flex;flex-direction:column;gap:8px}
.quest-caption{font-size:12px;color:var(--dim);margin:2px 0 4px}
.quest-head{display:flex;justify-content:space-between;align-items:center;gap:9px}
.quest-number{font-size:13px;color:var(--green);font-weight:800}
.quest-count{font-size:24px;font-weight:780;letter-spacing:-1px;margin:0}
.quest-progress{height:8px;border-radius:20px;background:#edf0e7;overflow:hidden}
.quest-progress>div{height:100%;background:#7faf83;width:0;transition:width .3s}
.quest-footer{font-size:11px;color:var(--dim);margin-top:7px}
.achievements{margin-top:auto;display:flex;flex-wrap:wrap;gap:6px}
.achievement{border:1px solid #d5e3cf;border-radius:22px;padding:5px 8px;font-size:10px;background:#f6fbf3;color:#356348;font-weight:700}
.achievement.locked{background:#f7f7f3;border-color:#e9eae2;color:#a5ada6}
.notice-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}
.notify-button{border:1px solid #d5e7d5;background:#fffefa;border-radius:12px;padding:10px 13px;color:var(--ink);font-size:12px;font-weight:700;white-space:nowrap}
.notify-button span{color:#b56549;background:#fbefe4;border-radius:12px;padding:2px 6px;margin-left:5px}
.notice-panel{margin-bottom:16px;padding:18px 20px}
.notice-panel h2{font-size:19px}
.notice-list{display:grid;gap:9px;margin-top:12px}
.notice{border-left:3px solid #d6b56b;padding:8px 11px;background:#fbfaf5;border-radius:4px 9px 9px 4px}
.notice.urgent{border-color:#d68b76;background:#fff7f3}
.notice strong{font-size:12px}
.notice p{font-size:11px;color:var(--dim);margin:3px 0 0}
.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(30px);background:#264438;color:#fff;border-radius:12px;padding:11px 15px;box-shadow:0 12px 35px #203b2b44;z-index:10;opacity:0;pointer-events:none;transition:.2s;min-width:190px;max-width:90vw;text-align:center;font-size:12px}
.toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}
.flow-note{font-size:11px;color:var(--dim)}
@media(max-width:750px){.garden-grid{grid-template-columns:1fr;gap:10px}.garden{min-height:230px}.garden-title{font-size:26px}.plant-scene{width:95px;transform:scale(.87);transform-origin:top right}.quests{min-height:200px}.notice-bar{flex-wrap:wrap}.notice-panel{padding:15px}.notify-button{padding:9px 12px}}


/* Finance-first hierarchy: current money picture before gamification. */
.overview-grid{display:grid;grid-template-columns:1.32fr 1fr 1.1fr;gap:14px;margin:0 0 12px}
.overview-grid .panel{padding:23px 24px;min-height:185px}
.overview-primary{background:linear-gradient(140deg,#e8f3e9,#fbf9ed 94%);border-color:#d5e4d4}
.overview-secondary{background:#fffefa}
.overview-today{background:#fffefa}
.overview-amount{font-size:clamp(32px,4vw,46px);font-weight:790;letter-spacing:-1.75px;line-height:1.1;margin:14px 0 6px}
.overview-subline{font-size:12px;font-weight:650;color:#526c5d}
.overview-small{font-size:11px;color:var(--dim);margin:12px 0 0;line-height:1.5}
.overview-today-value{margin-top:14px;display:flex;align-items:baseline;gap:5px;flex-wrap:wrap}
.overview-today-value strong{font-size:clamp(30px,3.5vw,39px);line-height:1.1;letter-spacing:-1.6px}
.overview-today-value span{font-size:16px;color:var(--dim)}
.overview-track{height:10px;background:#e8ede3;border-radius:20px;overflow:visible;margin:16px 0 8px;position:relative}
.overview-track>div{height:100%;border-radius:20px;background:linear-gradient(90deg,#58986b,#b7c98b);width:0%;transition:width .3s}
.overview-today-bottom{display:flex;justify-content:space-between;gap:10px;color:#4f6d5c;font-size:12px;font-weight:700}
.week-overview{margin-bottom:18px;padding:19px 24px;background:#fdfdf8}
.week-overview-heading{display:flex;align-items:end;justify-content:space-between;gap:12px}
.week-overview h2{font-size:21px;margin:5px 0 0}
.week-overview-total{white-space:nowrap}.week-overview-total strong{font-size:25px;letter-spacing:-1px}.week-overview-total span{font-size:13px;color:var(--dim)}
.week-overview .overview-track{margin:12px 0 8px}
.week-elapsed{position:absolute;top:-5px;height:20px;width:2px;background:#b28344;transform:translateX(-2px);box-shadow:0 0 0 2px #fdfdf8}
.week-overview .overview-small{margin:0}
.account-preview{margin-top:16px}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.account-tile{border:1px dashed #d8e3d8;border-radius:14px;padding:18px;background:#fbfcf9}
.account-unavailable{font-size:20px;font-weight:760;margin-top:10px}.account-tile p{margin:6px 0 0}
@media(max-width:850px){.overview-grid{grid-template-columns:1fr 1fr}.overview-primary{grid-column:span 2}.overview-today{grid-column:span 1}.overview-grid .panel{min-height:145px}}
@media(max-width:600px){.overview-grid{grid-template-columns:1fr 1fr;gap:10px}.overview-primary{grid-column:span 2}.overview-grid .panel{padding:17px;min-height:134px}.overview-grid .overview-primary{min-height:150px}.overview-amount{font-size:31px;margin-top:10px}.overview-today-value{margin-top:13px}.overview-today-value strong{font-size:27px}.overview-today-value span{font-size:12px}.overview-small{font-size:10px;margin-top:9px}.overview-subline{font-size:11px}.week-overview{padding:17px;margin-bottom:13px}.week-overview h2{font-size:18px}.week-overview-total strong{font-size:21px}.account-grid{grid-template-columns:1fr}.account-preview{margin-top:10px}.period{overflow-x:auto;white-space:nowrap;padding-bottom:4px}.period button{flex-shrink:0}}

