input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=tel],input[type=url],input[type=date],input[type=time],select,textarea{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text-primary);font-size:var(--fs-body);box-sizing:border-box;outline:none;width:100%;padding:.5rem;font-family:inherit;transition:border-color .15s,box-shadow .15s,background .15s}.input{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text-primary);font-size:var(--fs-body);box-sizing:border-box;outline:none;width:100%;padding:.5rem .75rem;font-family:inherit;transition:border-color .15s,box-shadow .15s,background .15s}input::placeholder,textarea::placeholder,.input::placeholder{color:var(--color-text-muted)}input[type=text]:hover,input[type=email]:hover,input[type=password]:hover,input[type=number]:hover,input[type=search]:hover,input[type=tel]:hover,input[type=url]:hover,input[type=date]:hover,input[type=time]:hover,select:hover,textarea:hover,.input:hover{border-color:var(--color-text-muted)}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=number]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=url]:focus,input[type=date]:focus,input[type=time]:focus,select:focus,textarea:focus,.input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring)}input:disabled,select:disabled,textarea:disabled,.input:disabled{opacity:.6;cursor:not-allowed;background:var(--color-bg)}input[readonly],textarea[readonly]{background:var(--input-readonly-bg)}
header{z-index:100;background:var(--color-header-bg);color:var(--color-header-text);font-size:var(--fs-h2);font-weight:var(--fw-bold);box-shadow:var(--shadow-md);height:var(--header-height);justify-content:space-between;align-items:center;padding:0 .5rem;display:flex;position:sticky;top:0}.app-header-logo-drawer__container{align-items:flex-end;gap:10px;display:flex}.logged-user{cursor:pointer;flex-direction:row;align-items:center;gap:.75rem;display:flex;position:relative}@media (min-width:767px){.drawer-toggle1{display:none}}.app-header__logo{background-image:url(/logo-mobile.png);background-position:50%;background-repeat:no-repeat;background-size:cover;width:3rem;height:3rem}@media (min-width:767px){.app-header__logo{background-image:url(/logo.png);width:13.125rem;height:3.125rem}}
button{background:var(--color-primary);border-radius:var(--border-radius);font-weight:var(--fw-bold);cursor:pointer;color:var(--color-on-primary);border:none;justify-content:center;align-items:center;gap:.5rem;padding:10px 18px;transition:background .2s;display:flex}button:hover{background:var(--color-primary-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.danger{background:var(--color-danger);border:1px solid var(--color-button-danger-border)}button.danger:hover{background:var(--color-button-danger-hover)}button.danger:active{box-shadow:var(--shadow-sm);transform:translateY(0)}button.danger:disabled{opacity:.5;pointer-events:none}button.secondary{border:1px solid var(--color-border);color:var(--color-text-secondary);background:0 0}button.secondary:hover{background:var(--color-primary-light);border-color:var(--color-primary-hover);color:var(--color-primary-hover)}button.secondary:disabled{opacity:.5;cursor:not-allowed}button.tertiary{color:var(--color-primary);background:0 0;border:none;padding:0}button.tertiary:hover{text-decoration:underline}
.login-page{background-image:url(/login-bg.png);background-position:50%;background-repeat:no-repeat;background-size:cover;justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative}.login-overlay{background:var(--login-overlay);position:absolute;inset:0}.login-card{z-index:1;border-radius:var(--border-radius);background:var(--login-card-bg);width:100%;max-width:380px;box-shadow:var(--login-card-shadow);color:var(--color-on-login-card);padding:28px 24px;position:relative}.login-title{text-align:center;font-size:var(--fs-h1);margin-bottom:20px}.login-form{flex-direction:column;gap:14px;display:flex}
.modal-overlay{background:var(--overlay-backdrop);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);border-radius:var(--border-radius);min-width:50%;color:var(--color-text-primary);padding:1.75rem;animation:.18s ease-out modalFadeIn}.modal-title{font-size:var(--fs-h2);font-weight:var(--fw-bold);color:var(--color-text-primary);margin:0 0 .75rem}.modal-content{max-height:500px;overflow:hidden auto}.modal-text{font-size:var(--fs-body);color:var(--color-text-secondary);margin:0 0 1.5rem}.modal-footer{justify-content:flex-end;gap:.75rem;margin-top:.75rem;display:flex}@keyframes modalFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--fs-sm);cursor:pointer;border-radius:999px;width:max-content;padding:.25rem .7rem;transition:background .15s,color .15s,border-color .15s}.chip:hover{background:var(--color-bg-secondary)}.chip-active{border-color:var(--color-primary);background:var(--color-primary-light);color:var(--color-primary)}
.form{flex-direction:column;gap:10px;margin-top:10px;display:flex}.form-field{flex-direction:column;gap:2px;width:100%;display:flex}.form-row{flex-wrap:wrap;align-items:stretch;gap:5px;display:flex}@media (min-width:767px){.form-row{flex-wrap:unset;align-items:flex-end;gap:5px;display:flex}}.form-fieldset{gap:.5rem;width:100%;display:flex}@media (min-width:767px){.form-fieldset{gap:.5rem;width:30%;display:flex}}.form-error{color:var(--color-danger);font-size:var(--fs-body)}
.tag{border-radius:var(--border-radius);font-size:var(--fs-sm);font-weight:var(--fw-bold);white-space:nowrap;-webkit-user-select:none;user-select:none;background:var(--color-primary-light);border:1px solid var(--color-primary);color:var(--color-primary);padding:.15rem .25rem;display:inline-block}
.loading-page{height:calc(100dvh - var(--header-height) - 1rem);justify-content:center;align-items:center;display:flex}.loader-dot{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
:root{--color-bg:#f5f7fa;--color-bg-secondary:#eaecef;--color-surface:#fff;--color-border:#d6dade;--color-text-primary:#1c1f23;--color-text-secondary:#4b5563;--color-text-muted:#9ca3af;--color-text-positive-value:#047857;--color-primary:#3a7afe;--color-primary-hover:#2e63d1;--color-primary-light:#e4edff;--color-success:#22c55e;--color-success-soft:#22c55e1f;--color-warning:#facc15;--color-danger:#ef4444;--color-danger-soft:#ef44441f;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px #00000012;--shadow-lg:0 10px 15px #0000001a;--color-header-bg:#fff;--color-header-text:#1c1f23;--color-button-danger-bg:var(--color-danger);--color-button-danger-hover:#dc2626;--color-button-danger-text:#fff;--color-button-danger-border:#b91c1c;--border-radius:8px;--fs-h1:1.4rem;--fs-h2:1.25rem;--fs-h3:1.1rem;--fs-body:.95rem;--fs-sm:.85rem;--fs-xs:.75rem;--fw-regular:400;--fw-medium:500;--fw-bold:600;--fw-heavy:800;--lh-tight:1.2;--lh-base:1.45;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--surface-1:var(--color-surface);--surface-2:var(--color-bg-secondary);--border-1:var(--color-border);--header-height:3.5rem;--focus-ring:0 0 0 3px color-mix(in srgb,var(--color-primary)25%,transparent);--overlay-backdrop:#0000008c;--drawer-backdrop:#00000040;--input-readonly-bg:var(--color-bg-secondary);--login-overlay:#0a0f198c;--login-card-bg:#141923d9;--login-card-shadow:0 10px 40px #0006;--chart-tick:var(--color-text-secondary);--chart-grid:color-mix(in srgb,var(--color-text-muted)18%,transparent);--chart-legend:var(--color-text-primary);--chart-income:var(--color-success);--chart-outcome:var(--color-danger);--color-on-primary:#fff;--color-on-login-card:#fff;--heat-0:#fff;--heat-1:#ecfeff;--heat-2:#e0f2fe;--heat-3:#fef3c7;--heat-4:#fed7aa;--heat-5:#f97316;--heat-6:#991b1b}:root[data-theme=dark]{--color-bg:#0b1220;--color-bg-secondary:#111a2e;--color-surface:#0f172a;--color-border:#1f2a44;--color-text-primary:#e5e7eb;--color-text-secondary:#a1a1aa;--color-text-muted:#6b7280;--color-header-bg:#0f172a;--color-header-text:#e5e7eb;--color-text-positive-value:#34d399;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 6px 10px #00000059;--color-primary:#60a5fa;--color-primary-hover:#3b82f6;--color-primary-light:#60a5fa2e;--color-success:#22c55e;--color-warning:#fbbf24;--color-danger:#f87171;--overlay-backdrop:#000000a6;--drawer-backdrop:#00000073;--input-readonly-bg:color-mix(in srgb,var(--color-surface)85%,black);--login-overlay:#0000008c;--login-card-bg:#0f172ae0;--login-card-shadow:0 10px 40px #0000008c;--color-on-primary:#0b1220;--color-on-login-card:#e5e7eb;--heat-0:var(--color-surface);--heat-1:color-mix(in srgb,#22d3ee 18%,var(--color-surface));--heat-2:color-mix(in srgb,#60a5fa 22%,var(--color-surface));--heat-3:color-mix(in srgb,#facc15 22%,var(--color-surface));--heat-4:color-mix(in srgb,#fb923c 28%,var(--color-surface));--heat-5:#fb7185;--heat-6:#ef4444}html,body{height:100dvh;overflow:hidden}body{background:var(--color-bg);width:100%;min-height:100vh;font-size:var(--fs-body);color:var(--color-text-primary);margin:0;overflow:hidden auto}h1,h2,h3,h4,h5,p{margin:0}h1{font-size:var(--fs-h1);line-height:var(--lh-tight);font-weight:var(--fw-bold)}h2{font-size:var(--fs-h2);line-height:var(--lh-tight);font-weight:var(--fw-bold)}h3{font-size:var(--fs-h3);line-height:var(--lh-tight);font-weight:var(--fw-medium)}.container{padding:10px}.app-shell{height:calc(100dvh - var(--header-height));display:flex;overflow:hidden}.app-content{height:calc(100dvh - var(--header-height) - 1rem);background:var(--color-bg);flex:1;min-width:0;padding:.5rem;overflow:auto}@media (min-width:767px){:root{--fs-h1:1.75rem;--fs-h2:1.5rem;--fs-h3:1.25rem;--fs-body:1rem;--fs-sm:.875rem}body,.app-content{overflow:hidden}}
