:root{--bg:#060d16;--s0:#080f1a;--s1:#0a1525;--s2:#0d1c30;--s3:#10233b;--border:#3882dc24;--border-md:#3882dc38;--border-hi:#3882dc61;--text:#e8f2ff;--text-2:#8fafc8;--text-3:#4a6a88;--blue:#1eb8ff;--blue-d:#1eb8ff1f;--blue-g:#1eb8ff0d;--green:#00e5a0;--green-d:#00e5a01a;--orange:#ff9f38;--orange-d:#ff9f381a;--purple:#b975ff;--purple-d:#b975ff1a;--red:#ff5252;--red-d:#ff52521a;--gold:#ffc438;--gold-d:#ffc4381f;--overlap-bg:#ff525212;--overlap-bd:#ff52522e;--diag-bg:#ffc43814;--diag-bd:#ffc43840;--mirror-bg:#1eb8ff0a;--r-xs:6px;--r-sm:10px;--r-md:14px;--r-lg:18px;--r-xl:22px;--r-2xl:28px;--r-full:999px;--ease:cubic-bezier(.4, 0, .2, 1);--dur:.18s;--shadow-lg:0 32px 80px #0000008c;--shadow-md:0 8px 32px #00000059}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--text);background:radial-gradient(ellipse 90% 55% at 5% -5%, #1eb8ff12 0%, transparent 60%), radial-gradient(ellipse 70% 45% at 95% 10%, #b975ff0d 0%, transparent 55%), radial-gradient(ellipse 50% 35% at 50% 100%, #00e5a008 0%, transparent 50%), var(--bg);min-height:100vh;padding:12px;font-family:Inter,ui-sans-serif,system-ui,sans-serif;line-height:1.5}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#3882dc38;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#3882dc61}.toast{z-index:9999;border-radius:var(--r-md);opacity:0;pointer-events:none;max-width:300px;transition:all .22s var(--ease);box-shadow:var(--shadow-md);padding:10px 16px;font-size:11.5px;font-weight:700;position:fixed;top:16px;right:16px;transform:translateY(-10px)}.toast.show{opacity:1;transform:translateY(0)}.toast.ok{color:#6dffc8;background:#051e14f7;border:1px solid #00e5a04d}.toast.err{color:#ff9090;background:#1e0505f7;border:1px solid #ff52524d}.toast.inf{color:#80d4ff;background:#050f1ef7;border:1px solid #1eb8ff4d}.shell{border:1px solid var(--border-md);border-radius:var(--r-2xl);background:linear-gradient(180deg, var(--s0) 0%, var(--bg) 100%);width:min(1760px,100%);box-shadow:var(--shadow-lg);flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--border);background:linear-gradient(#0c182afc,#08101efc);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;height:46px;padding:0 18px;display:flex}.tb-brand{align-items:center;gap:10px;display:flex}.tb-logo{letter-spacing:.06em;color:var(--text);align-items:center;gap:9px;font-size:13px;font-weight:900;display:flex}.tb-logo-icon{border-radius:var(--r-sm);background:linear-gradient(135deg, var(--blue), #0070c0);flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex;box-shadow:0 0 14px #1eb8ff59}.tb-logo-icon svg{fill:#fff}.tb-addr{border-radius:var(--r-full);border:1px solid var(--border);height:22px;color:var(--text-3);letter-spacing:.04em;background:#ffffff0a;align-items:center;gap:6px;padding:0 14px;font-family:JetBrains Mono,monospace;font-size:10.5px;display:flex}.tb-addr-dot{background:var(--green);border-radius:50%;width:6px;height:6px;animation:2s infinite pulse-dot}.tb-right{align-items:center;gap:10px;display:flex}.save-ind{color:var(--text-3);font-family:JetBrains Mono,monospace;font-size:10px}.save-ind.saved{color:var(--green)}.version-badge{letter-spacing:.06em;color:var(--blue);border-radius:var(--r-full);background:var(--blue-d);border:1px solid #1eb8ff33;padding:3px 9px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:800}.dots{align-items:center;gap:6px;display:flex}.dot{cursor:pointer;width:10px;height:10px;transition:filter var(--dur);border-radius:50%}.dot:hover{filter:brightness(1.3)}.dot.r{background:#ff5f57}.dot.y{background:#febc2e}.dot.g{background:#28c840}.proj-strip{border-bottom:1px solid var(--border);background:linear-gradient(#0a1426fa,#08101efa);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:0;min-height:44px;display:flex}.proj-field{border-right:1px solid var(--border);align-items:center;gap:30px;height:44px;padding:0 16px;display:flex;position:relative}.proj-field.pop{flex:1;min-width:200px}.proj-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);white-space:nowrap;flex-shrink:0;margin-right:10px;font-size:9.5px;font-weight:800}.proj-label.req:after{content:"*";color:var(--red);margin-left:2px}.proj-field input{color:var(--text);background:0 0;border:none;outline:none;width:140px;font-family:Inter,sans-serif;font-size:12px;font-weight:600}.proj-field.pop input{flex:1;width:auto}.proj-field input::placeholder{color:var(--text-3)}.proj-field input[type=date]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.pop-highlight{outline:2px solid var(--red)!important}.pop-badge{color:var(--red);background:var(--red-d);border-radius:var(--r-full);white-space:nowrap;border:1px solid #ff525240;margin-left:6px;padding:1px 6px;font-size:9px;font-weight:900;display:none}.pop-badge.show{display:inline-flex}.pop-err .proj-field{border-color:#ff52524d}.proj-actions{align-items:center;gap:6px;margin-left:auto;padding:0 14px;display:flex}.btn{border-radius:var(--r-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.07em;transition:all var(--dur) var(--ease);white-space:nowrap;border:1px solid;align-items:center;gap:6px;padding:6px 12px;font-family:Inter,sans-serif;font-size:10.5px;font-weight:800;display:inline-flex}.btn-primary{background:var(--blue-d);color:#7dd4ff;border-color:#1eb8ff4d}.btn-primary:hover{background:#1eb8ff33;border-color:#1eb8ff80;transform:translateY(-1px);box-shadow:0 4px 16px #1eb8ff26}.btn-ghost{border-color:var(--border);color:var(--text-2);background:#ffffff08}.btn-ghost:hover{border-color:var(--border-md);background:#ffffff12;transform:translateY(-1px)}.btn-danger{background:var(--red-d);color:#ff9090;border-color:#ff525240}.btn-danger:hover{background:#ff52522e;transform:translateY(-1px)}.btn svg{opacity:.8}.content{flex-direction:column;flex:1;gap:12px;padding:14px;display:flex}.table-panel{border:1px solid var(--border-md);border-radius:var(--r-xl);background:linear-gradient(#0a1626f7,#08101cfa);overflow:hidden}.table-toolbar{border-bottom:1px solid var(--border);background:#081220cc;flex-wrap:wrap;align-items:center;gap:12px;min-height:42px;padding:10px 16px;display:flex}.toolbar-left{align-items:center;gap:10px;display:flex}.toolbar-center{flex-wrap:wrap;align-items:center;gap:10px;margin:0 auto;display:flex}.toolbar-right{align-items:center;gap:8px;margin-left:auto;display:flex}.sec-label{text-transform:uppercase;letter-spacing:.12em;color:var(--text-2);align-items:center;gap:7px;font-size:10px;font-weight:900;display:flex}.sec-label:before{content:"";background:var(--blue);border-radius:50%;flex-shrink:0;width:6px;height:6px}.btn-add{border-radius:var(--r-xs);background:var(--blue-d);width:22px;height:22px;color:var(--blue);cursor:pointer;transition:all var(--dur) var(--ease);border:1px solid #1eb8ff4d;justify-content:center;align-items:center;font-size:14px;font-weight:900;line-height:1;display:flex}.btn-add:hover{background:#1eb8ff38;transform:scale(1.08);box-shadow:0 0 10px #1eb8ff33}.color-coding-label{color:var(--text-3);font-size:10px;font-weight:700}.cc-chip{border-radius:var(--r-full);align-items:center;gap:5px;padding:3px 8px;font-size:10px;font-weight:700;display:inline-flex}.cc-overlap{color:#ff9090;background:#ff52521a;border:1px solid #ff525238}.cc-independent{color:var(--text-2);border:1px solid var(--border);background:#ffffff0d}.cc-disjoint{background:var(--blue-d);color:#80d4ff;border:1px solid #1eb8ff38}.cc-swatch{border-radius:2px;width:8px;height:8px;display:inline-block}.table-scroll{overflow:auto visible}.mtx{border-collapse:collapse;width:100%;font-size:11.5px}.mtx th,.mtx td{border:1px solid var(--border);text-align:right;white-space:nowrap}.mtx thead th{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);z-index:10;background:#08101cf2;padding:8px 10px;font-size:10px;font-weight:800;position:sticky;top:0}.mtx thead th.th-name{text-align:left;min-width:140px;padding-left:14px}.mtx thead th.th-trp,.mtx thead th.th-reach{min-width:80px}.mtx thead th.th-med{min-width:90px;padding-top:10px;position:relative}.mtx thead th.th-med .med-hdr-inner{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.med-hdr-name{letter-spacing:.06em;color:var(--text-2);font-size:10px;font-weight:800}.del-col-btn{color:var(--red);cursor:pointer;opacity:.7;background:0 0;border:none;padding:0;font-size:10px;font-weight:900;line-height:1;display:none}.mtx thead th.th-med:hover .del-col-btn{display:inline}.mtx thead th.th-med:hover{background:#ff52520a}.mtx tbody tr{transition:background var(--dur)}.mtx tbody tr:hover td{background:#1eb8ff08}.td-name{text-align:left;z-index:5;border-right:1px solid var(--border-md);background:#08101cd9;padding:0 12px 0 14px;position:sticky;left:0}.medium-chip{align-items:center;gap:8px;height:38px;display:flex}.medium-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.medium-name{font-size:11.5px;font-weight:700}.del-row-btn{color:var(--red);cursor:pointer;opacity:.6;background:0 0;border:none;margin-left:auto;padding:2px 4px;font-size:9px;font-weight:900;line-height:1;display:none}.medium-chip:hover .del-row-btn{display:inline}.td-trp,.td-reach{background:#0a142499;padding:4px 6px}.td-trp input,.td-reach input{border:1px solid var(--border);border-radius:var(--r-xs);width:100%;height:30px;color:var(--text);text-align:right;transition:all var(--dur) var(--ease);background:#ffffff0a;outline:none;padding:0 8px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600}.td-trp input:focus,.td-reach input:focus{background:#1eb8ff12;border-color:#1eb8ff73;box-shadow:0 0 0 3px #1eb8ff14}.td-trp input::placeholder,.td-reach input::placeholder{color:var(--text-3);font-size:10px}.td-reach{position:relative}.reach-src{letter-spacing:.06em;pointer-events:none;border-radius:3px;padding:1px 4px;font-size:8px;font-weight:900;line-height:1.4;position:absolute;top:3px;left:5px}.reach-src.tgi{color:#00e5a0;background:#00e5a026;border:1px solid #00e5a040}.reach-src.manual{color:#ff9f38;background:#ff9f3826;border:1px solid #ff9f3840}.td-reach input.is-tgi{color:var(--green);border-color:#00e5a040;padding-top:10px}.td-reach input.is-manual{color:var(--orange);border-color:#ff9f3840;padding-top:10px}.model-badge{letter-spacing:.05em;border-radius:var(--r-full);color:var(--purple);background:#b975ff1f;border:1px solid #b975ff40;padding:2px 7px;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:800}.td-diag{background:var(--diag-bg);border-color:var(--diag-bd);padding:4px 6px}.td-overlap{background:var(--overlap-bg);border-color:var(--overlap-bd);padding:4px 6px}.td-mirror{background:var(--mirror-bg);text-align:right;color:var(--text-3);padding:4px 8px;font-family:JetBrains Mono,monospace;font-size:10.5px}.td-diag input,.td-overlap input{border-radius:var(--r-xs);width:100%;height:30px;color:var(--text);text-align:right;transition:all var(--dur) var(--ease);background:0 0;border:1px solid #0000;outline:none;padding:0 8px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600}.td-diag input{color:var(--gold);font-weight:700}.td-diag input:focus{background:#ffc4381a;border-color:#ffc43859;box-shadow:0 0 0 3px #ffc43812}.td-overlap input:focus{background:#ff52521a;border-color:#ff525259;box-shadow:0 0 0 3px #ff525212}.td-diag input::placeholder,.td-overlap input::placeholder{color:var(--text-3);font-size:10px}.table-empty{text-align:center;color:var(--text-3);padding:48px 24px;font-size:12px;line-height:2}.table-empty-icon{opacity:.5;margin-bottom:8px;font-size:32px}.ur-panel{border:1px solid var(--border-md);border-radius:var(--r-xl);background:linear-gradient(#0a1626f7,#08101cfa);padding:14px 18px 12px}.ur-head-row{align-items:center;gap:10px;margin-bottom:10px;display:flex}.ur-head-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);white-space:nowrap;align-items:center;gap:6px;min-width:110px;font-size:10px;font-weight:900;display:flex}.ur-head-label:before{content:"";background:var(--green);border-radius:50%;flex-shrink:0;width:6px;height:6px}.ur-pct-badge{color:var(--green);background:var(--green-d);border-radius:var(--r-full);border:1px solid #00e5a033;margin-left:auto;padding:2px 10px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700}.ur-track{border-radius:var(--r-xs);border:1px solid var(--border);background:#ffffff0a;height:22px;margin-bottom:6px;display:flex;overflow:hidden}.ur-seg{height:100%;transition:width .4s var(--ease);position:relative}.ur-seg:first-child{border-radius:var(--r-xs) 0 0 var(--r-xs)}.ur-seg:last-child{border-radius:0 var(--r-xs) var(--r-xs) 0}.ur-ticks{color:var(--text-3);justify-content:space-between;margin-bottom:8px;padding:0 1px;font-family:JetBrains Mono,monospace;font-size:8.5px;display:flex}.ur-legend{flex-wrap:wrap;gap:8px 16px;margin-top:4px;display:flex}.ur-legend-item{color:var(--text-2);align-items:center;gap:5px;font-size:10px;font-weight:600;display:flex}.ur-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.kpi-strip{border:1px solid var(--border-md);border-radius:var(--r-xl);background:linear-gradient(#0a1626f7,#08101cfa);grid-template-columns:1fr repeat(4,auto);gap:0;min-height:90px;display:grid;overflow:hidden}.kpi-hero{border-right:1px solid var(--border);background:radial-gradient(80% 120% at 80%,#1eb8ff0d,#0000);flex-direction:column;justify-content:center;gap:4px;padding:16px 22px;display:flex;position:relative;overflow:hidden}.kpi-hero:after{content:"";background:linear-gradient(180deg, var(--blue), #0070c0);border-radius:0 2px 2px 0;width:3px;position:absolute;top:0;bottom:0;left:0}.kpi-hero-label{text-transform:uppercase;letter-spacing:.12em;color:var(--blue);opacity:.8;align-items:center;gap:6px;font-size:9px;font-weight:900;display:flex}.kpi-hero-number{letter-spacing:-.04em;color:#eaf4ff;font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;font-size:clamp(24px,3vw,42px);font-weight:900;line-height:1;display:flex}.kpi-hero-number .unit{color:var(--blue);letter-spacing:0;font-size:.42em;font-weight:700}.kpi-hero-chips{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.kpi-chip{border-radius:var(--r-full);align-items:center;gap:4px;padding:2px 8px;font-size:9.5px;font-weight:700;display:inline-flex}.kpi-chip.reach{color:#80d4ff;background:#1eb8ff1a;border:1px solid #1eb8ff33}.kpi-chip.rand{background:var(--green-d);color:#6df5c2;border:1px solid #00e5a033}.kpi-chip.unreach{color:var(--text-3);border:1px solid var(--border);background:#ffffff0a}.kpi-hero-waiting{color:#ff525299;align-items:center;gap:6px;font-size:11px;font-weight:700;display:flex}.kpi-box{border-right:1px solid var(--border);min-width:160px;transition:background var(--dur);flex-direction:column;justify-content:center;gap:3px;padding:16px 22px;display:flex;position:relative}.kpi-box:last-child{border-right:none}.kpi-box:hover{background:#1eb8ff08}.kpi-box-label{text-transform:uppercase;letter-spacing:.12em;color:var(--text-3);margin-bottom:2px;font-size:8.5px;font-weight:900}.kpi-box-value{letter-spacing:-.03em;transition:all .3s var(--ease);font-family:JetBrains Mono,monospace;font-size:clamp(18px,2.2vw,28px);font-weight:700;line-height:1.1}.kpi-box-sub{color:var(--text-3);margin-top:1px;font-size:9px}.kpi-box.dup .kpi-box-value{color:#80d4ff}.kpi-box.rand .kpi-box-value{color:#6df5c2}.kpi-box.trps .kpi-box-value{color:var(--orange)}.kpi-box.freq .kpi-box-value{color:var(--purple)}.kpi-box.dup:after,.kpi-box.rand:after{content:"";opacity:.5;border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:0;left:18px;right:18px}.kpi-box.dup:after{background:var(--blue)}.kpi-box.rand:after{background:var(--green)}.kpi-box.dup{border:none;border-left:1px solid #1eb8ff40;border-right:1px solid #1eb8ff40;margin-top:-1px;margin-bottom:-1px}.kpi-box.rand{border:none;border-left:1px solid #00e5a038;border-right:1px solid #00e5a038;margin-top:-1px;margin-bottom:-1px}footer{border-top:1px solid var(--border);background:#060c16f2;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 18px;display:flex}footer span{color:var(--text-3);font-family:JetBrains Mono,monospace;font-size:9.5px}.modal-backdrop{z-index:900;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000bf;justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0}.modal-backdrop.visible{display:flex}.modal{border-radius:var(--r-xl);border:1px solid var(--border-md);width:min(640px,100%);box-shadow:var(--shadow-lg);animation:modal-in .22s var(--ease);background:linear-gradient(#0c182afc,#08101efc);flex-direction:column;gap:16px;padding:24px;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-title{letter-spacing:-.02em;align-items:center;gap:8px;font-size:14px;font-weight:900;display:flex}.modal-close{border:1px solid var(--border);color:var(--text-2);border-radius:var(--r-xs);cursor:pointer;width:26px;height:26px;transition:all var(--dur) var(--ease);background:#ffffff0f;justify-content:center;align-items:center;font-size:13px;display:flex}.modal-close:hover{color:var(--red);background:#ff52521f;border-color:#ff52524d}.modal-desc{color:var(--text-2);font-size:11px;line-height:1.8}.modal-desc code{color:var(--blue);background:#1eb8ff1a;border-radius:4px;padding:1px 6px;font-family:JetBrains Mono,monospace;font-size:10px}.fmt-row{color:var(--text-2);align-items:center;gap:8px;font-size:11px;display:flex}.fmt-btn{border-radius:var(--r-full);border:1px solid var(--border);color:var(--text-2);cursor:pointer;transition:all var(--dur) var(--ease);background:0 0;padding:4px 12px;font-family:Inter,sans-serif;font-size:11px;font-weight:700}.fmt-btn.active{background:var(--blue-d);color:var(--blue);border-color:#1eb8ff66}.paste-area{resize:vertical;border:1px solid var(--border);border-radius:var(--r-md);width:100%;height:180px;color:var(--text);transition:border-color var(--dur);background:#ffffff08;outline:none;padding:12px;font-family:JetBrains Mono,monospace;font-size:10.5px;line-height:1.6}.paste-area:focus{border-color:#1eb8ff66}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.modal-feedback{border-radius:var(--r-sm);padding:8px 12px;font-size:11px;font-weight:700}.modal-feedback.ok{background:var(--green-d);color:#6df5c2;border:1px solid #00e5a033}.modal-feedback.err{background:var(--red-d);color:#ff9090;border:1px solid #ff525233}#authOverlay{z-index:9998;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.auth-spinner{border:2px solid #1eb8ff1f;border-top-color:var(--blue);border-radius:50%;width:28px;height:28px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-label{color:var(--text-3);letter-spacing:.06em;font-family:JetBrains Mono,monospace;font-size:10.5px}.user-chip{border-radius:var(--r-full);background:#1eb8ff0f;border:1px solid #1eb8ff29;align-items:center;gap:7px;max-width:200px;padding:3px 10px 3px 5px;overflow:hidden}.user-avatar{background:linear-gradient(135deg, var(--blue), #0070c0);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:9px;font-weight:900;display:flex}.user-name{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;font-weight:600;overflow:hidden}.btn-logout{color:var(--text-3);cursor:pointer;transition:color var(--dur);background:0 0;border:none;flex-shrink:0;padding:1px 3px;font-size:11px;line-height:1}.btn-logout:hover{color:var(--red)}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.88)}}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.mtx tbody tr{animation:fade-in .2s var(--ease) both}@media (width<=900px){.kpi-strip{grid-template-rows:auto;grid-template-columns:1fr}.kpi-box{border-right:none;border-top:1px solid var(--border)}.proj-strip{flex-direction:column;height:auto}.proj-field{border-right:none;border-bottom:1px solid var(--border);width:100%}.proj-actions{padding:8px 14px}}
