@font-face {
  font-family: 'PosterFont';
  src: local('Microsoft YaHei'), local('PingFang SC'), local('Noto Sans CJK SC'), local('SimHei');
}
[contenteditable][data-empty='1']::before {
  content: attr(data-placeholder);
  color: #9CA3AF;
  pointer-events: none;
  position: absolute;
}
[contenteditable='true'] { position: relative; }
.pause-bubble .bubble-x { pointer-events:none; }

*{box-sizing:border-box;margin:0;padding:0;}
body{background:#F7F8FA;color:#1A1A2E;font-family:'PingFang SC','Microsoft YaHei',system-ui,sans-serif;min-height:100vh;}
:root{--bg:#F7F8FA;--surface:#FFFFFF;--surface2:#F3F4F6;--border:rgba(0,0,0,0.08);--border2:rgba(0,0,0,0.14);--text:#1A1A2E;--text2:#374151;--text3:#6B7280;--accent:#6366F1;--accent2:#8B5CF6;--accent-bg:rgba(99,102,241,0.10);--green:#059669;--green-bg:rgba(5,150,105,0.10);--amber:#D97706;--amber-bg:rgba(217,119,6,0.12);--red:#DC2626;--r:10px;--rl:16px;}
header{display:flex;align-items:center;justify-content:space-between;padding:0 32px;height:56px;border-bottom:1px solid var(--border);background:#FFFFFF;position:sticky;top:0;z-index:100;}
.logo{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;color:#1A1A2E;letter-spacing:-0.3px;}
.logo-icon{width:32px;height:32px;background:linear-gradient(135deg,#6366F1,#8B5CF6);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;flex-shrink:0;}
#btn-login{padding:7px 18px;background:linear-gradient(135deg,#6366F1,#8B5CF6);color:#fff;border:none;border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit;font-weight:500;}
.user-info{display:flex;align-items:center;gap:8px;}
.user-avatar{width:32px;height:32px;border-radius:50%;border:2px solid var(--accent);}
.user-name{font-size:13px;}
.vip-badge{font-size:11px;padding:3px 10px;border-radius:20px;background:#EEF2FF;color:#6366F1;border:none;font-weight:500;white-space:nowrap;}
.free-badge{font-size:11px;padding:3px 10px;border-radius:20px;background:#F3F4F6;color:#6B7280;border:none;font-weight:500;white-space:nowrap;}
#btn-logout{font-size:12px;color:#6B7280;background:none;border:1px solid var(--border2);border-radius:6px;padding:4px 10px;cursor:pointer;font-family:inherit;}
.usage-bar{display:none!important;}
.usage-left{color:var(--accent2);}
.usage-right{display:flex;align-items:center;gap:10px;}
#btn-upgrade{padding:6px 16px;background:var(--amber);color:#1a1000;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;}
#guest-view{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;text-align:center;padding:24px;}
.hero-icon{font-size:56px;margin-bottom:20px;}
.hero-title{font-size:32px;font-weight:700;margin-bottom:12px;color:#1A1A2E;}
.hero-sub{font-size:16px;color:#4B5563;margin-bottom:32px;line-height:1.8;}
.feature-list{display:flex;gap:16px;margin-bottom:40px;flex-wrap:wrap;justify-content:center;}
.feature-item{background:#FFFFFF;border:1px solid #E5E7EB;border-radius:var(--rl);padding:16px 20px;font-size:14px;color:#6366F1;min-width:140px;box-shadow:0 1px 4px rgba(0,0,0,0.06);}
.feature-item span{display:block;font-size:22px;margin-bottom:6px;}
#btn-start-login{padding:14px 40px;background:var(--accent);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:500;cursor:pointer;font-family:inherit;}
#main-tool{display:none;max-width:1100px;margin:0 auto;padding:32px 24px;overflow-x:hidden;}
.steps{display:flex;align-items:center;margin-bottom:36px;}
.step{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:8px;color:#6B7280;font-size:13px;}
.step.active{background:#EEF2FF;color:#6366F1;}
.step.done{color:var(--green);}
.step-num{width:20px;height:20px;border-radius:50%;border:1.5px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;flex-shrink:0;}
.step.done .step-num{background:var(--green);border-color:var(--green);color:#fff;}
.step-div{width:28px;height:1px;background:var(--border2);}
#upload-zone{border:2px dashed #9B93F5;border-radius:var(--rl);padding:56px 32px;text-align:center;cursor:pointer;transition:all .2s;background:#DDD9FB;}
#upload-zone:hover,#upload-zone.drag{border-color:#6366F1;background:#C9C3F8;}
.upload-icon{font-size:52px;margin-bottom:16px;}
.upload-title{font-size:22px;font-weight:700;margin-bottom:10px;color:#1A1A2E;}
.upload-sub{color:#374151;font-size:15px;}
.type-pills{display:flex;gap:8px;justify-content:center;margin-top:14px;flex-wrap:wrap;}
.type-pill{font-size:14px;padding:6px 18px;border-radius:8px;border:1px solid #9B8FF0;color:#1A1A2E;background:#fff;font-weight:500;cursor:pointer;}
#file-input{display:none;}
.pbar-wrap{background:#E5E7EB;border-radius:4px;height:4px;overflow:hidden;margin:14px 0;}
.pbar{height:100%;background:var(--accent);border-radius:4px;transition:width .3s;width:0%;}
.sec-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
.sec-title{font-size:15px;font-weight:500;}
.sec-sub{font-size:12px;color:#6B7280;margin-top:2px;}
.slides-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;}
/* 列表视图已移除，仅保留网格视图 */
.ratio-pill{padding:6px 14px;border-radius:20px;border:1.5px solid var(--border2);background:var(--surface);color:#9CA3AF;font-size:12px;cursor:pointer;transition:all .15s;font-family:inherit}
.ratio-pill:hover{border-color:var(--accent);color:var(--accent)}
.ratio-pill.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.ratio-canvas-wrap{position:relative;background:#F3F4F6;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid #E5E7EB;}
.ratio-canvas-wrap canvas{display:block;max-width:100%;max-height:160px}
.ratio-page-label{font-size:11px;color:#6B7280;margin-top:5px;text-align:center}
.slide-card{background:#FFFFFF;border:1px solid #E5E7EB;border-radius:var(--rl);overflow:hidden;cursor:pointer;transition:opacity .2s,box-shadow .2s,transform .15s;}
.slide-card:hover{box-shadow:0 4px 16px rgba(99,102,241,0.14);border-color:rgba(99,102,241,0.4);transform:translateY(-2px);}
.slide-card:active{cursor:grabbing;transform:translateY(0);}
.slide-card.dragging{opacity:.4;box-shadow:0 0 0 2px var(--accent);}
.slide-card.drag-over{box-shadow:0 0 0 2px var(--accent);border-color:var(--accent);}
.slide-thumb{width:100%;aspect-ratio:var(--thumb-ratio,16/9);background:#000;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;}
.slide-thumb img{width:100%;height:100%;object-fit:contain;background:#fff;}.slide-thumb img[style*="fill"]{object-fit:fill!important;}
.slide-badge{position:absolute;top:7px;left:7px;background:rgba(0,0,0,0.55);font-size:11px;font-weight:500;padding:2px 8px;border-radius:20px;color:#fff;}
.audio-badge{position:absolute;top:7px;right:36px;background:var(--green-bg);border:1px solid rgba(62,207,142,0.35);font-size:10px;padding:2px 7px;border-radius:20px;color:var(--green);display:none;}
.delete-btn{position:absolute;top:7px;right:7px;width:26px;height:26px;border-radius:50%;background:rgba(242,107,107,0.85);border:none;color:#fff;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;z-index:10;}
.slide-card:hover .delete-btn{opacity:1;}
.delete-btn:hover{background:var(--red);}
.total-chars-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:#F9FAFB;border:1px solid #E5E7EB;border-radius:var(--r);margin-bottom:14px;font-size:12px;}
.total-chars-bar.over{border-color:rgba(242,107,107,.4);background:rgba(242,107,107,.06);}
.total-chars-num{font-weight:500;color:var(--accent2);}
.total-chars-bar.over .total-chars-num{color:var(--red);}
.slide-body{padding:11px;}
.slide-label{font-size:11px;color:#6B7280;margin-bottom:5px;display:flex;align-items:center;}
.slide-text{width:100%;background:#F9FAFB;border:1px solid #E5E7EB;border-radius:7px;color:#1A1A2E;font-size:12px;line-height:1.6;padding:7px 9px;resize:vertical;min-height:72px;font-family:inherit;position:relative;z-index:1;}
.slide-text:focus{outline:none;border-color:var(--accent);}
.slide-controls{display:flex;gap:6px;margin-top:7px;}
.btn-sm{flex:1;padding:5px 0;font-size:11px;border-radius:6px;border:1px solid var(--border2);background:transparent;color:#6B7280;cursor:pointer;}
.btn-sm:hover{border-color:var(--accent);color:var(--accent2);}
.btn-sm.on{border-color:var(--green);color:var(--green);background:var(--green-bg);}
.card{background:#FFFFFF;border:1px solid #E5E7EB;border-radius:var(--rl);padding:22px;}
.settings-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:18px;}
.sg label{display:block;font-size:11px;color:#6B7280;margin-bottom:5px;}
.sg select,.sg input[type=text],.sg input[type=password],.sg input[type=number]{width:100%;background:var(--surface2);border:1px solid var(--border2);border-radius:8px;color:#1A1A2E;padding:8px 10px;font-size:13px;appearance:none;font-family:inherit;}
.sg input[type=range]{width:100%;}

/* ===== RESPONSIVE: MOBILE ===== */
@media(max-width:640px){
  header{padding:0 14px;height:50px;}
  .logo-text-full{display:none;}
  .logo-icon{width:30px;height:30px;}
  #btn-logout{width:30px;height:30px;padding:0;border-radius:8px;font-size:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpolyline points='16 17 21 12 16 7'/%3E%3Cline x1='21' y1='12' x2='9' y2='12'/%3E%3C/svg%3E") center/18px no-repeat;border:1px solid #E5E7EB;flex-shrink:0;}
  .user-name{display:none;}
  .logo-text{display:none;}
  header{padding:0 10px;}
  .vip-badge,.free-badge{font-size:10px;padding:2px 6px;}
  .user-avatar{width:26px;height:26px;}
  #user-area{gap:4px;flex-wrap:nowrap;overflow:hidden;max-width:calc(100vw - 120px);}
  #user-area .btn{font-size:11px;padding:4px 8px;}
  #user-area .btn-outline{font-size:11px;padding:4px 8px;min-width:0;white-space:nowrap;}
  #user-area .btn-outline[onclick*="showPay"]{padding:4px 10px;}
  #ai-credits-bar{display:none!important;}
  #user-area .btn-outline[onclick*="showMyModal"]{font-size:11px;padding:4px 8px;}
  #user-area .btn-outline[onclick*="showPay"]{font-size:11px;padding:4px 8px;}
  #main-tool{padding:16px 8px;overflow-x:hidden;}
  #ratio-preview-grid{grid-template-columns:1fr 1fr!important;gap:8px!important;width:100%;box-sizing:border-box;}
  #ratio-preview-grid>div{min-width:0;overflow:hidden;box-sizing:border-box;}
  #ratio-preview-grid .rbg-btn-0,#ratio-preview-grid [class^="rbg-btn"]{width:16px!important;height:16px!important;}
  #ratio-preview-grid [class^="rmode-btn"]{font-size:10px!important;}
  body{overflow-x:hidden;}
  #sec-ratio .card{padding:12px 8px!important;overflow:hidden;}
  .ratio-canvas-wrap{width:100%!important;}
  .ratio-canvas-wrap canvas{max-height:110px!important;width:100%!important;}
  .steps{display:none!important;}
  #sec-ratio{padding:12px 8px!important;}
  #ratio-pills{gap:6px!important;}
  .ratio-pill{font-size:11px!important;padding:4px 10px!important;}
  #ratio-preview-grid{grid-template-columns:1fr 1fr!important;gap:8px!important;}
  .ratio-canvas-wrap canvas{max-height:120px!important;}
  #sec-ratio .sec-header{flex-wrap:wrap;gap:8px;}
  #sec-ratio .sec-header>div:last-child{width:100%;display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
  .rmode-btn-0,.rmode-btn-1,.rmode-btn-2,.rmode-btn-3{font-size:10px!important;padding:3px 0!important;}
  .rbg-btn-0,.rbg-btn-1{width:16px!important;height:16px!important;}
  .steps-mobile{display:flex!important;}
  .step{padding:4px 6px;font-size:10px;white-space:nowrap;flex-shrink:0;}
  .step-div{width:8px;flex-shrink:0;}
  #upload-zone{padding:36px 16px;}
  .slides-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;}
  .settings-row{grid-template-columns:1fr 1fr;}
  .modal{width:92vw!important;padding:20px 16px!important;}
  .pay-box{width:92vw!important;padding:20px 16px!important;}
}
@media(max-width:400px){
  .settings-row{grid-template-columns:1fr;}
}
.btn{padding:9px 22px;border-radius:9px;font-size:13px;font-weight:500;cursor:pointer;border:none;display:inline-flex;align-items:center;gap:7px;}
.btn-primary{background:var(--accent);color:#fff;}
.btn-primary:hover{background:var(--accent2);}
.btn-primary:disabled{opacity:.35;cursor:not-allowed;}
.btn-outline{background:transparent;border:1px solid var(--border2);color:#1A1A2E;}
.btn-outline:hover{border-color:var(--accent);color:var(--accent2);}
.btn-green{background:var(--green);color:#082918;font-weight:600;}
.btn-green:disabled{opacity:.35;cursor:not-allowed;}
.action-bar{display:flex;gap:10px;align-items:center;margin-top:22px;flex-wrap:wrap;}
.notice{background:var(--amber-bg);border:1px solid rgba(245,166,35,0.2);border-radius:var(--r);padding:10px 14px;font-size:12px;color:var(--amber);margin-bottom:14px;line-height:1.7;}
.notice-info{background:var(--accent-bg);border:1px solid rgba(124,106,245,0.2);border-radius:var(--r);padding:10px 14px;font-size:12px;color:var(--accent2);margin-bottom:14px;line-height:1.7;}
.gen-step{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px;}
.gen-step:last-child{border:none;}
.gen-dot{width:8px;height:8px;border-radius:50%;background:var(--border2);flex-shrink:0;}
.gen-step.done .gen-dot{background:var(--green);}
.gen-step.active .gen-dot{background:var(--accent);animation:pulse 1s infinite;}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.bgm-bar{width:3px;border-radius:2px;background:var(--border);flex-shrink:0;transition:background .1s}
.bgm-bar.played{background:var(--accent)}
.bgm-bar.active{background:var(--accent2)}
.preview-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;}
.preview-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.preview-body{padding:18px;}
video{width:100%;border-radius:8px;background:#000;display:block;}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.75);z-index:200;align-items:center;justify-content:center;}
@media(max-width:640px){
  .modal-overlay{align-items:flex-end!important;}
  .modal{border-radius:18px 18px 0 0!important;width:100%!important;max-width:100%!important;padding:20px 20px 36px!important;margin:0!important;}
  .modal::before{content:'';display:block;width:36px;height:4px;background:#E5E7EB;border-radius:2px;margin:0 auto 16px;}
}
.modal-overlay.show{display:flex;}
.my-tab{padding:8px 16px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text3);font-size:13px;cursor:pointer;font-family:inherit;margin-bottom:-1px;}
.my-tab:hover{color:var(--text2);}
.my-tab.active{color:var(--accent2);border-bottom-color:var(--accent);}
.modal{background:var(--surface);border:1px solid rgba(255,255,255,0.1);border-radius:var(--rl);padding:32px;width:360px;text-align:center;}
.modal-title{font-size:18px;font-weight:500;margin-bottom:6px;}
.modal-sub{font-size:13px;color:#6B7280;margin-bottom:24px;}
#qrcode-wrap{width:200px;height:200px;margin:0 auto 16px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
#qrcode-wrap iframe{width:300px;height:300px;border:none;transform:scale(0.66);transform-origin:center;}
.qr-tip{font-size:12px;color:#6B7280;margin-bottom:20px;}
.modal-close{font-size:12px;color:#6B7280;background:none;border:none;cursor:pointer;font-family:inherit;text-decoration:underline;}
.pay-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.75);z-index:200;align-items:center;justify-content:center;}
.pay-modal.show{display:flex;}
.pay-box{background:#FFFFFF;border:1px solid #E5E7EB;border-radius:var(--rl);padding:32px;width:380px;max-width:95vw;text-align:center;}
.pay-title{font-size:18px;font-weight:700;margin-bottom:6px;color:#1A1A2E;}
.pay-sub{font-size:13px;color:#6B7280;margin-bottom:24px;}
.pay-price{font-size:42px;font-weight:600;color:var(--amber);margin-bottom:4px;}
.pay-price span{font-size:16px;font-weight:400;color:#6B7280;}
.pay-desc{font-size:12px;color:#6B7280;margin-bottom:24px;}
.pay-features{text-align:left;margin-bottom:24px;}
.pay-feature{font-size:13px;color:#059669;padding:4px 0;}
#btn-pay{width:100%;padding:13px;background:var(--amber);color:#1a1000;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;margin-bottom:10px;}
#btn-pay-close{font-size:12px;color:#6B7280;background:none;border:none;cursor:pointer;font-family:inherit;text-decoration:underline;}
#toast{position:fixed;bottom:22px;right:22px;background:#FFFFFF;border:1px solid #E5E7EB;border-radius:9px;padding:10px 16px;font-size:13px;color:#1A1A2E;transform:translateY(10px);opacity:0;transition:all .25s;z-index:9999;box-shadow:0 4px 12px rgba(0,0,0,0.1);}
#toast.show{transform:translateY(0);opacity:1;}
#toast.ok{border-color:rgba(62,207,142,.35);color:var(--green);}
#toast.err{border-color:rgba(242,107,107,.35);color:var(--red);}
#pptx-notice{display:none;margin-top:14px;}

/* ========== 居中编辑弹窗 ========== */
.drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:500;opacity:0;transition:opacity .25s;pointer-events:none;backdrop-filter:blur(4px) brightness(0.6);}
.drawer-overlay.open{opacity:1;pointer-events:auto;}
.drawer:not(.open){pointer-events:none;}
.drawer{position:fixed;top:50%;left:50%;width:min(860px,95vw);max-height:90vh;background:#f0f0f0;z-index:501;transform:translate(-50%,-48%) scale(0.97);opacity:0;transition:transform .25s cubic-bezier(.32,.72,0,1),opacity .25s;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,0.5);border-radius:16px;border:1px solid rgba(0,0,0,0.08);color:#1a1a1a;}
.drawer.open{transform:translate(-50%,-50%) scale(1);opacity:1;}
.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid rgba(0,0,0,0.1);flex-shrink:0;background:#e8e8e8;border-radius:16px 16px 0 0;}
.drawer-nav{display:flex;align-items:center;gap:8px;}
.drawer-nav button{width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.drawer-nav button:hover:not(:disabled){border-color:var(--accent);color:var(--accent2);}
.drawer-nav button:disabled{opacity:0.3;cursor:not-allowed;}
.drawer-body{flex:1;overflow:hidden;display:flex;gap:0;}
.drawer-left{width:52%;flex-shrink:0;padding:16px 12px 16px 18px;display:flex;flex-direction:column;}
.drawer-right{flex:1;padding:16px 18px 16px 12px;display:flex;flex-direction:column;overflow-y:auto;}
.drawer-img{width:100%;border-radius:10px;overflow:hidden;background:transparent;flex:1;display:flex;align-items:center;justify-content:center;}
.drawer-img img{width:100%;height:100%;object-fit:contain;display:block;max-height:420px;}
.drawer-narr{background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;margin-bottom:10px;flex-shrink:0;}
.drawer-narr-header{display:flex;align-items:center;gap:6px;margin-bottom:7px;}
.drawer-footer{padding:12px 18px;border-top:1px solid rgba(0,0,0,0.1);display:flex;gap:8px;flex-shrink:0;align-items:center;background:#e8e8e8;border-radius:0 0 16px 16px;color:#333;}
@media(max-width:600px){
  .drawer{width:98vw;max-height:95vh;}
  .drawer-body{flex-direction:column;}
  .drawer-left{width:100%;padding:12px 14px 0;flex:none;}
  .drawer-right{padding:10px 14px 12px;}
  .drawer-img img{max-height:180px;}
}
/* ========== END 居中弹窗 ========== */

/* ========== 抽屉内部浅色主题 ========== */
.drawer .drawer-nav button{background:#fff;border-color:rgba(0,0,0,0.15);color:#444;}
.drawer .drawer-nav button:hover:not(:disabled){border-color:#7c6af5;color:#7c6af5;}
.drawer-right,
.drawer-right *{color:#1a1a1a;}
.drawer .drawer-narr{background:#fff;border:1px solid rgba(0,0,0,0.12);}
.drawer-right textarea{color:#1a1a1a;background:#fff;border:1px solid rgba(0,0,0,0.15);border-radius:7px;padding:8px 10px;}
.drawer-right textarea::placeholder{color:#bbb;}
.ProseMirror { white-space: pre-wrap !important; }
.ProseMirror p { white-space: pre-wrap !important; }
/* 第二个起的主播标签前换行 */
.ProseMirror span[data-voice-tag] { display: inline-flex; }
.ProseMirror span[data-voice-tag] + span[data-voice-tag],
.ProseMirror span[data-voice-tag] ~ span[data-voice-tag] {
  display: block;
  margin-top: 10px;
}
.drawer .btn-outline{background:#fff;border:1px solid rgba(0,0,0,0.2);color:#333;}
.drawer .btn-outline:hover{border-color:#7c6af5;color:#7c6af5;background:#f5f3ff;}
.drawer .btn-primary{background:#7c6af5;color:#fff;border:none;}
.drawer .btn-primary:hover{background:#6b58e8;}
#drawer-ai-panel{background:#f5f5f5;border:1px solid rgba(0,0,0,0.1);color:#1a1a1a;}
#drawer-ai-panel input,
#drawer-ai-panel textarea{background:#fff;border:1px solid rgba(0,0,0,0.15);color:#1a1a1a;}
#drawer-ai-panel button{background:#fff;border:1px solid rgba(0,0,0,0.18);color:#333;}
#drawer-ai-panel .btn-primary,
#drawer-ai-start-btn{background:#7c6af5;color:#fff;border:none;}
.slide-card:hover .drag-handle{opacity:1 !important;}
.drag-handle:active{cursor:grabbing;}
/* ========== END 抽屉浅色主题 ========== */

@font-face {
  font-family: 'NotoSansSC';
  src: url('/fonts/NotoSansSC-Regular.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}
@font-face {
  font-family: 'NotoSansSC';
  src: url('/fonts/NotoSansSC-Bold.woff2') format('woff2');
  font-weight: bold;
  font-style: normal;
  font-display: block;
}

/* ========== 图片槽位选择器 ========== */
#slot-picker-overlay {
  position:fixed;inset:0;background:rgba(0,0,0,0.85);z-index:9999;
  display:none;flex-direction:column;
}
#slot-picker-overlay.show { display:flex; }
.slot-picker-header {
  background:#FFFFFF;padding:14px 16px;display:flex;align-items:center;
  justify-content:space-between;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,0.08);
}
.slot-picker-title { font-size:16px;font-weight:700;color:#1A1A2E; }
.slot-picker-count { font-size:13px;font-weight:600;padding:4px 10px;border-radius:20px;background:rgba(124,106,255,0.2);color:#a78bfa; }
.slot-picker-count.full { background:rgba(255,68,68,0.2);color:#f87171; }
.slot-picker-body {
  flex:1;overflow-y:auto;padding:12px;
  display:grid;grid-template-columns:repeat(4,1fr);gap:8px;
  align-content:start;
}
.slot-item {
  aspect-ratio:1;border-radius:10px;overflow:hidden;position:relative;
  background:#F3F4F6;border:1.5px solid #E5E7EB;
  cursor:pointer;transition:border-color .15s;
}
.slot-item.filled { border-color:rgba(124,106,255,0.5); }
.slot-item.empty { border:1.5px dashed #C7D2FE; }
.slot-item.empty:hover { border-color:#6366F1;background:#EEF2FF; }
.slot-item img { width:100%;height:100%;object-fit:cover;display:block; }
.slot-num {
  position:absolute;top:4px;left:4px;background:#7c6aff;color:#fff;
  font-size:11px;font-weight:700;width:20px;height:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
.slot-del {
  position:absolute;top:2px;right:2px;background:rgba(0,0,0,0.6);color:#fff;
  font-size:13px;width:20px;height:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  border:none;line-height:1;
}
.slot-del:hover { background:rgba(220,38,38,0.8); }
.slot-plus {
  width:100%;height:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:4px;
  color:rgba(255,255,255,0.3);font-size:24px;
}
.slot-picker-errors {
  margin:0 12px 8px;background:rgba(220,38,38,0.12);border:1px solid rgba(220,38,38,0.3);
  border-radius:10px;overflow:hidden;flex-shrink:0;
}
.slot-picker-errors-hdr {
  padding:8px 12px;font-size:12px;font-weight:600;color:#f87171;
  display:flex;align-items:center;justify-content:space-between;cursor:pointer;
}
.slot-picker-errors-body { padding:0 12px 10px;display:none; }
.slot-picker-errors-body.open { display:block; }
.slot-err-item { font-size:11px;color:#f87171;padding:3px 0;border-bottom:1px solid rgba(220,38,38,0.15); }
.slot-picker-footer {
  background:#F9FAFB;padding:12px 16px;display:flex;gap:10px;
  flex-shrink:0;border-top:1px solid rgba(255,255,255,0.08);
}
.slot-btn-cancel {
  flex:1;padding:12px;background:none;border:1px solid rgba(255,255,255,0.15);
  border-radius:12px;font-size:14px;color:#6B7280;cursor:pointer;font-family:inherit;
}
.slot-btn-confirm {
  flex:2;padding:12px;background:linear-gradient(135deg,#7c6aff,#a855f7);
  border:none;border-radius:12px;font-size:14px;font-weight:700;color:#fff;
  cursor:pointer;font-family:inherit;
}
.slot-btn-confirm:disabled { opacity:0.4;cursor:not-allowed; }
/* ========== 图片槽位选择器 ========== */
#slot-picker-overlay {
  position:fixed;inset:0;z-index:9999;display:none;flex-direction:column;justify-content:flex-end;align-items:center;
  background:rgba(0,0,0,0.75);backdrop-filter:blur(4px);
}
#slot-picker-overlay.show{display:flex;}
.slot-sheet{
  background:#FFFFFF;border-radius:24px 24px 0 0;
  display:flex;flex-direction:column;max-height:88vh;
  width:100%;max-width:1052px;
}
.slot-picker-header{
  padding:16px 16px 10px;display:flex;align-items:center;
  justify-content:space-between;flex-shrink:0;
}
.slot-picker-title{font-size:16px;font-weight:700;color:#1A1A2E;}
.slot-picker-count{font-size:13px;font-weight:600;padding:4px 10px;border-radius:20px;
  background:rgba(124,106,255,0.2);color:#a78bfa;}
.slot-picker-count.full{background:rgba(255,68,68,0.2);color:#f87171;}
.slot-limits{
  margin:0 16px 10px;padding:8px 12px;background:rgba(255,255,255,0.04);
  border-radius:10px;font-size:11px;color:#666;line-height:1.8;flex-shrink:0;
}
.slot-limits span{color:#6B7280;}
.slot-picker-body{
  flex:1;overflow-y:auto;padding:12px 16px;
  display:flex;flex-wrap:wrap;gap:8px;align-content:start;
}
.slot-item{
  width:calc(20% - 7px);aspect-ratio:1;border-radius:8px;overflow:hidden;
  position:relative;background:#F3F4F6;cursor:pointer;flex-shrink:0;
}
.slot-item.filled{border:1.5px solid rgba(124,106,255,0.5);}
.slot-item.empty{
  border:1.5px dashed #C7D2FE;
  display:flex;align-items:center;justify-content:center;
}
.slot-item.empty:hover{border-color:#6366F1;background:#EEF2FF;}
.slot-img-wrap{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  background:#F3F4F6;
}
.slot-img-wrap img{max-width:100%;max-height:100%;object-fit:contain;display:block;}
.slot-num{
  position:absolute;top:4px;left:4px;background:#7c6aff;color:#fff;
  font-size:11px;font-weight:700;width:20px;height:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
.slot-del{
  position:absolute;top:2px;right:2px;background:rgba(0,0,0,0.55);color:#fff;
  font-size:13px;width:20px;height:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:none;line-height:1;padding:0;
}
.slot-del:hover{background:rgba(220,38,38,0.85);}
.slot-plus-icon{font-size:28px;color:#9B93F5;font-weight:300;}
.slot-picker-errors{
  margin:0 16px 8px;background:rgba(220,38,38,0.1);
  border:1px solid rgba(220,38,38,0.25);border-radius:10px;flex-shrink:0;overflow:hidden;
}
.slot-picker-errors-hdr{
  padding:8px 12px;font-size:12px;font-weight:600;color:#f87171;
  display:flex;align-items:center;justify-content:space-between;cursor:pointer;
}
.slot-picker-errors-body{display:none;padding:0 12px 8px;}
.slot-picker-errors-body.open{display:block;}
.slot-err-item{font-size:11px;color:#f87171;padding:3px 0;border-bottom:1px solid rgba(220,38,38,0.12);}
.slot-picker-footer{
  padding:12px 16px 20px;display:flex;gap:10px;flex-shrink:0;
  border-top:1px solid rgba(255,255,255,0.06);
}
.slot-btn-cancel{
  flex:1;padding:12px;background:none;border:1px solid rgba(255,255,255,0.12);
  border-radius:12px;font-size:14px;color:#6B7280;cursor:pointer;font-family:inherit;
}
.slot-btn-confirm{
  flex:2;padding:12px;background:linear-gradient(135deg,#7c6aff,#a855f7);
  border:none;border-radius:12px;font-size:14px;font-weight:700;color:#fff;
  cursor:pointer;font-family:inherit;
}
.slot-btn-confirm:disabled{opacity:0.4;cursor:not-allowed;}
/* ========== 槽位选择器结束 ========== */

/* ========== 文档选择器 ========== */
#doc-picker-overlay {
  position:fixed;inset:0;z-index:9999;display:none;align-items:flex-end;justify-content:center;
  background:rgba(0,0,0,0.75);backdrop-filter:blur(4px);
}
#doc-picker-overlay.show{display:flex;}
.doc-sheet{
  background:#FFFFFF;border-radius:24px 24px 0 0;padding:24px 20px 32px;
  width:100%;max-width:1052px;
}
.doc-sheet-title{font-size:17px;font-weight:700;color:#1A1A2E;margin-bottom:6px;}
.doc-sheet-sub{font-size:13px;color:#374151;margin-bottom:20px;line-height:1.7;}
.doc-sheet-sub span{color:#6B7280;}
.doc-drop-zone{
  border:1.5px dashed #C7D2FE;border-radius:14px;
  padding:32px 20px;text-align:center;cursor:pointer;transition:border-color .15s;
  margin-bottom:12px;
}
.doc-drop-zone:hover{border-color:#6366F1;background:#EEF2FF;}
.doc-drop-icon{font-size:36px;margin-bottom:10px;}
.doc-drop-text{font-size:15px;color:#1A1A2E;margin-bottom:6px;font-weight:500;}
.doc-drop-hint{font-size:13px;color:#374151;}
.doc-err{
  background:rgba(220,38,38,0.1);border:1px solid rgba(220,38,38,0.25);
  border-radius:10px;padding:10px 14px;font-size:12px;color:#f87171;
  margin-bottom:12px;display:none;
}
.doc-sheet-cancel{
  width:100%;padding:12px;background:#F9FAFB;border:1px solid #E5E7EB;
  border-radius:12px;font-size:14px;color:#374151;cursor:pointer;font-family:inherit;
}
/* ========== 文档选择器结束 ========== */

.ai-review-row{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;}
.ai-review-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.ai-review-page{font-size:13px;font-weight:500;color:var(--accent2);}
.ai-review-actions{display:flex;gap:8px;}
.ai-adopt-btn{padding:5px 14px;background:var(--accent2);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:12px;font-family:inherit;}
.ai-skip-btn{padding:5px 14px;background:none;border:1px solid var(--border);border-radius:6px;color:#6B7280;cursor:pointer;font-size:12px;font-family:inherit;}
.ai-review-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.ai-review-col{}
.ai-col-label{font-size:11px;color:#6B7280;margin-bottom:5px;}
.ai-col-text{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:8px;color:var(--text);font-size:13px;line-height:1.7;resize:vertical;min-height:100px;font-family:inherit;box-sizing:border-box;}
.ai-col-text:focus{outline:none;border-color:var(--accent);}
@media(max-width:600px){.ai-review-cols{grid-template-columns:1fr;}}

.voice-card{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:all .15s;min-height:62px}
.voice-card:hover{border-color:var(--accent2)}
.voice-card.selected{border-color:var(--accent);background:rgba(124,106,245,.1)}
.voice-card.locked{opacity:.45;cursor:not-allowed}
.voice-card .vc-avatar{font-size:22px;flex-shrink:0}
.voice-card .vc-info{flex:1;min-width:0}
.voice-card .vc-name{font-size:13px;font-weight:500;color:var(--text);line-height:1.3;word-break:break-all}
.voice-card .vc-desc{font-size:11px;color:var(--text3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.voice-card .vc-play{flex-shrink:0;padding:3px 8px;font-size:11px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text2);cursor:pointer;font-family:inherit}
.voice-card .vc-play:hover{border-color:var(--accent);color:var(--accent)}
#voices-grid-panel{display:none;position:absolute;z-index:100;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px;width:420px;max-height:420px;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.4)}

.mp-qr-trigger:hover .mp-qr-popup{display:block!important;}@media(min-width:768px){.xhs-policy-trigger:hover .xhs-policy-popup{display:block!important;}}

/* ═══════════════════════════════════════════
   裂变推广模块 fission.js
   ═══════════════════════════════════════════ */
.fission-panel {
  padding: 16px 0;
}
.fission-campaign-name {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  text-align: center;
  margin-bottom: 4px;
}
.fission-timer {
  text-align: center;
  font-size: 13px;
  color: var(--accent);
  margin-bottom: 12px;
}
.fission-timer span {
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 1px;
}

/* 进度区 */
.fission-progress-wrap {
  background: var(--bg-secondary);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
}
.fission-progress-tip {
  font-size: 13px;
  color: var(--text-secondary);
  text-align: center;
  margin-bottom: 12px;
  line-height: 1.5;
}
.fission-progress-tip strong {
  color: var(--accent);
  font-size: 15px;
}
.fission-rewarded-badge {
  text-align: center;
  font-size: 12px;
  color: var(--text-tertiary);
  margin-top: 8px;
}

/* 槽位格子 */
.fission-slots {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}
.fission-slot {
  width: 56px;
  min-height: 60px;
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  font-size: 11px;
  transition: transform 0.2s;
}
.fission-slot.empty {
  border: 2px dashed var(--border-color);
  color: var(--text-tertiary);
}
.fission-slot.filled {
  background: linear-gradient(135deg, #e8f5e9, #c8e6c9);
  border: 2px solid #81c784;
}
.fission-slot.filled.paid {
  background: linear-gradient(135deg, #fff8e1, #ffe082);
  border: 2px solid #ffd54f;
}
.fission-slot-empty-icon {
  font-size: 20px;
  color: var(--border-color);
  line-height: 1;
}
.fission-slot-name {
  font-size: 11px;
  color: #2e7d32;
  font-weight: 500;
  text-align: center;
  padding: 0 3px;
  word-break: break-all;
  line-height: 1.3;
}
.fission-slot.paid .fission-slot-name {
  color: #e65100;
}
.fission-slot-badge {
  font-size: 9px;
  background: #ff8f00;
  color: #fff;
  border-radius: 4px;
  padding: 1px 4px;
  margin-top: 3px;
  line-height: 1.4;
}

/* 好友列表 */
.fission-section-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-secondary);
  margin: 16px 0 8px;
}
.fission-empty-friends {
  font-size: 13px;
  color: var(--text-tertiary);
  text-align: center;
  padding: 16px 0;
}
.fission-friends-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 160px;
  overflow-y: auto;
}
.fission-friend-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  background: var(--bg-secondary);
  border-radius: 8px;
  font-size: 13px;
}
.fission-friend-name {
  flex: 1;
  color: var(--text-primary);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fission-friend-tags {
  display: flex;
  gap: 4px;
}
.fission-tag {
  font-size: 10px;
  border-radius: 4px;
  padding: 1px 5px;
  line-height: 1.5;
}
.fission-tag.used {
  background: #e8f5e9;
  color: #2e7d32;
}
.fission-tag.paid {
  background: #fff8e1;
  color: #e65100;
}
.fission-friend-slots {
  font-size: 12px;
  color: var(--accent);
  font-weight: 600;
  white-space: nowrap;
}

/* 历史奖励 */
.fission-rewards-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.fission-reward-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 10px;
  background: linear-gradient(135deg, #f3e5f5, #e1bee7);
  border-radius: 8px;
  font-size: 13px;
  color: #6a1b9a;
  font-weight: 500;
}
.fission-reward-time {
  font-size: 11px;
  color: #9c27b0;
  font-weight: 400;
}

/* 操作按钮 */
.fission-actions {
  display: flex;
  gap: 10px;
  margin-top: 20px;
}
.fission-btn-primary, .fission-btn-secondary {
  flex: 1;
  padding: 11px 0;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 500;
  border: none;
  cursor: pointer;
  transition: opacity 0.15s;
}
.fission-btn-primary:active, .fission-btn-secondary:active {
  opacity: 0.75;
}
.fission-btn-primary {
  background: var(--accent);
  color: #fff;
}
.fission-btn-secondary {
  background: var(--bg-secondary);
  color: var(--text-primary);
  border: 1px solid var(--border-color);
}
.fission-rule-tip {
  font-size: 11px;
  color: var(--text-tertiary);
  text-align: center;
  margin-top: 14px;
  line-height: 1.6;
  padding: 0 8px;
}
