@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=Space+Grotesk:wght@500;600;700&display=swap";:root{--bg:#f4efe5;--bg-ink:#1f2333;--surface:#fffaf0;--surface-strong:#fff;--line:#d8ccb5;--text:#252838;--text-muted:#63697d;--primary:#0f766e;--primary-strong:#0a5b55;--accent:#c8791a;--danger:#b42318;--danger-soft:#fef3f2;--good:#1d7f42;--good-soft:#eef9f1;--shadow:0 12px 32px #23201c1f;--radius-lg:18px;--radius-md:12px;--radius-sm:10px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--text);background:radial-gradient(circle at 12% 16%,#0f766e2b,#0000 28%),radial-gradient(circle at 88% 8%,#c8791a33,#0000 30%),linear-gradient(140deg,#f4efe5 0%,#f8f2e8 35%,#f3ecde 100%);margin:0;font-family:IBM Plex Sans,Segoe UI,sans-serif;overflow-x:hidden}h1,h2,h3,h4,h5,h6{letter-spacing:-.02em;margin:0;font-family:Space Grotesk,IBM Plex Sans,sans-serif}p{margin:0}a{color:inherit}button,input,select,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);background:var(--surface-strong);width:100%;color:var(--text);border-radius:10px;padding:10px 12px;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 4px #0f766e26}table{border-collapse:collapse;width:100%}.app-shell{min-height:100vh;padding:20px}.topbar{border-radius:var(--radius-lg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#fffbf5d9;border:1px solid #d8ccb5cc;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:20px;padding:16px;display:grid}.brand-wrap{align-items:center;gap:14px;display:flex}.brand-wrap h1{font-size:1.2rem}.brand-wrap p{color:var(--text-muted);margin-top:2px;font-size:.9rem}.brand-mark{background:linear-gradient(135deg, var(--primary), #158f85);color:#fff;border-radius:14px;place-items:center;width:48px;height:48px;font-family:Space Grotesk,sans-serif;font-size:1rem;font-weight:700;display:grid}.nav-links{align-items:center;gap:10px;display:flex}.nav-link{color:var(--text-muted);border-radius:999px;padding:8px 12px;font-size:.92rem;font-weight:600;text-decoration:none;transition:all .22s}.nav-link:hover{color:var(--text);background:#0f766e14}.nav-link-active{color:var(--primary-strong);background:#0f766e29}.user-meta{justify-self:end;align-items:center;gap:10px;min-width:0;display:flex}.user-meta>div{min-width:0}.user-meta strong{font-size:.9rem;display:block}.user-meta p{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:220px;font-size:.78rem;overflow:hidden}.user-avatar{width:38px;height:38px;color:var(--primary-strong);background:#0f766e1f;border-radius:50%;place-items:center;font-size:.82rem;font-weight:700;display:grid}.role-pill{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:6px 10px;font-size:.74rem;font-weight:700}.role-admin{color:#0a5b55;background:#0f766e29}.role-analyst{color:#8a4c0b;background:#c8791a24}.role-viewer{color:#52586e;background:#63697d24}.main-content{flex-direction:column;gap:16px;margin-top:18px;display:flex}.page-head{border-radius:var(--radius-lg);background:#fffbf5d1;border:1px solid #d8ccb5b3;justify-content:space-between;align-items:center;gap:14px;padding:18px;display:flex}.page-head h2{font-size:1.4rem}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:4px;font-size:.72rem;font-weight:700}.subtle{color:var(--text-muted);font-size:.92rem}.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.kpi-card{border-radius:var(--radius-md);background:var(--surface);border:1px solid #d8ccb5e6;padding:16px;box-shadow:0 6px 20px #2a251d14}.kpi-card p{color:var(--text-muted);font-size:.84rem}.kpi-card h3{margin-top:8px;font-size:1.5rem}.kpi-positive h3{color:var(--good)}.kpi-negative h3{color:var(--danger)}.kpi-neutral h3{color:var(--bg-ink)}.grid-two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;display:grid}.panel{border-radius:var(--radius-md);background:var(--surface);border:1px solid #d8ccb5e6;padding:16px;box-shadow:0 8px 22px #2c251f14}.panel-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.panel-head h3{font-size:1rem}.panel pre{white-space:pre-wrap;word-break:break-word;background:#fffdf8;border:1px solid #efe4d1;border-radius:10px;margin:0;padding:10px;font-size:.78rem;line-height:1.45;overflow:auto}.list-stack{flex-direction:column;gap:10px;display:flex}.list-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.meter{background:#efe6d6;border-radius:999px;width:100%;height:8px;margin-top:6px;overflow:hidden}.meter>span{background:linear-gradient(90deg, var(--primary), var(--accent));border-radius:999px;height:100%;display:block}.table-wrap{background:#fffdf8;border:1px solid #d8ccb5e6;border-radius:10px;overflow-x:auto}.data-table th,.data-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #efe4d1;padding:10px 12px;font-size:.89rem}.data-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);white-space:nowrap;font-family:Space Grotesk,sans-serif;font-size:.8rem}.data-table tr:last-child td{border-bottom:none}.sort-btn{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}.sort-btn-active{color:var(--primary-strong)}.tag{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;align-items:center;padding:4px 9px;font-size:.75rem;font-weight:700;display:inline-flex}.tag-income{color:var(--good);background:var(--good-soft)}.tag-expense{color:var(--danger);background:var(--danger-soft)}.form-grid,.admin-user-form{grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:10px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text-muted);font-size:.8rem;font-weight:600}.checkbox-row{color:var(--text-muted);align-items:center;gap:8px;min-height:42px;font-size:.86rem;display:inline-flex}.checkbox-row input{width:auto;box-shadow:none;margin:0}.actions-row{align-items:center;gap:8px;display:flex}.form-grid .actions-row,.admin-user-form .actions-row{grid-column:1/-1}.primary-btn,.ghost-btn,.danger-btn,.muted-btn{cursor:pointer;border:none;border-radius:10px;padding:9px 14px;font-size:.86rem;font-weight:700;transition:transform .2s,box-shadow .2s}.primary-btn{background:linear-gradient(135deg, var(--primary), #159085);color:#fff;box-shadow:0 8px 16px #0f766e42}.danger-btn{color:#fff;background:#d92d20}.muted-btn{color:#3f445a;background:#ece4d4}.ghost-btn{color:var(--primary-strong);background:#0f766e1a}.primary-btn:hover,.ghost-btn:hover,.danger-btn:hover,.muted-btn:hover{transform:translateY(-1px)}.primary-btn:disabled,.ghost-btn:disabled,.danger-btn:disabled,.muted-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.pagination-row{justify-content:space-between;align-items:center;gap:10px;margin-top:12px;display:flex}.pagination-row p{color:var(--text-muted);font-size:.84rem}.state-card{text-align:center;border-radius:var(--radius-md);background:var(--surface);border:1px solid #d8ccb5e6;justify-items:center;gap:10px;padding:30px 20px;display:grid}.state-card h3{font-size:1.05rem}.state-card p{max-width:54ch;color:var(--text-muted)}.state-error{background:#fff7f6;border-color:#f6d3cf}.spinner{border:3px solid #0f766e33;border-top-color:var(--primary);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast-zone{z-index:50;gap:10px;display:grid;position:fixed;bottom:20px;right:20px}.toast{color:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;min-width:260px;max-width:360px;padding:10px 12px;animation:.25s slide-up;display:flex}.toast-success{background:#1d7f42}.toast-error{background:#b42318}.toast-info{background:#0f766e}.toast-close{color:#fff;cursor:pointer;background:0 0;border:none;font-weight:700}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-backdrop{z-index:40;background:#17171873;place-items:center;padding:16px;display:grid;position:fixed;inset:0;overflow-y:auto}.modal-card{background:#fff;border:1px solid #d8ccb5cc;border-radius:16px;width:min(560px,100%);max-height:calc(100vh - 32px);padding:16px;overflow-y:auto;box-shadow:0 18px 40px #18151147}.modal-card h3{font-size:1.1rem}.modal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.full-col{grid-column:1/-1}.helper-error{color:var(--danger);font-size:.78rem}.login-shell{place-items:center;min-height:100vh;padding:18px;display:grid}.login-card{width:min(440px,100%);box-shadow:var(--shadow);background:#fffbf4ed;border:1px solid #d8ccb5e6;border-radius:18px;padding:24px}.login-card h2{font-size:1.6rem}.login-card .subtle{margin-top:6px}.login-form{gap:10px;margin-top:16px;display:grid}.login-meta{border-top:1px dashed var(--line);color:var(--text-muted);margin-top:16px;padding-top:12px;font-size:.84rem}.login-error{color:#8f2d22;background:#fff6f5;border:1px solid #f6d3cf;border-radius:10px;padding:8px 10px;font-size:.83rem}.auth-switch{color:var(--text-muted);text-align:center;margin-top:14px;font-size:.84rem}.auth-link{color:var(--primary-strong);font-weight:700;text-decoration:none}.auth-link:hover{text-decoration:underline}.not-found{place-items:center;min-height:100vh;padding:16px;display:grid}.not-found .panel{text-align:center;width:min(520px,100%)}@media (width<=1100px){.topbar{grid-template-columns:minmax(0,1fr);gap:14px;padding:14px}.nav-links{width:100%;padding-bottom:4px;overflow-x:auto}.user-meta{flex-wrap:wrap;justify-self:stretch;gap:8px}.user-meta p{max-width:min(100%,320px)}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid,.admin-user-form{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.app-shell{padding:12px}.topbar{border-radius:14px;padding:12px}.brand-wrap{align-items:flex-start;gap:10px}.brand-mark{border-radius:12px;width:40px;height:40px;font-size:.9rem}.brand-wrap h1{font-size:1.05rem}.brand-wrap p{font-size:.8rem}.user-meta{justify-content:flex-start;width:100%}.user-meta p{white-space:normal;text-overflow:clip;max-width:100%;overflow:visible}.page-head{flex-direction:column;align-items:flex-start;padding:14px}.page-head h2{font-size:1.22rem}.page-head .actions-row{width:100%}.page-head .actions-row>button{flex:160px}.panel{padding:12px}.panel-head{flex-direction:column;align-items:flex-start;gap:8px}.kpi-grid,.grid-two,.modal-grid,.form-grid,.admin-user-form{grid-template-columns:1fr}.actions-row{flex-wrap:wrap}.table-wrap{background:0 0;border:none;overflow:visible}.data-table{display:block}.data-table thead{display:none}.data-table tbody{gap:10px;display:grid}.data-table tr{background:#fffdf8;border:1px solid #d8ccb5e6;border-radius:10px;padding:10px;display:block}.data-table td{border-bottom:none;grid-template-columns:94px minmax(0,1fr);align-items:start;gap:8px;padding:6px 0;font-size:.85rem;display:grid}.data-table td:before{content:attr(data-label);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:.7rem;font-weight:700}.data-table td:last-child{padding-bottom:0}.data-table td[data-label=Role] .actions-row,.data-table td[data-label=Actions] .actions-row{flex-wrap:wrap;width:100%}.data-table td[data-label=Actions]{display:block}.data-table td[data-label=Actions]:before{margin-bottom:8px;display:block}.data-table td[data-label=Role] select{max-width:100%}.pagination-row{flex-direction:column;align-items:flex-start}.toast-zone{bottom:12px;left:12px;right:12px}.toast{max-width:100%}}@media (width<=520px){.kpi-grid{grid-template-columns:1fr}.actions-row>button{width:100%}.data-table td{grid-template-columns:82px minmax(0,1fr)}}
