.ctv{--cyan:#3bc8ea;--violet:#8b7cf0;--amber:#f5b15c;--bg:#070a0e;--panel:rgba(255,255,255,.034);--panel-2:rgba(255,255,255,.05);--line:rgba(255,255,255,.10);--line-2:rgba(255,255,255,.06);--tx:#EAF0F6;--tx-dim:rgba(234,240,246,.6);--tx-faint:rgba(234,240,246,.4);--f:var(--font-hanken),"Hanken Grotesk",system-ui,sans-serif;--mono:var(--font-space-mono),ui-monospace,monospace}.ctv h1,.ctv h2,.ctv h3,.ctv h4{font-family:var(--f)}body:has(.ctv){font-family:var(--font-hanken),"Hanken Grotesk",system-ui,sans-serif;color:#EAF0F6;background:radial-gradient(120% 90% at 84% -10%,rgba(59,200,234,.1),transparent 50%),radial-gradient(90% 80% at 0 110%,rgba(139,124,240,.1),transparent 52%),#070a0e;-webkit-font-smoothing:antialiased;overflow:hidden}.ctv ::-webkit-scrollbar{width:10px;height:10px}.ctv ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:10px;border:2px solid transparent;background-clip:content-box}.ctv ::selection{background:rgba(59,200,234,.3)}.ctv .app{display:grid;grid-template-rows:auto 1fr;height:100vh;height:100svh;color:var(--tx)}.ctv .topbar{justify-content:space-between;gap:20px;padding:14px 22px;border-bottom:1px solid var(--line);background:rgba(8,11,16,.7);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:10}.ctv .tb-left,.ctv .topbar{display:flex;align-items:center}.ctv .tb-left{gap:16px;min-width:0}.ctv .tb-left img{height:24px;display:block}.ctv .tb-div{width:1px;height:26px;background:var(--line)}.ctv .tb-title .t{font-size:15px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.ctv .tb-title .s{font-family:var(--mono);font-size:11px;color:var(--tx-faint);letter-spacing:.04em}.ctv .tb-right{display:flex;align-items:center;gap:12px}.ctv .freshness{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim);border:1px solid var(--line);border-radius:999px;padding:7px 13px;background:var(--panel)}.ctv .freshness .dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 9px var(--cyan)}.ctv .seg{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel)}.ctv .seg button{font-family:var(--f);font-size:13px;font-weight:600;color:var(--tx-dim);background:none;border:none;padding:9px 15px;cursor:pointer;transition:background .2s,color .2s}.ctv .seg button.on{background:var(--cyan);color:#06222c}.ctv .body{display:grid;grid-template-columns:300px 1fr 360px;min-height:0}.ctv .col{min-height:0;overflow-y:auto}.ctv .col.left{border-right:1px solid var(--line);padding:20px 18px 40px}.ctv .col.right{border-left:1px solid var(--line);padding:20px 20px 40px}.ctv .stage{position:relative;min-width:0;overflow:hidden;display:flex;flex-direction:column}.ctv .sec-title{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-faint);margin:22px 0 12px}.ctv .sec-title:first-child{margin-top:2px}.ctv .search{position:relative;margin-bottom:6px}.ctv .search input{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--tx);font-family:var(--f);font-size:13.5px;padding:11px 12px 11px 36px;outline:none;transition:border-color .2s,background .2s}.ctv .search input:focus{border-color:var(--cyan);background:var(--panel-2)}.ctv .search input::placeholder{color:var(--tx-faint)}.ctv .search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:15px;height:15px;stroke:var(--tx-faint)}.ctv .pills{display:flex;flex-wrap:wrap;gap:7px}.ctv .pill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;color:var(--tx-dim);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 12px;cursor:pointer;transition:all .16s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ctv .pill:hover{border-color:rgba(255,255,255,.24);color:var(--tx)}.ctv .pill .mono{font-family:var(--mono);font-size:10px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.08);color:var(--tx-dim)}.ctv .pill.on{color:#06222c;font-weight:600}.ctv .pill.on.inv{background:var(--cyan);border-color:var(--cyan)}.ctv .pill.on.ssp{background:var(--violet);border-color:var(--violet);color:#120c2e}.ctv .pill.on.dsp{background:var(--amber);border-color:var(--amber);color:#3a2606}.ctv .pill.on .mono{background:rgba(0,0,0,.18);color:inherit}.ctv .pill.hidden{display:none}.ctv .hint-filter{font-size:11.5px;color:var(--tx-faint);margin-top:9px;line-height:1.45}.ctv .clearbtn{font-family:var(--f);font-size:11px;font-weight:600;color:var(--cyan);background:none;border:none;cursor:pointer;letter-spacing:.04em}.ctv .clearbtn:hover{text-decoration:underline}.ctv .flow-wrap{position:relative;flex:1 1;min-height:0;overflow:auto}.ctv .flow{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:0;gap:0;min-height:100%;padding:54px 30px 30px}.ctv .flow-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.ctv .fcol{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:0 22px}.ctv .fcol-head{position:absolute;top:-40px;left:22px;right:22px;display:flex;align-items:center;gap:9px;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-faint)}.ctv .fcol-head .dotc{width:9px;height:9px;border-radius:50%}.ctv .fcol-head .ct{font-family:var(--mono);font-weight:400;letter-spacing:.02em;margin-left:auto;color:var(--tx-faint)}.ctv .fnode{display:flex;align-items:center;gap:11px;background:rgba(16,20,27,.86);border:1.5px solid var(--line);border-radius:13px;padding:12px 14px;cursor:pointer;transition:border-color .18s,background .18s,transform .18s,box-shadow .18s,opacity .18s}.ctv .fnode:hover{transform:translateY(-1px)}.ctv .fnode .mono{font-family:var(--mono);font-size:12px;font-weight:700;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:none;background:rgba(255,255,255,.06)}.ctv .fnode .nm{font-size:14px;font-weight:600;letter-spacing:-.01em;line-height:1.1}.ctv .fnode .sub{font-size:11px;color:var(--tx-faint);margin-top:2px}.ctv .fnode.inv{border-color:rgba(59,200,234,.55)}.ctv .fnode.inv .mono{color:var(--cyan);background:rgba(59,200,234,.12)}.ctv .fnode.ssp{border-color:rgba(139,124,240,.5)}.ctv .fnode.ssp .mono{color:var(--violet);background:rgba(139,124,240,.14)}.ctv .fnode.dsp{border-color:rgba(245,177,92,.5)}.ctv .fnode.dsp .mono{color:var(--amber);background:rgba(245,177,92,.14)}.ctv .fnode.dim{opacity:.26}.ctv .fnode.sel{box-shadow:0 0 0 1px currentColor}.ctv .fnode.inv.hot{box-shadow:0 0 22px rgba(59,200,234,.4);background:rgba(59,200,234,.08)}.ctv .fnode.ssp.hot{box-shadow:0 0 22px rgba(139,124,240,.4);background:rgba(139,124,240,.08)}.ctv .fnode.dsp.hot{box-shadow:0 0 22px rgba(245,177,92,.4);background:rgba(245,177,92,.08)}.ctv .fnode .badge-mini{margin-left:auto;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:3px 6px;border-radius:5px}.ctv .flow-path{fill:none;stroke-width:2;stroke-linecap:round;transition:stroke .18s,opacity .18s,stroke-width .18s}.ctv .flow-path.dimmed{opacity:.12}.ctv .flow-path.hot{stroke-width:3}.ctv .flow-path.flowing{stroke-dasharray:5 7;animation:ctvdash 1.1s linear infinite}@keyframes ctvdash{to{stroke-dashoffset:-24}}.ctv .empty{position:absolute;inset:0;flex-direction:column;text-align:center;padding:40px;z-index:5}.ctv .empty,.ctv .empty .ring{display:flex;align-items:center;justify-content:center}.ctv .empty .ring{width:88px;height:88px;border-radius:50%;border:1.5px dashed rgba(59,200,234,.5);margin-bottom:22px}.ctv .empty .ring svg{width:38px;height:38px;stroke:var(--cyan)}.ctv .empty h2{font-size:22px;font-weight:600;letter-spacing:-.02em;margin-bottom:10px}.ctv .empty p{font-size:14px;color:var(--tx-dim);max-width:38ch;line-height:1.5}.ctv .insights{display:flex;gap:12px;flex-wrap:wrap;padding:14px 30px 16px;border-top:1px solid var(--line);background:rgba(8,11,16,.5)}.ctv .insight{flex:1 1;min-width:200px;display:flex;gap:11px;align-items:flex-start}.ctv .insight .ic{width:30px;height:30px;border-radius:8px;flex:none;display:flex;align-items:center;justify-content:center;background:rgba(59,200,234,.12)}.ctv .insight .ic svg{width:16px;height:16px;stroke:var(--cyan)}.ctv .insight p{font-size:12.5px;line-height:1.4;color:var(--tx-dim)}.ctv .insight p b{color:var(--tx);font-weight:600}.ctv .empty-r{color:var(--tx-faint);font-size:13.5px;line-height:1.55;padding-top:6px}.ctv .det-head{gap:14px;margin-bottom:18px}.ctv .det-disc,.ctv .det-head{display:flex;align-items:center}.ctv .det-disc{width:54px;height:54px;border-radius:13px;flex:none;justify-content:center;font-family:var(--mono);font-size:17px;font-weight:700;background:#10131a;border:2px solid var(--cyan);color:#fff}.ctv .det-head h2{font-size:21px;font-weight:600;letter-spacing:-.02em}.ctv .det-cat{font-size:12px;color:var(--tx-dim);font-weight:500;margin-top:3px}.ctv .badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:6px;padding:5px 9px}.ctv .badge.Direct{background:rgba(59,200,234,.16);color:var(--cyan)}.ctv .badge.Curated{background:rgba(139,124,240,.18);color:#b3a8ff}.ctv .badge.Resold{background:rgba(255,255,255,.08);color:var(--tx-dim)}.ctv .badge.Exclusive{background:rgba(245,177,92,.18);color:var(--amber)}.ctv .routes{margin:16px 0 6px}.ctv .route{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line-2);border-radius:10px;margin-bottom:8px;background:var(--panel)}.ctv .route .step{font-size:12px;font-weight:600}.ctv .route .arr{color:var(--tx-faint)}.ctv .route .step.ssp{color:#b3a8ff}.ctv .route .step.dsp{color:var(--amber)}.ctv .route .step.inv{color:var(--cyan)}.ctv .det-row{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--line-2);font-size:13px}.ctv .det-row .k{color:var(--tx-faint)}.ctv .det-row .v{color:var(--tx);font-weight:500;text-align:right}.ctv .det-row .v.yes{color:var(--cyan)}.ctv .chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.ctv .chip{font-size:11.5px;border:1px solid var(--line);border-radius:7px;padding:4px 9px}.ctv .chip,.ctv .det-notes{background:var(--panel);color:var(--tx-dim)}.ctv .det-notes{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:12px;font-size:12.5px;line-height:1.5}.ctv .det-foot{margin-top:16px;display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--tx-faint)}.ctv .det-foot a{color:var(--cyan);text-decoration:none}.ctv .det-foot a:hover{text-decoration:underline}.ctv .cmp-pick{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-bottom:18px}.ctv .cmp-pick select{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--tx);font-family:var(--f);font-size:13px;padding:10px;outline:none}.ctv .cmp-pick select:focus{border-color:var(--cyan)}.ctv .cmp-block{margin-bottom:14px}.ctv .cmp-block .h{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tx-faint);margin-bottom:9px}.ctv .cmp-tags{display:flex;flex-wrap:wrap;gap:6px}.ctv .cmp-tag{font-size:12px;border-radius:7px;padding:5px 10px;font-weight:500}.ctv .cmp-tag.shared{background:rgba(59,200,234,.14);color:var(--cyan);border:1px solid rgba(59,200,234,.3)}.ctv .cmp-tag.a{background:rgba(139,124,240,.14);color:#b3a8ff;border:1px solid rgba(139,124,240,.3)}.ctv .cmp-tag.b{background:rgba(245,177,92,.14);color:var(--amber);border:1px solid rgba(245,177,92,.3)}.ctv .cmp-stat{display:flex;align-items:baseline;gap:9px;padding:11px 0;border-top:1px solid var(--line-2)}.ctv .cmp-stat .n{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--cyan)}.ctv .cmp-stat .d{font-size:12.5px;color:var(--tx-dim)}@media (max-width:1080px){.ctv .body{grid-template-columns:240px 1fr 300px}}@media (max-width:820px){body:has(.ctv){overflow:auto}.ctv .app{height:auto}.ctv .body{grid-template-columns:1fr}.ctv .col.left,.ctv .col.right{border:none;border-bottom:1px solid var(--line)}.ctv .stage{height:auto}.ctv .flow-wrap{height:70vh}}