.visits-page{display:flex;flex-direction:column;min-height:0}.visits-head{padding:4px 0 14px}.visits-h1{margin:0;font-size:var(--fs-2xl);font-weight:650;color:var(--text-1)}.visits-sub{margin:4px 0 0;font-size:var(--fs-md);color:var(--text-3)}.visits-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:12px}.visits-switch{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2)}.visits-switch-end{margin-left:auto}.visits-switch-btn{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;border:1px solid transparent;padding:4px 10px;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:550;color:var(--text-3);cursor:pointer}.visits-switch-btn:hover:not(:disabled){color:var(--text-1)}.visits-switch-btn.is-active{background:var(--primary-soft);color:var(--primary-strong);border-color:var(--primary-border)}.visits-note{display:flex;gap:7px;align-items:flex-start;padding:9px 12px;font-size:var(--fs-sm);line-height:1.55;color:var(--text-3);background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-md)}.visits-note svg{flex:none;margin-top:2px;opacity:.8}.visits-offbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;padding:9px 12px;font-size:var(--fs-sm);color:var(--warning);background:var(--warning-soft);border:1px solid var(--warning-border);border-radius:var(--radius-md)}.visits-offbar svg{flex:none}.visits-offbar a{margin-left:auto;color:var(--primary);font-weight:600}.visits-trunc{display:flex;gap:7px;align-items:flex-start;margin:0 0 11px;padding:8px 10px;border-radius:10px;font-size:var(--fs-sm);line-height:1.5;color:var(--text-2);background:var(--warning-soft);border:1px solid var(--warning-border)}.visits-trunc svg{flex:none;margin-top:1px;color:var(--warning)}.visits-list{display:flex;flex-direction:column;gap:10px;padding:14px 0 24px}.visits-status{display:flex;align-items:center;justify-content:center;gap:8px;padding:44px 16px;font-size:var(--fs-md);color:var(--text-3)}.visits-spin{animation:visits-spin .9s linear infinite}@keyframes visits-spin{to{transform:rotate(1turn)}}.visits-empty{padding:44px 16px;text-align:center}.visits-empty b{display:block;font-size:var(--fs-lg);font-weight:600;color:var(--text-2)}.visits-empty em{display:block;margin-top:6px;font-style:normal;font-size:var(--fs-sm);line-height:1.6;color:var(--text-3)}.visits-card{display:grid;grid-template-columns:112px 1fr;grid-gap:13px;gap:13px;width:100%;padding:11px;text-align:left;font:inherit;color:inherit;background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-md);cursor:pointer}.visits-card:hover{background:var(--ink-3);border-color:var(--hairline-strong)}.visits-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.visits-shot{width:112px;height:74px;object-fit:cover;border-radius:var(--radius-sm);background:var(--ink-3)}.visits-shot.is-placeholder{background:repeating-linear-gradient(115deg,var(--ink-3) 0 8px,var(--ink-2) 8px 16px);border:1px solid var(--hairline)}.visits-card-body{min-width:0;display:flex;flex-direction:column;gap:6px}.visits-card-top{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.visits-card-title{font-size:var(--fs-lg);font-weight:620;color:var(--text-1)}.visits-card-title.is-anon{color:var(--text-2)}.visits-card-when{font-size:var(--fs-sm);color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.visits-card-path{display:flex;align-items:center;gap:4px;flex-wrap:wrap;min-width:0;font-size:var(--fs-sm);color:var(--text-2)}.visits-card-camwrap{display:inline-flex;align-items:center;gap:4px;min-width:0}.visits-card-arrow{color:var(--text-4);flex:none}.visits-card-cam{display:inline-block;max-width:150px;padding:2px 7px;border-radius:999px;background:var(--ink-4);border:1px solid var(--hairline);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visits-card-tags{display:flex;gap:6px;flex-wrap:wrap}.visits-tag{display:inline-flex;align-items:center;gap:4px;padding:1.5px 7px;border-radius:999px;font-size:var(--fs-xs);font-weight:560;line-height:1.6;white-space:nowrap;border:1px solid transparent}.visits-tag.is-night{background:rgba(148,163,184,.14);color:#94a3b8;border-color:rgba(148,163,184,.36)}.visits-tag.is-multi{background:var(--primary-soft);color:var(--primary-strong);border-color:var(--primary-border)}.visits-tag.is-dwell{background:var(--ink-4);color:var(--text-2);border-color:var(--hairline)}.visits-tag.is-sug{background:var(--warning-soft);color:var(--warning);border-color:var(--warning-border)}.visits-tag.is-face{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-border)}.visits-modal{position:relative;display:flex;flex-direction:column;width:100%;max-width:min(94vw,560px);max-height:min(88vh,800px);background:var(--ink-1);border:1px solid var(--hairline);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.4);overflow:hidden}.visits-modal-head{display:flex;align-items:flex-start;gap:12px;padding:15px 16px;border-bottom:1px solid var(--hairline)}.visits-modal-head-main{flex:1 1;min-width:0}.visits-modal-title{font-size:var(--fs-xl);font-weight:650;color:var(--text-1)}.visits-modal-sub{margin-top:2px;font-size:var(--fs-sm);color:var(--text-3)}.visits-who{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--hairline)}.visits-who-hint{font-size:var(--fs-sm);color:var(--text-3)}.visits-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;border:1px solid var(--hairline);background:var(--ink-3);color:var(--text-2)}.visits-btn:disabled{opacity:.55;cursor:not-allowed}.visits-btn.is-primary{border-color:var(--primary-border);background:var(--primary-soft);color:var(--primary-strong)}.visits-btn.is-warn{border-color:var(--warning-border);background:var(--warning-soft);color:var(--warning)}.visits-btn.is-ghost{background:transparent;border-color:var(--hairline-strong)}.visits-sugg{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;margin:12px 16px 0;padding:10px 12px;background:var(--warning-soft);border:1px solid var(--warning-border);border-left-width:3px;border-radius:var(--radius-md)}.visits-sugg-txt{flex:1 1;min-width:180px;font-size:var(--fs-md);line-height:1.55;color:#f5d08a}.visits-sugg-txt em{display:block;margin-top:2px;font-style:normal;font-size:var(--fs-xs);color:#b9924a}.visits-sugg-acts{display:flex;gap:6px;flex:none;flex-wrap:wrap;justify-content:flex-end}.visits-warn{display:flex;gap:7px;align-items:center;margin:12px 16px 0;padding:9px 12px;font-size:var(--fs-sm);line-height:1.5;color:var(--text-2);background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-md)}.visits-warn svg{flex:none;opacity:.85}.visits-warn:has(.visits-warn-src){align-items:flex-start}.visits-warn:has(.visits-warn-src) svg{margin-top:2px}.visits-warn-src{display:block;margin-top:2px;font-style:normal;font-size:var(--fs-xs);color:var(--text-3)}.visits-story{display:flex;gap:8px;align-items:flex-start;margin:12px 16px 0;padding:10px 12px;background:var(--ink-2);border:1px solid var(--hairline);border-left:3px solid var(--accent,#2f6feb);border-radius:var(--radius-md)}.visits-story svg{flex:none;margin-top:2px;opacity:.85}.visits-story-txt{margin:0;font-size:var(--fs-md);line-height:1.55;color:var(--fg,#1f2430)}.visits-story-hint{font-size:var(--fs-sm);line-height:1.5;color:var(--text-2)}.visits-story:has(>button){padding:8px 10px}.visits-scroll{flex:1 1;min-height:0;overflow-y:auto;padding:12px 16px 16px}.visits-seg{display:grid;grid-template-columns:14px 1fr;grid-column-gap:11px;column-gap:11px;padding:0;border:0;background:none;border-radius:0}.visits-rail{position:relative;display:flex;flex-direction:column;align-items:center}.visits-rail i{width:9px;height:9px;border-radius:50%;background:currentColor;flex:none;margin-top:6px;box-shadow:0 0 0 3px var(--ink-1)}.visits-rail b{flex:1 1;width:2px;margin-top:2px;background:currentColor}.visits-seg-card{display:grid;grid-template-columns:88px 1fr;grid-gap:11px;gap:11px;margin-bottom:2px;padding:9px 11px;background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-md)}.visits-seg-card .visits-shot{width:88px;height:58px}.visits-seg-meta{min-width:0}.visits-seg-top{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.visits-seg-cam{font-size:var(--fs-lg);font-weight:600;color:currentColor}.visits-seg-time{font-size:var(--fs-sm);color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.visits-seg-facts{margin-top:4px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.visits-seg-summary{flex:0 0 100%;font-size:var(--fs-md);line-height:1.45;color:var(--fg,#1f2430)}.visits-seg-fact{gap:4px;font-size:var(--fs-sm);color:var(--text-3)}.visits-seg-fact,.visits-seg-ok{display:inline-flex;align-items:center}.visits-seg-ok{gap:3px;font-size:var(--fs-xs);font-weight:520;color:#4c8f76}.visits-seg-ok:before{content:"✓"}.visits-jump{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--primary);white-space:nowrap}.visits-hop{display:grid;grid-template-columns:14px 1fr;grid-column-gap:11px;column-gap:11px;align-items:center;min-height:40px}.visits-hop-rail{display:flex;justify-content:center;height:100%}.visits-hop-rail span{width:0;height:100%;border-left:2px dashed rgba(245,158,11,.5)}.visits-hop-txt{gap:7px;font-size:var(--fs-sm);color:var(--text-3)}.visits-chip,.visits-hop-txt{display:inline-flex;align-items:center}.visits-chip{gap:4px;padding:1.5px 8px;border-radius:999px;font-size:var(--fs-xs);font-weight:640;line-height:1.7;border:1px dashed rgba(245,158,11,.55);background:rgba(245,158,11,.07);color:#c9973f}.visits-hop.is-confirmed .visits-hop-rail span{border-left-style:solid;border-color:rgba(16,185,129,.55)}.visits-hop.is-confirmed .visits-chip{border-style:solid;border-color:var(--ok-border);background:var(--ok-soft);color:var(--ok)}.visits-picker-overlay{z-index:60}.visits-picker{display:flex;flex-direction:column;width:100%;max-width:min(94vw,420px);max-height:min(82vh,620px);background:var(--ink-1);border:1px solid var(--hairline);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.45);overflow:hidden}.visits-picker-search{padding:10px 16px;border-bottom:1px solid var(--hairline)}.visits-picker-search input{width:100%;padding:7px 10px;font:inherit;font-size:var(--fs-md);color:var(--text-1);background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-sm)}.visits-picker-list{flex:1 1;min-height:0;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:4px}.visits-picker-row{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;font:inherit;font-size:var(--fs-md);text-align:left;color:var(--text-1);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.visits-picker-row:hover:not(:disabled){background:var(--ink-3);border-color:var(--hairline)}.visits-picker-row.is-current{background:var(--primary-soft);border-color:var(--primary-border);color:var(--primary-strong)}.visits-picker-row:disabled{opacity:.5;cursor:not-allowed}.visits-picker-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visits-picker-row svg:last-child{color:var(--text-4)}.visits-picker-foot{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:10px 16px;font-size:var(--fs-sm);color:var(--text-3);background:var(--ink-2);border-top:1px solid var(--hairline)}.visits-picker-foot svg{flex:none}.visits-picker-foot a{margin-left:auto;color:var(--primary);font-weight:600}.visits-diag-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:10px;gap:10px}.visits-diag-kpi{padding:10px 12px;background:var(--ink-2);border:1px solid var(--hairline);border-radius:var(--radius-md)}.visits-diag-kpi .k{font-size:var(--fs-xs);color:var(--text-3)}.visits-diag-kpi .v{margin-top:3px;font-size:var(--fs-2xl);font-weight:640;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-1)}.visits-diag-kpi .n{margin-top:1px;font-size:var(--fs-xs);color:var(--text-4);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.visits-diag-kpi.is-bad .v{color:var(--rec)}.visits-diag-kpi.is-good .v{color:var(--ok)}.visits-diag-table{width:100%;border-collapse:collapse;margin-top:13px;font-size:var(--fs-sm)}.visits-diag-table th{text-align:left;font-weight:560;color:var(--text-3)}.visits-diag-table td,.visits-diag-table th{padding:5px 8px;border-bottom:1px solid var(--hairline)}.visits-diag-table td{color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.visits-diag-table td.is-warn{color:var(--warning)}.visits-diag-sub{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:18px 0 7px;font-size:var(--fs-sm);font-weight:600;color:var(--text-2)}.visits-diag-sub em{font-style:normal;font-weight:400;color:var(--text-4);font-size:var(--fs-xs)}.visits-diag-caveat{display:flex;gap:7px;align-items:flex-start;margin:0 0 7px;padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--hairline);background:rgba(148,163,184,.05);font-size:var(--fs-xs);line-height:1.6;color:var(--text-3)}.visits-diag-caveat>svg{flex:none;margin-top:2px}.visits-diag-caveat.is-warn{border-color:var(--warning-border);background:var(--warning-soft);color:var(--warning)}.visits-diag-caveat-act{margin-left:6px;color:inherit;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}.visits-diag-progress-col{width:210px}.visits-diag-pair{color:var(--text-1);white-space:nowrap}.visits-diag-prog{display:flex;align-items:center;gap:8px;min-width:0}.visits-diag-prog .track{flex:1 1;min-width:48px;height:5px;border-radius:3px;background:var(--ink-4);overflow:hidden}.visits-diag-prog .track i{display:block;height:100%;background:var(--text-4)}.visits-diag-prog.is-on .track i{background:var(--ok)}.visits-diag-prog .num,.visits-diag-state{white-space:nowrap;color:var(--text-3);font-size:var(--fs-xs)}.visits-diag-state{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:9px;border:1px solid var(--hairline-strong)}.visits-diag-state.is-on{border-color:var(--ok-border);color:var(--ok);background:var(--ok-soft)}.visits-diag-more{margin-top:8px;padding:2px 0;border:0;background:none;color:var(--text-3);font-size:var(--fs-xs);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.visits-diag-more:hover{color:var(--primary)}@media (max-width:640px){.visits-card{grid-template-columns:84px 1fr}.visits-shot{width:84px;height:56px}.visits-switch-end{margin-left:0}}.visits-group{display:flex;flex-direction:column}.visits-group-head{grid-template-columns:112px 1fr auto;align-items:center}.visits-group-chev{flex:none;color:var(--text-3);transition:transform .16s ease}.visits-group.is-open .visits-group-chev{transform:rotate(180deg)}.visits-group-body{display:flex;flex-direction:column;gap:2px;margin-top:-1px;padding:6px 12px 10px 136px;background:var(--ink-2);border:1px solid var(--hairline);border-top:0;border-radius:0 0 var(--radius-md) var(--radius-md)}.visits-grouprow{display:flex;align-items:center;gap:12px;min-width:0;padding:6px 8px;border:0;border-radius:8px;background:transparent;color:var(--text-1);font:inherit;text-align:left;cursor:pointer}.visits-grouprow:hover{background:var(--hairline)}.visits-grouprow-time{flex:none;font-size:var(--fs-sm);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.visits-grouprow-cams{flex:1 1;min-width:0;font-size:var(--fs-sm);color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visits-grouprow-dwell{flex:none;font-size:var(--fs-sm);color:var(--text-3)}.visits-sim{margin-top:16px;padding-top:14px;border-top:1px dashed var(--hairline)}.visits-sim-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}.visits-sim-head b{font-size:var(--fs-md);font-weight:600;color:var(--text-1)}.visits-sim-head em{font-style:normal;font-size:var(--fs-sm);color:var(--text-3)}.visits-simrow{display:flex;align-items:center;gap:12px;min-width:0;margin-bottom:8px;padding:9px 11px;background:var(--ink-2);border:1px solid var(--hairline);border-left-width:3px;border-radius:var(--radius-md)}.visits-simrow.is-strong{border-left-color:#4c8f76}.visits-simrow.is-moderate{border-left-color:rgba(245,158,11,.75)}.visits-simrow.is-weak{border-left-color:var(--hairline)}.visits-simrow .visits-shot{width:84px;flex:none}.visits-simmeta{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.visits-simcams{font-size:var(--fs-md);font-weight:600;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visits-simmeta em{font-style:normal;font-size:var(--fs-sm);color:var(--text-2)}.visits-simscore{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:3px}.visits-simbar{display:block;width:64px;height:4px;border-radius:2px;background:var(--hairline);overflow:hidden}.visits-simbar>span{display:block;height:100%;border-radius:2px;background:currentColor}.visits-simrow.is-strong .visits-simbar{color:#4c8f76}.visits-simrow.is-moderate .visits-simbar{color:rgba(245,158,11,.85)}.visits-simrow.is-weak .visits-simbar{color:var(--text-3)}.visits-simnum{font-size:var(--fs-sm);font-weight:600;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.visits-simband{font-size:var(--fs-xs);color:var(--text-3)}.visits-sim-foot{margin:4px 0 0;font-size:var(--fs-sm);line-height:1.55;color:var(--text-3)}@media (max-width:640px){.visits-group-body{padding-left:14px}.visits-simrow{flex-wrap:wrap}.visits-simscore{flex-direction:row;align-items:center;gap:6px}}.visits-clear-btn{display:inline-flex;align-items:center;gap:5px;margin-left:auto;padding:5px 11px;border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--text-3);font:500 var(--fs-md) var(--font);cursor:pointer;transition:color .12s,border-color .12s}.visits-clear-btn:hover:not(:disabled){color:#d9534f;border-color:rgba(217,83,79,.4)}.visits-clear-btn:disabled{opacity:.5;cursor:default}.visits-cardwrap,.visits-group{position:relative}.visits-check{position:absolute;z-index:2;left:9px;top:9px;width:18px;height:18px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--hairline);border-radius:5px;background:rgba(0,0,0,.35);color:#fff;opacity:0;cursor:pointer;transition:opacity .12s,background .12s,border-color .12s}.visits-cardwrap:hover .visits-check,.visits-check:focus-visible,.visits-group:hover .visits-check{opacity:1}.visits-cardwrap.is-checked .visits-check,.visits-group.is-checked .visits-check{opacity:1;background:var(--accent,#2f6feb);border-color:transparent}.visits-cardwrap.is-checked .visits-card,.visits-group.is-checked .visits-group-head{border-color:var(--accent,#2f6feb)}.visits-check-group{top:13px}.visits-clear-btn.is-danger{margin-left:auto;color:#d9534f;border-color:rgba(217,83,79,.42)}.visits-clear-btn.is-danger+.visits-clear-btn{margin-left:6px}.idr{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;font-size:var(--fs-sm);line-height:1.6}.idr-tier{flex:none;padding:.5px 7px;border-radius:999px;border:1px solid transparent;font-size:var(--fs-xs);font-weight:600;line-height:1.7;white-space:nowrap}.idr-tier.is-confirmed{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-border)}.idr-tier.is-likely{background:var(--ink-4);color:var(--text-2);border-color:var(--hairline)}.idr-head{color:var(--text-1);font-weight:550}.idr-ev{color:var(--text-3);font-size:var(--fs-sm)}.idr-ev-label{font-style:normal;color:var(--text-3);opacity:.8}.idr-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.idr-btn{padding:3px 10px;font-size:var(--fs-sm)}.idr-spin{animation:vms-spin .8s linear infinite}.idr-block{margin:12px 16px 0;padding:9px 12px;border-radius:var(--radius-md);background:var(--ink-3)}.ddl,.idr-block{border:1px solid var(--hairline)}.ddl{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;padding:10px 14px;background:var(--ink-1);border-radius:var(--radius-md)}.ddl-signal{border-left:3px solid #d9930d}.ddl-calm{border-left:3px solid var(--hairline)}.ddl-nav{gap:2px;flex:none}.ddl-nav,.ddl-navbtn{display:inline-flex;align-items:center}.ddl-navbtn{padding:2px;border:0;background:none;color:var(--text-3);cursor:pointer;border-radius:6px}.ddl-navbtn:hover:not(:disabled){color:var(--accent,#2f6feb);background:var(--ink-2)}.ddl-navbtn:disabled{opacity:.3;cursor:default}.ddl-title{flex:none;min-width:5ch;text-align:center;font-size:var(--fs-sm);font-weight:800;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}.ddl-title-btn{border:0;background:none;cursor:pointer;color:var(--accent,#2f6feb);font:inherit;font-size:var(--fs-sm);font-weight:800}.ddl-text{margin:0;min-width:12ch;flex:1 1 32ch;font-size:var(--fs-lg);line-height:1.6;color:var(--fg,#1f2430)}.ddl-hint{flex:1 1 auto;font-size:var(--fs-md);color:var(--text-3)}.ddl-tail{gap:10px;margin-left:auto}.ddl-flag,.ddl-tail{display:inline-flex;align-items:center}.ddl-flag{gap:4px;font-size:var(--fs-xs);color:var(--text-2)}.ddl-flag a{text-decoration:underline}.ddl-flag a,.ddl-more{color:var(--accent,#2f6feb)}.ddl-more{font-weight:700}.ddl-gen,.ddl-more{font-size:var(--fs-sm)}.ddl-gen{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border:1px solid var(--hairline);border-radius:var(--radius-sm,8px);background:none;color:var(--text-2);font-weight:600;cursor:pointer}.ddl-gen:hover:not(:disabled){border-color:var(--accent,#2f6feb);color:var(--accent,#2f6feb)}.ddl-gen:disabled{opacity:.5;cursor:default}.ddl-spin{animation:ddl-spin .9s linear infinite}@keyframes ddl-spin{to{transform:rotate(1turn)}}.files-page{display:flex;flex-direction:column;gap:20px}.files-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px}.files-header h1{margin:0;font-size:var(--fs-2xl);font-weight:650;color:var(--text-1)}.files-subtitle{margin:6px 0 0;font-size:var(--fs-md);line-height:1.6;color:var(--text-3)}.files-tabs{display:inline-flex;gap:2px;padding:4px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2)}.files-tab{-moz-appearance:none;appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;gap:7px;background:transparent;border:1px solid transparent;padding:7px 14px;border-radius:var(--radius-sm);font-size:var(--fs-md);font-weight:550;color:var(--text-3);cursor:pointer;transition:background-color .18s ease,color .18s ease}.files-tab:hover{background:var(--ink-3);color:var(--text-1)}.files-tab.is-active{background:var(--primary-soft);color:var(--primary-strong);border-color:var(--primary-border)}.files-section{display:flex;flex-direction:column;gap:16px}.files-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.files-filters input[type=date],.files-filters select{height:34px;box-sizing:border-box;padding:0 10px;border-radius:var(--radius-sm);border:1px solid var(--hairline);background:var(--ink-2);color:var(--text-1);font-size:var(--fs-md);line-height:1;vertical-align:middle}.files-filter-date{display:inline-flex;flex-direction:row;align-items:center;gap:8px;height:34px;font-size:var(--fs-md);color:var(--text-3);white-space:nowrap}.files-bulkbar{display:flex;align-items:center;gap:14px;padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2)}.files-bulk-all{display:inline-flex;flex-direction:row;align-items:center;gap:7px;font-size:var(--fs-md);color:var(--text-2);cursor:pointer}.files-bulk-count{font-size:var(--fs-sm);color:var(--text-3);margin-right:auto}.files-empty{padding:40px 0;text-align:center;color:var(--text-3);font-size:var(--fs-md)}.files-group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.files-group{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2);overflow:hidden}.files-group.is-selected{border-color:var(--primary-border);box-shadow:inset 0 0 0 1px var(--primary-border)}.files-group-row{display:flex;align-items:center;gap:10px;padding:12px 14px}.files-group-expand{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-3);cursor:pointer}.files-group-expand:hover{background:var(--ink-3);color:var(--text-1)}.files-group-main{display:flex;flex-direction:row;align-items:baseline;gap:10px;min-width:0;flex:1 1}.files-group-name{font-size:var(--fs-lg);font-weight:600;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-group-date{white-space:nowrap;flex-shrink:0}.files-group-date,.files-group-meta{font-size:var(--fs-sm);color:var(--text-3)}.files-group-meta{display:flex;align-items:center;gap:14px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.files-group-size{font-weight:650;color:var(--text-1)}.files-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;font-size:var(--fs-xs);font-weight:600;border:1px solid var(--hairline)}.files-badge.is-cloud{color:var(--primary-strong);background:var(--primary-soft);border-color:var(--primary-border)}.files-badge.is-local{color:var(--text-2);background:var(--ink-3)}.files-seg-list{list-style:none;margin:0;padding:0 14px 8px 46px;display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--hairline)}.files-seg-pager{padding:0 14px 10px 46px}.files-seg-pager .files-pager{justify-content:flex-start;padding:0}.files-seg{display:flex;align-items:center;gap:12px;padding:7px 8px;border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--text-2)}.files-seg:hover{background:var(--ink-3)}.files-seg.is-selected{background:var(--primary-soft)}.files-seg-time{color:var(--text-1)}.files-seg-dur,.files-seg-size,.files-seg-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.files-seg-dur,.files-seg-size{color:var(--text-3)}.files-seg-size{margin-left:auto}.files-snap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-gap:12px;gap:12px}.files-snap-card{position:relative;display:flex;flex-direction:column;padding:0;border:1px solid var(--hairline);border-radius:12px;overflow:hidden;background:var(--ink-2);cursor:pointer;text-align:left;transition:border-color .18s ease,box-shadow .18s ease}.files-snap-card.is-selected,.files-snap-card:hover{border-color:var(--primary-border)}.files-snap-card.is-selected{box-shadow:0 0 0 2px var(--primary-border)}.files-snap-card img{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--ink-1);display:block}.files-snap-check{position:absolute;top:8px;left:8px;z-index:1}.files-snap-check input{width:18px;height:18px}.files-snap-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px}.files-snap-type{font-size:var(--fs-sm);font-weight:600;color:var(--text-1);text-transform:capitalize}.files-snap-time{font-size:var(--fs-xs);color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.files-pager{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px 0 4px}.files-pager-info{font-size:var(--fs-md);color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:64px;text-align:center}.files-bycam-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.files-bycam-row{display:grid;grid-template-columns:minmax(120px,1.4fr) 2fr auto auto;align-items:center;grid-gap:14px;gap:14px;font-size:var(--fs-md)}.files-bycam-name{color:var(--text-1);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-bycam-bar{height:8px;border-radius:999px;background:var(--ink-3);overflow:hidden}.files-bycam-bar-fill{display:block;height:100%;border-radius:999px;background:var(--primary-strong)}.files-bycam-count{font-size:var(--fs-sm);color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.files-bycam-size{font-weight:650;color:var(--text-1);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;min-width:72px}.files-preview-backdrop{position:fixed;inset:0;z-index:9100;display:flex;align-items:center;justify-content:center;padding:28px;background:rgba(4,6,10,.85);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.files-preview-body{position:relative;display:flex;flex-direction:column;gap:10px;max-width:min(1100px,95vw);max-height:90vh}.files-preview-body img,.files-preview-body video{max-width:100%;max-height:82vh;border-radius:10px;background:#000;object-fit:contain}.files-preview-close{position:absolute;top:-14px;right:-14px;width:36px;height:36px;border-radius:999px;border:1px solid var(--hairline);background:var(--ink-3);color:var(--text-1);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:1}.files-preview-close:hover{background:var(--ink-4)}.files-preview-cap{display:flex;gap:10px;align-items:center;justify-content:center;font-size:var(--fs-md);color:var(--text-3)}.files-preview-cap .files-preview-type{font-weight:600;color:var(--text-1);text-transform:capitalize}.files-seg-play{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-3);cursor:pointer}.files-seg-play:hover{background:var(--ink-4);color:var(--primary-strong)}.files-snap-imgbtn{display:block;width:100%;padding:0;border:none;background:transparent;cursor:pointer}@media (max-width:640px){.files-group-row{flex-wrap:wrap}.files-group-meta{width:100%;margin-left:0;justify-content:flex-start}.files-bycam-row{grid-template-columns:1fr auto;row-gap:6px}.files-bycam-bar{grid-column:1/-1;order:3}}.settings-section-head{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.db-loading{gap:8px;color:var(--text-2)}.db-current-card,.db-loading{display:flex;align-items:center}.db-current-card{gap:12px}.db-current-icon{width:44px;height:44px;border-radius:10px;background:var(--ink-3);color:var(--text-1);display:flex;align-items:center;justify-content:center;flex:none}.db-current-info{display:flex;flex-direction:column;gap:2px;flex:1 1;min-width:0}.db-current-info strong{font-size:var(--fs-xl)}.db-conn-form{display:flex;flex-direction:column;gap:12px}.db-conn-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px 16px;gap:12px 16px}@media (max-width:560px){.db-conn-grid{grid-template-columns:1fr}}.db-conn-test-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.db-conn-test-ok{color:var(--success,#16a34a)}.db-conn-test-error,.db-conn-test-ok{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-md)}.db-conn-test-error{color:var(--danger,#dc2626)}.db-overwrite-row{display:flex;align-items:center;gap:8px;font-size:var(--fs-lg);color:var(--text-1);cursor:pointer}.db-overwrite-row input{width:16px;height:16px}.db-warning-box{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:8px;border:1px solid color-mix(in srgb,#f59e0b 40%,transparent);background:color-mix(in srgb,#f59e0b 12%,transparent);color:var(--text-1);font-size:var(--fs-md);line-height:1.5}.db-warning-box svg{flex:none;margin-top:2px;color:#f59e0b}.db-progress{display:flex;flex-direction:column;gap:8px}.db-progress-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-md);color:var(--text-2)}.db-progress-num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-1)}.db-running-warn{display:flex;align-items:center;gap:6px;margin-top:12px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.badge-success{color:var(--success,#16a34a);background:color-mix(in srgb,#16a34a 14%,transparent)}.badge-info{color:var(--accent,#2563eb);background:color-mix(in srgb,#2563eb 14%,transparent)}.training-shell{display:flex;flex-direction:column;gap:16px}.training-queue-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.training-queue-bar select{min-width:180px}.training-queue-list{display:flex;flex-direction:column;gap:6px}.training-queue-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-2);cursor:pointer;transition:border-color .15s,background-color .15s}.training-queue-row:hover{background:var(--ink-3);border-color:var(--hairline-strong)}.training-queue-thumb{flex:0 0 auto;width:96px;height:54px;border-radius:4px;overflow:hidden;background:var(--ink-0)}.training-queue-thumb img{width:100%;height:100%;object-fit:cover;display:block}.training-queue-row-body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:4px}.training-queue-row-title{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--text-1)}.training-queue-row-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:var(--fs-xs)}.training-queue-row-action{flex:0 0 auto;pointer-events:none}.training-workbench{position:fixed;inset:0;z-index:55;display:flex;flex-direction:column;background:var(--ink-1)}.training-wb-toolbar{flex:0 0 44px;display:flex;align-items:center;gap:12px;padding:0 10px;border-bottom:1px solid var(--hairline);background:var(--ink-2)}.training-wb-toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1}.training-wb-toolbar-center{display:flex;align-items:center;gap:6px;flex:0 0 auto}.training-wb-toolbar-right{display:flex;align-items:center;gap:6px;flex:1 1;justify-content:flex-end}.training-wb-toolbar .danger-btn,.training-wb-toolbar .primary-btn,.training-wb-toolbar .secondary-btn{padding:5px 10px;font-size:var(--fs-xs);white-space:nowrap}.training-wb-event-info{font-size:var(--fs-xs);color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.training-wb-progress{font-size:var(--fs-xs);color:var(--text-1);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.training-wb-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:var(--radius-sm);border:1px solid var(--hairline-strong);background:var(--ink-2);color:var(--text-2);cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}.training-wb-icon-btn:hover:not(:disabled){background:var(--ink-3);color:var(--text-1)}.training-wb-icon-btn:disabled{opacity:.4;cursor:default}.training-wb-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:rgba(255,255,255,.22);font-size:var(--fs-xs);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.training-wb-body{flex:1 1;display:flex;min-height:0}.training-wb-sidebar{flex:0 0 160px;display:flex;flex-direction:column;gap:8px;padding:8px;border-right:1px solid var(--hairline);background:var(--ink-2);overflow-y:auto}.training-wb-classes{display:flex;flex-direction:column;gap:2px}.training-wb-class{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-2);font-size:var(--fs-xs);cursor:pointer;text-align:left;transition:background-color .15s,color .15s,border-color .15s}.training-wb-class:hover{background:var(--ink-3);color:var(--text-1)}.training-wb-class.active{border-color:var(--primary);background:var(--primary-soft);color:var(--text-1)}.training-wb-class-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.training-wb-zoom{margin-top:auto;display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px solid var(--hairline)}.training-wb-zoom-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.training-wb-zoom-pct{flex:1 1;text-align:center;font-size:var(--fs-xs);color:var(--text-1);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.training-wb-fit-btn{width:100%;justify-content:center;padding:5px 8px;font-size:var(--fs-xs)}.training-wb-canvas{flex:1 1;position:relative;overflow:hidden;background:#1a1d21;min-width:0}.training-wb-stage{position:absolute;left:0;top:0;transform-origin:0 0;line-height:0}.training-wb-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-3);pointer-events:none}.training-wb-objects{flex:0 0 236px;display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--hairline);background:var(--ink-2)}.training-wb-objects.negative{opacity:.45;pointer-events:none}.training-wb-objects-header{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--hairline);font-size:var(--fs-xs);font-weight:600;color:var(--text-2)}.training-wb-objects-header .training-wb-icon-btn{margin-left:auto;width:24px;height:24px}.training-wb-objects-count{padding:1px 7px;border-radius:999px;background:var(--ink-3);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.training-wb-objects-list{flex:1 1;overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:2px}.training-wb-objects-empty{margin:12px 6px;font-size:var(--fs-xs);color:var(--text-3);line-height:1.6}.training-wb-object{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background-color .15s,border-color .15s,opacity .15s}.training-wb-object.hovered,.training-wb-object:hover{background:var(--ink-3)}.training-wb-object.selected{border-color:var(--primary);background:var(--primary-soft)}.training-wb-object.is-hidden{opacity:.45}.training-wb-object-idx{min-width:16px;text-align:right;font-size:var(--fs-xs);color:var(--text-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.training-wb-object-select{flex:1 1;min-width:0;padding:3px 4px;border-radius:var(--radius-sm);border:1px solid var(--hairline-strong);background:var(--ink-1);color:var(--text-1);font-size:var(--fs-xs);cursor:pointer}.training-wb-object-src{flex:none;padding:1px 5px;border-radius:3px;background:var(--ink-3);color:var(--text-3);font-size:var(--fs-2xs);font-weight:700;letter-spacing:.04em}.training-wb-object-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-3);cursor:pointer;transition:background-color .15s,color .15s}.training-wb-object-btn:hover{background:var(--ink-4,var(--ink-3));color:var(--text-1)}.training-wb-object-btn.danger:hover{color:var(--danger,#dc2626)}.training-wb-object-btn:disabled{opacity:.4;cursor:default}.training-wb-object-btn:disabled:hover{background:transparent;color:var(--text-3)}.training-wb-object-select:disabled{opacity:.55;cursor:default}.training-hidden-banner{position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:none;border-radius:999px;background:rgba(0,0,0,.72);color:rgba(255,255,255,.92);font-size:var(--fs-xs);cursor:pointer;white-space:nowrap}.training-hidden-banner:hover{background:rgba(0,0,0,.85)}@media (max-width:920px){.training-wb-objects{display:none}}.training-wb-help-root{position:absolute;inset:0;z-index:2;display:grid;place-items:center}.training-wb-help-backdrop{position:absolute;inset:0;border:none;background:rgba(0,0,0,.45);cursor:default}.training-wb-help{position:relative;z-index:1;width:min(360px,92vw);border:1px solid var(--hairline-strong);border-radius:var(--radius-md);background:var(--ink-2);box-shadow:0 24px 48px rgba(0,0,0,.5);padding:14px;display:flex;flex-direction:column;gap:10px}.training-wb-help-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.training-wb-help-header h5{margin:0;font-size:var(--fs-sm);color:var(--text-1)}.training-wb-help-rows{display:flex;flex-direction:column;gap:6px}.training-wb-help-row{display:flex;align-items:center;gap:10px;font-size:var(--fs-xs);color:var(--text-2)}.training-wb-kbd{flex:0 0 130px;font-family:var(--font-heading),monospace;font-size:var(--fs-xs);color:var(--text-1);background:var(--ink-1);border:1px solid var(--hairline);border-radius:4px;padding:2px 6px;text-align:center;white-space:nowrap}.training-wb-help-hint{margin:0;font-size:var(--fs-xs);color:var(--text-4)}.training-class-dot{width:9px;height:9px;border-radius:999px;flex:0 0 auto;display:inline-block}.training-class-key{font-family:var(--font-heading),monospace;font-size:var(--fs-2xs);color:var(--text-4);border:1px solid var(--hairline);border-radius:4px;padding:0 4px;line-height:1.4}.training-negative-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:rgba(0,0,0,.72);color:rgba(255,255,255,.95);font-size:var(--fs-sm);pointer-events:none;white-space:nowrap}.training-negative-active{border-color:var(--warning,#f59e0b)!important;color:var(--warning,#f59e0b)!important}.training-jobs-panel,.training-stats-tab{display:flex;flex-direction:column;gap:14px}.training-threshold-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--warning-border,rgba(245,158,11,.4));background:var(--warning-soft,rgba(245,158,11,.12));color:var(--text-1);font-size:var(--fs-sm)}.training-threshold-banner.ready{border-color:var(--success-border,rgba(52,211,153,.4));background:var(--success-soft,rgba(52,211,153,.12))}.training-negatives-hint{margin:0;padding:0 4px;color:var(--text-2);font-size:var(--fs-xs);line-height:1.5}.training-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px}.training-stat-tile{padding:14px;display:flex;flex-direction:column;gap:4px}.training-stat-tile.warn{border-color:var(--warning-border,rgba(245,158,11,.4))}.training-stat-value{font-size:var(--fs-2xl);font-weight:600;color:var(--text-1);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.training-stat-label{font-size:var(--fs-xs);color:var(--text-3)}.training-class-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:8px;gap:8px;padding:12px 14px}.training-class-stat{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--text-2)}.training-class-stat-count{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-1)}.training-annotation-list{display:flex;flex-direction:column;gap:6px;padding:10px 14px 14px}.training-annotation-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--hairline);border-radius:var(--radius-sm);font-size:var(--fs-sm)}.training-annotation-camera{color:var(--text-1);font-weight:500}.training-annotation-boxes{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.training-annotation-box-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;border:1px solid var(--hairline);font-size:var(--fs-xs);color:var(--text-2)}.training-annotation-row .danger-btn{margin-left:auto}.training-gpu-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--warning-border,rgba(245,158,11,.4));background:var(--warning-soft,rgba(245,158,11,.12));color:var(--text-1);font-size:var(--fs-sm)}.training-model-card{display:flex;flex-direction:column}.training-model-current{padding:12px 14px}.training-model-current,.training-model-stale{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.training-model-stale{padding:10px 14px 0}.training-activation-bar{display:flex;align-items:center;gap:8px;margin:0 14px;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--primary-border,rgba(59,130,246,.4));background:var(--primary-soft);color:var(--text-1);font-size:var(--fs-sm)}.training-activation-bar.failed{border-color:var(--danger-border,rgba(248,113,113,.4));background:var(--danger-soft,rgba(248,113,113,.12))}.training-model-candidates{padding:0 14px 14px}.training-model-candidates h5{margin:0 0 8px;font-size:var(--fs-sm);color:var(--text-2);font-weight:600}.training-model-candidate-list{display:flex;flex-direction:column;gap:6px}.training-model-candidate{justify-content:space-between;padding:8px 10px;border:1px solid var(--hairline);border-radius:var(--radius-sm)}.training-model-candidate,.training-model-candidate-info{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.training-model-card>.subtle-text{padding:0 14px 14px;margin:0}.training-job-id{font-family:var(--font-heading),monospace;font-size:var(--fs-xs);color:var(--text-1);background:var(--ink-1);border:1px solid var(--hairline);border-radius:4px;padding:2px 6px}.training-job-form{display:flex;flex-direction:column;gap:12px;margin:0 14px 12px;padding:12px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-1)}.training-field span{font-size:var(--fs-xs)}.training-job-form .checkbox-line{display:flex}.training-job-form-actions{display:flex;justify-content:flex-end;gap:8px}.training-job-list{padding:10px 14px 14px}.training-job-list,.training-job-row{display:flex;flex-direction:column;gap:8px}.training-job-row{padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-sm)}.training-job-row-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.training-job-row-head .danger-btn{margin-left:auto}.training-job-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.training-job-row-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.training-job-row-meta:empty{display:none}.training-job-progress{display:flex;align-items:center;gap:10px}.training-job-progress-bar{flex:1 1;height:6px;border-radius:999px;background:var(--ink-1);border:1px solid var(--hairline);overflow:hidden}.training-job-progress-fill{height:100%;border-radius:999px;background:var(--primary);transition:width .4s ease}.training-job-log summary{cursor:pointer;color:var(--text-3);font-size:var(--fs-xs)}.training-job-log pre{margin:6px 0 0;padding:8px 10px;border-radius:var(--radius-sm);background:var(--ink-1);border:1px solid var(--hairline);font-size:var(--fs-xs);line-height:1.5;color:var(--text-2);white-space:pre-wrap;word-break:break-all;max-height:240px;overflow:auto}.training-trainer-connected{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--success-border,rgba(52,211,153,.4));background:var(--success-soft,rgba(52,211,153,.12));color:var(--text-1);font-size:var(--fs-sm)}.trainer-install-card{display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-2)}.trainer-install-head{display:flex;align-items:flex-start;gap:10px;color:var(--text-1)}.trainer-install-head h5{margin:0 0 2px;font-size:var(--fs-sm)}.trainer-install-head p{margin:0}.trainer-install-reminder{margin:0;font-size:var(--fs-sm);color:var(--text-2)}.trainer-install-body{display:flex;flex-direction:column;gap:10px}.trainer-install-body>.subtle-text{margin:0}.trainer-install-steps{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:var(--fs-sm);color:var(--text-2)}.trainer-cmd{border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-1);overflow:hidden}.trainer-cmd-bar{display:flex;justify-content:flex-end;padding:6px;background:var(--ink-2);border-bottom:1px solid var(--hairline)}.trainer-cmd-copy{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--hairline-strong);background:var(--ink-1);color:var(--text-2);font-size:var(--fs-xs);cursor:pointer;transition:background-color .15s,color .15s}.trainer-cmd-copy:hover{background:var(--ink-3);color:var(--text-1)}.trainer-cmd pre{margin:0;padding:12px;font-size:var(--fs-sm);line-height:1.6;color:var(--text-1);white-space:pre;overflow-x:auto;font-family:var(--font-heading),monospace}.trainer-install-actions{display:flex;justify-content:flex-end}.nc-table{width:100%;margin-top:16px}.nc-table td b{font-weight:600;color:var(--text-1)}.nc-row-off td{opacity:.6}.nc-row-test td{padding-top:0}.nc-row-actions{display:flex;gap:6px;flex-wrap:wrap}.nc-badge{display:inline-block;margin-left:8px;padding:1px 6px;border-radius:var(--radius-sm);font-size:var(--fs-xs);font-style:normal;border:1px solid var(--hairline);color:var(--text-2)}.nc-badge.warn{border-color:var(--warn-border,var(--hairline-strong));color:var(--warn,#d9822b)}.nc-badge.ok{border-color:var(--ok-border);color:var(--ok)}.nc-last{font-size:var(--fs-sm)}.nc-last.ok{color:var(--ok)}.nc-last.err{color:var(--rec);display:inline-block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.nc-empty,.nc-loading{margin:16px 0 4px}.nc-empty{display:flex;flex-direction:column;gap:4px;padding:18px;border:1px dashed var(--hairline-strong);border-radius:var(--radius-md);color:var(--text-2);font-size:var(--fs-md)}.nc-empty b{color:var(--text-1)}.nc-error{color:var(--rec);margin:8px 0 0}.nc-error,.nc-note{font-size:var(--fs-md)}.nc-note{margin:0;padding:10px 12px;border-radius:var(--radius-sm);background:var(--ink-3);color:var(--text-2);line-height:1.5}.nc-required{color:var(--rec)}.nc-flex{flex:1 1}.nc-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nc-spin{animation:nc-spin .9s linear infinite}@keyframes nc-spin{to{transform:rotate(1turn)}}.nc-modal{width:min(640px,calc(100vw - 32px))}.nc-form-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.nc-docs-link{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--primary);text-decoration:none;white-space:nowrap}.nc-docs-link:hover{text-decoration:underline}.nc-type-chip{padding:2px 8px;border-radius:var(--radius-sm);background:var(--primary-soft);border:1px solid var(--primary-border);color:var(--primary);font-size:var(--fs-sm);font-weight:600}.nc-advanced-body{grid-template-columns:1fr}.nc-modal-footer{padding-top:14px;border-top:1px solid var(--hairline)}.nc-input-row,.nc-modal-footer{display:flex;align-items:center;gap:8px}.nc-input-row{flex-wrap:wrap}.nc-input-row input{flex:1 1 200px;min-width:0}.nc-test{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--hairline);background:var(--ink-3);font-size:var(--fs-md)}.nc-test.ok{border-color:var(--ok-border)}.nc-test.fail{border-color:var(--rec-border)}.nc-test.ok>b{color:var(--ok)}.nc-test.fail>b{color:var(--rec)}.nc-test>span{color:var(--text-2);word-break:break-word}.nc-test summary{cursor:pointer;color:var(--text-2);font-size:var(--fs-sm)}.nc-test dl{margin:8px 0 0;display:grid;grid-template-columns:max-content 1fr;grid-gap:4px 12px;gap:4px 12px}.nc-test dt{color:var(--text-3,var(--text-2));font-size:var(--fs-sm)}.nc-test dd{margin:0;min-width:0}.nc-test pre{margin:0;max-height:160px;overflow:auto;white-space:pre-wrap;word-break:break-all;font-size:var(--fs-sm)}.nc-discover{flex-basis:100%;gap:8px;margin-top:6px;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--hairline);background:var(--ink-3)}.nc-discover,.nc-discover-list{display:flex;flex-direction:column}.nc-discover-list{list-style:none;margin:0;padding:0;gap:4px;max-height:220px;overflow:auto}.nc-discover-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--hairline);background:var(--ink-2);color:var(--text-1);cursor:pointer}.nc-discover-item:hover{border-color:var(--primary-border)}.nc-discover-item em{font-style:normal;font-size:var(--fs-sm);color:var(--text-2)}.nc-wechat{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:var(--radius-md);border:1px solid var(--hairline);background:var(--ink-3)}.nc-wechat-head{display:flex;align-items:center;gap:8px}.nc-wechat-head b{color:var(--text-1)}.nc-qr{display:flex;flex-direction:column;align-items:center;gap:8px}.nc-qr-frame{position:relative;display:grid;place-items:center;width:204px;height:204px;padding:12px;border-radius:var(--radius-md);background:#fff}.nc-qr-frame.is-expired>svg{opacity:.15}.nc-qr-refresh{position:absolute}.nc-qr-skeleton{width:180px;height:180px;border-radius:8px;background:repeating-linear-gradient(45deg,#eee,#eee 8px,#f7f7f7 0,#f7f7f7 16px)}.nc-qr-state{margin:0;font-size:var(--fs-md);color:var(--text-2);min-height:1.4em}.nc-qr-state.confirmed{color:var(--ok)}.nc-qr-state.error,.nc-qr-state.expired{color:var(--rec)}.nc-recipients-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.nc-recipients-head b{color:var(--text-1)}.nc-recipients{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.nc-recipients li{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--ink-2);border:1px solid var(--hairline)}.nc-recipients li b{color:var(--text-1);font-weight:600}.nc-recipients li em{font-style:normal;font-size:var(--fs-sm);color:var(--text-2);flex:1 1}.nc-recipients li button{margin-left:auto}.nc-option-off{color:var(--text-3,#94a3b8)}.cap-cards{display:flex;flex-direction:column;gap:18px}.cap-cards-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.cap-cards-head-text{flex:1 1 auto;min-width:0}.cap-cards-head-text h4{margin:0;font-size:var(--fs-xl);font-weight:600;color:var(--text-1)}.cap-cards-head-text p{margin:4px 0 0}.cap-cards-head-text p,.cap-expert-toggle{font-size:var(--fs-sm);color:var(--text-2)}.cap-expert-toggle{flex:0 0 auto;display:inline-flex;flex-direction:row;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.cap-expert-toggle:hover{color:var(--text-1);border-color:var(--hairline-strong)}.cap-expert-toggle input{accent-color:var(--primary);cursor:pointer}.cap-cards-state{display:flex;align-items:center;gap:8px;margin:0;padding:14px 0;font-size:var(--fs-sm);color:var(--text-3)}.cap-spin{animation:cap-spin 1s linear infinite}@keyframes cap-spin{to{transform:rotate(1turn)}}.cap-master{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2)}.cap-master.is-on{border-color:var(--primary-border);background:var(--ink-3)}.cap-master-text{flex:1 1 auto;min-width:0}.cap-master-text b{display:block;font-size:var(--fs-xl);font-weight:600;color:var(--text-1)}.cap-master-text p{margin:4px 0 0;font-size:var(--fs-sm);color:var(--text-2)}.cap-groups{display:flex;flex-direction:column;gap:18px}.cap-groups.is-dimmed{opacity:.55}.cap-group{display:flex;flex-direction:column;gap:10px}.cap-group-title{margin:0;font-size:var(--fs-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.cap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));grid-gap:12px;gap:12px}.cap-card{display:flex;flex-direction:column;gap:8px;padding:14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2)}.cap-card.is-on{border-color:var(--primary-border);background:var(--ink-3)}.cap-card.is-busy{opacity:.6}.cap-card.is-locked{opacity:.85}.cap-card-head{display:flex;align-items:flex-start;gap:12px}.cap-card-text{flex:1 1 auto;min-width:0}.cap-card-text b{display:block;font-size:var(--fs-md);font-weight:600;color:var(--text-1)}.cap-card-text p{margin:3px 0 0;font-size:var(--fs-sm);line-height:1.5;color:var(--text-2)}.cap-card-switch{flex:0 0 auto;margin-top:2px;width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.cap-card-switch:disabled{cursor:not-allowed}.cap-card-cost{margin:0;font-size:var(--fs-xs);color:var(--text-3)}.cap-card-locked,.cap-card-missing{display:flex;align-items:center;gap:6px;margin:0;font-size:var(--fs-xs);color:var(--warning)}.cap-missing-fix{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:2px 8px;border:1px solid var(--warning-border);border-radius:var(--radius-sm);background:var(--warning-soft);color:var(--warning);font-size:var(--fs-xs);cursor:pointer}.cap-missing-fix:hover:not(:disabled){background:var(--warning);color:var(--ink-1)}.cap-missing-fix:disabled{cursor:not-allowed;opacity:.55}.cap-levels{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;padding-top:10px;border-top:1px dashed var(--hairline)}.cap-levels-label{font-size:var(--fs-xs);color:var(--text-3)}.cap-levels-seg{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-1)}.cap-level{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:4px 10px;border-radius:calc(var(--radius-sm) - 1px);font-size:var(--fs-xs);color:var(--text-2);cursor:pointer;transition:background .14s ease,color .14s ease}.cap-level:hover:not(:disabled){color:var(--text-1)}.cap-level.is-active{background:var(--primary-soft);color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary-border)}.cap-level.is-custom{cursor:default}.cap-level:disabled{cursor:not-allowed;opacity:.55}.cap-levels-note{flex-basis:100%;font-size:var(--fs-xs);color:var(--text-3)}.cap-opts{display:flex;flex-direction:column;gap:8px;margin-top:2px;padding-top:10px;border-top:1px dashed var(--hairline)}.cap-opt{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.cap-opt-wide{flex-direction:column;align-items:stretch}.cap-opt-bool,.cap-opt-label{font-size:var(--fs-xs);color:var(--text-2)}.cap-opt-bool{flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;cursor:pointer}.cap-opt-bool input{flex:0 0 auto;width:14px;height:14px;accent-color:var(--primary);cursor:pointer}.cap-opt-number,.cap-opt-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:4px 8px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--ink-1);color:var(--text-1);font-size:var(--fs-xs);font-family:inherit}.cap-opt-number{width:84px;text-align:right}.cap-opt-number:disabled,.cap-opt-select:disabled{opacity:.55;cursor:not-allowed}.cap-opt-chips{display:flex;flex-wrap:wrap;gap:4px}.cap-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:3px 8px;border:1px solid var(--hairline);border-radius:999px;background:var(--ink-1);color:var(--text-2);font-size:var(--fs-xs);cursor:pointer}.cap-chip:hover:not(:disabled){color:var(--text-1)}.cap-chip.is-active{border-color:var(--primary-border);background:var(--primary-soft);color:var(--primary)}.cap-chip-more{border-style:dashed;color:var(--text-3)}.cap-chip-more:hover{color:var(--primary);border-color:var(--primary-border)}.cap-chip:disabled{cursor:not-allowed;opacity:.55}.cap-engine{padding:14px 16px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--ink-2)}.cap-engine-head b{display:block;font-size:var(--fs-md);font-weight:600;color:var(--text-1)}.cap-engine-head p{margin:3px 0 0;font-size:var(--fs-sm);color:var(--text-2)}.cap-engine .cap-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:8px 20px;gap:8px 20px}.cap-expert-area{display:flex;flex-direction:column;gap:16px;padding-top:18px;border-top:1px solid var(--hairline)}.cap-expert-hint{margin:0;padding:10px 12px;border:1px solid var(--hairline);border-left:2px solid var(--primary-border);border-radius:var(--radius-sm);background:var(--ink-2);font-size:var(--fs-sm);color:var(--text-2)}.u-row-4.u-row-4,.u-row.u-row{display:flex;align-items:center}.u-row-4.u-row-4{gap:4px}.u-row-6.u-row-6{display:flex;align-items:center;gap:6px}.u-row-8.u-row-8{display:flex;align-items:center;gap:8px}.u-row-10.u-row-10{display:flex;align-items:center;gap:10px}.u-row-12.u-row-12{display:flex;align-items:center;gap:12px}.u-inline-4.u-inline-4{display:inline-flex;align-items:center;gap:4px}.u-inline-6.u-inline-6{display:inline-flex;align-items:center;gap:6px}.u-inline-8.u-inline-8{display:inline-flex;align-items:center;gap:8px}.u-inline-10.u-inline-10{display:inline-flex;align-items:center;gap:10px}.u-col-2.u-col-2{gap:2px}.u-col-2.u-col-2,.u-col-3.u-col-3{display:flex;flex-direction:column}.u-col-3.u-col-3{gap:3px}.u-col-4.u-col-4{gap:4px}.u-col-4.u-col-4,.u-col-6.u-col-6{display:flex;flex-direction:column}.u-col-6.u-col-6{gap:6px}.u-col-8.u-col-8{display:flex;flex-direction:column;gap:8px}.u-col-10.u-col-10{display:flex;flex-direction:column;gap:10px}.u-col-12.u-col-12{display:flex;flex-direction:column;gap:12px}.u-col-20.u-col-20{display:flex;flex-direction:column;gap:20px}.u-between.u-between{justify-content:space-between}.u-end.u-end{justify-content:flex-end}.u-end-items.u-end-items{align-items:flex-end}.u-wrap.u-wrap{flex-wrap:wrap}.u-top.u-top{align-items:flex-start}.u-flex1.u-flex1{flex:1 1}.u-flex1-min.u-flex1-min{flex:1 1;min-width:0}.u-m0.u-m0{margin:0}.u-mt-2.u-mt-2{margin-top:2px}.u-mt-4.u-mt-4{margin-top:4px}.u-mt-6.u-mt-6{margin-top:6px}.u-mt-8.u-mt-8{margin-top:8px}.u-mt-10.u-mt-10{margin-top:10px}.u-mt-12.u-mt-12{margin-top:12px}.u-mt-16.u-mt-16{margin-top:16px}.u-mb-4.u-mb-4{margin-bottom:4px}.u-mb-6.u-mb-6{margin-bottom:6px}.u-mb-8.u-mb-8{margin-bottom:8px}.u-mb-10.u-mb-10{margin-bottom:10px}.u-mb-12.u-mb-12{margin-bottom:12px}.u-w-full.u-w-full{width:100%}.u-fill-col.u-fill-col{height:100%;display:flex;flex-direction:column}.u-fill-cover.u-fill-cover{width:100%;height:100%;object-fit:cover}.u-overlay-fill.u-overlay-fill{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.u-btn-unset.u-btn-unset{all:unset;cursor:pointer;display:block}.u-hidden.u-hidden{display:none}.u-scroll-x.u-scroll-x{overflow-x:auto}.u-nowrap.u-nowrap{white-space:nowrap}.u-nums.u-nums{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.u-dim.u-dim{opacity:.65}.u-mono.u-mono{font-family:var(--font-mono,ui-monospace,monospace)}.u-m0-t2.u-m0-t2{margin:2px 0 0}.u-m0-t4.u-m0-t4{margin:4px 0 0}.u-m0-t6.u-m0-t6{margin:6px 0 0}.u-m0-t8.u-m0-t8{margin:8px 0 0}.u-m0-t12.u-m0-t12{margin:12px 0 0}.u-m0-b8.u-m0-b8{margin:0 0 8px}.u-m0-b12.u-m0-b12{margin:0 0 12px}.u-m0-b16.u-m0-b16{margin:0 0 16px}.u-ml-auto.u-ml-auto{margin-left:auto}.u-flex-4.u-flex-4{display:flex;gap:4px}.u-flex-6.u-flex-6{display:flex;gap:6px}.u-flex-8.u-flex-8{display:flex;gap:8px}.u-flex-10.u-flex-10{display:flex;gap:10px}.u-flex-12.u-flex-12{display:flex;gap:12px}.u-flex-none.u-flex-none{flex:none}.u-min0.u-min0{min-width:0}.u-row-between.u-row-between{display:flex;align-items:center;justify-content:space-between}.u-col.u-col{display:flex;flex-direction:column}.u-tac.u-tac{text-align:center}.u-pointer.u-pointer{cursor:pointer}.u-btn-bare.u-btn-bare{background:transparent;border:none;cursor:pointer;color:inherit;padding:0;line-height:1}.u-noevt.u-noevt{pointer-events:none}.u-dim-40.u-dim-40{opacity:.4}.u-dim-55.u-dim-55{opacity:.55}.u-dim-85.u-dim-85{opacity:.85}.u-hint.u-hint{color:var(--muted);font-size:var(--fs-sm)}