:root{--bg: #F7F5FB;--card: #FFFFFF;--sunk: #EFEBF7;--ink: #170F26;--ink2: #4C4263;--ink3: #7D7394;--line: #E2DCEE;--line2: #CBC1DF;--accent: #6D28D9;--accent-2: #A855F7;--accent-soft: #F0E8FE;--good: #17614A;--good-soft: #E6F2ED;--warn: #8A5A00;--warn-soft: #FBF1DC;--bad: #A5271D;--bad-soft: #FAEBE9;--shadow: 0 1px 2px rgba(23,15,38,.05), 0 4px 16px rgba(23,15,38,.06);--sans: "Heebo", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--r: 12px}html.dark{--bg: #0F0721;--card: #1A0F2E;--sunk: #231538;--ink: #F5EEFF;--ink2: #B4A8CE;--ink3: #8677A6;--line: #2C1D47;--line2: #40295F;--accent: #A855F7;--accent-2: #C084FC;--accent-soft: #2A1648;--good: #6FD3AE;--good-soft: #10291F;--warn: #E5B95E;--warn-soft: #2E2210;--bad: #F08C82;--bad-soft: #301716;--shadow: 0 1px 2px rgba(0,0,0,.45), 0 8px 24px rgba(5,0,15,.4)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}html.dark body{background:radial-gradient(1200px 520px at 85% -120px,rgba(124,58,237,.18),transparent 60%),var(--bg);background-attachment:fixed}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block}.muted{color:var(--ink3);font-size:.78rem}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.shell{max-width:1480px;margin:0 auto;padding:0 18px 72px}.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:12px 0 10px;display:flex;flex-direction:column;gap:10px}.brandrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.brand{font-weight:700;font-size:1.05rem;letter-spacing:-.01em;display:flex;align-items:center;gap:9px}.brand .dot{width:10px;height:10px;border-radius:3px;background:linear-gradient(135deg,#c084fc,#7c3aed);box-shadow:0 0 0 3px #a855f729}.spacer{margin-inline-start:auto}.tabs{display:flex;gap:4px;background:var(--sunk);padding:3px;border-radius:10px}.tabs button{border:0;background:transparent;color:var(--ink2);cursor:pointer;padding:6px 15px;border-radius:8px;font-weight:500;font-size:.9rem;white-space:nowrap}.tabs button[aria-selected=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.filters{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.filters .dash{color:var(--ink3)}.chip{border:1px solid var(--line);background:var(--card);color:var(--ink2);padding:5px 11px;border-radius:8px;cursor:pointer;font-size:.84rem;white-space:nowrap}.chip:hover:not(:disabled){border-color:var(--line2)}.chip:disabled{opacity:.5;cursor:default}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}html.dark .chip[aria-pressed=true]{color:#14072b}.chip.ghost{background:transparent}.dateinput{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:4px 9px;font-size:.84rem;font-family:var(--mono)}html.dark .dateinput{color-scheme:dark}.alerts{display:grid;gap:6px;margin-top:14px}.alert{display:grid;grid-template-columns:auto auto 1fr;gap:10px;align-items:baseline;padding:9px 12px;border-radius:10px;font-size:.86rem;border:1px solid transparent}.alert .aicon{font-size:.7rem}.alert .atitle{font-weight:600;white-space:nowrap}.alert .adetail{color:var(--ink2)}.alert.bad{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 30%,transparent)}.alert.bad .aicon,.alert.bad .atitle{color:var(--bad)}.alert.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.alert.warn .aicon,.alert.warn .atitle{color:var(--warn)}.alert.info{background:var(--sunk)}.alert.info .aicon,.alert.info .atitle{color:var(--ink2)}.allgood{margin:14px 0 0;font-size:.82rem;color:var(--ink3);display:flex;align-items:center;gap:8px}.okdot{width:8px;height:8px;border-radius:50%;background:var(--good);display:inline-block}@media (max-width: 640px){.alert{grid-template-columns:auto 1fr}.alert .adetail{grid-column:1 / -1}}.grid{display:grid;gap:12px}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-top:14px}@media (min-width: 1080px){.kpis.c6{grid-template-columns:repeat(6,1fr)}}.cols2{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));margin-top:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px 16px;min-width:0}.card h3{margin:0 0 10px;font-size:.86rem;font-weight:600;color:var(--ink);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.card h3 .sub{font-size:.72rem;color:var(--ink3);font-weight:400}.card h3 .cardaction{margin-inline-start:auto}.kpi{display:flex;flex-direction:column;gap:2px}.kpi .k{font-size:.78rem;color:var(--ink3)}.kpi .v{font-size:1.55rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;min-height:1.9rem}.kpi .v.good{color:var(--good)}.kpi .v.bad{color:var(--bad)}.kpi .d{font-size:.72rem;color:var(--ink3)}.kpi.accent{position:relative;overflow:hidden}.kpi.accent .v{color:var(--accent)}.kpi.accent:after{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#C084FC,#7C3AED 55%,transparent)}.kpi.clickable{text-align:start;cursor:pointer;position:relative;transition:border-color .15s ease,background-color .15s ease}.kpi.clickable:hover{border-color:var(--line2);background:var(--sunk)}.kpi.clickable.open{border-color:var(--accent)}.kchev{position:absolute;inset-inline-end:9px;top:8px;color:var(--ink3);font-size:.8rem;line-height:1;opacity:.55}.kpi.clickable:hover .kchev,.kpi.clickable.open .kchev{opacity:1;color:var(--accent)}.fine{margin:10px 2px 0;font-size:.78rem;color:var(--ink3);max-width:110ch}.tw{overflow-x:auto;max-width:100%}table{width:100%;border-collapse:collapse;font-size:.87rem}th,td{padding:7px 10px;text-align:start;border-bottom:1px solid var(--line);white-space:nowrap}thead th{font-size:.7rem;letter-spacing:.02em;color:var(--ink3);font-weight:500;background:var(--sunk);position:sticky;top:0}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--sunk)}td.n,th.n{text-align:end}td.n{font-variant-numeric:tabular-nums;font-family:var(--mono)}tr.total td{font-weight:600;background:var(--sunk);border-top:2px solid var(--line2)}.name{font-weight:500}.tag{font-size:.68rem;padding:2px 7px;border-radius:5px;white-space:nowrap;display:inline-block}.tag.good{background:var(--good-soft);color:var(--good)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.bad{background:var(--bad-soft);color:var(--bad)}.tag.mute{background:var(--sunk);color:var(--ink3)}.tag.brand{background:var(--accent-soft);color:var(--accent);font-weight:600}.segbtn{border:1px solid var(--line);background:var(--sunk);color:var(--ink3);border-radius:999px;padding:1px 9px;font-size:.7rem;cursor:pointer;white-space:nowrap}.segbtn.kl{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,transparent);font-weight:600}.segbtn:hover{border-color:var(--accent)}.bars{display:flex;flex-direction:column;gap:9px}.bar{display:grid;grid-template-columns:minmax(64px,22%) 1fr auto;gap:9px;align-items:center;font-size:.84rem}.bar .track{display:block;background:var(--sunk);border-radius:6px;height:12px;overflow:hidden}.bar .fill{display:block;width:100%;height:100%;background:linear-gradient(270deg,#7c3aed,#a855f7 60%,#c084fc);border-radius:6px}.bar .fill.dim{background:var(--line2)}.bar .val{font-family:var(--mono);font-size:.8rem;color:var(--ink2)}.bar .lab{color:var(--ink2);overflow:hidden;text-overflow:ellipsis}.funnel{display:flex;flex-direction:column;gap:7px}.fstep{display:grid;grid-template-columns:minmax(96px,20%) 1fr auto;gap:10px;align-items:center}.fstep .flab{font-size:.84rem;color:var(--ink2)}.fbarwrap{display:block;min-width:3px}.fstep .fbar{display:block;width:100%;background:linear-gradient(270deg,#7c3aed,#a855f7 60%,#c084fc);height:26px;border-radius:7px}.fstep .fval{font-family:var(--mono);font-size:.8rem;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px;justify-content:flex-end;min-width:92px}.fstep .fnum{font-size:.95rem;font-weight:600}.fstep .fpct{font-size:.74rem;color:var(--ink3)}.grow{transform-origin:right center;transform:scaleX(var(--to, 1));will-change:transform;animation-name:growX;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:both}@keyframes growX{0%{transform:scaleX(0)}to{transform:scaleX(var(--to, 1))}}.incomerow{display:flex;flex-wrap:wrap;gap:14px 34px;align-items:flex-end}.incomebig{display:flex;flex-direction:column;gap:1px}.incomebig .k{font-size:.76rem;color:var(--ink3)}.incomebig .v{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.incomebig .v.accent{color:var(--accent);font-size:1.9rem}.incomebig .d{font-size:.72rem;color:var(--ink3)}.ratebox{margin-inline-start:auto;display:flex;flex-direction:column;gap:4px;font-size:.76rem;color:var(--ink3)}.rateinput{display:flex;align-items:center;gap:6px}.center{min-height:60vh;display:grid;place-items:center}.btn{background:linear-gradient(135deg,#a855f7,#7c3aed);color:#fff;border:0;border-radius:999px;padding:11px 14px;font-weight:600;cursor:pointer}.btn:disabled{opacity:.55;cursor:default}.err{color:var(--bad);font-size:.82rem}.empty{color:var(--ink3);font-size:.82rem;padding:12px 2px;margin:0}.note,.alert .adetail,.empty,.fine{overflow-wrap:anywhere}.note{border-inline-start:3px solid var(--warn);background:var(--warn-soft);padding:9px 12px;border-radius:0 8px 8px 0;font-size:.84rem;color:var(--ink2);margin:0}.note.bad{border-inline-start-color:var(--bad);background:var(--bad-soft)}.skel{background:var(--sunk);border-radius:8px;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.foot{margin-top:22px;color:var(--ink3);font-size:.74rem}.loginwrap{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(900px 480px at 80% 0%,rgba(124,58,237,.35),transparent 62%),radial-gradient(700px 420px at 10% 100%,rgba(168,85,247,.18),transparent 60%),#0f0721}.login{width:min(360px,100%);display:flex;flex-direction:column;gap:12px;background:#1a0f2ec7;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(168,85,247,.25);border-radius:18px;padding:28px 24px;box-shadow:0 24px 70px #05000f99;color:#f5eeff}.login .empty{color:#b4a8ce}.login input{border:1px solid rgba(168,85,247,.3);background:#0000004d;color:#f5eeff;border-radius:10px;padding:11px 12px;width:100%}.login input::placeholder{color:#8677a6}.login .err{color:#f08c82}.crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:9px;font-size:.84rem}.crumbs .sep{color:var(--ink3);margin:0 4px}.crumbs .hint{color:var(--ink3);font-size:.74rem;margin-inline-start:auto}.linkish{background:none;border:0;padding:0;cursor:pointer;color:var(--accent);font:inherit;font-size:.84rem;text-align:start}.linkish:disabled{color:var(--ink2);cursor:default}.linkish:hover:not(:disabled){text-decoration:underline}.linkish.fnum{font-size:.95rem;font-weight:600}.drillname{display:inline-flex;align-items:center;gap:8px;min-width:0}.thumb{width:34px;height:34px;object-fit:cover;border-radius:6px;flex:none;border:1px solid var(--line);background:var(--sunk)}.leadpanel{margin-top:12px}.leadbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.leadbar input[type=search]{flex:1 1 220px;min-width:0;font-family:var(--sans)}.leadpanel .tw{max-height:460px;overflow-y:auto}.tgtinput{width:82px;text-align:center;padding:4px 6px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--ink);font-variant-numeric:tabular-nums}.tgtbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}@media (max-width: 640px){.shell{padding:0 12px 56px}.top{position:static}.kpi .v{font-size:1.3rem}.ratebox{margin-inline-start:0}}@media (prefers-reduced-motion: reduce){.grow{animation:none;transform:scaleX(var(--to, 1))}.skel{animation:none}.kpi.clickable{transition:none}}
