  /* ── Design tokens ───────────────────────────────── */
  :root{
    --ink-1:#0F172A; --ink-2:#475569; --ink-3:#94A3B8;
    --bg-page:#FFFBF7; --bg-card:#FFFFFF; --bg-side:#FFF6EB;
    --border:#F0E5DA; --border-strong:#E5D4C2;
    --orange-1:#F97316; --orange-2:#FED7AA; --orange-3:#FFF4E6;
    --green:#16A34A; --red:#DC2626;
    --shadow-sm:0 2px 6px rgba(249,115,22,.06);
    --shadow-md:0 8px 24px rgba(15,23,42,.08);
    --radius-card:16px; --radius-pill:999px;
    --font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
    --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  }
  *{box-sizing:border-box}
  html,body{margin:0;padding:0;height:100%;background:var(--bg-page);color:var(--ink-1);font-family:var(--font-sans);font-size:14px;line-height:1.6}
  a{color:inherit;text-decoration:none}
  button{font-family:inherit;font-size:inherit}

  /* ── Topbar ─────────────────────────────────────── */
  .topbar{height:56px;background:rgba(255,251,247,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:24px;position:relative;z-index:1000}
  .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;color:inherit;text-decoration:none;border-radius:8px;padding:4px 6px;margin-left:-6px;transition:background .12s}
  .brand:hover{background:var(--orange-3)}
  .brand img{width:42px;height:42px;border-radius:8px}
  .topbar-spacer{flex:1}
  /* 语言切换 */
  .lang-toggle{display:inline-flex;align-items:center;background:var(--orange-3);border:1px solid var(--border);border-radius:999px;padding:2px;height:28px;user-select:none;flex-shrink:0}
  .lang-toggle button{background:transparent;border:0;padding:3px 11px;border-radius:999px;cursor:pointer;color:var(--ink-3);font-size:11.5px;font-weight:600;font-family:inherit;line-height:1;transition:all .12s;height:22px}
  .lang-toggle button.on{background:#fff;color:var(--ink-1);box-shadow:0 1px 3px rgba(0,0,0,.08)}
  .lang-toggle button:hover:not(.on){color:var(--ink-1)}
  /* 已登录时,toggle 在用户名左侧;未登录时,toggle 在登录按钮右侧 */
  .user-menu{display:flex;align-items:center;gap:10px}

  /* User menu(头像 + credits + 下拉:退出登录) */
  .user-menu{position:relative}
  .credits-pill{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--border-strong);padding:4px 10px 4px 4px;border-radius:var(--radius-pill);font-size:12px;color:var(--ink-2);cursor:pointer;transition:all .12s;font-family:inherit}
  .credits-pill:hover{border-color:var(--orange-2)}
  .credits-pill b{color:var(--orange-1);font-weight:600}
  .user-avatar{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--orange-1),#FCD34D);color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;text-transform:uppercase}
  .user-avatar-img{width:24px;height:24px;border-radius:50%;object-fit:cover;display:inline-block}
  /* 未登录态:Google 登录按钮 */
  .login-btn{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border-strong);padding:7px 14px;border-radius:var(--radius-pill);font-size:13px;color:var(--ink-1);font-weight:500;cursor:pointer;text-decoration:none;transition:all .12s}
  .login-btn:hover{border-color:var(--orange-1);box-shadow:0 2px 8px rgba(249,115,22,.18)}
  .dot-sep{color:var(--ink-3);margin:0 1px}

  .user-dropdown{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-md);width:min(320px,calc(100vw - 24px));display:none;overflow:hidden;z-index:1000}
  .user-dropdown.show{display:block;animation:modalIn .15s ease-out}
  .user-info{padding:14px 14px 12px;border-bottom:1px solid var(--border)}
  .user-info-name{font-size:13px;font-weight:600;color:var(--ink-1)}
  .user-info-email{font-size:11px;color:var(--ink-3);margin-top:2px}
  .user-info-provider{display:flex;align-items:center;gap:5px;margin-top:8px;font-size:10.5px;color:var(--ink-3);background:var(--orange-3);padding:3px 7px;border-radius:var(--radius-pill);width:fit-content}
  .user-info-provider svg{flex-shrink:0}
  /* dropdown plan card — 3 个上方按钮的第 1 个 */
  .plan-card{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 14px 6px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(135deg,#fff7ed,#fffefb)}
  .plan-card.plan-pro{background:linear-gradient(135deg,#fef3c7,#fff7ed);border-color:#fcd34d}
  .plan-card .plan-text{display:flex;flex-direction:column;gap:2px;min-width:0}
  .plan-card .plan-name{font-size:13px;font-weight:700;color:var(--ink-1)}
  .plan-card .plan-sub{font-size:11px;color:var(--ink-3)}
  .plan-card .plan-upgrade{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:700;border-radius:999px;background:var(--orange-1);color:#fff;text-decoration:none;white-space:nowrap;box-shadow:0 4px 10px rgba(249,115,22,.22)}
  .plan-card .plan-upgrade:hover{filter:brightness(1.05)}
  .plan-card .plan-pro-tag{font-size:11px;font-weight:800;color:#92400e;background:#fde68a;padding:3px 8px;border-radius:999px;letter-spacing:.04em}
  /* dropdown nav links — 第 2/3 个按钮(Account / Credit History) */
  .dropdown-nav{display:flex;flex-direction:column;padding:4px 0 6px;border-bottom:1px solid var(--border)}
  .user-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 14px;background:none;border:0;cursor:pointer;font-size:13px;color:var(--ink-2);transition:background .12s;font-family:inherit;text-align:left}
  .user-menu-item:hover{background:var(--orange-3);color:var(--ink-1)}
  .user-menu-item svg{flex-shrink:0;opacity:.7}
  /* footer settings row — language / feedback / logout */
  .dropdown-footer{padding:8px 14px 12px;display:flex;flex-direction:column;gap:8px}
  .dropdown-footer-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:var(--ink-2)}
  .dropdown-footer-row a{color:var(--orange-1);font-weight:700;text-decoration:none}
  /* ── Sidebar footer(2026-05-07): Feedback Email,锁底常驻 ─────── */
  .sidebar-footer{
    border-top:1px solid var(--border);
    padding:12px 16px calc(12px + env(safe-area-inset-bottom));
    background:var(--bg-side);
    font-size:12px;color:var(--ink-3);
    display:flex;flex-direction:column;gap:4px;flex-shrink:0;
  }
  .sidebar-footer .sf-label{font-size:10.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-weight:700}
  .sidebar-footer a{color:var(--orange-1);font-weight:600;text-decoration:none;font-size:12.5px;word-break:break-all}
  .sidebar-footer a:hover{text-decoration:underline}
  /* 老 .site-footer / .global-footer 引用残留兜底 */
  .site-footer,.global-footer{display:none}

  /* ── Account / Credit Balance 统一页(view='account')────────────
     全 viewport 铺满,无白色 card 缩放;Back 按钮顶格紧贴左上角。 */
  .pane-account{display:flex;flex-direction:column;padding:0;min-height:0}
  .account-toolbar{
    display:flex;align-items:center;gap:10px;
    padding:10px 14px;
    border-bottom:1px solid var(--border);
    background:var(--bg-page);
    flex-shrink:0;
  }
  .account-toolbar h1{margin:0;font-size:16px;font-weight:700;color:var(--ink-1)}
  .account-toolbar .back-btn{
    display:inline-flex;align-items:center;gap:5px;
    padding:6px 11px;border:1px solid var(--border);border-radius:7px;
    background:#fff;color:var(--ink-2);cursor:pointer;font-size:12px;
    font-family:inherit;transition:background .12s
  }
  .account-toolbar .back-btn:hover{background:var(--orange-3);color:var(--ink-1)}
  .account-body{display:grid;grid-template-columns:220px 1fr;flex:1;min-height:0}
  .account-tabs{border-right:1px solid var(--border);background:var(--bg-side);padding:14px 0;overflow-y:auto}
  .account-tab{display:flex;width:100%;align-items:center;gap:9px;padding:11px 18px;background:none;border:0;border-left:3px solid transparent;color:var(--ink-2);font-size:13px;font-weight:600;cursor:pointer;transition:background .12s,color .12s,border-color .12s;text-align:left;font-family:inherit}
  .account-tab:hover{background:rgba(249,115,22,.06);color:var(--ink-1)}
  .account-tab.active{background:var(--bg-page);color:var(--orange-1);border-left-color:var(--orange-1)}
  .account-content{padding:24px 28px;overflow-y:auto;background:var(--bg-page)}
  .account-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:20px}
  .account-card + .account-card{margin-top:14px}
  .account-card h2{margin:0 0 14px;font-size:15px;font-weight:700;color:var(--ink-1)}
  .account-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
  .account-stat-box{padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-1)}
  .account-stat-box .stat-label{font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}
  .account-stat-box .stat-value{font-size:18px;font-weight:700;color:var(--ink-1);margin-top:4px;word-break:break-word}
  .credit-table{width:100%;border-collapse:collapse;font-size:13px}
  .credit-table th,.credit-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
  .credit-table th{font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;font-weight:700;background:var(--bg-1);position:sticky;top:0}
  .credit-table tr:hover td{background:rgba(249,115,22,.03)}
  .credit-table .ct-time{font-variant-numeric:tabular-nums;color:var(--ink-2);white-space:nowrap}
  .credit-table .ct-type{white-space:nowrap}
  .credit-table .ct-note{color:var(--ink-1);max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .credit-table .ct-note-link{color:var(--orange-1);text-decoration:none;cursor:pointer}
  .credit-table .ct-note-link:hover{text-decoration:underline}
  .credit-table .ct-action{color:var(--ink-2)}
  .credit-table .ct-credits{font-weight:800;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
  .credit-table .ct-credits.pos{color:var(--green)}
  .credit-table .ct-credits.neg{color:var(--red)}
  .credit-empty{padding:36px 12px;text-align:center;color:var(--ink-3);font-size:13px}
  .tz-hint{margin-top:10px;font-size:11px;color:var(--ink-3)}
  /* ── Pricing Plan tab ────────────────────────────────────────── */
  .plan-current-banner{display:flex;align-items:center;gap:6px;padding:11px 16px;border-radius:12px;background:var(--orange-3);color:var(--orange-1);font-size:13px;font-weight:600;margin-bottom:18px;border:1px solid #fed7aa;line-height:1.5}
  .plan-current-banner b{color:inherit;font-weight:800;margin:0 2px}
  .plan-current-banner.is-pro{background:linear-gradient(135deg,#fef3c7,#fff7ed);border-color:#fcd34d;color:#92400e}
  .plan-current-banner.is-canceled{background:#fef2f2;border-color:#fca5a5;color:#991b1b}
  .plan-pro-state{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-3);margin-top:auto;flex-wrap:wrap}
  .plan-pro-state .state-renew{color:var(--green);font-weight:600}
  .plan-pro-state .state-days{color:var(--ink-2);font-weight:500;background:var(--bg-1);padding:3px 9px;border-radius:999px;border:1px solid var(--border)}
  .plan-pricing-card.is-current{background:linear-gradient(180deg,#fff,#fffbf6);border-color:#fcd34d}
  .plan-pricing-card .plan-cta.cancel-btn{margin-top:10px;background:#fff;color:var(--red);border:1px solid var(--red)}
  .plan-pricing-card .plan-cta.cancel-btn:hover{background:#fff5f5}
  .plan-pricing-card .plan-cta.cancel-btn:disabled{opacity:.55;cursor:wait}
  .plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
  .plan-pricing-card{position:relative;background:#fff;border:1px solid var(--border);border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:14px}
  .plan-pricing-card.is-pro{border:1.5px solid var(--orange-1);box-shadow:0 12px 28px -16px rgba(249,115,22,.36)}
  .plan-pricing-card .plan-tier{font-size:13px;font-weight:700;color:var(--ink-2);letter-spacing:.05em;text-transform:uppercase}
  .plan-pricing-card .plan-tier.is-pro{color:var(--orange-1)}
  .plan-pricing-card .plan-price{font-size:30px;font-weight:800;color:var(--ink-1);line-height:1}
  .plan-pricing-card .plan-price small{font-size:14px;font-weight:600;color:var(--ink-3);margin-left:4px}
  .plan-pricing-card .plan-feats{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:9px;font-size:13px;color:var(--ink-2)}
  .plan-pricing-card .plan-feats li{display:flex;align-items:flex-start;gap:8px}
  .plan-pricing-card .plan-feats li::before{content:"✓";color:var(--orange-1);font-weight:800;flex-shrink:0;line-height:1.4}
  .plan-pricing-card .plan-cta{margin-top:auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 16px;border-radius:10px;font-weight:700;font-size:13.5px;cursor:pointer;border:0;text-decoration:none}
  .plan-pricing-card .plan-cta.primary{background:var(--orange-1);color:#fff;box-shadow:0 6px 14px rgba(249,115,22,.25)}
  .plan-pricing-card .plan-cta.primary:hover{filter:brightness(1.05)}
  .plan-pricing-card .plan-cta.muted{background:var(--bg-side);color:var(--ink-3);cursor:default;border:1px solid var(--border)}
  /* Account Info:Cancel Subscription 区 */
  .account-cancel-row{margin-top:16px;padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-1);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
  .account-cancel-row .info-text{font-size:12.5px;color:var(--ink-2);line-height:1.5}
  .account-cancel-row .info-text b{color:var(--ink-1)}
  .btn-cancel-sub{padding:8px 14px;border-radius:8px;border:1px solid var(--red);background:#fff;color:var(--red);font-weight:600;font-size:12.5px;cursor:pointer;flex-shrink:0;transition:background .12s}
  .btn-cancel-sub:hover{background:#fff5f5}
  .btn-cancel-sub:disabled{opacity:.5;cursor:wait}
  .pending-cancel-badge{display:inline-block;padding:3px 9px;border-radius:999px;background:#fef3c7;color:#92400e;font-size:11px;font-weight:700;margin-left:6px}
  /* ── App shell:左历史 + 右内容 ────────────────── */
  /* 双层滚动:.app 吃满 viewport,sidebar 内 .hist-scroll + sidebar-footer 各占一段;.main 自滚 */
  .app{display:grid;grid-template-columns:300px 1fr;height:calc(100vh - 56px)}
  .sidebar{background:var(--bg-side);border-right:1px solid var(--border);display:flex;flex-direction:column;min-width:0}
  .main{overflow-y:auto;padding:48px 40px 160px}
  /* Account 页:隐藏左侧历史栏,主内容区占满整个 viewport(无 padding 缩放) */
  body.view-account .app{grid-template-columns:1fr}
  body.view-account .sidebar{display:none}
  body.view-account .main{padding:0 !important;overflow:hidden}
  body.view-account .pane-account{height:100%;background:var(--bg-page)}

  /* ── Sidebar(历史) ─────────────────────────── */
  .new-btn{margin:14px 14px 8px;padding:11px 14px;background:var(--orange-1);color:#fff;border:0;border-radius:10px;cursor:pointer;font-weight:600;font-size:14px;display:flex;align-items:center;justify-content:center;gap:6px;box-shadow:0 3px 10px rgba(249,115,22,.25);transition:all .12s}
  .new-btn:hover{background:#EA580C;transform:translateY(-1px)}
  .new-icon{display:inline-flex}
  .search-row{padding:0 14px 8px}
  .search-box{position:relative;display:flex;align-items:center}
  .search-ic{position:absolute;left:10px;color:var(--ink-3);display:inline-flex;pointer-events:none}
  .search-input{width:100%;padding:8px 12px 8px 32px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;background:#fff}
  .search-input:focus{outline:none;border-color:var(--orange-1)}
  .hist-scroll{flex:1;overflow-y:auto;padding:4px 8px 24px}
  .hist-section{font-size:11px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.6px;padding:10px 8px 6px}
  .hist-item{padding:10px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent;margin-bottom:2px;transition:all .12s;position:relative}
  .hist-item:hover{background:#fff}
  .hist-item.on{background:#fff;border-color:var(--orange-2);box-shadow:var(--shadow-sm)}
  .hist-item .row1{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink-1);margin-bottom:2px;line-height:1.4}
  .hist-item .row1 .emoji{font-size:14px;flex-shrink:0}
  .hist-item .row1 .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
  .hist-item .row2{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--ink-3)}
  .hist-item .streaming-tag{color:var(--orange-1);font-weight:600;font-size:11px}
  .hist-item .example-tag{
    display:inline-block;font-size:10px;line-height:1;font-weight:700;letter-spacing:.4px;
    padding:2px 5px;border-radius:3px;background:var(--orange-1);color:#fff;
    text-transform:uppercase;flex-shrink:0;
  }
  .hist-item.streaming .row1::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--orange-1);margin-right:4px;animation:pulse 1.2s ease-in-out infinite;vertical-align:middle}
  @keyframes pulse{0%,100%{opacity:.4}50%{opacity:1}}

  /* ── Main:hero + new + 4 cards / detail ──────── */
  .pane-new .hero{margin:24px 0 36px;text-align:center}
  .pane-new .hero h1{font-size:28px;line-height:1.3;margin:0 0 10px;font-weight:700;letter-spacing:-.4px}
  .pane-new .hero h1 em{color:var(--orange-1);font-style:normal}
  .pane-new .hero p{margin:0;color:var(--ink-2);font-size:14px}
  .pane-new .hero p b{color:var(--ink-1);font-weight:600}

  .input-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:18px;max-width:760px;margin-left:auto;margin-right:auto}
  .entry{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:18px 20px;cursor:pointer;transition:all .12s}
  .entry:hover{border-color:var(--orange-2);box-shadow:var(--shadow-sm);transform:translateY(-1px)}
  .entry.active{border-color:var(--orange-1);box-shadow:0 0 0 3px var(--orange-3),var(--shadow-sm)}
  .entry .icon{font-size:24px;margin-bottom:8px;display:inline-block}
  .entry h3{margin:0 0 4px;font-size:15px;font-weight:600}
  .entry p{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.45}

  .input-area{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin:0 auto 14px;max-width:760px;display:none}
  .input-area.show{display:block;animation:fadeUp .2s ease-out}
  @keyframes fadeUp{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
  .input-area .label{font-size:11px;font-weight:600;color:var(--ink-2);margin-bottom:8px;letter-spacing:.4px;text-transform:uppercase}
  .drop-zone{border:2px dashed var(--border-strong);border-radius:10px;padding:24px;text-align:center;cursor:pointer;transition:all .15s;color:var(--ink-2)}
  .drop-zone:hover{border-color:var(--orange-1);background:var(--orange-3);color:var(--ink-1)}
  .drop-zone.dragover{border-color:var(--orange-1);background:var(--orange-3);color:var(--ink-1)}
  .drop-zone.has-file{border-style:solid;border-color:var(--green);background:#F0FDF4;color:var(--ink-1)}
  .drop-zone .big{font-size:32px;margin-bottom:6px}
  .drop-zone em{color:var(--orange-1);font-style:normal;font-weight:600}
  .drop-zone-file{margin-top:8px;font-size:13px;color:var(--ink-1);font-weight:500;font-family:var(--font-mono);word-break:break-all}
  .text-input{width:100%;padding:12px 14px;border:1px solid var(--border-strong);border-radius:10px;font-family:inherit;font-size:14px;background:#fff;transition:border-color .15s}
  .text-input:focus{outline:none;border-color:var(--orange-1);box-shadow:0 0 0 3px var(--orange-3)}
  textarea.text-input{min-height:100px;resize:vertical}
  .platform-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
  .platform-badges span{font-size:11px;color:var(--ink-3);padding:3px 9px;border:1px solid var(--border);border-radius:var(--radius-pill);background:#fff}
  .platform-badges span.detected{border-color:var(--orange-1);color:var(--orange-1);background:var(--orange-3);font-weight:600}

  .output-row{display:flex;align-items:center;gap:18px;margin:14px auto 18px;padding:14px 18px;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;max-width:760px}
  .output-row .label{font-size:12px;color:var(--ink-2);font-weight:600}
  .mode-tabs{display:flex;gap:6px}
  .mode-tabs button{background:#fff;border:1px solid var(--border-strong);color:var(--ink-2);padding:7px 14px;border-radius:var(--radius-pill);cursor:pointer;font-weight:500;transition:all .12s;font-size:12.5px}
  .mode-tabs button:hover{border-color:var(--orange-2)}
  .mode-tabs button.on{background:var(--ink-1);color:#fff;border-color:var(--ink-1)}
  .template-select{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
  .template-select select{padding:5px 10px;border:1px solid var(--border-strong);border-radius:8px;background:#fff;font-family:inherit;font-size:12.5px}

  .cta-row{text-align:center;max-width:760px;margin:0 auto}
  .cta{background:var(--orange-1);color:#fff;border:0;padding:13px 36px;border-radius:var(--radius-pill);font-size:15px;font-weight:600;cursor:pointer;box-shadow:0 4px 12px rgba(249,115,22,.3);transition:all .15s}
  .cta:hover{background:#EA580C;transform:translateY(-1px);box-shadow:0 6px 18px rgba(249,115,22,.4)}
  .cta:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}

  /* ── Detail pane(已选中历史 / 流式中) ───────── */
  .detail-header{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px;flex-wrap:wrap}
  .detail-header .meta-block{flex:1;min-width:0}
  .detail-header h1{margin:0 0 4px;font-size:22px;font-weight:700;line-height:1.3}
  .detail-header .sub{color:var(--ink-3);font-size:12px}
  .detail-header .sub .pill{background:var(--orange-3);color:var(--orange-1);padding:2px 8px;border-radius:var(--radius-pill);font-weight:600;margin-right:6px}
  .icon-btn{background:#fff;border:1px solid var(--border-strong);padding:7px 14px;border-radius:var(--radius-pill);cursor:pointer;font-size:12.5px;color:var(--ink-2);transition:all .12s}
  .icon-btn:hover{border-color:var(--orange-1);color:var(--orange-1)}

  /* ── 进度卡(三阶段 + 百分比 + 计时 + 状态)──────────── */
  .progress-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:18px 22px;margin-bottom:16px;box-shadow:var(--shadow-sm)}
  /* ── 新版步骤指示器(N 圆点 + 当前步骤名 + %)─────────────── */
  .step-indicator{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
  .step-dot{display:inline-flex;align-items:center;gap:6px;color:var(--ink-3);font-size:13px;font-weight:500;transition:all .25s;padding:4px 10px;border-radius:14px}
  .step-dot .dot{width:10px;height:10px;border-radius:50%;background:#d1d5db;transition:all .25s;flex-shrink:0;position:relative}
  .step-dot.running{color:var(--orange-1);background:rgba(249,115,22,.08)}
  .step-dot.running .dot{background:var(--orange-1);box-shadow:0 0 0 4px rgba(249,115,22,.18);animation:pulseRing 1.4s ease-in-out infinite}
  .step-dot.done{color:var(--green,#10b981)}
  .step-dot.done .dot{background:var(--green,#10b981)}
  .step-dot.done .dot::after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:8px;font-weight:700}
  .step-dot.skip{color:var(--ink-3);opacity:.45;text-decoration:line-through}
  .step-dot.skip .dot{background:#d1d5db}
  .step-dot.skip .dot::after{content:"↷";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:9px}
  .step-dot.pending{color:var(--ink-3)}
  .step-arrow{color:var(--ink-3);opacity:.3;font-size:11px}
  .step-meta{display:flex;align-items:center;justify-content:center;gap:14px;font-family:var(--font-mono);font-size:12px;color:var(--ink-3);margin-bottom:10px}
  .step-meta .step-current{color:var(--ink-2);font-weight:600;font-family:var(--font-sans);font-size:13px}
  /* ── 流式期主体区显隐(streaming-pre/md/full 三态切换) ── */
  .streaming-split.streaming-pre{display:none}                /* 步骤期:整片隐藏 */
  .streaming-split.streaming-md-only > .poster-pane{display:none} /* 生成中:隐右栏 */
  /* streaming-full:正常 1fr 1fr 双栏(去掉前两类) */
  .progress-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px;flex-wrap:wrap}
  .phase-list{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .phase{display:inline-flex;align-items:center;gap:6px;color:var(--ink-3);font-size:13px;font-weight:500;transition:color .2s}
  .phase-dot{width:18px;height:18px;border-radius:50%;background:#fff;border:2px solid var(--border-strong);display:inline-flex;align-items:center;justify-content:center;font-size:10px;color:transparent;transition:all .2s}
  .phase.now{color:var(--orange-1);font-weight:700}
  .phase.now .phase-dot{border-color:var(--orange-1);background:var(--orange-1);color:#fff;animation:pulseRing 1.3s ease-out infinite}
  .phase.now .phase-dot::after{content:""}
  .phase.done{color:var(--green);font-weight:600}
  .phase.done .phase-dot{border-color:var(--green);background:var(--green);color:#fff}
  .phase.done .phase-dot::after{content:"✓"}
  @keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(249,115,22,.4)}80%{box-shadow:0 0 0 10px rgba(249,115,22,0)}100%{box-shadow:0 0 0 0 rgba(249,115,22,0)}}
  .phase-arrow{color:var(--ink-3);opacity:.4;font-size:13px}
  .progress-meta{display:flex;align-items:center;gap:14px;font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}
  .progress-pct{color:var(--orange-1);font-weight:700;font-size:15px;min-width:48px;text-align:right}
  .progress-timer{}

  /* 进度条本体 */
  .progress-bar{height:6px;background:var(--border);border-radius:3px;overflow:hidden;position:relative}
  .progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--orange-1),#FCD34D);border-radius:3px;transition:width .35s ease-out;position:relative}
  .progress-bar-fill::after{content:"";position:absolute;top:0;right:0;bottom:0;width:60px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);animation:shimmer 1.6s infinite}
  @keyframes shimmer{from{transform:translateX(-60px)}to{transform:translateX(60px)}}
  .progress-card.complete .progress-bar-fill{background:var(--green)}
  .progress-card.complete .progress-bar-fill::after{display:none}

  .progress-status{margin-top:10px;display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
  .progress-status .status-dot{width:6px;height:6px;border-radius:50%;background:var(--orange-1);animation:pulse 1.2s ease-in-out infinite;flex-shrink:0}
  .progress-card.complete .progress-status .status-dot{background:var(--green);animation:none}
  .progress-status .status-msg{flex:1}

  .tab-bar{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:20px}
  .tab-bar button{background:none;border:0;padding:10px 18px;cursor:pointer;color:var(--ink-3);font-weight:500;font-size:13px;position:relative;transition:color .15s}
  .tab-bar button:hover{color:var(--ink-1)}
  .tab-bar button.on{color:var(--ink-1);font-weight:600}
  .tab-bar button.on::after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--orange-1);border-radius:2px}

  .stream-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-card);padding:28px 32px;border-left:4px solid var(--orange-1);box-shadow:var(--shadow-sm);min-height:300px}

  /* ── Markdown rendering(流式 + 历史详情共用) ──── */
  .md{color:var(--ink-1);font-size:15px;line-height:1.75}
  .md h1{font-size:24px;margin:20px 0 12px;font-weight:700;letter-spacing:-.3px}
  .md h2{font-size:19px;margin:22px 0 10px;font-weight:700;border-bottom:1px solid var(--border);padding-bottom:6px}
  .md h3{font-size:16px;margin:18px 0 8px;font-weight:600;color:var(--ink-1)}
  .md h1:first-child,.md h2:first-child,.md h3:first-child{margin-top:0}
  .md p{margin:8px 0}
  .md ul,.md ol{margin:8px 0;padding-left:22px}
  .md li{margin:3px 0}
  .md li::marker{color:var(--orange-1)}
  .md strong{color:#ff3b00;font-weight:700}
  .md em{color:var(--ink-2);font-style:italic}
  .md blockquote{border-left:3px solid var(--orange-2);background:var(--orange-3);padding:10px 14px;margin:12px 0;color:var(--ink-2);border-radius:0 8px 8px 0}
  .md code{font-family:var(--font-mono);font-size:13px;background:var(--orange-3);color:var(--orange-1);padding:1px 6px;border-radius:4px}
  .md pre{background:#0F172A;color:#F1F5F9;padding:12px 14px;border-radius:10px;overflow-x:auto;font-size:13px;line-height:1.55}
  .md pre code{background:none;color:inherit;padding:0}
  .md a{color:var(--orange-1);text-decoration:underline;text-decoration-color:var(--orange-2);text-underline-offset:2px}
  .md table{border-collapse:collapse;width:100%;margin:12px 0;font-size:13.5px}
  .md th,.md td{border:1px solid var(--border);padding:7px 11px;text-align:left}
  .md th{background:var(--orange-3);font-weight:600}
  .md.streaming::after{content:"▍";color:var(--orange-1);animation:caret 1s steps(1) infinite;margin-left:2px;font-weight:400}
  @keyframes caret{50%{opacity:0}}

  /* ── Poster style switcher + render stage ──────── */
  .style-bar{display:flex;align-items:center;gap:14px;margin:0;padding:10px 14px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;justify-content:center}
  .style-arrow{background:#fff;border:1px solid var(--border-strong);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:13px;color:var(--ink-2);transition:all .12s;display:flex;align-items:center;justify-content:center}
  .style-arrow:hover{border-color:var(--orange-1);color:var(--orange-1)}
  .style-arrow:disabled{opacity:.3;cursor:not-allowed}
  .style-dots{display:flex;gap:8px}
  .style-dot-wrap{display:inline-flex;align-items:center;gap:6px}
  .style-dot{width:9px;height:9px;border-radius:50%;background:#E2D5C5;cursor:pointer;transition:all .15s;border:0;padding:0}
  .style-dot:hover{background:var(--orange-2)}
  .style-dot.on{background:var(--orange-1);width:24px;border-radius:5px}
  .style-dot-label{display:none;font-family:var(--font-mono);font-size:12px;font-weight:800;color:#7C2D12;text-transform:uppercase;line-height:1}
  .style-name{font-family:var(--font-mono);font-size:12px;color:var(--ink-3);letter-spacing:1px;margin-left:6px;min-width:84px;text-align:right}

  /* ── 双栏布局 ─────────────────────────────── */
  .split-view{display:grid;grid-template-columns:1fr 1fr;gap:20px;height:calc(100vh - 280px);min-height:520px}

  /* 左栏:markdown */
  .md-pane{display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden;min-width:0}
  .md-pane-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--bg-page);flex-shrink:0}
  .seg{display:inline-flex;background:#fff;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden}
  .seg-btn{background:none;border:0;padding:6px 14px;cursor:pointer;color:var(--ink-2);font-size:12.5px;font-weight:500;border-right:1px solid var(--border-strong);transition:all .12s}
  .seg-btn:last-child{border-right:0}
  .seg-btn:hover{background:var(--orange-3)}
  .seg-btn.on{background:var(--orange-1);color:#fff}
  .md-pane-body{flex:1;overflow-y:auto;position:relative}
  .md-render,.md-source{padding:24px 28px}
  .md-render[data-md-mode="render"]{display:block}
  .md-source[data-md-mode="source"]{display:none;width:100%;min-height:100%;border:0;outline:0;resize:none;font-family:var(--font-mono);font-size:13px;line-height:1.7;background:transparent;color:var(--ink-1);box-sizing:border-box}
  .md-pane.show-source .md-render{display:none}
  .md-pane.show-source .md-source{display:block}

  /* 右栏:海报直接放大渲染 — layout-toggle 在 style-bar 内,poster 内容上提 */
  .poster-pane{position:relative;display:flex;align-items:flex-start;justify-content:center;padding:0;min-width:0;height:calc(100vh - 220px);min-height:780px;max-height:1200px;overscroll-behavior:none}
  /* poster-stage:高度由父容器决定,width 按 2:3 比例算;最宽不超过父容器 */
  .poster-stage{
    position:relative;
    height:100%;
    aspect-ratio: 12 / 17;        /* 1200×1700 */
    width:auto;
    max-width:100%;
    background:#fff;
    border-radius:12px;
    box-shadow:0 12px 32px -12px rgba(0,0,0,.28), 0 4px 10px -4px rgba(0,0,0,.16);
    overflow:hidden;
    flex-shrink:0;
    display:flex;
    flex-direction:column;
  }

  /* 海报渲染:多页轮播(横滑) — 直接填满 poster-stage */
  .poster-swiper{display:flex;align-items:stretch;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .poster-swiper::-webkit-scrollbar{display:none}
  .poster-swiper img{flex:0 0 100%;width:100%;height:100%;scroll-snap-align:start;display:block;object-fit:contain;background:#fff}
  /* 左右翻页按钮:始终可见(浅色),hover 加深 */
  .swipe-arrow{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.7);border:none;color:#1d1d1f;font-size:26px;line-height:1;font-weight:300;cursor:pointer;opacity:.78;transition:all .15s;z-index:6;display:flex;align-items:center;justify-content:center;padding:0;box-shadow:0 2px 10px rgba(0,0,0,.22);user-select:none}
  .swipe-arrow:hover{background:rgba(255,255,255,.96);opacity:1;transform:translateY(-50%) scale(1.06)}
  .swipe-arrow:active{transform:translateY(-50%) scale(.94)}
  .swipe-arrow-left{left:14px}
  .swipe-arrow-right{right:14px}
  .swipe-arrow.disabled{display:none}
  /* 分页指示器:海报顶部 + 黑色,在白底上清晰可见 */
  .page-dots{position:absolute;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:6;pointer-events:none}
  .page-dot{width:7px;height:7px;border-radius:50%;background:rgba(0,0,0,.28);transition:all .2s}
  .page-dot.on{background:#000;width:20px;border-radius:3.5px}
  /* 深色海报(noir / terminal):反相,白色指示器 */
  .poster-stage[data-style="noir"] ~ .page-dots .page-dot,
  .poster-stage[data-style="terminal"] ~ .page-dots .page-dot{background:rgba(255,255,255,.4)}
  .poster-stage[data-style="noir"] ~ .page-dots .page-dot.on,
  .poster-stage[data-style="terminal"] ~ .page-dots .page-dot.on{background:#fff}
  /* lazy overlay(流式期占位 + 切风格 loader,以及 mdPane 读 md 时的 loader)
     背景从深灰玻璃改为浅米白 + 极淡橙(跟 logo 主色协调,不再"灰色不好看")
     .md-lazy 完全复用 .poster-lazy 样式,只是语义区分(海报区 vs Markdown 区) */
  .poster-lazy, .md-lazy{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;color:var(--ink-1);font-size:14px;gap:18px;background:linear-gradient(135deg,#fff7f0,#fef1e7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:5;pointer-events:none}
  .poster-lazy.visible, .md-lazy.visible{display:flex;animation:fadeIn .25s ease-out}
  /* lazy-halo:橙红 radial-gradient 软光晕,收紧 + 减弱(用户反馈"光晕太大") */
  .poster-lazy .lazy-halo, .md-lazy .lazy-halo{position:relative;width:200px;height:200px;display:flex;align-items:center;justify-content:center}
  .poster-lazy .lazy-halo::before, .md-lazy .lazy-halo::before{
    content:"";position:absolute;inset:0;
    background:radial-gradient(closest-side,
      rgba(255,94,58,0.16) 0%,
      rgba(255,94,58,0.06) 38%,
      rgba(255,94,58,0)    68%);
    pointer-events:none;
  }
  /* lazy-icon 兼容 <img>(loader 默认 logo) 和 <div>(错误态 emoji),从 64 → 140 放大 */
  .poster-lazy .lazy-icon, .md-lazy .lazy-icon{position:relative;z-index:1;width:140px;height:140px;font-size:56px;line-height:140px;text-align:center;animation:float 2s ease-in-out infinite;display:block;object-fit:contain}
  .poster-lazy .lazy-text, .md-lazy .lazy-text{font-size:14px;color:rgba(40,30,30,.85);letter-spacing:.5px;font-weight:500}
  /* 浅背景下:lazy-bar 进度条改深色基底 + 暗橙扫光 */
  .poster-lazy .lazy-bar, .md-lazy .lazy-bar{background:rgba(40,30,30,.10) !important}
  .poster-lazy .lazy-bar::after, .md-lazy .lazy-bar::after{background:linear-gradient(90deg,transparent,rgba(255,94,58,.85),transparent) !important}
  .poster-lazy .lazy-spinner, .md-lazy .lazy-spinner{width:42px;height:42px;border-radius:50%;border:3px solid rgba(255,255,255,.18);border-top-color:rgba(255,255,255,.85);animation:spin .9s linear infinite}
  .poster-lazy .lazy-bar, .md-lazy .lazy-bar{width:140px;height:3px;border-radius:2px;background:rgba(255,255,255,.18);overflow:hidden;position:relative}
  .poster-lazy .lazy-bar::after, .md-lazy .lazy-bar::after{content:"";position:absolute;left:-40%;top:0;width:40%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);animation:lazySweep 1.4s ease-in-out infinite}
  @keyframes fadeIn{from{opacity:0}to{opacity:1}}
  @keyframes float{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.04)}}
  @keyframes spin{to{transform:rotate(360deg)}}
  @keyframes lazySweep{0%{left:-40%}100%{left:100%}}
  /* 海报图载入淡入 — 替换原硬切 */
  .poster-swiper img{opacity:0;transition:opacity .35s ease-out}
  .poster-swiper img.loaded{opacity:1}

  /* ── 控制栏:单一白色框 ──
   * 风格切换 .style-bar:absolute 居中(整栏 50%)
   * 视图切换 .layout-toggle:在右半区(grid 第 2 列)居中 — 与右栏海报水平中线对齐
   * 两者同一行,vertical 居中由 grid align-items 决定 */
  .control-row{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center;margin:6px 0 16px;padding:10px 14px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;min-height:46px}
  .control-row .style-bar{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:transparent;border:0;padding:0;margin:0;z-index:2}
  .layout-toggle{grid-column:2;justify-self:center;display:inline-flex;gap:0;background:#f3f4f6;border-radius:999px;padding:3px}
  .layout-btn{padding:6px 18px;border:0;background:transparent;color:var(--ink-2);font-size:12.5px;font-weight:500;border-radius:999px;cursor:pointer;transition:all .15s;font-family:inherit;line-height:1.4}
  .layout-btn.on{background:#fff;color:var(--ink-1);box-shadow:0 1px 4px rgba(0,0,0,.08);font-weight:600}
  .layout-btn:hover:not(.on){color:var(--ink-1)}

  /* ── 手机视图(iPhone 17 Pro Max 风手机框)─────────────────
   * .poster-stage 在 mobile 模式下变成手机框容器,
   * aspect-ratio 切到 9:19.5(iPhone 实际比例),
   * .phone-frame 是黑色边框,.phone-screen 是白色屏幕,可纵向滚动 */
  .poster-stage[data-layout="mobile"]{
    aspect-ratio: 9 / 19.5;
    background: #1d1d1f;
    border-radius: 56px;
    padding: 4px;
    overflow: visible;
    box-shadow: 0 0 0 1px #3a3a3c, 0 24px 50px -18px rgba(0,0,0,.42), 0 10px 20px -8px rgba(0,0,0,.22);
  }
  /* Dynamic Island(刘海)+ 内置摄像头 */
  .phone-notch{
    position: absolute; top: 14px; left: 50%; transform: translateX(-50%);
    width: 110px; height: 30px; background: #000; border-radius: 18px; z-index: 10;
    display: flex; align-items: center; justify-content: flex-end; padding-right: 16px;
    box-shadow: inset 0 0 0 1px #1a1a1a;
  }
  .phone-cam{
    width: 8px; height: 8px; border-radius: 50%; background: #1a1a1a;
    box-shadow: inset 0 0 2px #4a4a4a, 0 0 0 1px #2a2a2a;
  }
  /* 屏幕:可滚动容器,长图嵌入 */
  .phone-screen{
    position: relative; width: 100%; height: 100%;
    background: #fff; border-radius: 50px;
    overflow-y: auto; overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: none;          /* 严禁 rubber-band 越界 */
    scrollbar-width: none;              /* Firefox 隐藏滚动条 */
    -ms-overflow-style: none;           /* IE/Edge */
  }
  .phone-screen::-webkit-scrollbar{display:none;width:0;height:0}
  .phone-screen img.long-poster{width:100%;height:auto;display:block;opacity:0;transition:opacity .35s ease-out}
  .phone-screen img.long-poster.loaded{opacity:1}

  /* 响应式:窄屏堆叠 */
  @media (max-width:980px){
    .split-view{grid-template-columns:1fr;height:auto}
    .md-pane{min-height:360px}
    .poster-pane{min-height:620px}
  }

  /* ── 自定义 Toast(替代 alert)──────────────────── */
  .toast-stack{position:fixed;top:72px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
  .toast{background:#0F172A;color:#fff;padding:10px 16px 10px 14px;border-radius:10px;font-size:13px;box-shadow:0 12px 28px rgba(15,23,42,.3);min-width:240px;max-width:380px;display:flex;align-items:flex-start;gap:10px;pointer-events:auto;animation:toastIn .22s cubic-bezier(.2,.7,.3,1)}
  .toast.fadeout{animation:toastOut .18s ease-in forwards}
  .toast .toast-ic{flex-shrink:0;display:inline-flex;margin-top:1px}
  .toast .toast-msg{flex:1;line-height:1.5}
  .toast.success{background:#0F172A;border-left:3px solid var(--green)}
  .toast.error  {background:#0F172A;border-left:3px solid var(--red)}
  .toast.info   {background:#0F172A;border-left:3px solid var(--orange-1)}
  @keyframes toastIn{from{opacity:0;transform:translateX(20px) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}
  @keyframes toastOut{to{opacity:0;transform:translateX(20px)}}

  /* ── 自定义 Modal(替代 confirm)─────────────────── */
  .modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(3px);z-index:1500;display:none;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}
  .modal-overlay.show{display:flex}
  .modal-box{background:#fff;border-radius:14px;width:min(420px, 92%);box-shadow:0 30px 60px rgba(15,23,42,.25);overflow:hidden;animation:modalIn .2s cubic-bezier(.2,.7,.3,1)}
  @keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
  .modal-head{padding:20px 22px 8px;font-size:15px;font-weight:700;color:var(--ink-1)}
  .modal-body{padding:0 22px 18px;color:var(--ink-2);font-size:13.5px;line-height:1.65;white-space:pre-line}
  .modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:12px 18px;background:#FAF7F2;border-top:1px solid var(--border)}
  .modal-btn{padding:8px 18px;border-radius:8px;border:1px solid var(--border-strong);background:#fff;cursor:pointer;font-size:13px;font-weight:500;color:var(--ink-2);transition:all .12s}
  .modal-btn:hover{border-color:var(--orange-2);color:var(--ink-1)}
  .modal-btn.primary{background:var(--orange-1);color:#fff;border-color:var(--orange-1)}
  .modal-btn.primary:hover{background:#EA580C}

  /* ── Detail header (内联 actions, 统一图标按钮) ────────── */
  .detail-header .meta-block{flex:1;min-width:200px}
  .act-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;font-size:13px;line-height:1;font-weight:500;border-radius:var(--radius-pill);transition:all .12s;white-space:nowrap}
  .act-btn svg{flex-shrink:0;opacity:.95}
  .detail-header .cta.act-btn{padding:9px 16px}
  .ppt-btn{position:relative}
  .cost-tip{font-size:10px;color:var(--orange-1);background:var(--orange-3);padding:3px 7px;border-radius:var(--radius-pill);font-weight:600;letter-spacing:.2px}

  /* ── Responsive ─────────────────────────────── */
  @media (max-width:780px){
    .app{grid-template-columns:1fr}
    .sidebar{display:none}
    .input-grid{grid-template-columns:1fr}
    .output-row{flex-direction:column;align-items:stretch}
    .template-select{margin-left:0}
    .poster-grid{grid-template-columns:repeat(2,1fr)}
  }

  /* ─── Hamburger / paste 按钮:桌面默认隐藏(>768px)─── */
  .hamburger{display:none;background:none;border:0;cursor:pointer;font-size:22px;color:var(--ink-1);padding:8px 12px;line-height:1}
  .sidebar-backdrop{display:none}
  .link-input-wrap{position:relative}
  .paste-btn{display:none}
  .result-tabs{display:none}
  #pptViewTabs{display:none}   /* PPT view 内 2-tab,只在 mobile + view=ppt 显 */

  /* ─── View-mode toggle(顶部:图片总结 / PPT 总结)─── */
  .view-mode-toggle{display:inline-flex;gap:0;background:#f3f4f6;border:1px solid var(--border);border-radius:999px;padding:3px;margin:0 0 12px 0;align-self:flex-start}
  .view-mode-toggle .vm-btn{font-family:inherit;font-size:13px;font-weight:600;line-height:1.4;padding:7px 18px;border:0;background:transparent;color:var(--ink-2);cursor:pointer;border-radius:999px;transition:background 0.15s,color 0.15s;white-space:nowrap}
  .view-mode-toggle .vm-btn:hover{color:var(--ink-1)}
  .view-mode-toggle .vm-btn.on{background:#fff;color:var(--ink-1);box-shadow:0 1px 3px rgba(0,0,0,0.06)}

  /* PPT view 下隐藏图片相关 UI(Goal 1.a / 2.d)*/
  #main.pane-detail[data-view="ppt"] .control-row,
  #main.pane-detail[data-view="ppt"] #posterPane,
  #main.pane-detail[data-view="ppt"] .result-tabs,
  #main.pane-detail[data-view="ppt"] #actSaveImg{display:none !important}
  #main.pane-detail[data-view="image"] #pptPane{display:none}
  #main.pane-detail[data-view="ppt"] #pptPane{display:block;height:100%}

  /* ─── PPT stage:5 状态机 ─── */
  .ppt-stage{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;width:100%;height:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;overflow:hidden}
  .ppt-stage[data-status="empty"]{align-items:center;justify-content:center;padding:24px;text-align:center;color:var(--ink-3);min-height:300px}
  .ppt-stage[data-status="outline"],
  .ppt-stage[data-status="streaming"],
  .ppt-stage[data-status="rendering"]{align-items:center;justify-content:center;padding:24px;text-align:center;min-height:300px}
  .ppt-stage[data-status="error"]{align-items:center;justify-content:center;padding:24px;text-align:center;color:#c92a2a;min-height:300px}
  .ppt-stage[data-status="done"]{background:#eef0f3}
  .ppt-pdf-viewer{display:flex;flex-direction:column;width:100%;height:100%;min-height:620px;background:#eef0f3}
  .ppt-pdf-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--border);box-shadow:0 1px 8px rgba(15,23,42,.06);z-index:1}
  .ppt-pdf-title{min-width:0;display:flex;align-items:center;gap:9px;font-family:inherit;font-size:13px;font-weight:700;line-height:1.35;color:var(--ink-1)}
  .ppt-pdf-title .ppt-pdf-dot{width:8px;height:8px;border-radius:99px;background:var(--accent);box-shadow:0 0 0 4px rgba(255,122,26,.12);flex-shrink:0}
  .ppt-pdf-title span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ppt-pdf-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
  .ppt-pdf-actions a,.ppt-pdf-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 12px;border-radius:8px;font-family:inherit;font-size:12px;font-weight:700;text-decoration:none;background:#fff;color:var(--ink-1);border:1px solid var(--border);box-shadow:0 1px 4px rgba(15,23,42,.06);white-space:nowrap;cursor:pointer}
  .ppt-pdf-actions a.primary{background:var(--ink-1);color:#fff;border-color:var(--ink-1)}
  .ppt-pdf-actions a:hover,.ppt-pdf-actions button:hover{filter:brightness(.98)}
  .ppt-pdf-rotate{display:none}
  .ppt-pdf-frame{display:block;width:100%;height:100%;min-height:580px;border:0;background:#eef0f3;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
  .ppt-stage .ppt-spinner{display:inline-block;width:36px;height:36px;border:3px solid #e5e7eb;border-top-color:var(--accent);border-radius:50%;animation:spin 0.9s linear infinite;margin:0 auto 18px}
  @keyframes spin{to{transform:rotate(360deg)}}
  .ppt-stage h3{margin:0 0 8px 0;font-family:inherit;font-size:16px;font-weight:600;line-height:1.4;color:var(--ink-1)}
  .ppt-stage .ppt-sub{font-family:inherit;font-size:13px;line-height:1.5;color:var(--ink-3);max-width:340px;margin:0 auto 14px}
  .ppt-stage .ppt-stage-label{display:inline-block;padding:6px 14px;background:#f3f4f6;border-radius:999px;font-family:inherit;font-size:12px;line-height:1.4;color:var(--ink-2);margin-top:10px}
  .ppt-stage button.ppt-retry-btn{margin-top:14px;padding:8px 16px;background:var(--accent);color:#fff;border:0;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
  .ppt-stage button.ppt-retry-btn:hover{opacity:0.9}

  /* ─── Mobile (≤768px) 适配 ─────────────────────────── */
  @media (max-width:768px){
    /* 0) Safe area + 滚动锁 */
    body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
    body.sidebar-open{overflow:hidden}

    /* Sidebar footer 在抽屉模式下与 hist-scroll 一起出现 */
    .sidebar-footer{padding:10px 14px calc(10px + env(safe-area-inset-bottom))}
    .sidebar-footer a{font-size:12px}

    /* 1) Topbar:显示汉堡 + brand 保留小 logo + 文字(双视觉);顶部紧凑 + 防溢出 */
    .topbar{height:48px;padding:0 8px;padding-top:env(safe-area-inset-top);overflow:hidden;gap:4px}
    .hamburger{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-width:40px;height:40px;color:var(--ink-1);font-size:20px}
    .topbar .brand{gap:6px;padding:0 4px;flex-shrink:1;min-width:0;overflow:hidden}
    .topbar .brand img{display:inline-block;height:22px;width:22px;flex-shrink:0}
    .topbar .brand span{display:inline;font-size:16px;font-weight:700;color:var(--ink-1);white-space:nowrap}

    /* 顶部右侧 user / login 整体缩小;login-btn 在 mobile 仅留 SVG 防 EN/CN 文字撑破容器 */
    .user-menu{gap:6px;flex-wrap:nowrap;min-width:0;flex-shrink:0}
    .login-btn{padding:6px 8px;font-size:12px;gap:0;border-radius:999px;white-space:nowrap}
    .login-btn svg{width:18px;height:18px;flex-shrink:0}
    .login-btn span{display:none}                                       /* 只留 Google logo,文字过长会溢出 */
    .credits-pill{padding:4px 8px;font-size:12px;gap:6px}
    /* 隐用户名 + 分隔点(只留 头像 + <b>123</b> credits + 下拉箭头) */
    .credits-pill > span:not(.dot-sep):not(.user-avatar){display:none}
    .credits-pill > .dot-sep{display:none}
    .user-avatar,.user-avatar-img{width:26px;height:26px;font-size:12px;border-radius:50%}
    .lang-toggle{padding:4px 8px;font-size:12px;flex-shrink:0}
    /* 100dvh = dynamic viewport height (iOS Safari URL bar collapsed-state aware) */
    .user-dropdown{position:fixed;top:56px;right:8px;left:8px;width:auto;max-height:calc(100dvh - 72px);overflow:auto}
    /* Account 页:左 sidebar 改顶部 chip 横排,内容全宽 */
    body.view-account .pane-account{height:calc(100dvh - 48px - env(safe-area-inset-top))}
    .pane-account{padding:0}
    .account-toolbar{padding:8px 12px}
    .account-toolbar h1{font-size:15px}
    .account-toolbar .back-btn{padding:5px 9px;font-size:11.5px}
    .account-body{grid-template-columns:1fr;grid-template-rows:auto 1fr}
    .account-tabs{display:flex;border-right:0;border-bottom:1px solid var(--border);padding:6px 8px;gap:6px;background:#fff;overflow-x:auto}
    .account-tab{flex:0 0 auto;padding:7px 14px;border-left:0;border-radius:999px;border:1px solid var(--border);background:#fff;font-size:12.5px}
    .account-tab.active{border-color:var(--orange-1);background:var(--orange-1);color:#fff}
    .account-content{padding:14px}
    .account-card{padding:14px}
    .account-stat-grid{grid-template-columns:1fr 1fr;gap:10px}
    .account-stat-box .stat-value{font-size:15px}
    .credit-table{font-size:12px}
    .credit-table th,.credit-table td{padding:8px 7px}
    .credit-table .ct-note{max-width:140px}
    /* Pricing plan 卡片 mobile 单列 */
    .plan-grid{grid-template-columns:1fr;gap:12px}
    .plan-pricing-card{padding:16px}
    .plan-pricing-card .plan-price{font-size:24px}
    .account-cancel-row{flex-direction:column;align-items:flex-start}
    .account-cancel-row .btn-cancel-sub{width:100%;text-align:center;padding:10px}

    /* 2) Sidebar:抽屉化 */
    .app{grid-template-columns:1fr}
    .sidebar{
      display:flex;                                                      /* 撤回 780px 的 display:none */
      position:fixed;left:0;top:0;bottom:0;
      width:84vw;max-width:340px;
      transform:translateX(-100%);
      transition:transform .25s ease;
      z-index:1100;
      box-shadow:2px 0 24px rgba(0,0,0,.18);
      padding-top:calc(env(safe-area-inset-top) + 12px);
      padding-bottom:env(safe-area-inset-bottom);
    }
    body.sidebar-open .sidebar{transform:translateX(0)}
    .sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1090}
    body.sidebar-open .sidebar-backdrop{display:block}

    /* 3) 落地页:4 卡 2x2 布局,统一 16px 横向 padding;入口卡片有最小 tap target(60px+)
       hero 紧凑但保留可读 line-height,p 副标题保留作平台说明 */
    .pane-new{padding:14px 0 calc(54px + env(safe-area-inset-bottom) + 16px)}  /* 底部留 result-tabs 高度 + safe-area */
    .input-grid{grid-template-columns:repeat(2,1fr);gap:10px;padding:0 16px;max-width:100%;margin:14px auto 0}
    .entry[data-input="link"]{order:-1}                                  /* link 优先 */
    .entry[data-input="text"]{order:0}
    .entry[data-input="audio"]{order:1}
    .entry[data-input="topic"]{order:2}
    .entry{
      min-height:62px;padding:12px 12px;
      display:flex;flex-direction:column;align-items:flex-start;
      gap:3px;border-radius:12px;
    }
    .entry .icon{font-size:22px;line-height:1;margin-bottom:2px}
    .entry h3{font-size:13.5px;margin:0;line-height:1.25;font-weight:650}
    .entry p{display:block;margin:0;font-size:11px;line-height:1.35;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
    .hero{padding:14px 16px 0;text-align:center}
    .hero h1{font-size:21px;line-height:1.32;letter-spacing:-.2px;margin:0 0 6px}
    .hero p{font-size:12.5px;margin:6px 0 0;line-height:1.5;color:var(--ink-2)}
    .hero .hero-lead{display:none}

    /* 3b) 输入区:对齐 16px 横向 padding;label 隐(4 卡 icon+title 已表达) */
    .input-area{margin:14px 16px 0;padding:14px 14px;border-radius:12px;display:none}
    .input-area.show{display:block}
    .input-area .label{display:none}
    .text-input{font-size:15px;padding:11px 12px;min-height:44px;border-radius:10px}
    #textTextarea{min-height:96px}

    /* 4) Paste 按钮(linkInput 内嵌右侧)*/
    #linkInput{padding-right:52px}
    .paste-btn{
      display:inline-flex;align-items:center;justify-content:center;
      position:absolute;right:6px;top:50%;transform:translateY(-50%);
      width:40px;height:36px;font-size:18px;
      background:var(--orange-1);color:#fff;border:0;border-radius:8px;
      cursor:pointer;line-height:1;
    }
    .paste-btn:active{opacity:.8}
    .platform-badges{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;margin-top:8px;gap:6px}
    .platform-badges::-webkit-scrollbar{display:none}
    .platform-badges>span{flex-shrink:0;white-space:nowrap;font-size:12px;padding:4px 8px}

    /* 5) CTA 块紧贴内容下方,16px 边距对齐 */
    .cta-row{position:static;margin:14px 16px 0 !important;padding:0;width:auto}
    .cta{width:100%;height:48px;font-size:15.5px;border-radius:12px;box-shadow:0 4px 12px rgba(249,115,22,.18);font-weight:700}
    .cta-row>div:not(.cta){display:none}

    /* 6) 处理页 streaming 单栏 */
    .streaming-split,.split-view{display:flex !important;flex-direction:column !important;height:auto;gap:12px}
    .progress-card{padding:12px}
    .step-indicator{flex-wrap:wrap;gap:8px}
    .progress-pct,.progress-timer{font-size:12px}

    /* 7) 结果页:4-tab 固定底部(类 iOS bottom tab bar)
          z-index 1150 > sidebar(1100) > sidebar-backdrop(1090),
          所以打开历史抽屉时 4-tab 仍可见(用户反馈) */
    .result-tabs{
      display:flex;gap:0;padding:0;
      position:fixed;left:0;right:0;bottom:0;
      padding-bottom:env(safe-area-inset-bottom);
      background:#fff;border-top:1px solid var(--line-2);
      box-shadow:0 -2px 12px rgba(0,0,0,.04);
      z-index:1150;
      transition:transform .22s ease,opacity .22s ease;
      will-change:transform;
    }
    /* 抽屉打开时 4-tab 在最上层,但禁止点击避免误触隐藏的 detail 切换 */
    body.sidebar-open .result-tabs{pointer-events:none}
    .result-tabs.is-hidden{transform:translateY(110%);opacity:0;pointer-events:none}
    .result-tab{flex:1;height:54px;border:0;background:transparent;border-radius:0;font-size:11px;cursor:pointer;color:var(--ink-3);font-weight:500;line-height:1;padding:6px 4px 8px;white-space:nowrap;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
    .result-tab .rt-ic{font-size:20px;line-height:1}
    .result-tab .rt-lb{font-size:11px;line-height:1}
    .result-tab.on{background:transparent;color:var(--orange-1);font-weight:600}
    .result-tab:active{background:rgba(0,0,0,.04)}
    /* 给主区让位,不被 fixed bar 挡 */
    .pane-detail{padding-bottom:calc(54px + env(safe-area-inset-bottom) + 8px) !important}

    /* tab 控制 md / poster pane 显隐 */
    .split-view[data-mobile-tab="md"] .poster-pane,
    .streaming-split[data-mobile-tab="md"] .poster-pane,
    .streaming-split[data-mobile-tab="md"] #streamingPosterPane{display:none}
    .split-view[data-mobile-tab="poster-long"] .md-pane,
    .split-view[data-mobile-tab="poster-pages"] .md-pane,
    .streaming-split[data-mobile-tab="poster-long"] .md-pane,
    .streaming-split[data-mobile-tab="poster-pages"] .md-pane{display:none}

    /* tab 控制 control-row(风格切换 + 旧 layout-toggle) */
    .split-view[data-mobile-tab="md"] ~ .control-row,
    .pane-detail[data-mobile-tab="md"] .control-row{display:none}            /* 原文 tab 不显风格切换 */
    /* 由于 control-row 在 split-view 之前(DOM 顺序),用 body 级属性判断 */
    body[data-mobile-tab="md"] .control-row{display:none}

    /* 8) 海报区:单条工具栏(风格切换 + 右侧下载主操作) */
    .layout-toggle{display:none}                                              /* layout 由 3-tab 自动切换 */
    .control-row{
      display:flex;flex-wrap:nowrap;
      min-height:68px;padding:8px 14px 12px;
      justify-content:center;align-items:center;
      border:0;border-radius:0;margin:0;box-shadow:none;
      background:linear-gradient(180deg,#fff 0%,rgba(255,251,247,.94) 100%);
    }
    .control-row .style-bar{
      position:static;top:auto;left:auto;transform:none;z-index:auto;
      width:100%;max-width:354px;margin:0 auto;
      display:grid;grid-template-columns:minmax(0,1fr) 50px;
      gap:6px;align-items:center;justify-content:center;
      background:rgba(255,255,255,.86);border:1px solid rgba(249,115,22,.16);
      border-radius:999px;padding:4px;
      box-shadow:0 10px 28px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.9);
      backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    }
    .style-bar .style-dots{order:1;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}
    .style-dot-wrap{gap:5px;min-width:0}
    .style-dot,.style-dot.on{width:9px;height:9px;border-radius:50%;flex:0 0 9px}
    .style-dot-label{display:inline-flex;max-width:86px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:.4px}
    .control-row .style-arrow{display:none}
    .control-row .style-bar #actSaveImg{order:2}
    .style-name{display:none}
    .poster-stage{max-width:100%;width:100%}
    .poster-stage img{max-width:100%;height:auto}

    /* 8b) View-mode toggle(图片总结 / PPT 总结)mobile 适配 — 全宽 segmented,占满底部 tab 上方
       Goal:禁止左右滑动、简洁高密度、App 风格。pill 风格在 14px 边距内全宽,与 detail-pane 视觉
       连续(不浮在内容外)。 */
    .view-mode-toggle{
      display:flex;width:calc(100% - 28px);margin:8px 14px 4px;
      background:#f3f4f6;border:1px solid var(--border);border-radius:10px;
      padding:3px;gap:0;
    }
    .view-mode-toggle .vm-btn{flex:1;font-size:13px;padding:8px 12px;font-weight:600;text-align:center}
    .view-mode-toggle .vm-btn.on{background:#fff;color:var(--ink-1);box-shadow:0 1px 2px rgba(0,0,0,.06)}

    /* 8c) PPT view 在 mobile 的整体布局
       - 隐 4-tab 底部 bar(PPT 用左右 mdPane / pptPane 切换更清晰)
       - 显简化 2-tab bar(底部 md / ppt 两栏)
       - pptStage 占满剩余空间,PDF viewer 撑满 */
    #main.pane-detail[data-view="ppt"] .result-tabs{display:none}
    #main.pane-detail[data-view="ppt"] .split-view{padding-bottom:54px;min-height:calc(100dvh - 116px)}
    #main.pane-detail[data-view="ppt"] #pptPane{width:100%;min-height:60vh;margin:0;padding:0 14px 12px}
    #main.pane-detail[data-view="ppt"] #pptStage{width:100%;height:calc(100dvh - 178px);min-height:480px;border-radius:10px;overflow:visible}
    #main.pane-detail[data-view="ppt"] #pptStage[data-status="done"] .ppt-pdf-viewer{height:100%;min-height:0;border-radius:8px;overflow:hidden}
    #main.pane-detail[data-view="ppt"] #pptStage[data-status="done"] .ppt-pdf-frame{height:calc(100% - 49px);min-height:0;border-radius:0 0 8px 8px;overscroll-behavior:contain}
    #main.pane-detail[data-view="ppt"] .ppt-pdf-toolbar{padding:8px 10px;gap:8px}
    #main.pane-detail[data-view="ppt"] .ppt-pdf-title{font-size:12px}
    #main.pane-detail[data-view="ppt"] .ppt-pdf-actions{gap:6px}
    #main.pane-detail[data-view="ppt"] .ppt-pdf-actions a,
    #main.pane-detail[data-view="ppt"] .ppt-pdf-actions button{min-height:32px;padding:6px 9px;font-size:11px}
    #main.pane-detail[data-view="ppt"] .ppt-pdf-rotate{display:inline-flex;background:#fff7ed;color:var(--orange-1);border-color:rgba(249,115,22,.28)}
    body.ppt-landscape-mode{overflow:hidden}
    body.ppt-landscape-mode .ppt-pdf-viewer{
      position:fixed;inset:0;z-index:1400;width:100dvw;height:100dvh !important;
      min-height:0 !important;border-radius:0 !important;background:#eef0f3;
    }
    body.ppt-landscape-mode .ppt-pdf-toolbar{
      padding:calc(env(safe-area-inset-top) + 8px) 10px 8px;
      border-radius:0;
    }
    body.ppt-landscape-mode .ppt-pdf-frame{
      height:calc(100dvh - 50px - env(safe-area-inset-top)) !important;
      min-height:0 !important;border-radius:0 !important;
    }
    /* PPT view mobile 的 2-tab(md / ppt)由 JS 动态注入 ⇒ 见 #pptViewTabs 规则下方 */
    #pptViewTabs{
      display:flex;position:fixed;left:0;right:0;bottom:0;
      padding-bottom:env(safe-area-inset-bottom);
      background:#fff;border-top:1px solid var(--line-2);
      box-shadow:0 -2px 12px rgba(0,0,0,.04);
      z-index:1150;
    }
    #pptViewTabs .ppt-vt-btn{
      flex:1;height:54px;border:0;background:transparent;
      font-size:11px;line-height:1;color:var(--ink-3);font-weight:500;
      display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
      cursor:pointer;
    }
    #pptViewTabs .ppt-vt-btn.on{color:var(--orange-1);font-weight:600}
    #pptViewTabs .ppt-vt-btn .ic{font-size:20px;line-height:1}
    /* PPT view 下 mdPane / pptPane 互斥显隐(由 #main[data-ppt-tab] 控制)*/
    #main.pane-detail[data-view="ppt"][data-ppt-tab="md"] #pptPane,
    #main.pane-detail[data-view="ppt"]:not([data-ppt-tab="ppt"]) #pptPane{display:none}
    #main.pane-detail[data-view="ppt"][data-ppt-tab="ppt"] .md-pane{display:none}
    #main.pane-detail[data-view="ppt"][data-ppt-tab="ppt"] #pptPane{display:block}
    /* image view 不显 pptViewTabs;ppt view 才显(覆盖顶层 display:none)*/
    #main.pane-detail[data-view="ppt"] #pptViewTabs{display:flex}
    #main.pane-detail[data-view="image"] #pptViewTabs{display:none}

    /* 9) detail-header:垂直居中(用户反馈"标题顶在最上,要在顶部空间内居中") */
    .detail-header{position:relative;display:flex;flex-wrap:nowrap;align-items:center;gap:0;padding:8px 12px;border-bottom:0;min-height:64px;margin:0}
    .detail-header .meta-block{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;align-self:stretch}
    .detail-header .meta-block h1{font-size:15px;line-height:1.3;margin:0 0 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .detail-header .meta-block .sub{font-size:11px;flex-wrap:wrap;line-height:1.3}
    .detail-header .meta-block .pill{padding:2px 6px;font-size:10px}
    /* detail-header 内所有动作按钮全隐(actSaveImg 通过 JS 移到 .control-row 内) */
    .detail-header .act-btn{display:none}

    /* actSaveImg 在工具栏最右侧 — icon-only 主操作 */
    .control-row #actSaveImg{
      display:flex;align-items:center;justify-content:center;gap:0;
      order:4;width:44px;min-width:44px;height:44px;padding:0;font-size:0;font-weight:700;border-radius:999px;
      background:linear-gradient(135deg,#FF7A1A 0%,#F04438 100%);color:#fff;border:0;
      flex-shrink:0;white-space:nowrap;
      box-shadow:0 9px 18px rgba(249,115,22,.28), inset 0 1px 0 rgba(255,255,255,.32);
      cursor:pointer;
      transition:transform .15s,filter .15s,box-shadow .15s;
    }
    .control-row #actSaveImg:active{transform:scale(.94);filter:saturate(1.06) brightness(.96);box-shadow:0 5px 12px rgba(249,115,22,.24)}
    .control-row #actSaveImg span{display:none}
    .control-row #actSaveImg svg{width:19px;height:19px;flex-shrink:0}
    .control-row #actSaveImg .cost-tip{display:none}
    /* 原文 tab 隐下载按钮 */
    body[data-mobile-tab="md"] .control-row #actSaveImg{display:none}

    /* md-pane 内的 inline 复制按钮 + 渲染/源码切换 */
    .md-pane-toolbar{padding:6px 10px;justify-content:space-between;align-items:center}
    .md-pane-toolbar .seg-btn{padding:6px 10px;font-size:12px;min-height:36px}
    /* #actCopyMdInline 保留显示 — 用户要求独立按钮按 view 复制 */
    .md-pane-toolbar #actCopyMdInline{display:flex;align-items:center;gap:4px;padding:6px 10px;font-size:12px;min-height:36px;background:var(--bg-2);border:1px solid var(--line-2);border-radius:8px}
    .md-pane-toolbar #actCopyMdInline span{font-size:12px}

    /* 流程进行中(streaming)隐"渲染海报中…" + 整个海报预览区(手机只看流式 markdown) */
    .streaming-split .poster-lazy{display:none}
    .streaming-split #streamingPosterPane{display:none}

    /* 长图模式:保留 iPhone 风手机框(用户反馈:手机端要看到清晰边框);
       电脑模式(swiper)继续摊平 — 这两种 mode 由 body[data-mobile-tab] 区分 */
    .poster-pane{min-height:0 !important;max-height:none !important;height:auto !important;padding:0 !important;align-items:stretch !important;overflow:visible}
    /* 电脑分页模式:摊平贴底,无 phone frame。
       Bug fix:desktop default .poster-stage 有 aspect-ratio:12/17 + overflow:hidden;
       .poster-swiper 是横滑(overflow-x:auto + overflow-y:hidden)。在 mobile 这套
       让 img 自然高(553)>stage(542)→ 底部被裁。
       CSS 规范不允许 overflow-x:auto + overflow-y:visible 共存(后者会被强制 auto),
       所以 mobile + paged 直接放弃页内横滑,改纵向堆叠所有页面,stage/swiper/pane
       自然撑高;横向手势和侧边按钮专门用于切换 5 个风格。 */
    body[data-mobile-tab="poster-pages"] .poster-stage{padding:0 !important;min-height:0;max-height:none;height:auto;background:transparent;box-shadow:none;border-radius:0;overflow:visible !important;margin:0;aspect-ratio:auto !important}
    body[data-mobile-tab="poster-pages"] .poster-pane{padding-bottom:calc(86px + env(safe-area-inset-bottom)) !important}
    body[data-mobile-tab="poster-pages"] .poster-swiper{
      flex-direction:column !important;
      overflow:visible !important;
      height:auto !important;
      scroll-snap-type:none !important;
    }
    body[data-mobile-tab="poster-pages"] .poster-swiper img{
      flex:0 0 auto !important;
      width:100% !important;
      height:auto !important;
      scroll-snap-align:none !important;
    }
    body[data-mobile-tab="poster-long"] .swipe-arrow,
    body[data-mobile-tab="poster-pages"] .swipe-arrow{
      display:flex;
      position:fixed;
      top:54dvh;
      z-index:1120;
      width:42px;height:42px;
      background:rgba(255,255,255,.92);
      box-shadow:0 10px 26px rgba(15,23,42,.18);
    }
    body[data-mobile-tab="poster-long"] .swipe-arrow-left,
    body[data-mobile-tab="poster-pages"] .swipe-arrow-left{left:10px}
    body[data-mobile-tab="poster-long"] .swipe-arrow-right,
    body[data-mobile-tab="poster-pages"] .swipe-arrow-right{right:10px}
    body[data-mobile-tab="poster-long"] .swipe-arrow.disabled,
    body[data-mobile-tab="poster-pages"] .swipe-arrow.disabled{display:none !important}
    /* 长图模式:**完全摊平,无 iPhone 框**,长图直接占满屏宽,垂直滚显示完整内容 */
    body[data-mobile-tab="poster-long"] .poster-pane{padding:0 !important;align-items:stretch !important;overflow:visible !important}
    body[data-mobile-tab="poster-long"] .poster-stage[data-layout="mobile"]{
      width:100% !important;max-width:100% !important;
      height:auto !important;min-height:0 !important;max-height:none !important;
      aspect-ratio:auto !important;
      background:transparent !important;
      border-radius:0 !important;
      padding:0 !important;margin:0 !important;
      overflow:visible !important;
      box-shadow:none !important;
    }
    body[data-mobile-tab="poster-long"] .phone-notch{display:none !important}
    body[data-mobile-tab="poster-long"] .phone-screen{
      overflow:visible !important;
      border-radius:0 !important;padding:0 !important;
      height:auto !important;width:100% !important;max-width:100% !important;
      background:transparent !important;
      min-height:calc(100dvh - 190px);
    }
    body[data-mobile-tab="poster-long"] .phone-screen .poster-lazy,
    body[data-mobile-tab="poster-pages"] .poster-stage > .poster-lazy{
      position:relative;
      inset:auto;
      width:100%;
      min-height:calc(100dvh - 190px);
      border-radius:12px;
    }
    body[data-mobile-tab="poster-long"] .phone-screen img.long-poster{
      width:100% !important;height:auto !important;display:block;
      opacity:1 !important;border-radius:0 !important;
    }
    /* 电脑模式(分页 swiper)摊平,紧贴风格切换栏 */
    body[data-mobile-tab="poster-pages"] .poster-stage{padding:0 !important;background:transparent;box-shadow:none;border-radius:0;overflow:visible;margin:0}
    body[data-mobile-tab="poster-pages"] .phone-frame{border:0 !important;border-radius:0 !important;padding:0 !important;box-shadow:none !important;background:transparent !important;width:100% !important;max-width:100% !important;height:auto !important;margin:0 !important}
    body[data-mobile-tab="poster-pages"] .phone-notch{display:none !important}
    body[data-mobile-tab="poster-pages"] .phone-screen{overflow:visible !important;border-radius:0 !important;padding:0 !important;height:auto !important;max-height:none !important;width:100% !important;max-width:100% !important;margin:0 !important;background:transparent !important}
    body[data-mobile-tab="poster-pages"] .phone-screen img.long-poster{width:100% !important;height:auto !important;display:block;opacity:1 !important;border-radius:0 !important}
    .poster-swiper{min-height:0 !important;height:auto !important;align-items:flex-start}
    .poster-swiper img{height:auto !important;min-height:auto !important;flex:0 0 100%}
    .swipe-arrow{width:36px;height:36px;font-size:22px}                          /* 缩小箭头 */

    /* 嵌入图内的分页 dots(电脑 tab 显示):桌面已有 #posterDots(.page-dots 顶部 absolute)
       手机改到底部居中 + 加深背景,选中态加粗 */
    .page-dots{
      top:auto !important;bottom:14px !important;
      padding:5px 12px;background:rgba(0,0,0,.5);border-radius:999px;
      backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    }
    .page-dot{background:rgba(255,255,255,.5) !important}
    .page-dot.on{background:#fff !important;width:18px !important}
    /* 仅"电脑" tab 显 dots,长图单图无需;mobile + paged 改纵向堆叠后 dots 失意义,也隐 */
    body[data-mobile-tab="poster-long"] .page-dots{display:none}
    body[data-mobile-tab="md"] .page-dots{display:none}
    body[data-mobile-tab="poster-pages"] .page-dots{display:none}

    /* 10) Modal / Toast 安全区 */
    .modal-overlay .modal-box{inset:16px;width:auto;max-width:none;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}
    .toast-stack{top:calc(env(safe-area-inset-top) + 12px);left:12px;right:12px}
    .toast{max-width:100%}

    /* 11) 主区 padding */
    .pane-detail{padding:0;min-height:calc(100dvh - 48px - env(safe-area-inset-top));display:flex;flex-direction:column}
    .pane-detail .split-view{flex:1;justify-content:flex-start}
    .main{padding:0}

    /* 12) 历史项触感 */
    .hist-item{min-height:56px;padding:10px 12px}
    .new-btn{min-height:48px}
    .search-input{min-height:40px;font-size:14px}
  }
