@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--bg-body:#0a0a14;--bg-sidebar:#0d0d1a;--bg-card:#1a1a2e;--bg-card-2:#16213e;--bg-topbar:#12122a;--bg-row-alt:#1e1e32;--accent-purple:#bb86fc;--accent-amber:#ffb300;--success:#4caf50;--danger:#cf6679;--text-primary:#e0e0e0;--text-subtle:#8a8a9a;--text-heading:#fff;--divider:#2a2a3e;--nav-hover:#bb86fc21;--nav-active-bg:#bb86fc33;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-card:0 2px 12px #0000004d;--shadow-elevated:0 8px 32px #0006;--ease-out:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg-body);height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;overflow:hidden}#app{flex-direction:column;width:100%;height:100dvh;display:flex;overflow:hidden}.topbar{padding:12px var(--space-md);background:#0d0d1a;border-bottom:1px solid #4b445226;flex-shrink:0;justify-content:space-between;align-items:center;min-height:52px;display:flex}.topbar h1{color:var(--text-heading);letter-spacing:-.3px;font-size:16px;font-weight:700}.topbar .sync-badge{color:var(--text-subtle);align-items:center;gap:4px;font-size:11px;display:flex}.topbar .sync-dot{background:var(--success);border-radius:50%;width:6px;height:6px;display:inline-block}.main-content{padding:var(--space-md);scroll-behavior:smooth;-webkit-overflow-scrolling:touch;flex:1;padding-bottom:80px;overflow:hidden auto}.bottom-nav{padding:8px 16px max(8px, env(safe-area-inset-bottom));z-index:100;background:#1a1a28;border-top:1px solid #4b44521a;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{border-radius:var(--radius-md);color:var(--text-subtle);text-transform:uppercase;letter-spacing:.05em;transition:all .2s var(--ease-out);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;font-size:10px;font-weight:500;text-decoration:none;display:flex}.nav-item svg{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.nav-item.active{color:var(--accent-purple);background:#bb86fc1a}.nav-item:hover{color:var(--accent-purple)}.card{border-radius:var(--radius-md);padding:var(--space-md);box-shadow:none;transition:border-color .2s var(--ease-out);background:#1e1e2c;border:1px solid #4b445226;margin-bottom:12px}.card:hover{border-color:#4b44524d}.card-header{background:var(--bg-card-2);margin:calc(-1 * var(--space-md));margin-bottom:var(--space-md);padding:12px var(--space-md);border-radius:var(--radius-md) var(--radius-md) 0 0;align-items:center;gap:var(--space-sm);display:flex}.card-header:before{content:"";background:var(--accent-purple);border-radius:2px;flex-shrink:0;width:3px;height:14px}.card-header h2{color:var(--text-primary);font-size:14px;font-weight:600}.filter-bar{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.filter-bar input,.filter-bar select{border-radius:var(--radius-sm);min-width:120px;color:var(--text-primary);background:#1e1e2c;border:1px solid #4b445226;outline:none;flex:1;padding:10px 14px;font-family:inherit;font-size:13px;transition:border-color .2s}.filter-bar input:focus,.filter-bar select:focus{border-color:var(--accent-purple)}.filter-bar input::placeholder{color:var(--text-subtle)}.data-table{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.data-table table{border-collapse:collapse;width:100%;min-width:500px}.data-table th{background:var(--bg-card-2);color:var(--accent-purple);text-align:left;border-bottom:1px solid var(--divider);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;z-index:1;padding:10px 12px;font-size:12px;font-weight:600;position:sticky;top:0}.data-table td{border-bottom:1px solid var(--divider);white-space:nowrap;padding:10px 12px;font-size:13px}.data-table tr:nth-child(2n){background:var(--bg-row-alt)}.data-table tr:hover{background:var(--nav-active-bg)}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.data-table .note{text-overflow:ellipsis;max-width:150px;overflow:hidden}.data-card{border-radius:var(--radius-sm);box-shadow:none;transition:background .15s var(--ease-out);background:#1e1e2c;border:1px solid #4b445226;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:4px;padding:14px 16px;display:flex}.data-card:active{background:#292937cc}.data-card-left{flex:1;min-width:0}.data-card-name{color:var(--text-heading);text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;font-size:14px;font-weight:500;overflow:hidden}.data-card-detail{color:var(--text-subtle);font-size:12px;line-height:1.35}.data-card-right{text-align:right;flex-shrink:0}.data-card-amount{color:var(--accent-amber);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.data-card-amount.success{color:var(--success)}.data-card-amount.danger{color:var(--danger)}.data-card-amount.amber{color:var(--accent-amber)}.data-card-date{color:var(--text-subtle);margin-top:2px;font-size:11px}.login-page{min-height:100dvh;padding:var(--space-xl);background:var(--bg-body);flex-direction:column;justify-content:center;align-items:center;display:flex}.login-card{padding:0 var(--space-md);background:0 0;width:100%;max-width:360px}.login-logo{text-align:center;margin-bottom:40px}.login-logo h1{color:var(--text-heading);letter-spacing:-.02em;text-transform:uppercase;margin-bottom:6px;font-size:28px;font-weight:700}.login-logo p{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.1em;font-size:12px;font-weight:500}.login-field{margin-bottom:20px}.login-field label{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:11px;font-weight:600;display:block}.login-field input{border-radius:var(--radius-sm);width:100%;color:var(--text-primary);background:#1e1e2c;border:1px solid #4b445226;outline:none;padding:14px 16px;font-family:inherit;font-size:14px;transition:border-color .2s}.login-field input:focus{border-color:var(--accent-purple)}.btn-primary{background:linear-gradient(135deg, var(--accent-purple), #bb86fcbf);color:#0d0d1a;border-radius:var(--radius-sm);cursor:pointer;letter-spacing:.02em;border:none;width:100%;margin-top:8px;padding:14px;font-family:inherit;font-size:14px;font-weight:600;transition:opacity .2s,transform .1s}.btn-primary:hover{opacity:.9}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.login-error{color:var(--danger);border-radius:var(--radius-sm);margin-bottom:var(--space-md);text-align:center;background:#cf66791f;border:1px solid #cf667933;padding:10px 14px;font-size:13px}.loading{padding:var(--space-xl);color:var(--text-subtle);justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;display:flex}.spinner{border:3px solid var(--divider);border-top-color:var(--accent-purple);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:var(--space-xl);color:var(--text-subtle)}.empty-state svg{width:48px;height:48px;stroke:var(--divider);margin-bottom:var(--space-md)}.empty-state p{font-size:14px}.page-title{color:var(--text-heading);align-items:center;gap:8px;margin-bottom:16px;font-size:18px;font-weight:600;display:flex}.page-title .count-badge{color:var(--accent-purple);background:#bb86fc1a;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600}.tab-bar{padding-bottom:var(--space-sm);margin-bottom:var(--space-md);scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}.tab-bar::-webkit-scrollbar{display:none}.tab-btn{color:var(--text-subtle);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:all .2s}.tab-btn.active{color:var(--accent-purple);border-bottom-color:var(--accent-purple)}.info-tip{vertical-align:middle;align-items:center;margin-left:4px;display:inline-flex;position:relative}.info-tip-btn{width:15px;height:15px;color:var(--text-subtle);cursor:help;-webkit-tap-highlight-color:transparent;background:0 0;border:1px solid #8a8a9a59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:9px;font-weight:700;line-height:1;transition:border-color .15s,color .15s;display:inline-flex}.info-tip-btn:hover,.info-tip-btn:focus{border-color:var(--accent-purple);color:var(--accent-purple);outline:none}.info-tip-text{color:var(--text-primary);border-radius:var(--radius-sm);white-space:normal;pointer-events:none;opacity:0;visibility:hidden;z-index:200;text-transform:none;letter-spacing:normal;background:#2a2a3e;border:1px solid #4b44524d;width:max-content;max-width:min(260px,100vw - 32px);padding:8px 12px;font-size:12px;font-weight:400;line-height:1.45;transition:opacity .15s,visibility .15s;position:fixed}.info-tip-text:after{content:"";top:100%;left:var(--arrow-left,50%);border:5px solid #0000;border-top-color:#2a2a3e;position:absolute;transform:translate(-50%)}.info-tip:hover .info-tip-text,.info-tip:focus-within .info-tip-text,.info-tip.show .info-tip-text{opacity:1;visibility:visible}.fade-in{animation:fadeIn .3s var(--ease-out)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width>=640px){.kpi-grid{grid-template-columns:repeat(4,1fr)}.main-content{padding:var(--space-lg);padding-bottom:80px}}.pull-indicator{justify-content:center;align-items:center;gap:var(--space-sm);height:0;color:var(--text-subtle);margin:calc(-1 * var(--space-md));margin-bottom:var(--space-md);background:linear-gradient(#bb86fc14,#0000);font-size:12px;transition:height .1s,opacity .1s;display:flex;overflow:hidden}.period-tabs{border-bottom:1px solid #4b445226;gap:24px;margin-bottom:16px;display:flex}.period-tab{color:var(--text-subtle);cursor:pointer;transition:all .2s var(--ease-out);white-space:nowrap;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-bottom:2px solid #0000;padding:0 0 10px;font-family:inherit;font-size:13px;font-weight:500}.period-tab.active{color:var(--accent-purple);border-bottom-color:var(--accent-purple)}.period-tab:not(.active):hover{color:var(--text-primary)}.finance-card{border-radius:var(--radius-md);background:#1e1e2c;border:1px solid #4b445226;margin-bottom:16px;padding:20px}.finance-divider{background:#4b445226;height:1px;margin:16px 0}.hero-inline{flex-direction:column;gap:4px;display:flex}.hero-inline-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle);font-size:11px;font-weight:500}.hero-inline-value{letter-spacing:-.02em;color:var(--text-heading);font-variant-numeric:tabular-nums;font-size:28px;font-weight:700}.hero-inline-value.success{color:var(--success)}.hero-inline-value.danger{color:var(--danger)}.kpi-row{align-items:center;gap:8px;padding:8px 0;display:flex}.kpi-row:last-child{padding-bottom:0}.kpi-row-dot{background:var(--accent-purple);border-radius:50%;flex-shrink:0;width:8px;height:8px}.kpi-row-dot.success{background:var(--success)}.kpi-row-dot.purple{background:var(--accent-purple)}.kpi-row-dot.amber{background:var(--accent-amber)}.kpi-row-dot.danger{background:var(--danger)}.kpi-row-label{color:#cdc3d4d9;flex:1;font-size:14px}.kpi-row-badge{color:var(--accent-amber);background:#ffb3001f;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.kpi-row-value{color:var(--text-heading);font-variant-numeric:tabular-nums;font-size:14px;font-weight:500}.chart-section{border-radius:var(--radius-md);background:#1e1e2c;border:1px solid #4b445226;margin-bottom:16px;padding:20px}.chart-section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle);margin-bottom:12px;font-size:11px;font-weight:500}.kpi-tile.purple{border-left-color:var(--accent-purple)}.attention-badge{color:var(--accent-amber);text-transform:uppercase;letter-spacing:.3px;vertical-align:middle;background:#ffb30026;border-radius:4px;margin-left:6px;padding:2px 6px;font-size:9px;font-weight:600;display:inline-block}.chart-container{width:100%;height:130px;position:relative}@media (width>=640px){.chart-container{height:280px}}.dashboard-switcher{margin-bottom:8px}.detail-list{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.detail-row{border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;text-align:left;width:100%;transition:background .18s var(--ease-out), border-color .18s var(--ease-out);-webkit-tap-highlight-color:transparent;background:#1e1e2c;border:1px solid #4b445226;align-items:center;gap:12px;padding:14px 16px;display:flex}.detail-row:hover{background:#292937cc}.detail-row.active{background:#bb86fc0f;border-color:#bb86fc66}.detail-row.error{border-color:#cf66794d}.detail-row:focus-visible{outline-offset:2px;outline:2px solid #bb86fcbf}.detail-row-left{flex:1;min-width:0}.detail-row-title{color:var(--text-primary);font-size:14px;font-weight:500;line-height:1.3}.detail-row-sub{color:var(--text-subtle);margin-top:2px;font-size:11px}.detail-row-badge{color:var(--accent-amber);background:#ffb3001f;border-radius:999px;margin-left:4px;padding:1px 6px;font-size:10px;font-weight:600}.detail-row-value{color:var(--text-heading);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.detail-row.error .detail-row-value{color:var(--danger)}.detail-row-chevron{color:var(--text-subtle);opacity:.5;flex-shrink:0}.detail-row.active .detail-row-chevron{color:var(--accent-purple);opacity:1}.dashboard-detail-card{overscroll-behavior:contain;border-top:2px solid var(--accent-purple);min-height:180px;max-height:380px;overflow-y:auto}.dashboard-panel-card{background:var(--bg-card-2);box-shadow:none;margin:0 0 8px}@media (width>=640px){.detail-list{flex-flow:wrap}.detail-row{flex:1;min-width:200px}.dashboard-detail-card{max-height:480px}}.stat-pair-row{gap:var(--space-md);margin-bottom:var(--space-md);display:flex}.stat-pair{background:var(--bg-card-2);border-radius:var(--radius-sm);flex:1;padding:10px 12px}.stat-pair-label{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:11px;display:block}.stat-pair-value{color:var(--text-heading);font-variant-numeric:tabular-nums;font-size:16px;font-weight:700;display:block}.stat-pair-value.success{color:var(--success)}.attention-banner{border-radius:var(--radius-sm);color:var(--accent-amber);margin-bottom:var(--space-md);background:#ffb3001a;border:1px solid #ffb30040;padding:8px 12px;font-size:12px;font-weight:600}.stale-dot{background:var(--accent-amber);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block}.data-card.stale{border-left:3px solid var(--accent-amber)}.section-sublabel{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.5px;margin-top:4px;margin-bottom:8px;font-size:11px;font-weight:600}.expense-bar{background:var(--bg-card-2);border-radius:10px;height:20px;margin-bottom:8px;display:flex;overflow:hidden}.expense-bar-segment{min-width:4px;transition:width .4s var(--ease-out)}.expense-bar-segment.salary{background:var(--accent-purple)}.expense-bar-segment.daily{background:var(--accent-amber)}.expense-bar-segment.raw{background:var(--danger)}.expense-legend{margin-bottom:var(--space-md);flex-wrap:wrap;gap:10px;display:flex}.legend-item{color:var(--text-subtle);align-items:center;gap:4px;font-size:11px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.legend-dot.salary{background:var(--accent-purple)}.legend-dot.daily{background:var(--accent-amber)}.legend-dot.raw{background:var(--danger)}.audit-card{background:var(--bg-card-2);border-radius:var(--radius-sm);margin-bottom:8px;padding:10px 12px}.audit-top{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.audit-action{text-transform:uppercase;letter-spacing:.3px;color:var(--accent-purple);background:#bb86fc26;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.audit-action.delete{color:var(--danger);background:#cf667926}.audit-action.update{color:var(--accent-amber);background:#ffb30026}.audit-entity{color:var(--text-subtle);font-size:11px}.audit-time{color:var(--text-subtle);margin-left:auto;font-size:11px}.audit-name{color:var(--text-primary);margin-bottom:2px;font-size:13px;font-weight:600;line-height:1.35}.audit-reason{color:var(--text-subtle);font-size:12px;font-style:italic;line-height:1.35}.audit-via{color:var(--text-subtle);margin-top:3px;font-size:10px}
