:root{--clr-bg: #eef2f8;--clr-ink: #0b0e14;--clr-muted: #6b7280;--clr-primary: #0a84ff;--clr-danger: #e34b4b;--glass-bg: rgba(255,255,255,.42);--glass-border: rgba(0,0,0,.12);--glass-highlight: rgba(255,255,255,.95);--glass-shadow: rgba(0,0,0,.1);--clr-accent: #5e5ce6;--clr-success: #34c759;--clr-cyan: #32ade6;--bg-gradients: radial-gradient(900px 520px at -10% -10%, rgba(10,132,255,.18), transparent 55%), radial-gradient(700px 480px at 110% 10%, rgba(255,159,243,.16), transparent 55%), radial-gradient(900px 520px at 0% 100%, rgba(52,199,89,.12), transparent 60%), radial-gradient(1200px 800px at 50% -20%, rgba(255,255,255,.6), transparent 60%);--placeholder: color-mix(in srgb, var(--clr-ink) 40%, transparent)}[data-theme=dark]{--clr-bg: #0b0e14;--clr-ink: #e7ecf3;--clr-muted: #9aa4b2;--clr-primary: #0a84ff;--clr-danger: #ff7676;--glass-bg: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .18);--glass-highlight: rgba(255, 255, 255, .25);--glass-shadow: rgba(0, 0, 0, .4);--clr-accent: #5e5ce6;--clr-success: #30d158;--clr-cyan: #64d2ff;--bg-gradients: radial-gradient(1200px 600px at 10% -10%, rgba(79,140,255,.28), transparent 60%), radial-gradient(1000px 600px at 100% 30%, rgba(45,212,191,.22), transparent 60%);--placeholder: color-mix(in srgb, var(--clr-ink) 55%, transparent)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;color:var(--clr-ink, #0b0e14);font:14px/1.45 -apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-gradients),linear-gradient(180deg,var(--clr-bg, #f7f9fc) 0%,var(--clr-bg, #f7f9fc) 100%)}.u-bold{font-weight:700}.text--muted{color:var(--clr-muted, #5f6673)}.budget{max-width:1100px;margin:28px auto;padding:0 16px 28px}.budget__header{position:relative;padding-right:40px}.budget__header h1{margin:0;font-size:26px;font-weight:700;letter-spacing:.1px}.budget__header .text--muted{margin-top:6px}.budget__section+.budget__section{margin-top:20px}.card{border-radius:20px;padding:18px}.card--glass{background:linear-gradient(180deg,#ffffff1a,#ffffff0a),var(--glass-bg, rgba(255, 255, 255, .6));backdrop-filter:blur(28px) saturate(140%);-webkit-backdrop-filter:blur(28px) saturate(140%);box-shadow:0 4px 16px #00000040,0 1px 1px #ffffff0d inset;position:relative}.card--glass:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 1px var(--glass-border, rgba(0, 0, 0, .08)) inset;pointer-events:none}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}label span{display:block;font-size:12px;color:var(--clr-muted, #5f6673);margin-bottom:6px;font-weight:600}.input{width:100%;padding:10px 12px;border-radius:14px;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--clr-ink, #0b0e14);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);position:relative}.input:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 1px var(--glass-border) inset;pointer-events:none}.input::placeholder{color:var(--placeholder)}.input:hover{background:color-mix(in srgb,var(--glass-bg) 100%,white 10%)}.input:focus{outline:none;box-shadow:0 0 0 3px rgba(var(--clr-primary, #3d7bff),.28);background:color-mix(in srgb,var(--glass-bg) 100%,white 15%)}.input.input--num{text-align:right}.input.input--cell{padding:6px 8px;border-radius:10px}.form-add{display:flex;gap:10px;margin:10px 0 12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border:0;cursor:pointer;font-weight:700;transition:transform .06s ease,box-shadow .15s ease,background .15s ease,color .15s ease,opacity .15s ease;border-radius:14px;border:1px solid color-mix(in srgb,var(--clr-primary) 45%,var(--glass-border));color:#fff;background:linear-gradient(180deg,color-mix(in srgb,var(--clr-primary) 45%,transparent),color-mix(in srgb,var(--clr-primary) 35%,transparent)),var(--glass-bg);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:0 8px 24px var(--glass-shadow),inset 0 1px 0 var(--glass-highlight)}.button:hover{box-shadow:0 10px 28px var(--glass-shadow),inset 0 1px 0 var(--glass-highlight);background:linear-gradient(180deg,color-mix(in srgb,var(--clr-primary) 55%,transparent),color-mix(in srgb,var(--clr-primary) 45%,transparent)),var(--glass-bg)}.button:active{transform:translateY(1px);filter:saturate(110%)}.button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--clr-primary, #3d7bff),.28)}.button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.button--ghost{background:linear-gradient(180deg,#ffffff1a,#ffffff0a),var(--glass-bg, rgba(255, 255, 255, .6));backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:0 4px 16px #00000040,0 1px 1px #ffffff0d inset;position:relative;color:var(--clr-ink, #0b0e14)}.button--ghost:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 1px var(--glass-border, rgba(0, 0, 0, .08)) inset;pointer-events:none}.button--ghost:hover{filter:brightness(1.06);box-shadow:0 12px 36px #00000061}.button--ghost:disabled{opacity:.5}.button--cyan{border-color:color-mix(in srgb,var(--clr-cyan) 50%,var(--glass-border));background:linear-gradient(180deg,color-mix(in srgb,var(--clr-cyan) 48%,transparent),color-mix(in srgb,var(--clr-cyan) 38%,transparent)),var(--glass-bg)}.button--cyan:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--clr-cyan) 58%,transparent),color-mix(in srgb,var(--clr-cyan) 48%,transparent)),var(--glass-bg)}.button--success{border-color:color-mix(in srgb,var(--clr-success) 50%,var(--glass-border));background:linear-gradient(180deg,color-mix(in srgb,var(--clr-success) 48%,transparent),color-mix(in srgb,var(--clr-success) 38%,transparent)),var(--glass-bg)}.button--success:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--clr-success) 58%,transparent),color-mix(in srgb,var(--clr-success) 48%,transparent)),var(--glass-bg)}.button--danger-ghost{background:linear-gradient(180deg,#ffffff1a,#ffffff0a),var(--glass-bg, rgba(255, 255, 255, .6));backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:0 4px 16px #00000040,0 1px 1px #ffffff0d inset;position:relative;color:color-mix(in srgb,var(--clr-danger) 90%,black 15%);border-color:color-mix(in srgb,var(--clr-danger) 55%,var(--glass-border));background:linear-gradient(180deg,color-mix(in srgb,var(--clr-danger) 12%,transparent),color-mix(in srgb,var(--clr-danger) 8%,transparent)),var(--glass-bg)}.button--danger-ghost:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 1px var(--glass-border, rgba(0, 0, 0, .08)) inset;pointer-events:none}.button--danger-ghost:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--clr-danger) 18%,transparent),color-mix(in srgb,var(--clr-danger) 12%,transparent)),var(--glass-bg)}.button--danger-ghost:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--clr-danger) 35%,transparent)}.button--danger-ghost:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}[data-theme=dark] .button--danger-ghost{color:color-mix(in srgb,var(--clr-danger) 88%,white 18%);border-color:color-mix(in srgb,var(--clr-danger) 65%,var(--glass-border))}.button--sm{padding:6px 10px;font-size:12px}.chip-group{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000}.spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.6);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:1001}.toast{background:#222;color:#fff;padding:8px 12px;border-radius:6px;box-shadow:0 2px 8px #0000004d}.toast--success{background:#2b8a3e}.toast--error{background:#c92a2a}.chip{border-radius:999px;padding:6px 10px;color:var(--clr-ink, #0b0e14);background:linear-gradient(180deg,#ffffff1a,#ffffff0a),var(--glass-bg, rgba(255, 255, 255, .6));backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);box-shadow:0 4px 16px #00000040,0 1px 1px #ffffff0d inset;position:relative}.chip:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 1px var(--glass-border, rgba(0, 0, 0, .08)) inset;pointer-events:none}.data-table{background:linear-gradient(180deg,#ffffff1a,#ffffff0a),var(--glass-bg, rgba(255, 255, 255, .6));backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);box-shadow:0 4px 16px #00000040,0 1px 1px #ffffff0d inset;position:relative;border-radius:14px;overflow:hidden}.data-table:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 1px var(--glass-border, rgba(0, 0, 0, .08)) inset;pointer-events:none}.data-table__head{position:sticky;top:0;z-index:2;background:linear-gradient(0deg,#ffffff0f,#ffffff1f)}.data-table__foot{background:linear-gradient(180deg,#ffffff0a,#ffffff0f)}.data-table__row{display:grid;grid-template-columns:var(--dt-cols, 2fr 1.2fr 1.2fr 1.2fr 88px);border-bottom:1px solid var(--glass-border)}.data-table__body .data-table__row:nth-child(2n) .data-table__cell{background:color-mix(in srgb,var(--glass-bg) 100%,white 6%)}.data-table__body .data-table__row:hover .data-table__cell{background:color-mix(in srgb,var(--glass-bg) 100%,white 10%)}.data-table__row--empty .data-table__cell{color:var(--clr-muted, #5f6673);text-align:center}.data-table__cell{padding:12px}.data-table__cell--head{font-weight:700;color:var(--clr-muted, #5f6673);text-transform:uppercase;font-size:12px;letter-spacing:.6px}.data-table__cell--num,.data-table__cell--actions{text-align:right}.link{background:none;border:0;color:var(--clr-danger, #e34b4b);cursor:pointer;font-weight:600;padding:4px 8px;border-radius:10px;transition:background .15s ease,color .15s ease}.link:hover{background:color-mix(in srgb,var(--clr-danger) 12%,transparent);color:color-mix(in srgb,var(--clr-danger) 80%,white 20%)}.link:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--clr-primary, #3d7bff),.28)}@media (max-width: 820px){.data-table__row{grid-template-columns:var(--dt-cols, 1.3fr .9fr .9fr .9fr 68px)}.form-grid{grid-template-columns:1fr}}.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;font-weight:700;transition:transform .06s ease,box-shadow .15s ease,background .15s ease,color .15s ease,opacity .15s ease;width:34px;height:34px;padding:6px;border-radius:999px;color:var(--clr-ink, #0b0e14);background:color-mix(in srgb,var(--glass-bg) 80%,transparent);border:1px solid var(--glass-border);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);gap:0;line-height:0}.icon-button:hover{box-shadow:0 2px 10px var(--glass-shadow)}.theme-toggle{position:absolute;top:0;right:0}.theme-toggle svg{width:22px;height:22px;display:block}.icon-button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--clr-primary, #3d7bff),.28)}.card,.input,.button,.button--ghost,.data-table,.data-table__row,.chip{transition:background-color .16s ease,background .16s ease,color .16s ease,border-color .16s ease,box-shadow .16s ease}
