@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap";:root{--font:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--primary:#1e40af;--primary-strong:#1b3a9e;--primary-soft:#eaf0fb;--secondary:#3b82f6;--accent:#059669;--accent-soft:#e6f5ef;--danger:#dc2626;--danger-soft:#fdecec;--warning:#b45309;--warning-soft:#fdf3e7;--bg:#f1f5f9;--surface:#fff;--surface-2:#f8fafc;--text:#0f172a;--text-muted:#5b6678;--text-faint:#8a94a6;--border:#e2e8f0;--border-strong:#cbd5e1;--ring:#1e40af;--radius:16px;--radius-sm:10px;--radius-lg:22px;--shadow-sm:0 1px 2px #0f172a0f, 0 1px 3px #0f172a0a;--shadow:0 2px 6px #0f172a0f, 0 8px 24px #0f172a0f;--shadow-lg:0 12px 40px #0f172a24;--pos:var(--accent);--neg:var(--danger);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--nav-h:64px;--content-max:1140px}:root[data-theme=dark]{--primary:#3b82f6;--primary-strong:#2f6fe0;--primary-soft:#16233f;--secondary:#60a5fa;--accent:#10b981;--accent-soft:#10271f;--danger:#f87171;--danger-soft:#2a1518;--warning:#fbbf24;--warning-soft:#2a2010;--bg:#0b1220;--surface:#131c2e;--surface-2:#0f1828;--text:#f1f5f9;--text-muted:#9fb0c7;--text-faint:#6b7a92;--border:#ffffff17;--border-strong:#ffffff29;--ring:#60a5fa;--shadow-sm:0 1px 2px #0006;--shadow:0 2px 8px #0006;--shadow-lg:0 16px 48px #0000008c}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1;margin:0;font-size:16px;line-height:1.5}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600;line-height:1.25}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.02rem}p{margin:0}a{color:var(--primary)}button{font-family:inherit}:focus-visible{outline:3px solid color-mix(in srgb, var(--ring) 55%, transparent);outline-offset:2px;border-radius:6px}.num{font-variant-numeric:tabular-nums}.pos{color:var(--pos)}.neg{color:var(--neg)}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.center{text-align:center}.nowrap{white-space:nowrap}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.topbar{z-index:40;justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:color-mix(in srgb, var(--surface) 86%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.brand{letter-spacing:.04em;align-items:center;gap:10px;font-weight:700;display:flex}.brand-mark{background:linear-gradient(135deg, var(--primary), var(--secondary));color:#fff;width:30px;height:30px;box-shadow:var(--shadow-sm);border-radius:9px;place-items:center;font-size:15px;font-weight:700;display:grid}.layout{flex:1;width:100%;display:flex}.content{width:100%;max-width:var(--content-max);padding:var(--sp-5) var(--sp-4) calc(var(--nav-h) + 32px);flex:1;margin:0 auto}.sidebar{display:none}.bottom-nav{z-index:50;background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));height:calc(var(--nav-h) + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{cursor:pointer;color:var(--text-faint);background:0 0;border:none;border-radius:10px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-height:48px;padding:4px 2px;font-size:11px;font-weight:500;transition:color .18s;display:flex}.nav-item svg{width:22px;height:22px}.nav-item.active{color:var(--primary)}.nav-item.active .nav-ico{background:var(--primary-soft)}.nav-ico{border-radius:999px;padding:3px 14px;transition:background .18s}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--sp-4)}.card-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4) var(--sp-2);display:flex}.card-head h2,.card-head h3{font-size:1.02rem}.section-title{margin:var(--sp-6) 0 var(--sp-3);justify-content:space-between;align-items:center;display:flex}.section-title:first-child{margin-top:0}.section-title h2{font-size:1.1rem}.grid{gap:var(--sp-4);display:grid}.grid-kpi{grid-template-columns:1fr 1fr}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--sp-3);display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.wrap{flex-wrap:wrap}.grow{flex:1}.kpi{padding:var(--sp-4)}.kpi .label{color:var(--text-muted);font-size:.8rem;font-weight:500}.kpi .value{letter-spacing:-.02em;margin-top:4px;font-size:1.5rem;font-weight:700}.kpi .sub{color:var(--text-faint);margin-top:2px;font-size:.78rem}.btn{cursor:pointer;background:var(--surface-2);min-height:44px;color:var(--text);border:1px solid #0000;border-color:var(--border);border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:.94rem;font-weight:600;transition:background .16s,border-color .16s,transform 80ms,color .16s;display:inline-flex}.btn:hover{background:color-mix(in srgb, var(--surface-2) 70%, var(--border))}.btn:active{transform:scale(.98)}.btn svg{width:18px;height:18px}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-strong)}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-danger{border-color:var(--border);color:var(--danger);background:0 0}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{border-radius:10px;min-height:36px;padding:6px 12px;font-size:.86rem}.btn-icon{border-radius:11px;min-width:40px;min-height:40px;padding:8px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-block{width:100%}.fab{right:18px;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px);z-index:45;background:var(--primary);color:#fff;cursor:pointer;width:56px;height:56px;box-shadow:var(--shadow-lg);border:none;border-radius:18px;place-items:center;transition:transform .12s,background .16s;display:grid;position:fixed}.fab:hover{background:var(--primary-strong)}.fab:active{transform:scale(.94)}.fab svg{width:26px;height:26px}.chip{background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.78rem;font-weight:600;display:inline-flex}.dot{border-radius:50%;flex:none;width:9px;height:9px}.badge{border-radius:999px;padding:3px 9px;font-size:.72rem;font-weight:700}.badge-pos{background:var(--accent-soft);color:var(--accent)}.badge-neg{background:var(--danger-soft);color:var(--danger)}.badge-warn{background:var(--warning-soft);color:var(--warning)}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:9px;min-height:38px;padding:7px 13px;font-size:.84rem;font-weight:600;transition:background .15s,color .15s}.seg button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.list{flex-direction:column;display:flex}.list-row{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);text-align:left;cursor:pointer;width:100%;color:inherit;font:inherit;background:0 0;border-bottom:none;border-left:none;border-right:none;transition:background .14s;display:flex}.list-row:first-child{border-top:none}.list-row:hover{background:var(--surface-2)}.list-row .lr-main{flex:1;min-width:0}.list-row .lr-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.list-row .lr-sub{color:var(--text-muted);margin-top:1px;font-size:.8rem}.list-row .lr-amount{white-space:nowrap;font-weight:700}.avatar{color:#fff;border-radius:12px;flex:none;place-items:center;width:40px;height:40px;font-size:.9rem;font-weight:700;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-muted);font-size:.84rem;font-weight:600}.field .req{color:var(--danger)}.input,.select,textarea.input{border:1px solid var(--border-strong);background:var(--surface);width:100%;min-height:46px;color:var(--text);font:inherit;border-radius:12px;padding:11px 13px;font-size:1rem;transition:border-color .15s,box-shadow .15s}.input:focus,.select:focus,textarea.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);outline:none}textarea.input{resize:vertical;min-height:70px}.field .help{color:var(--text-faint);font-size:.76rem}.field .err{color:var(--danger);font-size:.78rem;font-weight:600}.form-grid{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.form-grid .full{grid-column:1/-1}.input-affix{position:relative}.input-affix .suffix{color:var(--text-faint);pointer-events:none;font-size:.92rem;position:absolute;top:50%;right:13px;transform:translateY(-50%)}.input-affix .input{padding-right:38px}.scrim{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080e1a8c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:560px;max-height:92dvh;box-shadow:var(--shadow-lg);padding:var(--sp-5) var(--sp-4) calc(var(--sp-5) + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;overflow-y:auto}.modal-head{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;display:flex}.modal-head h2{font-size:1.2rem}.modal-actions{gap:var(--sp-3);margin-top:var(--sp-5);display:flex}.modal-actions .btn{flex:1}.chart-tip{z-index:80;pointer-events:none;background:var(--text);color:var(--surface);box-shadow:var(--shadow-lg);white-space:nowrap;border-radius:9px;padding:7px 10px;font-size:.78rem;font-weight:600;position:fixed;transform:translate(-50%,-120%)}.legend{margin-top:var(--sp-3);flex-wrap:wrap;gap:8px 14px;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:6px;font-size:.8rem;display:inline-flex}.empty{text-align:center;padding:var(--sp-6) var(--sp-4);color:var(--text-muted)}.empty .empty-ic{width:52px;height:52px;margin:0 auto var(--sp-3);background:var(--primary-soft);color:var(--primary);border-radius:16px;place-items:center;display:grid}.empty .empty-ic svg{width:26px;height:26px}.divider{background:var(--border);height:1px;margin:var(--sp-4) 0;border:none}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:34px;height:34px;margin:60px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg, var(--surface-2), var(--border), var(--surface-2));background-size:200% 100%;border-radius:10px;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.bar-track{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.bar-fill{border-radius:999px;height:100%;transition:width .4s}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.88rem}table.data th,table.data td{text-align:right;white-space:nowrap;padding:9px 12px}table.data th:first-child,table.data td:first-child{text-align:left}table.data thead th{background:var(--surface);color:var(--text-muted);border-bottom:1px solid var(--border);font-size:.8rem;font-weight:600;position:sticky;top:0}table.data tbody tr{border-bottom:1px solid var(--border)}table.data tbody tr.is-payoff{background:var(--accent-soft)}@media (width>=720px){.grid-kpi{grid-template-columns:repeat(4,1fr)}.grid-2{grid-template-columns:1fr 1fr}}@media (width>=1024px){.bottom-nav{display:none}.fab{bottom:28px;right:28px}.layout{gap:0}.sidebar{width:240px;padding:var(--sp-5) var(--sp-3);border-right:1px solid var(--border);flex-direction:column;flex:none;gap:4px;height:calc(100dvh - 57px);display:flex;position:sticky;top:57px}.sidebar .nav-item{border-radius:12px;flex-direction:row;justify-content:flex-start;gap:12px;min-height:46px;padding:11px 14px;font-size:.95rem}.sidebar .nav-item .nav-ico{background:0 0;padding:0}.sidebar .nav-item.active{background:var(--primary-soft)}.sidebar .nav-item.active .nav-ico{background:0 0}.content{padding:var(--sp-6) var(--sp-6) var(--sp-7)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
