:root{--background:#f6f7f3;--surface:#fff;--text:#20251f;--muted:#667064;--border:#dce1d9;--brand:#28613f;--brand-hover:#1f4d32;--radius:16px}*{box-sizing:border-box}html{background:var(--background)}body{min-height:100vh;color:var(--text);background:var(--background);margin:0;font-family:Arial,Helvetica,sans-serif}.user-strip{max-width:760px;color:var(--muted);justify-content:flex-end;align-items:center;gap:12px;margin:8px auto 0;padding:0 20px;font-size:.9rem;display:flex}.user-strip button{color:var(--brand);font:inherit;cursor:pointer;background:0 0;border:0;font-weight:700}.mobile-nav{z-index:10;padding:10px max(10px, env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fffffff5;justify-content:space-around;gap:4px;display:flex;position:sticky;bottom:0}.mobile-nav a{color:var(--brand);padding:10px 4px;font-size:.82rem;font-weight:700;text-decoration:none}.offline-banner{color:#684f00;text-align:center;background:#fff3cd;padding:10px 16px;font-weight:700}.login-shell{max-width:440px;padding-top:12vh}.login-form{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);gap:18px;padding:22px;display:grid}@media (min-width:720px){.mobile-nav{background:0 0;border:0;max-width:760px;margin:0 auto;position:static}.mobile-nav a{font-size:.95rem}}button,input,select,textarea{font:inherit}a{color:inherit}.shell{width:min(100%,720px);margin:0 auto;padding:32px 20px 48px}.header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:36px;display:flex}.header a{color:var(--brand);text-underline-offset:4px;font-size:.95rem;font-weight:700}h1{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,9vw,3rem);line-height:1.05}.intro{max-width:38rem;color:var(--muted);margin:14px 0 32px;line-height:1.6}.transaction-form{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);gap:20px;padding:20px;display:grid;box-shadow:0 12px 36px #20251f0f}.settings-form{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);gap:18px;padding:20px;display:grid}.settings-grid{gap:14px;display:grid}.settings-card{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:6px;padding:20px;text-decoration:none;display:grid}.settings-card:hover{border-color:var(--brand)}.settings-card span,.registry-card p{color:var(--muted);margin:0;font-size:.9rem;line-height:1.5}.registry-list{gap:12px;margin:24px 0 0;padding:0;list-style:none;display:grid}.registry-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.registry-card-inactive{opacity:.65}.secondary-button{min-height:42px;color:var(--brand);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:10px;padding:9px 12px;font-weight:700}.settings-section{gap:16px;margin-top:28px;display:grid}.settings-section h2{margin:0;font-size:1.35rem}.inline-form{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:12px;padding:16px;display:grid}.taxonomy-card{flex-direction:column;align-items:stretch}.taxonomy-name-field{flex:1}.button-row{flex-wrap:wrap;gap:8px;display:flex}.month-navigation,.budget-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.month-navigation{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:16px}.month-navigation a,.budget-actions a{color:var(--brand);font-weight:700}.budget-actions{flex-direction:column;align-items:stretch;margin:12px 0 24px}.budget-list{gap:14px;display:grid}.budget-list h2,.budget-card h3{margin:0}.budget-card{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:16px;padding:18px;display:grid}.budget-values{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;display:grid}.budget-values dt{color:var(--muted);text-transform:uppercase;font-size:.75rem;font-weight:700}.budget-values dd{margin:4px 0 0;font-weight:700}.budget-status-line{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.budget-usage,.budget-status{color:var(--muted);margin:0;font-size:.9rem}.budget-status{text-align:right;font-weight:700}.budget-progress{background:#e8e4dc;border-radius:999px;width:100%;height:12px;overflow:hidden}.budget-progress-fill{border-radius:inherit;height:100%;display:block}.budget-progress-fill-normal{background:#39845a}.budget-progress-fill-attention{background:#c59a18}.budget-progress-fill-warning{background:#d66d20}.budget-progress-fill-exceeded{background:#b63d3d}.budget-card-exceeded{border-color:#d9a3a3}.budget-card-exceeded .budget-status{color:#9c2929}.budget-card-warning .budget-status{color:#a34f12}.budget-card-attention .budget-status{color:#80600c}.budget-card-normal .budget-status{color:#286c47}.budget-edit{border-top:1px solid var(--border);gap:8px;padding-top:14px;display:grid}.budget-edit label{font-size:.9rem;font-weight:700}.danger-button{color:#8b2f2f}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.form-grid{gap:20px;display:grid}.form-field{gap:8px;display:grid}.form-field label{font-size:.95rem;font-weight:700}.optional-label{color:var(--muted);font-size:.78rem;font-weight:400}.form-field>input,.form-field>select,.form-field>textarea,.currency-input{width:100%;min-height:48px;color:var(--text);border:1px solid var(--border);background:#fbfcfa;border-radius:10px;padding:12px 14px;line-height:1.5}.form-field>textarea{resize:vertical;min-height:96px}.form-field>input[aria-invalid=true]{border-color:#b73c3c}.currency-input:has(input[aria-invalid=true]){border-color:#b73c3c}.currency-input{align-items:center;gap:8px;display:flex}.currency-input span{color:var(--muted);font-weight:700}.currency-input input{width:100%;min-width:0;color:var(--text);background:0 0;border:0;outline:0;padding:0}.form-field>input:focus-visible,.form-field>select:focus-visible,.form-field>textarea:focus-visible,.currency-input:focus-within,.primary-button:focus-visible,.header a:focus-visible{outline-offset:2px;outline:3px solid #28613f47}.field-error{color:#a12f2f;font-size:.83rem;line-height:1.35}.field-hint{color:var(--muted);font-size:.82rem}.primary-button{color:#fff;background:var(--brand);cursor:pointer;border:0;border-radius:12px;min-height:52px;padding:13px 20px;font-size:1rem;font-weight:700}.primary-button:hover{background:var(--brand-hover)}.primary-button:disabled{cursor:not-allowed;opacity:.55}.feedback{border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0;padding:14px;font-size:.92rem;line-height:1.5;display:flex}.feedback a{text-underline-offset:3px;font-weight:700}.feedback-success{color:#215a38;background:#eef8f1;border:1px solid #bcd8c5}.feedback-error{color:#8b2f2f;background:#fff8f8;border:1px solid #efcece}.transaction-list{gap:14px;margin:24px 0 0;padding:0;list-style:none;display:grid}.transaction-card,.empty-state,.error-state{border:1px solid var(--border);background:var(--surface);border-radius:14px;padding:18px}.transaction-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.transaction-description,.transaction-amount{margin:0;font-weight:700}.transaction-description{font-size:1.05rem}.transaction-amount{white-space:nowrap;color:var(--brand);font-size:1.05rem}.transaction-date,.transaction-merchant{color:var(--muted);font-size:.9rem}.transaction-date{margin:0 0 12px}.transaction-merchant{margin:5px 0 0}.transaction-details{border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;margin:18px 0 0;padding-top:16px;display:grid}.transaction-details div{min-width:0}.transaction-details dt{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px;font-size:.75rem;font-weight:700}.transaction-details dd{overflow-wrap:anywhere;margin:0;font-size:.9rem}.status-badge{color:var(--brand);background:#e9f2ec;border-radius:999px;margin-top:12px;padding:4px 8px;font-size:.75rem;font-weight:700;display:inline-block}.empty-state,.error-state{color:var(--muted);margin-top:24px;line-height:1.5}.error-state{color:#8b2f2f;background:#fff8f8;border-color:#efcece}@media (min-width:640px){.shell{padding-top:56px}.transaction-form{padding:28px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-form{grid-template-columns:1fr auto;align-items:end}.taxonomy-card,.budget-actions{flex-direction:row;align-items:center}}
