.publish-shell{padding-bottom:76px}.publish-main{padding:0 16px 30px}.publish-hero{padding:38px 8px 24px}.publish-hero>span{font-size:11px;font-weight:900;letter-spacing:1.5px;color:#69707a}.publish-hero h1{font-size:44px;margin:10px 0 15px}.publish-hero p{color:var(--muted);margin:0}.user-pill{border:0;border-radius:999px;background:#fff;padding:10px 14px;font-weight:800;box-shadow:0 4px 16px #0000000c}.publish-card{background:#fff;border-radius:22px;padding:20px;margin-bottom:14px;box-shadow:var(--shadow)}.publish-card h2{margin:0 0 4px}.publish-card>p{color:var(--muted);font-size:13px}.publish-card label{display:block;font-size:13px;font-weight:750;margin:13px 0}.publish-card input,.publish-card textarea,.add-account input,.add-account select{display:block;width:100%;margin-top:6px;border:1.5px solid #e0e3e7;border-radius:12px;background:#fafafa;padding:13px;font:inherit;outline:none}.publish-card input:focus,.publish-card textarea:focus{border-color:var(--ink)}.auth-tabs{display:flex;background:#f0f1ed;padding:4px;border-radius:12px;margin:16px 0}.auth-tabs button{flex:1;border:0;background:transparent;border-radius:9px;padding:9px;font-weight:800}.auth-tabs button.active{background:#fff;box-shadow:0 2px 8px #0000000b}.code-row{display:grid;grid-template-columns:1fr 112px;gap:8px;align-items:end}.code-row button{height:46px;margin-bottom:13px;border:0;border-radius:12px;background:var(--accent);font-weight:800}.form-msg{min-height:20px;margin-bottom:0!important}.form-msg.error{color:#c62828}.upload-box{display:grid!important;place-items:center;text-align:center;border:1.5px dashed #b9bec5;border-radius:17px;padding:28px 15px!important;background:#fafafa;cursor:pointer}.upload-box input{display:none}.upload-box span{color:var(--muted);font-weight:400;margin-top:5px}.upload-progress{height:7px;background:#eceee8;border-radius:8px;overflow:hidden}.upload-progress i{display:block;width:0;height:100%;background:var(--accent-2);transition:width .2s}.publish-platforms{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.publish-platforms label{margin:0}.publish-platforms input{display:none}.publish-platforms span{display:block;border:1.5px solid #e0e3e7;border-radius:14px;padding:13px 8px;text-align:center}.publish-platforms small{display:block;color:#8a919a;margin-top:4px;font-weight:500}.publish-platforms input:checked+span{border-color:var(--ink);background:var(--accent)}.mobile-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(680px,100%);display:grid;grid-template-columns:1fr 1fr;background:#fff;border-top:1px solid #e5e7eb;padding:9px 12px calc(9px + env(safe-area-inset-bottom));z-index:10}.mobile-nav a{text-align:center;text-decoration:none;color:#7c838d;font-size:13px;font-weight:800;padding:8px}.mobile-nav a.active{color:var(--ink);background:#f1f3ed;border-radius:12px}.task-list{display:grid;gap:9px}.task-item{border:1px solid #e5e7eb;border-radius:14px;padding:13px}.task-item header{display:flex;justify-content:space-between;gap:10px}.task-item p{margin:7px 0 0;color:var(--muted);font-size:12px}.task-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.task-badges span{font-size:11px;padding:4px 7px;border-radius:999px;background:#eef0eb}.empty{text-align:center;color:var(--muted)}.account-note{color:var(--muted);font-size:13px}.account-list{display:grid;gap:8px;margin:15px 0}.account-item{display:flex;justify-content:space-between;align-items:center;padding:12px;background:#fff;border-radius:13px}.account-item small{display:block;color:var(--muted)}.account-status{font-size:11px;padding:5px 8px;border-radius:999px;background:#fff2cc}.add-account{display:grid;gap:9px}.add-account input,.add-account select{margin:0}dialog#accountDialog{width:min(100% - 20px,600px)}
.account-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.account-actions button{border:0;border-radius:8px;padding:7px 8px;background:var(--ink);color:#fff;font-size:11px;font-weight:750}.account-actions button+button{background:var(--accent);color:var(--ink)}
.account-actions button.muted{background:#e9ebee;color:var(--ink)}.account-actions button.danger{background:#fee2e2;color:#b42318}

.qr-img{width:100%;max-width:100%;margin:12px auto;display:block;border-radius:12px;background:#fff;box-shadow:0 8px 24px rgba(17,24,39,.08);cursor:zoom-in}

.verify-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.verify-row input{flex:1;min-width:140px;padding:8px 10px;border:1px solid #dcdfe2;border-radius:10px;font-size:13px}.verify-row button{padding:8px 12px;border:0;border-radius:10px;background:#111827;color:#fff;font-size:13px;cursor:pointer}

.group-head{display:flex;align-items:center;justify-content:space-between;margin:18px 0 6px}.group-head h3{margin:0;font-size:14px}.group-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}.group-item{border:1px solid #e8e9ed;border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;background:#fff}.group-item .group-name{padding:8px 10px;border:1px solid #dcdfe2;border-radius:10px;font-size:13px}.group-platforms{display:flex;gap:8px;flex-wrap:wrap}.group-platforms label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#6b7280;flex:1;min-width:120px}.group-platforms select{padding:7px 8px;border:1px solid #dcdfe2;border-radius:9px;font-size:12.5px;background:#fff}.group-actions{display:flex;gap:8px;justify-content:flex-end}.history{margin-top:12px}.history summary{cursor:pointer;font-size:13px;color:#6b7280;padding:8px 0}.task-item>p{margin:2px 0 8px}

/* 顶部导航 */
.pub-nav{display:flex;gap:14px;margin-left:auto;margin-right:12px}
.pub-nav a{color:#6b7280;text-decoration:none;font-size:13.5px;font-weight:600}
.pub-nav a:hover{color:#111827}
@media(max-width:520px){.pub-nav{display:none}}
input,textarea,select{font-size:16px !important}

.qr-img.zoom{position:fixed;inset:0;width:100vw;height:100vh;max-width:none;object-fit:contain;background:#000;z-index:9999;margin:0;border-radius:0;padding:10px;box-sizing:border-box;cursor:zoom-out}

/* 扫码弹窗：手机上全屏显示，二维码铺满，按钮加大 */
#qrDialog{width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:0;border:0;border-radius:0;background:#fff}
#qrDialog::backdrop{background:rgba(11,16,32,.7)}
#qrDialog .admin-panel{width:100%;height:100%;max-width:none;max-height:none;border-radius:0;padding:14px 16px 20px;display:flex;flex-direction:column;gap:10px;overflow:auto;box-shadow:none}
#qrDialog .admin-head{flex:none}
#qrDialog .admin-head .icon-btn{width:44px;height:44px;font-size:26px;line-height:1}
#qrDialog .account-note{flex:none;font-size:13px;margin:0}
#qrDialog #qrImg{flex:1 1 0;height:0;min-height:0;width:100%;max-width:100%;max-height:none;object-fit:contain;object-position:center;margin:6px 0;border-radius:10px;background:#fff}
#qrDialog #qrMsg{flex:none;min-height:18px;font-size:13px;color:#6b7280;margin:0}

#qrDialog #qrDone{flex:none;min-height:50px;font-size:16px}
.qr-img.zoom{opacity:.95}
/* 验证码区：输入框放大 + 获取/提交两个按钮 */
#qrDialog .qr-code{flex:none;display:flex;flex-direction:column;gap:10px;margin-top:4px}
#qrDialog .qr-code.hidden{display:none}
#qrDialog .qr-code input{width:100%;height:58px;border:1px solid #dcdfe2;border-radius:14px;font-size:20px;text-align:center;letter-spacing:4px;font-weight:700;background:#fff;color:#111827}
#qrDialog .qr-code-actions{display:flex;gap:10px}
#qrDialog .qr-code-actions button{flex:1;height:52px;border-radius:14px;font-size:15px;font-weight:700;cursor:pointer;border:1px solid #dcdfe2;background:#fff;color:#111827}
#qrDialog .qr-code-actions #qrCodeSubmit{background:#0b1020;color:#fff;border-color:#0b1020}
#qrDialog .qr-code-actions button:disabled{opacity:.55}

/* 扫码后的抖音二次验证：隐藏已经失效的二维码，把验证码区固定为主画面 */
#qrDialog.verify-mode .account-note,#qrDialog.verify-mode #qrImg,#qrDialog.verify-mode #qrDone{display:none}
#qrDialog.verify-mode #qrManualVerify{display:none}
#qrManualVerify{flex:none;min-height:44px;border:1px solid #fed7aa;background:#fff7ed;color:#9a3412;border-radius:12px;font-weight:700}
#qrDialog.verify-mode .admin-panel{justify-content:flex-start;padding-top:max(18px,env(safe-area-inset-top))}
#qrDialog.verify-mode #qrMsg{font-size:16px;line-height:1.6;color:#111827;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:14px;margin-top:10px}
#qrDialog.verify-mode .qr-code{display:flex;margin:auto 0;min-height:280px;justify-content:center}
#qrDialog.verify-mode .qr-code input{height:72px;font-size:26px;border-width:2px}
#qrDialog.verify-mode .qr-code-actions button{height:60px;font-size:17px}

/* 手机端实时浏览器：完整呈现平台验证页，触摸事件由后端送进真实 Chrome */
.remote-open-btn{flex:none;min-height:46px;border:0;border-radius:13px;background:#111827;color:#fff;font-size:15px;font-weight:800}
#remoteDialog{width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:0;border:0;background:#0b1020;color:#fff}
#remoteDialog::backdrop{background:#0b1020}
.remote-shell{height:100%;display:flex;flex-direction:column;padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom));box-sizing:border-box;gap:8px}
.remote-shell header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex:none}.remote-shell header div{display:flex;flex-direction:column}.remote-shell header b{font-size:16px}.remote-shell header small{color:#b8c0cc;max-width:75vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.remote-shell header button{width:42px;height:42px;border:0;border-radius:50%;background:#283142;color:#fff;font-size:25px}
.remote-stage{position:relative;flex:1;min-height:0;display:grid;place-items:center;background:#151b27;border-radius:14px;overflow:hidden;touch-action:none}.remote-stage img{width:100%;height:100%;object-fit:contain;display:block;touch-action:none;user-select:none;-webkit-user-drag:none}.remote-stage span{position:absolute;color:#cbd5e1;font-size:14px}
.remote-keyboard{display:grid;grid-template-columns:1fr 72px;gap:7px;flex:none}.remote-keyboard input{height:48px;border:1px solid #3a465a;border-radius:11px;background:#fff;color:#111827;padding:0 12px;font-size:16px}.remote-keyboard button,.remote-controls button{border:0;border-radius:10px;background:#2c6bed;color:#fff;font-weight:800}
.remote-controls{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;flex:none}.remote-controls button{min-height:42px;background:#283142;font-size:12px;padding:5px}
.remote-shell>p{margin:0;color:#aeb7c5;font-size:11px;text-align:center;flex:none}
@media(max-width:420px){.remote-controls{grid-template-columns:repeat(3,1fr)}.remote-stage{min-height:300px}}

.err-shot{display:block;width:100%;max-width:520px;margin:6px 0 12px;border-radius:10px;border:1px solid #e6e8eb}

/* 视频来源切换：上传 / AI 生成 */
.source-tabs{display:flex;gap:8px;margin:2px 0 14px;background:#f2f3f1;padding:5px;border-radius:14px}
.source-tabs button{flex:1;height:42px;border:0;border-radius:10px;background:transparent;color:#6b7280;font-size:14px;font-weight:700;cursor:pointer}
.source-tabs button.active{background:#fff;color:#111827;box-shadow:0 2px 8px rgba(17,24,39,.08)}
#genPane label{display:flex;flex-direction:column;gap:8px;font-size:13px;color:#6b7280;margin-bottom:12px}
#genPane textarea,#genPane select{width:100%;border:1px solid #dcdfe2;border-radius:12px;padding:12px 13px;font-size:16px;color:#111827;background:#fff;font-family:inherit}
#genPane textarea{resize:vertical;line-height:1.6}
.gen-row{display:flex;gap:10px}
.gen-row label{flex:1}
.gen-preview{width:100%;margin-top:12px;border-radius:14px;background:#000;max-height:420px}
/* 生成来源登录按钮 */
#jmLogin{width:100%;height:48px;margin:0 0 10px;font-size:14px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #dcdfe2;color:#111827;font-weight:700}
#jmLogin.hidden{display:none}
#remoteFrame{touch-action:none;user-select:none;will-change:transform}

.remote-inputbar{display:flex;gap:8px;padding:10px 12px;background:#fff;border-top:1px solid #e6e8eb}
.remote-inputbar input{flex:1;height:44px;border:1px solid #dcdfe2;border-radius:11px;padding:0 12px;font-size:16px}
.remote-inputbar button{height:44px;padding:0 14px;border-radius:11px;border:1px solid #0b1020;background:#0b1020;color:#fff;font-size:14px;font-weight:700}
.remote-inputbar button.mini-btn{background:#fff;color:#111827;border-color:#dcdfe2}

/* 实时画面：用背景图避免微信长按弹出转发/收藏菜单 */
#remoteFrame{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:center;
  touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;will-change:transform}
.remote-stage{touch-action:none;-webkit-touch-callout:none;user-select:none}

.library-list{display:grid;gap:10px;margin-top:8px}
.lib-item{border:1px solid #e6e8eb;border-radius:14px;padding:12px 14px;background:#fff}
.lib-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lib-head b{font-size:14px}
.lib-badge{font-size:11px;background:#eef2ff;color:#3949ab;border-radius:999px;padding:3px 8px;white-space:nowrap}
.lib-meta{color:#8a93a3;font-size:12px;margin:4px 0 10px}
.lib-actions{display:flex;gap:8px;align-items:center}
.lib-actions button,.lib-link{height:34px;padding:0 12px;border-radius:9px;border:1px solid #dcdfe2;background:#fff;color:#111827;font-size:13px;font-weight:600;display:inline-flex;align-items:center;text-decoration:none;cursor:pointer}
.lib-actions button.danger{color:#dc2626;border-color:#f3c6c6}
