:root{--ink:#18221e;--muted:#68746d;--paper:#f7f6f0;--card:#fffefb;--line:#dce1d8;--sage:#d9e4ca;--sage-deep:#2f624f;--moss:#174334;--sand:#f2ead9;--danger:#b64536;--danger-soft:#fae4df;--success:#236548;--success-soft:#dcefe2;--shadow:0 16px 40px #1d2f2514}*{box-sizing:border-box}html{background:var(--paper);-webkit-text-size-adjust:100%}body{min-height:100dvh;color:var(--ink);background:radial-gradient(circle at 85% -10%, #d3e6cbb8, transparent 30rem), linear-gradient(145deg, #fbfaf6 0%, var(--paper) 48%, #f0f3ea 100%);margin:0;font-family:Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit;-webkit-tap-highlight-color:transparent}button{color:#fff;background:var(--moss);cursor:pointer;border:0;border-radius:10px;min-height:2.75rem;padding:.72rem 1rem;font-weight:700;transition:transform .15s,background .15s,opacity .15s;box-shadow:0 5px 12px #17433424}button:hover:not(:disabled){background:#0e3427;transform:translateY(-1px)}button:disabled{cursor:wait;opacity:.65}input,select,textarea{width:100%;min-height:2.75rem;color:var(--ink);background:#fffc;border:1px solid #cbd5ca;border-radius:9px;outline:none;padding:.66rem .72rem}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:#57906e;box-shadow:0 0 0 3px #57906e2e}button:focus-visible,.bucket-editor summary:focus-visible,.file-picker:focus-within{outline-offset:2px;outline:3px solid #57906e6b}label{color:#34443b;gap:.38rem;font-size:.84rem;font-weight:700;display:grid}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:-.035em;font-family:Georgia,Times New Roman,serif}.app-shell{width:min(1210px,100% - 2.5rem);margin:0 auto;padding:1.25rem 0 3.5rem}.app-header{justify-content:space-between;align-items:center;min-height:3.5rem;display:flex}.brand{color:var(--moss);letter-spacing:-.04em;align-items:center;gap:.62rem;font-size:1.15rem;font-weight:800;display:flex}.brand-mark{color:#f7f5e9;background:var(--moss);border-radius:.62rem;place-items:center;width:2rem;height:2rem;font-family:Georgia,Times New Roman,serif;font-size:1.25rem;font-weight:700;display:grid}.account-chip{max-width:42ch;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:.48rem;font-size:.8rem;display:flex;overflow:hidden}.account-actions{align-items:center;gap:.7rem;display:flex}.sign-out-button{min-height:2.5rem;color:var(--sage-deep);box-shadow:none;background:0 0;padding:.42rem .62rem;font-size:.72rem}.sign-out-button:hover:not(:disabled){color:var(--moss);background:var(--sage)}.status-dot{background:#55a66e;border-radius:50%;flex:none;width:.55rem;height:.55rem;display:inline-block;box-shadow:0 0 0 3px #55a66e26}.hero{grid-template-columns:minmax(0,1fr) minmax(355px,.73fr);align-items:center;gap:2.2rem;padding:4.5rem 0 3.1rem;display:grid}.hero h1{color:#173e30;max-width:11ch;margin:.35rem 0 1rem;font-size:clamp(2.8rem,6vw,5.2rem);font-weight:500;line-height:.95}.hero-copy{color:#526258;max-width:54ch;font-size:1.05rem;line-height:1.6}.eyebrow{color:var(--sage-deep);letter-spacing:.12em;text-transform:uppercase;font-size:.69rem;font-weight:800}.muted{color:var(--muted);font-weight:400}.import-card,.form-card,.summary-card,.bucket-card,.review-section,.setup-guide,.login-card{box-shadow:var(--shadow);background:#fffefbdb;border:1px solid #d0d9cdf2}.import-card{border-radius:1rem;grid-template-columns:auto 1fr auto;align-items:center;gap:.35rem .9rem;padding:1.05rem 1.2rem;display:grid;position:relative}.import-card h2{margin:.16rem 0 .22rem;font-size:1.15rem}.import-card .muted{font-size:.78rem;line-height:1.35}.import-icon{width:2.45rem;height:2.45rem;color:var(--sage-deep);background:var(--sage);border-radius:50%;place-items:center;font-size:1.45rem;font-weight:700;display:grid}.import-file-input{clip:rect(0, 0, 0, 0);opacity:0;pointer-events:none;border:0;width:1px;height:1px;min-height:1px;padding:0;position:absolute}.import-actions{grid-area:1/3/3;width:min(15rem,100%)}.import-trigger{width:100%}.source-picker,.file-selection{gap:.45rem;display:grid}.source-picker>p{color:var(--muted);font-size:.72rem;font-weight:700}.import-source{min-height:auto;color:var(--ink);box-shadow:none;text-align:left;background:#ffffffc2;border:1px solid #bdd0c2;gap:.12rem;padding:.65rem .75rem;display:grid}.import-source:hover:not(:disabled){color:var(--moss);background:#d9e4ca66;border-color:#78a287}.import-source small{color:var(--muted);font-size:.7rem;font-weight:500}.cancel-import-button,.change-file-button{min-height:2rem;color:var(--sage-deep);box-shadow:none;background:0 0;padding:.35rem .45rem;font-size:.72rem;text-decoration:underline}.cancel-import-button:hover:not(:disabled),.change-file-button:hover:not(:disabled){color:var(--moss);background:var(--sage)}.file-name{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;font-weight:600;overflow:hidden}.file-confirmation{align-items:center;gap:.35rem;display:flex}.file-confirmation>button:first-child{flex:auto}.import-card .action-message{grid-column:1/-1}.summary-grid{grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:2.6rem;display:grid}.summary-card{border-radius:.9rem;min-height:8.3rem;padding:1.2rem 1.25rem}.summary-card p,.summary-card span{color:var(--muted);font-size:.78rem}.summary-card strong{color:#203e31;letter-spacing:-.04em;margin:.4rem 0;font-family:Georgia,Times New Roman,serif;font-size:2rem;font-weight:500;display:block}.dashboard-layout{grid-template-columns:minmax(0,1fr) minmax(290px,.35fr);align-items:start;gap:1.6rem;display:grid}.bucket-area{gap:2.3rem;display:grid}.bucket-group{min-width:0}.section-heading{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:.85rem;display:flex}.section-heading.compact{align-items:center}.section-heading h2{color:#2c4235;margin-top:.25rem;font-size:1.35rem;font-weight:500}.bucket-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;display:grid}.bucket-card{border-radius:.8rem;min-height:10.2rem;padding:1.1rem 1.2rem}.bucket-card.over{background:#fff8f6;border-color:#efb8af}.bucket-card-topline{color:#7c897f;justify-content:space-between;align-items:center;gap:.75rem;font-size:.7rem;display:flex}.bucket-kind{color:var(--sage-deep);letter-spacing:.08em;text-transform:uppercase;font-size:.64rem;font-weight:800}.bucket-card h3{color:#263d30;margin:.7rem 0 .68rem;font-size:1.22rem;font-weight:500}.bucket-main-value{color:#143b2d;letter-spacing:-.045em;font-family:Georgia,Times New Roman,serif;font-size:1.8rem}.bucket-main-value span{color:#718076;font-size:1.05rem}.bucket-status{color:#65746a;margin-top:.42rem;font-size:.8rem}.bucket-editor{border-top:1px solid var(--line);margin-top:.85rem;padding-top:.65rem}.bucket-editor summary{width:fit-content;min-height:2.75rem;color:var(--sage-deep);cursor:pointer;align-items:center;font-size:.78rem;font-weight:800;display:flex}.bucket-editor[open] summary{margin-bottom:.85rem}.bucket-editor .stack{gap:.68rem}.archive-form{gap:.55rem;margin-top:.75rem;display:grid}.archive-button{color:#9a3930;box-shadow:none;text-align:left;background:0 0}.archive-button:hover:not(:disabled){color:#7f281f;background:var(--danger-soft)}.over-text{color:var(--danger);font-weight:700}.setup-area{position:sticky;top:1rem}.form-card{border-radius:.9rem;padding:1.15rem}.stack{gap:.85rem;display:grid}.form-grid{grid-template-columns:1fr 1fr;gap:.65rem;display:grid}.money-input{background:#fffc;border:1px solid #cbd5ca;border-radius:9px;align-items:center;display:flex}.money-input:focus-within{border-color:#57906e;box-shadow:0 0 0 3px #57906e2e}.money-input span{color:var(--muted);padding-left:.72rem}.money-input input{box-shadow:none;border:0}.form-hint{color:#6b796f;font-size:.78rem;line-height:1.45}.action-message{border-radius:.55rem;margin:0;padding:.62rem .7rem;font-size:.78rem;line-height:1.4}.action-message.success{color:var(--success);background:var(--success-soft)}.action-message.error{color:#8e3127;background:var(--danger-soft)}.action-message ul{margin:.45rem 0 0;padding-left:1rem}.review-section{border-radius:1rem;margin-top:2.5rem;padding:1.35rem}.count-pill{color:#fbfaf5;background:var(--moss);border-radius:50%;place-items:center;min-width:1.7rem;height:1.7rem;font-size:.75rem;font-weight:800;display:grid}.review-list{border-top:1px solid var(--line);display:grid}.review-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(200px,1.4fr) minmax(150px,1fr) minmax(135px,.85fr) minmax(110px,.7fr) auto;align-items:center;gap:.7rem;padding:.95rem 0;display:grid}.review-row select,.review-row input{padding:.52rem .58rem;font-size:.78rem}.review-row button{padding:.57rem .72rem;font-size:.76rem}.transaction-title{color:#203e31;justify-content:space-between;gap:.8rem;font-size:.87rem;display:flex}.amount{color:#394d42;white-space:nowrap}.transaction-meta p{color:#78857d;text-overflow:ellipsis;white-space:nowrap;margin-top:.28rem;font-size:.72rem;overflow:hidden}.review-error{grid-column:1/-1}.empty-state{color:#718076;background:#f9faf6b3;border:1px dashed #cbd6c7;border-radius:.72rem;margin:0;padding:1rem;font-size:.84rem}.app-footer{color:#7b867e;text-align:center;margin-top:2.8rem;font-size:.76rem}.login-shell,.setup-shell{place-items:center;min-height:100dvh;padding:2rem;display:grid}.login-card,.setup-guide{border-radius:1rem;width:min(100%,34rem);padding:2rem}.login-brand{margin-bottom:2.2rem}.login-card h1,.setup-guide h1{color:#173e30;margin:.45rem 0 .75rem;font-size:2.35rem;font-weight:500;line-height:1}.login-card>.muted{margin-bottom:1.5rem;line-height:1.5;display:block}.auth-actions{flex-wrap:wrap;gap:.6rem;display:flex}.auth-link{color:#315543;text-underline-offset:.18rem;width:fit-content;font-size:.82rem;font-weight:700;text-decoration:underline}.auth-alternate{color:var(--muted);margin:0;font-size:.84rem}.auth-alternate a{color:#315543;text-underline-offset:.18rem;font-weight:700;text-decoration:underline}.button-secondary{color:#315543;box-shadow:none;background:#e6ede1}.button-secondary:hover:not(:disabled){background:#d8e5d3}.setup-guide{width:min(100%,42rem);line-height:1.58}.setup-guide .brand{margin-bottom:2rem}.setup-guide>p:not(.eyebrow):not(.setup-note){color:#536158}.setup-guide ol{color:#46574c;gap:.58rem;margin:1.2rem 0;padding-left:1.25rem;display:grid}.setup-guide code,.setup-guide pre{overflow-wrap:anywhere;color:#264c3b;background:#edf2e8;border-radius:.35rem;padding:.1rem .28rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.84em}.setup-guide pre{color:#81342a;background:var(--danger-soft);white-space:pre-wrap;margin:1rem 0 0;padding:.75rem}.setup-note{color:var(--sage-deep);font-size:.85rem;font-weight:700}.offline-shell{place-items:center;min-height:100dvh;padding:1.5rem;display:grid}.offline-card{width:min(100%,28rem);box-shadow:var(--shadow);background:#fffefbeb;border:1px solid #d0d9cdf2;border-radius:1rem;padding:1.6rem}.offline-card .brand{margin-bottom:2rem}.offline-card h1{color:#173e30;margin:.45rem 0 .8rem;font-size:2rem;font-weight:500;line-height:1.04}.offline-card p:not(.eyebrow){color:#536158;line-height:1.55}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:900px){.hero,.dashboard-layout{grid-template-columns:1fr}.hero{gap:1.5rem;padding-top:3.2rem}.setup-area{position:static}.review-row{grid-template-columns:minmax(180px,1fr) 1fr 1fr auto}.transaction-meta{grid-column:1/-1}}@media (max-width:620px){.app-shell{width:min(100% - 1.3rem,1210px)}.app-header{align-items:flex-start}.account-chip{max-width:16ch}.hero{gap:1.25rem;padding:1.75rem 0 1.5rem}.hero h1{font-size:2.65rem}.hero-copy{display:none}.import-card{grid-template-columns:auto 1fr}.import-actions{grid-area:auto/1/auto/-1;width:100%}.source-picker,.file-selection{max-width:23rem}.summary-grid,.bucket-grid,.form-grid{grid-template-columns:1fr}.review-section{padding:1rem}.review-row{grid-template-columns:1fr;gap:.55rem}.transaction-meta{grid-column:auto}.review-row button{width:100%}.review-row select,.review-row input{font-size:1rem}.login-shell,.setup-shell{padding:1rem}.login-card,.setup-guide{padding:1.35rem}}@media (max-width:420px){.app-header{flex-wrap:wrap;gap:.6rem}.account-actions{justify-content:space-between;width:100%}.account-chip{max-width:calc(100% - 5rem)}}@media (display-mode:standalone){.app-shell{padding-top:calc(1.25rem + env(safe-area-inset-top));padding-bottom:calc(3.5rem + env(safe-area-inset-bottom))}.login-shell,.setup-shell,.offline-shell{padding-top:max(1rem, env(safe-area-inset-top));padding-right:max(1rem, env(safe-area-inset-right));padding-bottom:max(1rem, env(safe-area-inset-bottom));padding-left:max(1rem, env(safe-area-inset-left))}}
