:root{--bg:#0b0f14;--sidebar:#0d1218;--panel:#11171f;--card:#141b24;--card-hover:#18212b;--border:#1f2a36;--text:#e6edf3;--muted:#7d8a99;--primary:#22d3ee;--danger:#f43f5e;--warning:#f59e0b;--success:#34d399;--mono:"JetBrains Mono", "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);margin:0}body{-webkit-font-smoothing:antialiased;font-size:14px}a{color:var(--primary)}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.app{min-height:100%;display:flex}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;flex:none;width:232px;height:100vh;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:12px;padding:20px 16px 16px;display:flex}.sidebar-logo{width:40px;height:40px;color:var(--primary);background:#22d3ee1f;border:1px solid #22d3ee59;border-radius:12px;place-items:center;font-size:20px;display:grid}.sidebar-brand b{font-size:15px;display:block}.sidebar-brand small{color:var(--primary);letter-spacing:.12em;font-size:10px}.sidebar-section{color:var(--muted);padding:8px 16px 4px;font-size:12px}.nav{flex-direction:column;gap:4px;padding:0 12px;display:flex}.nav-item{color:var(--text);cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:10px 14px;text-decoration:none;display:flex}.nav-item:hover{background:var(--card)}.nav-item.active{background:var(--primary);color:#06232a;font-weight:600}.nav-item.disabled{color:var(--muted);cursor:not-allowed}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding:16px}.sidebar-footer b{font-size:15px;display:block}.sidebar-footer .muted{margin:2px 0 12px;display:block}.content{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--panel);z-index:5;justify-content:space-between;align-items:center;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.topbar .crumbs{color:var(--muted);font-size:13px}.topbar .crumbs b{color:var(--primary);letter-spacing:.06em;font-weight:600}.page{padding:20px 24px 40px}.page-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.page-title{align-items:center;gap:12px;font-size:18px;font-weight:600;display:flex}.page-title .sub{color:var(--muted);letter-spacing:.12em;font-size:11px;font-weight:400}.page-title .dot{background:var(--primary);width:8px;height:8px;box-shadow:0 0 10px var(--primary);border-radius:50%}.filters{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-bottom:16px;padding:12px 16px;display:flex}.filters label{color:var(--muted);margin-right:6px;font-size:13px}.filters .spacer{flex:1}.media-row{background:var(--card);border:1px solid var(--border);border-radius:14px;align-items:center;gap:16px;margin-bottom:12px;padding:16px 20px;display:flex}.media-row:hover{background:var(--card-hover)}.media-row .index{font-family:var(--mono);color:var(--primary);width:44px;font-size:22px;font-weight:700}.thumb{border:1px solid var(--border);background:#000;border-radius:10px;flex:none;width:176px;height:100px;position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb .dur{font-family:var(--mono);color:#fff;background:#000000bf;border-radius:6px;padding:2px 8px;font-size:12px;position:absolute;bottom:8px;right:8px}.media-main{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.media-name{align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.media-name span.name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.media-meta{color:var(--muted);flex-wrap:wrap;gap:8px;font-size:13px;display:flex}.media-meta b{color:var(--text);font-weight:500}.media-meta .fps{color:var(--primary);font-family:var(--mono)}.status-pill{border:1px solid;border-radius:999px;align-items:center;gap:6px;padding:2px 10px;font-size:12px;font-weight:500;display:inline-flex}.status-pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.status-idle{color:var(--success);background:#34d3991a;border-color:#34d39966}.status-annotating{color:var(--warning);background:#f59e0b1a;border-color:#f59e0b66}.status-reviewing{color:#60a5fa;background:#60a5fa1a;border-color:#60a5fa66}.status-discarded{color:var(--danger);background:#f43f5e1a;border-color:#f43f5e66}.chips{grid-template-columns:repeat(5,minmax(0,auto));gap:6px 8px;width:fit-content;display:grid}.chips.cols-4{grid-template-columns:repeat(4,minmax(0,auto))}.chip{border:1px solid var(--border);color:#4b5563;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#0f141a;border-radius:6px;padding:1px 10px;font-size:12px;line-height:20px}.chip.on{color:var(--chip,var(--primary));border-color:color-mix(in srgb, var(--chip,var(--primary)) 55%, transparent);background:color-mix(in srgb, var(--chip,var(--primary)) 14%, transparent);font-weight:500}.chip.conflict{color:#fff;border-color:var(--danger);cursor:pointer;background:#f43f5ed9;font-weight:600;box-shadow:0 0 0 1px #f43f5e4d}.chip.conflict:before{content:"●";vertical-align:1px;margin-right:5px;font-size:8px}.chip.removed{opacity:.6;text-decoration:line-through}.workspace{grid-template-columns:1fr 1fr;gap:16px;display:grid}.pane-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.pane-head h3{align-items:center;gap:10px;margin:0;font-size:15px;font-weight:600;display:flex}.pane-head h3 small{color:var(--muted);font-size:12px;font-weight:400}.dropzone{border:1px dashed var(--border);text-align:center;min-height:420px;color:var(--muted);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px;transition:border-color .15s,background .15s;display:flex}.dropzone.over{border-color:var(--primary);background:#22d3ee0d}.dropzone .icon{width:64px;height:64px;color:var(--primary);background:#22d3ee1a;border:1px solid #22d3ee4d;border-radius:16px;place-items:center;margin-bottom:8px;font-size:28px;display:grid}.dropzone h4{color:var(--text);margin:0;font-size:16px}.pair-list{flex-direction:column;gap:10px;display:flex}.pair-card{background:var(--card);border:1px solid var(--border);border-radius:12px;align-items:center;gap:10px;min-height:86px;padding:12px 14px;display:flex}.pair-card.library{border-style:dashed}.pair-card.missing{background:#f43f5e0d;border-color:#f43f5e8c}.pair-card.placeholder{border-style:dashed}.pair-card .idx{font-family:var(--mono);color:var(--muted);width:22px;font-size:12px}.pair-card .fname{text-overflow:ellipsis;white-space:nowrap;flex:0 170px;min-width:110px;font-size:13px;font-weight:500;overflow:hidden}.pair-card .fname small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;font-weight:400;display:block;overflow:hidden}.pair-card .fname.strike{color:var(--muted);text-decoration:line-through}.pair-card .warn{color:var(--danger);font-size:12px}.pair-card .progress{margin-top:4px}.conflict-pop{width:260px}.conflict-pop .head{justify-content:space-between;align-items:center;margin-bottom:8px;font-weight:600;display:flex}.conflict-pop .head small{color:var(--muted);letter-spacing:.1em;font-size:10px}.conflict-pop .opt{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:8px 10px;display:block}.conflict-pop .opt:hover{background:var(--card)}.conflict-pop .opt small{color:var(--muted);margin-top:2px;font-size:11px;display:block}.conflict-pop .opt.danger{color:#fda4af;background:#f43f5e1a;border-color:#f43f5e73}.conflict-pop .opt .count{float:right;background:#f43f5e4d;border-radius:4px;padding:0 6px;font-size:11px}.dup-row{border:1px solid var(--border);background:var(--panel);border-radius:12px;margin-bottom:12px;padding:12px 14px}.dup-row.hash{border-color:#f43f5e99}.dup-row.resolved{border-color:#34d39980}.dup-row .line{align-items:center;gap:10px;display:flex}.dup-row .tag{border:1px solid;border-radius:6px;padding:2px 8px;font-size:12px}.dup-row .tag.hash{color:#fda4af;background:#f43f5e1f;border-color:#f43f5e80}.dup-row .tag.name{color:#fcd34d;background:#f59e0b1f;border-color:#f59e0b80}.dup-row .tag.ok{color:var(--success);background:#34d3991f;border-color:#34d39980}.dup-row .msg{color:#fda4af;margin:8px 0;font-size:13px}.dup-row .boxes{grid-template-columns:1fr 1fr;gap:10px;margin-top:8px;display:grid}.dup-row .box{background:var(--card);border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;border-radius:8px;padding:8px 10px;font-size:13px;overflow:hidden}.dup-row .box small{color:var(--muted);margin-right:6px}.compare{grid-template-columns:1fr 1fr;gap:16px;display:grid}.compare video{aspect-ratio:16/9;background:#000;border-radius:8px;width:100%}.compare .cap{align-items:center;gap:8px;margin-bottom:8px;font-size:13px;display:flex}.compare .cap .tag{border-radius:4px;padding:1px 8px;font-size:12px}.compare .ctrl{align-items:center;gap:8px;margin-top:8px;display:flex}.compare .bar{background:var(--border);cursor:pointer;border-radius:3px;flex:1;height:6px;position:relative;overflow:hidden}.compare .bar i{background:var(--primary);position:absolute;top:0;bottom:0;left:0}.compare .time{font-family:var(--mono);color:var(--muted);text-align:right;min-width:64px;font-size:12px}.login-wrap{background:radial-gradient(circle at 30% 20%, #22d3ee14, transparent 40%), var(--bg);place-items:center;min-height:100vh;display:grid}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;width:380px;padding:32px}.login-card h1{margin:0 0 4px;font-size:20px}.login-card p{color:var(--muted);margin:0 0 24px}.pair-card .chips{flex:auto;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;width:auto;min-width:0}.pair-card .chip{text-align:center;text-overflow:ellipsis;padding:1px 5px;font-size:11px;line-height:18px;overflow:hidden}.pair-card .chip.conflict:before{margin-right:4px;font-size:7px}.chips.inline{flex-wrap:wrap;justify-content:flex-end;width:auto;display:flex}.pair-card .chips.inline{grid-template-columns:none}.media-main .chips.inline{justify-content:flex-start}.media-main .no-labels{color:var(--muted);font-size:12px}.compare-img .img-pane{background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden}.compare-img .cap{border-bottom:1px solid var(--border);margin:0;padding:10px 12px}.compare-img .img-box{aspect-ratio:16/9;background:#000;place-items:center;display:grid}.compare-img .img-box img{object-fit:contain;max-width:100%;max-height:100%;display:block}.compare-img .foot{justify-content:space-between;padding:8px 12px;font-size:12px;display:flex}.sidebar-footer .switch-btn{flex:1}.role-card{border:1px solid var(--border);cursor:pointer;background:var(--panel);border-radius:12px;margin-bottom:12px;padding:14px 16px}.role-card.on{border-color:var(--primary)}.role-card .head{align-items:center;gap:12px;display:flex}.role-card .head .ico{width:40px;height:40px;color:var(--primary);background:#22d3ee1a;border:1px solid #22d3ee4d;border-radius:10px;place-items:center;font-size:18px;display:grid}.role-card .head b{flex:1;font-size:15px}.role-card .people{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.role-card .person{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;display:flex}.role-card .person.on{border-color:var(--primary);background:#22d3ee14}.role-card .person .no{font-family:var(--mono);color:var(--muted);background:var(--panel);border-radius:4px;padding:1px 5px;font-size:11px}.role-card .person span{flex:1}.task-card{background:var(--card);border:1px solid var(--border);border-radius:14px;margin-bottom:14px}.task-head{flex-wrap:wrap;align-items:center;gap:20px;padding:18px 20px;display:flex}.task-name{flex-wrap:wrap;flex:260px;align-items:center;gap:8px;min-width:200px;font-size:17px;font-weight:600;display:flex}.task-status{border:1px solid;border-radius:6px;padding:1px 8px;font-size:12px;font-weight:400}.task-times{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.task-times b{color:var(--text);font-weight:500}.task-progress{width:220px}.task-progress .nums{color:var(--muted);justify-content:space-between;font-size:13px;display:flex}.task-progress .nums b{color:var(--primary);font-family:var(--mono)}.task-actions{gap:8px;display:flex}.task-people{padding:0 20px 16px}.task-people .title{color:var(--muted);justify-content:space-between;margin-bottom:10px;font-size:13px;display:flex}.people-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.person-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px 14px}.person-card.gone{opacity:.55}.person-card .line{align-items:center;gap:10px;display:flex}.person-card .line b{flex:1}.person-card .line .nums{color:var(--primary);font-size:12px;font-family:var(--mono)}.task-foot{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:center;padding:12px 20px;font-size:13px;display:flex}.form-section{background:var(--card);border:1px solid var(--border);border-radius:14px;margin-bottom:16px;padding:20px 24px}.form-section h3{align-items:center;gap:10px;margin:0 0 16px;font-size:15px;display:flex}.form-section h3:before{content:"";background:var(--primary);border-radius:2px;width:3px;height:16px}.form-section h3 .spacer{flex:1}.form-section h3 small{color:var(--muted);font-size:12px;font-weight:400}.field{margin-bottom:14px}.field>label{margin-bottom:6px;font-size:13px;display:block}.field>label i{color:var(--danger);margin-left:2px;font-style:normal}.two-col{grid-template-columns:1fr 1fr;gap:16px;display:grid}.estimate{background:var(--panel);border:1px solid var(--border);border-radius:10px;align-items:center;gap:12px;margin-top:4px;padding:12px 16px;font-size:13px;display:flex}.estimate .ico{width:28px;height:28px;color:var(--primary);background:#22d3ee1a;border-radius:8px;place-items:center;display:grid}.estimate .total{color:var(--success);font-size:20px;font-weight:700;font-family:var(--mono);margin-left:auto}.type-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.type-card{border:1px solid var(--border);cursor:pointer;background:var(--panel);border-radius:10px;align-items:center;gap:10px;padding:12px 14px;display:flex}.type-card.on{border-color:var(--primary);background:#22d3ee0f}.type-card .sw{background:var(--chip,var(--primary));border-radius:3px;width:10px;height:10px}.type-card small{color:var(--muted);margin-left:auto;font-size:11px}.people-chips{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;min-height:48px;padding:10px 12px;display:flex}.person-chip{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:center;gap:6px;padding:3px 10px;font-size:13px;display:inline-flex}.person-chip small{color:var(--primary)}.person-chip .x{cursor:pointer;color:var(--muted)}.person-chip .x:hover{color:var(--danger)}.filter-panels{grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;display:grid}.filter-panel{border:1px solid var(--border);background:var(--panel);border-radius:10px;padding:10px 12px}.filter-panel .head{color:var(--muted);justify-content:space-between;margin-bottom:8px;font-size:12px;display:flex}.filter-panel .head b{color:var(--text);align-items:center;gap:6px;display:flex}.filter-panel .head b i{border-radius:4px;place-items:center;width:14px;height:14px;font-size:11px;font-style:normal;display:inline-grid}.filter-panel.inc .head b i{color:var(--success);background:#34d39933}.filter-panel.exc .head b i{color:var(--danger);background:#f43f5e33}.filter-panel .chips{flex-wrap:wrap;width:auto;display:flex}.chip.pick{cursor:pointer}.chip.pick.inc{color:var(--success);background:#34d3991f;border-color:#34d39999}.chip.pick.exc{color:#fda4af;background:#f43f5e1f;border-color:#f43f5e99}.media-table{border:1px solid var(--border);border-radius:10px;margin-top:12px;overflow:hidden}.media-table .tr{border-bottom:1px solid var(--border);grid-template-columns:32px minmax(220px,1fr) auto 140px;align-items:center;gap:12px;padding:10px 14px;display:grid}.media-table .tr:last-child{border-bottom:none}.media-table .th{background:var(--panel);color:var(--muted);font-size:12px}.media-table .tr .name{font-size:13px;font-weight:500;overflow:hidden}.media-table .tr .name span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.media-table .tr .name small{color:var(--muted);font-size:11px;font-weight:400;display:block}.media-table .tr.on{background:#22d3ee0a}.media-table .tr .time{color:var(--muted);text-align:right;font-size:12px;font-family:var(--mono)}.table-foot{color:var(--muted);flex-wrap:wrap;align-items:center;gap:16px;margin-top:12px;font-size:13px;display:flex}.table-foot .spacer{flex:1}.page-foot{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.cap-filter{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-bottom:12px;padding-bottom:12px;display:flex}.cap-filter .chip{cursor:pointer;font-size:12px}.cap-filter .chip.on{color:var(--primary);background:#22d3ee24;border-color:#22d3ee99}.ann-row{border:1px solid var(--border);background:var(--panel);border-radius:10px;align-items:center;gap:10px;margin-bottom:8px;padding:10px 14px;display:flex}.ann-row.on{border-color:var(--primary);background:#22d3ee0d}.ann-row.off{opacity:.5}.ann-row b{min-width:60px}.ann-row .caps{flex-wrap:wrap;flex:1;gap:6px;display:flex}.ann-row .acc{color:var(--success);background:#34d3991a;border:1px solid #34d39966;border-radius:6px;padding:1px 8px;font-size:12px}.dict-block{background:var(--card);border:1px solid var(--border);border-radius:14px;margin-bottom:16px;padding:18px 20px}.dict-block h3{align-items:center;gap:10px;margin:0 0 14px;font-size:15px;display:flex}.dict-block h3 .cnt{color:var(--primary);border:1px solid #22d3ee66;border-radius:4px;padding:0 6px;font-size:11px;font-weight:400}.dict-block h3 .spacer{flex:1}.dict-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.dict-item{border:1px solid var(--border);background:var(--panel);border-radius:8px;align-items:center;gap:8px;min-height:40px;padding:6px 10px;display:flex}.dict-item .no{font-family:var(--mono);color:var(--primary);background:#22d3ee1a;border-radius:4px;padding:1px 6px;font-size:11px}.dict-item .nm{cursor:text;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.dict-item .nm:hover{color:var(--primary)}.dict-item .code{color:var(--muted);font-size:11px;font-family:var(--mono)}.dict-group{border:1px solid var(--border);background:#ffffff03;border-radius:10px;margin-bottom:12px;padding:12px 14px}.dict-group .gh{align-items:center;gap:10px;margin-bottom:10px;font-size:14px;display:flex}.dict-group .gh .dot{background:var(--chip,var(--primary));border-radius:50%;width:8px;height:8px}.dict-group .gh .spacer{flex:1}.user-section{margin-bottom:24px}.user-section .sh{align-items:center;gap:10px;margin-bottom:12px;font-size:16px;font-weight:600;display:flex}.user-section .sh .cnt{color:var(--muted);background:var(--card);border:1px solid var(--border);border-radius:4px;padding:0 6px;font-size:12px;font-weight:400}.user-section .sh .spacer{flex:1}.user-row{background:var(--card);border:1px solid var(--border);border-radius:12px;align-items:center;gap:16px;margin-bottom:10px;padding:14px 18px;display:flex}.user-row .no{width:40px;height:40px;color:var(--primary);font-family:var(--mono);background:#22d3ee0f;border:1px solid #22d3ee66;border-radius:10px;flex:none;place-items:center;display:grid}.user-row .who{flex:none;width:190px}.user-row .who b{cursor:text;font-size:15px;display:block}.user-row .who b:hover{color:var(--primary)}.user-row .who small{color:var(--muted);font-size:12px}.user-row .acc{color:var(--primary);border:1px solid #22d3ee66;border-radius:4px;margin-left:6px;padding:0 6px;font-size:12px}.user-row .pw{color:var(--muted);flex:none;align-items:center;gap:8px;font-size:13px;display:flex}.user-row .pw .val{font-family:var(--mono);background:var(--panel);border:1px solid var(--border);min-width:130px;color:var(--text);cursor:text;border-radius:8px;align-items:center;gap:8px;padding:4px 10px;display:inline-flex}.user-row .pw .val:hover{border-color:var(--primary)}.user-row .caps{flex-wrap:wrap;flex:1;gap:6px;display:flex}.user-row .caps .chip{cursor:pointer}.user-row .ops{flex:none;gap:6px;display:flex}.cap-pick{flex-wrap:wrap;gap:8px;display:flex}.cap-pick .chip{cursor:pointer;padding:5px 12px;font-size:13px}.media-table .chips{flex-wrap:wrap;gap:4px;width:auto;max-width:520px;display:flex}.annot{background:var(--bg);color:var(--text);grid-template-rows:56px 1fr 56px;grid-template-columns:minmax(0,1fr);display:grid;position:fixed;inset:0}.annot>*{min-width:0}.annot-head,.annot-foot{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:0 16px;display:flex}.annot-foot{border-bottom:none;border-top:1px solid var(--border)}.annot-head .title{border-left:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:28%;padding-left:12px;font-size:17px;overflow:hidden}.annot-head .spacer{flex:1}.annot-head .pill{border:1px solid var(--border);background:var(--card);color:var(--muted);border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:inline-flex}.annot-head .pill b{color:var(--primary);font-family:var(--mono);font-weight:600}.annot-head .pill .money{color:var(--primary)}.annot-head .pill .money.total{color:var(--success)}.annot-head .pill .vdiv{background:var(--border);width:1px;height:14px;margin:0 4px}.annot-head .save-state{color:var(--muted);text-align:right;min-width:56px;font-size:12px}.annot-head .save-state.saved{color:var(--success)}.annot-head .save-state.error{color:var(--danger)}.annot-body{grid-template-columns:minmax(0,1fr) 360px;min-height:0;display:grid}.annot-aside{border-left:1px solid var(--border);background:var(--bg);flex-direction:column;gap:8px;padding:10px;display:flex;overflow:auto}.annot-aside .panel{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.annot-aside .ph{border-bottom:1px solid var(--border);align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;font-size:13px;font-weight:600;display:flex}.annot-aside .ph:before{content:"";background:var(--primary);border-radius:2px;width:3px;height:12px}.annot-aside .ph.red:before{background:var(--danger)}.annot-aside .ph small{color:var(--muted);border:1px solid var(--border);border-radius:4px;margin-left:auto;padding:0 6px;font-size:11px;font-weight:400}.stage{cursor:crosshair;-webkit-user-select:none;user-select:none;background:#000;min-height:0;position:relative;overflow:hidden}.stage.readonly{cursor:default}.stage.empty{place-items:center;display:grid}.stage img{transform-origin:0 0;pointer-events:none;image-rendering:auto;max-width:none;position:absolute;top:0;left:0}.stage .overlay{position:absolute;inset:0}.stage .pt{cursor:pointer}.stage .pt circle{fill:var(--pt,var(--primary));stroke:#fff;stroke-width:1.5px}.stage .pt .halo{fill:#0000;stroke:none}.stage .pt.sel .halo{fill:var(--pt,var(--primary));fill-opacity:.25}.stage .pt.sel circle:not(.halo){stroke-width:2.5px}.stage .pt text{fill:#fff;text-anchor:middle;paint-order:stroke;stroke:#000000d9;stroke-width:3px;font-size:12px;font-weight:700;font-family:var(--mono);pointer-events:none}.stage .pt.err circle:not(.halo){fill:var(--danger)}.stage .pt.err .halo{fill:var(--danger);fill-opacity:.25}.stage .pt.dim{opacity:.6;pointer-events:none}.stage .pt.dim text{font-size:10px}.stage-tools{border:1px solid var(--border);cursor:default;background:#11171fd9;border-radius:8px;align-items:center;gap:10px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:12px;left:12px}.stage-tools .ro-tag{color:var(--warning)}.skeleton{width:100%;height:330px;margin:4px auto 0;display:block}.sk-frame{fill:none;stroke:#2f7f93;stroke-width:5px}.sk-strings line{stroke:#1f3a44;stroke-width:1px}.sk-shaft{stroke:#3b4654;stroke-width:6px;stroke-linecap:round}.sk-grip{fill:#1a2330;stroke:#3b4654;stroke-width:2px}.sk-pt{cursor:pointer}.sk-pt circle{fill:#0f141a;stroke:#cbd5e1;stroke-width:3px}.sk-pt text.num{fill:#94a3b8;font-size:15px;font-weight:600}.sk-pt.on circle{fill:var(--primary);stroke:#e0f7fa}.sk-pt.on text.num{fill:var(--text)}.sk-pt.sel circle{r:10;fill:var(--primary);stroke:#fff}.sk-pt.sel text.num{fill:var(--primary);font-weight:700}.sk-pt.err circle{fill:var(--danger);stroke:var(--danger)}.sk-pt.err text.num{fill:#fda4af;font-weight:700}.sk-bubble path,.sk-bubble rect{fill:#0b2a33;stroke:var(--primary);stroke-width:1.5px}.sk-bubble text{fill:#e6fbff;font-size:14px;font-weight:600}.racket-tabs{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.rtab{border:1px solid var(--border);background:var(--panel);height:30px;color:var(--muted);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;font-size:13px;display:inline-flex}.rtab i{background:var(--border);border-radius:50%;width:6px;height:6px}.rtab.has{color:var(--text)}.rtab.has i{background:var(--rc)}.rtab.done{border-color:color-mix(in srgb, var(--rc) 50%, transparent)}.rtab.on{color:var(--rc);border-color:var(--rc);background:color-mix(in srgb, var(--rc) 12%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--rc) 30%, transparent);font-weight:600}.rtab.err{color:#fda4af;border-color:var(--danger);background:#f43f5e1f}.rtab.err i{background:var(--danger)}.point-rows{flex-direction:column;gap:4px;display:flex}.prow{background:var(--card);border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:8px;min-height:34px;padding:4px 10px;display:flex}.prow .dot{background:#3a4654;border-radius:50%;flex:none;width:8px;height:8px}.prow.on .dot{background:var(--primary)}.prow .nm{color:var(--muted);flex:1;font-size:13px}.prow.on .nm{color:var(--text)}.prow .xy{color:var(--muted);font-size:11px;font-family:var(--mono);align-items:center;gap:4px;display:inline-flex}.prow .xy .ant-input-number{width:58px}.prow .xy .ant-input-number-input{font-family:var(--mono);text-align:right;height:22px;padding:0 6px;font-size:12px}.prow.sel{border-color:var(--primary);box-shadow:0 0 0 1px #22d3ee59}.prow.err{border-color:var(--danger);background:#f43f5e14;box-shadow:0 0 0 1px #f43f5e59}.prow.err .dot{background:var(--danger)}.prow.err .nm{color:#fda4af}.err-panel{border-color:#f43f5e73!important}.err-row{color:#fda4af;cursor:pointer;background:#f43f5e1f;border:1px solid #f43f5e80;border-radius:8px;align-items:center;gap:10px;margin-bottom:8px;padding:6px 10px;font-size:13px;display:flex}.err-row .no{font-family:var(--mono);border:1px solid #f43f5e99;border-radius:4px;padding:0 5px;font-size:11px}.err-row i{background:var(--danger);border-radius:50%;width:8px;height:8px;margin-left:auto}.annot-foot .nav-group{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:center;gap:4px;padding:3px;display:flex}.annot-foot .jump{align-items:center;gap:6px;font-size:12px;display:flex}.annot-foot .jump .ant-input-number{width:64px}.annot-foot .pbar{flex:1;align-items:stretch;gap:2px;min-width:0;height:10px;display:flex;overflow:hidden}.annot-foot .seg{background:var(--border);cursor:pointer;border-radius:3px;flex:1;min-width:0;position:relative}.annot-foot .pbar.dense{border-radius:3px;gap:0}.annot-foot .pbar.dense .seg{border-radius:0}.annot-foot .pbar.dense .seg.cur{outline:2px solid var(--primary);outline-offset:0;z-index:1}.annot-foot .seg.done{background:#22d3ee73}.annot-foot .seg.cur{background:var(--primary);box-shadow:0 0 6px var(--primary)}.annot-foot .seg.ret:after{content:"";background:var(--danger);border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 2px #f43f5e59}.annot-foot .fname{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:12px;overflow:hidden}.stage .bubble-wrap{pointer-events:none;overflow:visible}.stage .bubble{border:1px solid var(--border);color:var(--text);white-space:nowrap;background:#11171feb;border-radius:6px;align-items:center;gap:6px;padding:2px 8px;font-size:12px;display:inline-flex}.stage .bubble b{font-weight:600}.stage .bubble.err{border-color:var(--danger);color:#fda4af;background:#f43f5e33}.stage .bubble.err span{color:#fda4af}.btn-success.ant-btn-primary:not(:disabled){background:var(--success);border-color:var(--success);color:#052e1f}.btn-success.ant-btn-primary:not(:disabled):hover{background:#5eead4;border-color:#5eead4}.btn-success-ghost.ant-btn:disabled{color:var(--success)!important;background:#34d39914!important;border-color:#34d39980!important}.rev-stats{gap:22px;display:flex}.rev-stats span,.rev-row>span{flex-direction:column;gap:2px;display:flex}.rev-stats small,.rev-row small{color:var(--muted);font-size:12px}.rev-stats b,.rev-row b{font-weight:600;font-family:var(--mono)}.rev-stats .money,.rev-row .money{color:var(--primary)}.rev-rows{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;margin:0 20px 16px;padding:8px;display:flex}.rev-row{background:var(--card);border:1px solid var(--border);border-radius:8px;grid-template-columns:minmax(180px,1.4fr) repeat(4,minmax(70px,.7fr)) minmax(120px,1fr) auto;align-items:center;gap:14px;padding:10px 14px;display:grid}.rev-row.state-reviewing{border-color:#22d3ee80}.rev-row.state-returned{border-color:#f43f5e73}.rev-row .who{flex-direction:column;display:flex}.rev-row .who b{font-family:inherit}.rev-row .who small{color:var(--muted);font-size:12px}.rev-row .prog .nums{justify-content:space-between;font-size:12px;display:flex}.rev-row .prog .nums b{font-family:var(--mono)}.rev-row .st.reviewing{color:var(--primary)}.rev-row .st.approved{color:var(--success)}.rev-row .st.returned{color:var(--danger)}.rev-row .st.annotating{color:var(--muted)}.prow.rev{flex-direction:column;align-items:stretch;gap:6px;padding:6px 10px}.prow.rev .line{align-items:center;gap:8px;display:flex}.prow.rev .pn{font-family:var(--mono);color:var(--primary);border:1px solid #22d3ee66;border-radius:4px;padding:0 4px;font-size:11px}.prow.rev.err .pn{color:#fff;background:var(--danger);border-color:var(--danger)}.prow.rev .nm{flex:1}.prow.rev .kbd{font-family:var(--mono);opacity:.8;font-size:10px}.prow.rev .reasons{border-top:1px dashed #f43f5e66;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0 2px;display:flex}.annot-aside .discard-wrap{margin-top:auto;padding-top:8px}.annot-aside .discard-btn{background:var(--card);border-color:var(--border);color:var(--danger);height:36px;font-weight:500}.annot-aside .discard-btn:not(:disabled):hover{border-color:var(--danger)!important;color:var(--danger)!important;background:#f43f5e14!important}.sport-card{gap:14px;padding:16px}.sport-card .icon{font-size:28px;line-height:1}.sport-card:hover{border-color:var(--primary)}.sport-switch{color:var(--text);background:var(--panel);border:1px solid var(--border);cursor:pointer;vertical-align:middle;border-radius:999px;align-items:center;gap:6px;margin-left:12px;padding:3px 10px 3px 8px;font-size:13px;font-weight:500;display:inline-flex}.sport-switch small{color:var(--primary);font-weight:400}.sport-switch.warn{color:var(--warning);border-color:#f59e0b80}.media-meta .sport-tag{color:var(--text);font-weight:500}.export-page .filters .view-switch{margin-left:auto}.export-page .filters .label-row{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:8px;display:flex}.export-page .filters .task-search{flex-basis:100%}.chip.filter{cursor:pointer;border-radius:8px;padding:3px 12px;font-size:13px}.chip.filter:hover{border-color:color-mix(in srgb, var(--chip,var(--primary)) 60%, transparent)}.export-table{border:1px solid var(--border);background:var(--card);border-radius:12px;overflow:hidden}.export-row{border-bottom:1px solid var(--border);grid-template-columns:24px 40px minmax(280px,1.3fr) minmax(320px,1fr) 150px;align-items:center;gap:14px;padding:12px 18px;display:grid}.export-row.task{grid-template-columns:24px 40px minmax(280px,1.3fr) minmax(320px,1fr) 150px 32px}.export-row:last-child{border-bottom:none}.export-row.head{background:var(--panel);color:var(--muted);padding:10px 18px;font-size:12px}.export-row:not(.head):hover{background:var(--card-hover)}.export-row.on{background:#22d3ee0a}.export-row .index{font-family:var(--mono);color:var(--primary);font-size:14px;font-weight:600}.export-row .info{align-items:center;gap:12px;min-width:0;display:flex}.export-row .thumb.sm{border-radius:6px;width:76px;height:44px}.export-row .name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.export-row .meta{color:var(--muted);font-size:12px;font-family:var(--mono);flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px;display:flex}.export-row .meta .sport-tag{color:var(--text);font-family:inherit}.export-row .time{color:var(--muted);font-size:12px;font-family:var(--mono)}.export-row .time small{opacity:.75;margin-top:2px;font-size:11px;display:block}.export-row .labels .chips{grid-template-columns:repeat(5,minmax(0,auto))}.export-row .expander{color:var(--primary)}.export-sub{background:var(--panel);border-bottom:1px solid var(--border);padding:10px 18px 12px 96px}.export-sub .title{color:var(--muted);margin-bottom:8px;font-size:12px}.export-sub .row{background:var(--card);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;margin-bottom:6px;padding:8px 12px;font-size:13px;display:flex}.export-sub .row .ico{color:var(--primary)}.export-sub .row .fname{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.export-sub .row .meta{color:var(--muted);font-family:var(--mono);white-space:nowrap;margin-left:auto;font-size:12px}.export-modes{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.mode-card{border:1px solid var(--border);cursor:pointer;background:var(--panel);border-radius:10px;flex-direction:column;gap:10px;min-height:150px;padding:14px;display:flex}.mode-card:hover{border-color:color-mix(in srgb, var(--primary) 50%, transparent)}.mode-card.on{border-color:var(--primary);background:#22d3ee0f;box-shadow:0 0 0 1px #22d3ee4d}.mode-card .ico{background:var(--card);border:1px solid var(--border);width:36px;height:36px;color:var(--muted);border-radius:8px;place-items:center;font-size:16px;display:grid}.mode-card.on .ico{color:var(--primary);background:#22d3ee26;border-color:#22d3ee66}.mode-card b{font-size:14px}.mode-card.on b{color:var(--primary)}.mode-card small{color:var(--muted);font-size:12px;line-height:1.5}.mode-card .est{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;margin-top:auto;padding-top:8px;font-size:12px;display:flex}.mode-card .est b{font-family:var(--mono);color:var(--text);font-size:13px}.mode-card.on .est b{color:var(--primary)}.export-progress{padding:8px 0}.export-progress .line{justify-content:space-between;margin-bottom:6px;font-size:13px;display:flex}.export-progress .cur{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:12px;overflow:hidden}
