:root{--brand:#facc15}@keyframes delShake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slidein{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@media (width<=900px){.row-form{grid-template-columns:1fr}}@media (width<=760px){.channel-row{grid-template-columns:36px 1fr auto;gap:10px;padding:12px}.row-progress{display:none}}*{box-sizing:border-box;margin:0;padding:0}.ap-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--border);background:var(--bg2,#212124);border-radius:8px;align-items:center;gap:8px;padding:5px 10px;display:flex}.ap-toggle .ap-toggle-label{letter-spacing:.02em;color:var(--text-2,#c0c0c5);text-transform:uppercase;font-size:12px;font-weight:700}.ap-switch{width:38px;height:20px;display:inline-block;position:relative}.ap-switch input{opacity:0;width:0;height:0}.ap-slider{background:var(--border-strong,#4a4a52);border-radius:20px;transition:background .18s;position:absolute;inset:0}.ap-slider:before{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .18s;position:absolute;top:3px;left:3px}.ap-switch input:checked+.ap-slider{background:var(--green,#6ccb5f)}.ap-switch input:checked+.ap-slider:before{transform:translate(18px)}.ap-state{color:var(--text-3,#90909a);min-width:22px;font-size:11px;font-weight:700}.ap-toggle.on{border-color:var(--green,#6ccb5f)}.ap-toggle.on .ap-state{color:var(--green,#6ccb5f)}.ap-toggle.busy{opacity:.6;pointer-events:none}.del-overlay{z-index:200;background:#0009;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.del-overlay.show{display:flex}.del-box{background:var(--bg3,#2a2a2e);border:1px solid var(--border2,#3f3f46);border-radius:12px;width:min(380px,92vw);padding:22px;box-shadow:0 8px 30px #00000080}.del-box h3{color:var(--text,#f3f3f3);align-items:center;gap:8px;margin-bottom:6px;font-size:16px;display:flex}.del-box .del-warn{color:var(--text-2,#c0c0c5);margin-bottom:14px;font-size:12.5px;line-height:1.5}.del-box .del-target{color:var(--red,#ef4444);font-weight:700}.del-box .del-q{color:var(--text-2,#c0c0c5);margin-bottom:6px;font-size:13px}.del-box .del-q strong{color:var(--text,#f3f3f3);font-size:15px}.del-box input.del-input{border:1px solid var(--border2,#3f3f46);background:var(--bg,#1a1a1c);width:100%;color:var(--text,#f3f3f3);border-radius:8px;margin-bottom:6px;padding:9px 11px;font-size:15px}.del-box input.del-input.err{border-color:var(--red,#ef4444);animation:.25s delShake}.del-box .del-err{color:var(--red,#ef4444);min-height:15px;margin-bottom:10px;font-size:11.5px}.del-box .del-actions{justify-content:flex-end;gap:8px;display:flex}.channel-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;transition:border-color .15s;overflow:hidden}.channel-card.has-file{border-color:#60a5fa4d}.channel-card.ready{border-color:#4ade804d}.channel-card.uploading{border-color:#60a5fa80}.channel-card.success{border-color:#4ade8080}.channel-card.failed{border-color:#ef444480}.channel-row{cursor:pointer;grid-template-columns:34px 1fr auto auto auto;align-items:center;gap:12px;padding:9px 16px;transition:background .12s;display:grid}.channel-row:hover{background:var(--bg-hover)}.channel-thumb{background:var(--bg-subtle);border:1px solid var(--border);object-fit:cover;border-radius:50%;flex-shrink:0;width:34px;height:34px}.channel-thumb.placeholder{color:var(--text-2);justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.channel-info{min-width:0}.channel-name{color:var(--text-1);align-items:center;gap:8px;font-size:12.5px;font-weight:600;display:flex}.channel-meta{color:var(--text-3);flex-wrap:wrap;gap:10px;margin-top:2px;font-family:Roboto Mono,monospace;font-size:10.5px;display:flex}.channel-meta .src-badge{background:var(--brand-soft);color:var(--brand);letter-spacing:.04em;text-transform:uppercase;border-radius:3px;padding:1px 6px;font-size:9.5px;font-weight:800}.channel-meta .src-badge.manual{background:var(--blue-soft);color:var(--blue)}.channel-meta .vtype-badge{letter-spacing:.03em;text-transform:uppercase;border:1px solid var(--border2);color:var(--text-2);border-radius:3px;padding:1px 6px;font-size:9.5px;font-weight:800}.channel-meta .vtype-badge.vt-long{background:var(--brand-soft);color:var(--brand);border-color:#0000}.channel-meta .vtype-badge.vt-short{background:var(--blue-soft);color:var(--blue);border-color:#0000}.channel-meta .vtype-badge.vt-short2{background:var(--purple-soft,#a78bfa24);color:var(--purple,#a78bfa);border-color:#0000}.row-status-mini{border-radius:5px;padding:3px 9px;font-size:11px;font-weight:600}.row-status-mini.waiting{background:var(--bg-subtle);color:var(--text-3)}.row-status-mini.has-file{background:var(--blue-soft);color:var(--blue)}.row-status-mini.ready{background:var(--green-soft);color:var(--green)}.row-status-mini.missing{background:var(--red-soft);color:var(--red)}.row-status-mini.uploading{background:var(--blue-soft);color:var(--blue)}.row-status-mini.success{background:var(--green-soft);color:var(--green)}.row-status-mini.failed{background:var(--red-soft);color:var(--red)}.row-progress{width:80px;color:var(--text-3);text-align:right;font-family:Roboto Mono,monospace;font-size:11px}.expand-icon{width:18px;height:18px;color:var(--text-3);transition:transform .15s}.expand-icon svg{stroke:currentColor;fill:none;stroke-width:2px;width:16px;height:16px}.channel-card.expanded .expand-icon{transform:rotate(180deg)}.channel-body{display:none;padding:0 16px 14px}.channel-card.expanded .channel-body{display:block}.drop-zone{background:var(--bg-elevated);border:2px dashed var(--border-strong);text-align:center;cursor:pointer;border-radius:10px;margin:12px 0 14px;padding:26px 18px;transition:all .15s}.drop-zone:hover,.drop-zone.dragover{border-color:var(--brand);background:var(--brand-bg)}.drop-zone svg{width:32px;height:32px;stroke:var(--text-3);fill:none;stroke-width:1.5px;margin-bottom:8px}.drop-zone.dragover svg{stroke:var(--brand)}.drop-zone h4{color:var(--text-1);margin-bottom:3px;font-size:13px;font-weight:600}.drop-zone p{color:var(--text-3);font-size:11.5px}.drop-zone input[type=file]{display:none}.file-pill{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;align-items:center;gap:10px;margin:10px 0 14px;padding:10px 14px;display:flex}.file-pill-icon{background:var(--blue-soft);width:30px;height:30px;color:var(--blue);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-pill-icon svg{stroke:currentColor;fill:none;stroke-width:1.75px;width:16px;height:16px}.file-pill-info{flex:1;min-width:0}.file-pill-name{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.file-pill-meta{color:var(--text-3);margin-top:1px;font-family:Roboto Mono,monospace;font-size:10.5px}.file-pill-remove{padding:4px 8px;font-size:10.5px}.row-form{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}.field{flex-direction:column;gap:4px;display:flex}.field.full{grid-column:1/-1}.field label{color:var(--text-2);justify-content:space-between;align-items:center;font-size:11px;font-weight:600;display:flex}.field label .required{color:var(--red)}.field label .char-count{color:var(--text-4);font-family:Roboto Mono,monospace;font-size:10px;font-weight:500}.field input,.field select,.field textarea{background:var(--bg-subtle);border:1px solid var(--border);color:var(--text-1);border-radius:7px;width:100%;padding:8px 11px;font-family:inherit;font-size:12.5px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand-dim);outline:none;box-shadow:0 0 0 3px #e4b53d14}.field textarea{resize:vertical;min-height:70px}.field select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b8b96' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-position:right 11px center;background-repeat:no-repeat;padding-right:32px}.field select:hover{border-color:var(--border-strong,#45454f)}.field .help{color:var(--text-3);font-size:10.5px}.thumb-zone{background:var(--bg-subtle);border:1.5px dashed var(--border-strong);text-align:center;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;min-height:96px;padding:14px;transition:all .15s;display:flex}.thumb-zone:hover,.thumb-zone.dragover{border-color:var(--brand);background:var(--brand-bg)}.thumb-zone svg{width:24px;height:24px;stroke:var(--text-3);fill:none;stroke-width:1.5px;margin-right:8px}.thumb-zone p{color:var(--text-3);font-size:11px}.thumb-zone input[type=file]{display:none}.thumb-preview{background:var(--bg-subtle);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;padding:8px;display:flex}.thumb-preview img{object-fit:cover;background:#000;border-radius:4px;width:96px;height:54px}.thumb-preview .info{flex:1;min-width:0}.thumb-preview .name{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;overflow:hidden}.thumb-preview .size{color:var(--text-3);font-family:Roboto Mono,monospace;font-size:10.5px}.thumb-preview .remove{padding:3px 8px;font-size:10px}.row-actions{align-items:center;gap:8px;margin-top:4px;display:flex}.row-actions .badges{flex-wrap:wrap;gap:5px;margin-right:auto;display:flex}.warn-badge{letter-spacing:.03em;text-transform:uppercase;border-radius:4px;padding:2px 7px;font-size:9.5px;font-weight:700}.warn-badge.missing{background:var(--red-soft);color:var(--red)}.warn-badge.warn{background:var(--amber-soft);color:var(--amber)}.row-progress-bar{background:var(--bg-subtle);border:1px solid var(--border);border-radius:8px;margin-top:10px;padding:9px 12px}.row-progress-bar.success{border-color:#4ade8066}.row-progress-bar.failed{border-color:#ef444466}.row-progress-head{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11.5px;display:flex}.row-progress-bar .bar-wrap{background:var(--bg);border-radius:99px;height:4px;margin-bottom:5px;overflow:hidden}.row-progress-bar .bar-fill{background:linear-gradient(90deg, var(--brand,#facc15), var(--brand-dim,#ca8a04));border-radius:99px;height:100%;transition:width .3s}.row-progress-bar .bar-fill.success{background:var(--green)}.row-progress-bar .bar-fill.failed{background:var(--red)}.row-progress-bar .stats{color:var(--text-3);gap:12px;font-family:Roboto Mono,monospace;font-size:10.5px;display:flex}.row-progress-bar .msg{color:var(--text-3);margin-top:6px;font-size:11px}.row-progress-bar .msg a{color:var(--brand)}.upload-all-bar{z-index:25;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;align-items:center;gap:14px;margin-bottom:14px;padding:14px 18px;display:flex;position:relative;box-shadow:0 4px 20px #0000004d}.upload-all-summary{color:var(--text-2);flex:1;font-size:12.5px}.upload-all-summary strong{color:var(--text-1)}.upload-all-summary .ready-cnt{color:var(--green)}.upload-all-summary .skip-cnt{color:var(--amber)}.add-channel-row{background:var(--bg-elevated);border:1.5px dashed var(--border-strong);cursor:pointer;color:var(--text-3);border-radius:10px;justify-content:center;align-items:center;gap:8px;margin-top:8px;padding:16px;font-size:12.5px;font-weight:600;transition:all .15s;display:flex}.add-channel-row:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-bg)}.add-channel-row svg{stroke:currentColor;fill:none;stroke-width:2px;width:16px;height:16px}.modal-bg{z-index:100;background:#000000b3;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.modal-bg.open{display:flex}.modal{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:14px;flex-direction:column;width:100%;max-width:600px;max-height:85vh;display:flex;overflow:hidden;box-shadow:0 24px 48px #00000080}.modal-head{border-bottom:1px solid var(--border);padding:16px 22px}.modal-head h2{font-size:16px;font-weight:700}.modal-head .sub{color:var(--text-3);margin-top:3px;font-size:12px}.modal-body{flex:auto;min-height:0;padding:18px 22px;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.modal-close{color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:0;line-height:1;transition:background .12s,color .12s}.modal-close:after{content:"✕";font-size:18px;line-height:1}.modal-close:hover{color:var(--text-1);background:var(--bg-hover,#2f2f33)}.modal-head-flex{justify-content:space-between;align-items:center;display:flex}.modal-search{border-bottom:1px solid var(--border);padding:10px 22px}.modal-search input{background:var(--bg-subtle);border:1px solid var(--border);width:100%;color:var(--text-1);border-radius:7px;padding:8px 11px;font-family:inherit;font-size:12.5px}.confirm-summary-list{flex-direction:column;gap:6px;display:flex}.confirm-summary-item{background:var(--bg-subtle);border:1px solid var(--border);border-radius:7px;grid-template-columns:8px 1fr auto;align-items:center;gap:10px;padding:8px 12px;display:grid}.confirm-dot{border-radius:50%;width:8px;height:8px}.confirm-dot.ok{background:var(--green)}.confirm-dot.skip{background:var(--amber)}.confirm-name{color:var(--text-1);font-size:12.5px;font-weight:600}.confirm-sub{color:var(--text-3);margin-top:2px;font-family:Roboto Mono,monospace;font-size:10.5px}.confirm-reason{color:var(--amber);font-family:Roboto Mono,monospace;font-size:10.5px}.modal-list{flex:1;padding:8px;overflow-y:auto}.modal-channel{cursor:pointer;border-radius:7px;grid-template-columns:28px 1fr auto;align-items:center;gap:11px;padding:10px 12px;display:grid}.modal-channel:hover{background:var(--bg-hover)}.modal-channel.disabled{opacity:.4;cursor:not-allowed}.modal-channel .mc-thumb{object-fit:cover;background:var(--bg-subtle);border-radius:50%;width:28px;height:28px}.modal-channel .mc-thumb.placeholder{color:var(--text-2);justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.modal-channel .mc-info{min-width:0}.modal-channel .mc-name{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.modal-channel .mc-sub{color:var(--text-3);margin-top:1px;font-size:10.5px}.modal-channel .mc-badge{letter-spacing:.04em;text-transform:uppercase;border-radius:4px;padding:2px 6px;font-size:9px;font-weight:800}.modal-channel .mc-badge.added{background:var(--brand-soft);color:var(--brand)}.modal-channel .mc-badge.connected{background:var(--green-soft);color:var(--green)}.modal-channel .mc-badge.notconnected{background:var(--bg-subtle);color:var(--text-3);border:1px solid var(--border)}.empty-state{text-align:center;color:var(--text-3);background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:70px 30px}.empty-state svg{stroke:currentColor;fill:none;stroke-width:1.4px;opacity:.4;width:44px;height:44px;margin-bottom:16px}.empty-state h3{color:var(--text-2);margin-bottom:6px;font-size:15px;font-weight:600}.empty-state p{max-width:440px;margin:0 auto 14px;font-size:12.5px;line-height:1.55}.toast-stack{z-index:200;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:10px;min-width:280px;max-width:380px;padding:12px 16px;font-size:12.5px;animation:.25s ease-out slidein;box-shadow:0 8px 24px #0006}.toast.ok{border-left:3px solid var(--green)}.toast.err{border-left:3px solid var(--red)}.toast.info{border-left:3px solid var(--blue)}@media (width<=900px){.row-form{grid-template-columns:1fr}}@media (width<=760px){.channel-row{grid-template-columns:36px 1fr auto;gap:10px;padding:12px}.row-progress{display:none}}


/* ── Video-type icons (additive 2026-07-02): official-style Shorts logo on SHORT
   badges + long-video player icon on LONG badges. Pure CSS — inherits each
   badge's own color via currentColor mask. Safe to append; touches no rule. ── */
.date-type.shorts::before,.date-type.long::before,
.vtype-badge.vt-short::before,.vtype-badge.vt-short2::before,.vtype-badge.vt-long::before{
  content:"";display:inline-block;width:11px;height:11px;margin-right:4px;
  vertical-align:-1.5px;background-color:currentColor;
  -webkit-mask:var(--ot-vticon) center/contain no-repeat;
  mask:var(--ot-vticon) center/contain no-repeat}
.date-type.shorts::before,.vtype-badge.vt-short::before,.vtype-badge.vt-short2::before{
  --ot-vticon:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='m18.931 9.99-1.441-.601 1.717-.913a4.48 4.48 0 0 0 1.874-6.078 4.506 4.506 0 0 0-6.09-1.874L4.792 5.929a4.504 4.504 0 0 0-2.402 4.193 4.521 4.521 0 0 0 2.666 3.904c.036.012 1.442.6 1.442.6l-1.706.901a4.51 4.51 0 0 0-2.369 3.967A4.528 4.528 0 0 0 6.93 24c.725 0 1.437-.174 2.08-.508l10.21-5.406a4.494 4.494 0 0 0 2.39-4.192 4.525 4.525 0 0 0-2.678-3.904ZM9.597 15.19V8.824l6.007 3.184z'/%3E%3C/svg%3E")}
.date-type.long::before,.vtype-badge.vt-long::before{
  --ot-vticon:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='1.5' y='5' width='21' height='14' rx='4' fill='none' stroke='white' stroke-width='2.6'/%3E%3Cpath d='M9.8 9l5.4 3-5.4 3z' fill='white'/%3E%3C/svg%3E")}