:root{--ink:#192b40;--dim:#68798b;--line:#dee6ee;--blue:#2563eb;--bg:#f3f6fa;--card:#fff;--soft:#edf4ff;--green:#08764f;--red:#b91c1c}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);font-family:Inter,"Segoe UI",system-ui,-apple-system,sans-serif;color:var(--ink);font-size:14px;line-height:1.55}button,input{font:inherit}button{cursor:pointer}.shell{max-width:1260px;margin:auto;padding:0 22px 44px}.header{padding:22px 0;display:flex;align-items:center;justify-content:space-between;gap:15px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}.brand-mark{background:#1b3c71;color:white;border-radius:12px;padding:12px 10px;font-weight:800;letter-spacing:-.5px}.brand strong{display:block;font-size:17px}.brand small{display:block;font-size:12px;color:var(--dim)}.header-chip{border:1px solid #c6d8f5;color:#2854a6;background:#e9f2ff;border-radius:99px;padding:7px 12px;font-weight:650;font-size:12px}.hero{padding:35px 38px 38px;border-radius:23px;background:linear-gradient(110deg,#122b50,#244d80);color:white;box-shadow:0 18px 32px #193a6117}.eyebrow{color:#a4d5ff;letter-spacing:1.5px;font-size:11px;font-weight:750}.hero h1{font-size:clamp(24px,4vw,42px);line-height:1.16;letter-spacing:-1.1px;margin:13px 0 15px}.hero h1 span{color:#aed5ff}.hero p{color:#d4e4fa;max-width:810px;line-height:1.8}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}.tags span{padding:4px 10px;border-radius:99px;background:#ffffff17;border:1px solid #ffffff32;color:#e9f3ff;font-size:12px}.alert{margin:18px 0 16px;background:#fff6e6;border:1px solid #f0d79e;padding:15px 18px;border-radius:12px;color:#634e2e}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:22px}.metrics>div{border:1px solid var(--line);background:white;border-radius:14px;padding:15px 18px}.metrics span{display:block;color:var(--dim);font-size:12px}.metrics strong{font-size:27px;font-variant-numeric:tabular-nums;display:block;margin-top:2px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:20px;align-items:start}.card{background:var(--card);border:1px solid var(--line);border-radius:17px;margin-bottom:19px;padding:23px;box-shadow:0 4px 12px #11294805}.card-title{display:flex;align-items:center;gap:10px;margin-bottom:13px}.card-title h2{font-size:18px;margin:0;line-height:1.3}.card-title.space-between{justify-content:space-between}.title-left{display:flex;align-items:center;gap:10px}.number{background:#e9f0fd;color:var(--blue);border-radius:8px;display:grid;place-items:center;min-width:32px;height:32px;font-weight:800}.card p{color:var(--dim)}.button{border:0;border-radius:10px;padding:11px 16px;font-weight:700;transition:filter .15s}.button:hover:not(:disabled){filter:brightness(.95)}.button:disabled{opacity:.55;cursor:not-allowed}.button.dark{background:#1c314f;color:#fff}.button.primary{background:var(--blue);color:white}.button.danger{background:#fff0f0;color:var(--red);border:1px solid #efcece}.button.ghost{background:#e9edf3;color:var(--ink)}.button.outline{background:#fff;border:1px solid #b6caea;color:#245dab}.button.wide{width:100%;margin:8px 0 4px}.authbar{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.authbar strong{flex:1}.dot{height:9px;width:9px;background:#c9a04f;border-radius:99px}.hint{font-size:12px}.tools{display:flex;gap:8px;flex-wrap:wrap}.linkbutton{border:0;background:transparent;color:var(--blue);font-weight:650;padding:6px}.sources{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:15px 0}.dataset-row{padding:10px 13px;display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid var(--line)}.dataset-row:last-child{border-bottom:0}.dataset-row:nth-child(even){background:#fafcfe}.dataset-left{display:flex;gap:12px;align-items:start;min-width:0}.dataset-left input{margin-top:4px;accent-color:var(--blue)}.dataset-left b{display:block;font-size:13px}.dataset-id,.details{display:block;font-size:11px;color:var(--dim);word-break:break-word}.details{margin-top:4px}.state{font-size:11px;white-space:nowrap;color:var(--dim);font-weight:700;border-radius:6px;background:#f2f5f8;padding:5px 7px}.state[data-state="ok"]{color:var(--green);background:#e3f5ed}.state[data-state="bad"]{color:var(--red);background:#fff0f0}.state[data-state="running"]{color:#245dab;background:#e8f1ff}.sticky{position:sticky;top:15px}.field{display:block;margin-bottom:15px;font-weight:680;font-size:13px}.field>span{display:block;margin-bottom:6px}.field input{display:block;width:100%;border:1px solid #cbd7e2;border-radius:9px;padding:11px 12px;margin-top:5px;color:var(--ink);background:white}.field input:focus{outline:2px solid #bed6ff}.field small{display:block;font-size:11px;color:var(--dim);font-weight:400;margin-top:5px}.schema{background:#f2f6ff;border:1px solid #d7e6ff;border-radius:12px;padding:13px 14px;margin:12px 0 14px}.schema p{margin:7px 0;font-size:12px}.schema code{font-size:11px}.consent{display:flex;gap:10px;font-size:12px;line-height:1.5;margin:15px 0}.consent input{accent-color:var(--blue);margin-top:3px;align-self:start}.destination{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.destination>*{display:block;word-wrap:break-word}.destination span{color:var(--dim);font-size:12px}.destination a{font-weight:700;color:var(--blue);font-size:12px}.destination strong{margin-top:8px;font-size:13px}.logs{background:#0e1c31;color:#bfd7f2;border-radius:12px;padding:13px;max-height:360px;overflow:auto;min-height:170px}.log{font-family:Consolas,ui-monospace,monospace;font-size:11px;padding:3px 0;border-bottom:1px solid #ffffff11;overflow-wrap:anywhere}.log.success{color:#90e7c0}.log.error{color:#ffb8b8}.log.warn{color:#ffdc9b}footer{text-align:center;color:var(--dim);font-size:12px;padding:20px}footer a{color:#426aa8}code{font-family:ui-monospace,Consolas,monospace;font-size:.92em}[hidden]{display:none!important}@media(max-width:860px){.layout{grid-template-columns:1fr}.sticky{position:static}.metrics{grid-template-columns:repeat(2,1fr)}.header-chip{display:none}}@media(max-width:540px){.shell{padding:0 11px 30px}.hero{padding:24px 21px}.card{padding:16px}.dataset-row{flex-direction:column;align-items:stretch}.state{align-self:start}.metrics{gap:8px}.metrics>div{padding:10px}.metrics strong{font-size:21px}}

[hidden] { display:none !important; }
#startupError { background:#fff0ee; border-color:#d64a3b; color:#a12114; }
