      :root {
        --ink: #20242b;
        --muted: #737a85;
        --line: #e6e8ec;
        --ground: #f7f8fa;
        --panel: #ffffff;
        --forest: #e43b3f;
        --forest-deep: #bf282f;
        --lime: #ffbe62;
        --peach: #fff0ea;
        --accent-soft: #fff5f3;
        --success: #23865c;
        --warning: #c5681c;
        --danger: #c23f3a;
        --shadow: 0 8px 24px rgba(28, 35, 48, 0.055);
      }

      * { box-sizing: border-box; }
      [hidden] { display: none !important; }
      body {
        margin: 0;
        color: var(--ink);
        background: var(--ground);
        font-family: "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei", "Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif;
        font-size: 14px;
      }
      button, input, select, textarea { font: inherit; }
      button { cursor: pointer; }
      button:focus-visible, input:focus-visible { outline: 3px solid rgba(228, 59, 63, .22); outline-offset: 2px; }
      .shell { min-height: 100vh; display: grid; grid-template-columns: 252px minmax(560px, 1fr) 300px; }

      .sidebar {
        position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; overflow: hidden; padding: 22px 14px 16px;
        background: #f8faf8; border-right: 1px solid #e5ebe6;
      }
      .brand { display: flex; align-items: center; gap: 10px; padding: 0 8px 25px; }
      .brand-mark {
        display: block; width: 34px; height: 34px; flex: 0 0 auto; border-radius: 9px; object-fit: cover;
      }
      .brand strong { display: block; font-size: 16px; }
      .brand small { color: var(--muted); font-size: 11px; }
      .primary-btn {
        display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%;
        border: 0; border-radius: 6px; color: #fff; background: var(--forest); padding: 12px;
        box-shadow: 0 8px 16px rgba(228, 59, 63, 0.18); font-weight: 700;
      }
      .primary-btn:hover { background: var(--forest-deep); }
      .sidebar-section-head { display: flex; align-items: center; justify-content: space-between; flex: 0 0 auto; margin: 25px 5px 10px 7px; }
      .sidebar-label { display: inline-flex; align-items: center; gap: 7px; color: #66746b; font-size: 12px; font-weight: 760; }
      .sidebar-label svg { color: #819087; }
      .task-count { display: inline-grid; place-items: center; min-width: 21px; height: 21px; padding: 0 6px; color: #728077; border-radius: 999px; background: #eaf0eb; font-size: 11px; font-weight: 720; }
      .task-filters { display: grid; grid-template-columns: minmax(0, 1fr) 82px; gap: 7px; margin: 0 2px 12px; }
      .task-search { display: flex; align-items: center; min-width: 0; height: 32px; padding: 0 9px; color: #87938b; border: 1px solid #dfe7e1; border-radius: 7px; background: rgba(255,255,255,.74); transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease; }
      .task-search:focus-within { border-color: #c1d2c5; background: #fff; box-shadow: 0 0 0 3px rgba(91, 126, 99, .09); }.task-search:focus-within svg { color: var(--forest); }
      .task-search input { width: 100%; min-width: 0; margin-left: 6px; padding: 0; color: #405047; border: 0; outline: 0; background: transparent; font-size: 11px; }.task-search input::placeholder { color: #9ba69f; }
      .task-status-filter { width: 100%; height: 32px; padding: 0 6px; color: #68766e; border: 1px solid #dfe7e1; border-radius: 7px; outline: 0; background: rgba(255,255,255,.74); font-size: 11px; cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease; }.task-status-filter:focus { border-color: #c1d2c5; box-shadow: 0 0 0 3px rgba(91, 126, 99, .09); }
      .task-list { display: grid; flex: 1 1 auto; align-content: start; min-height: 0; gap: 8px; overflow: hidden; padding: 0 2px 10px 1px; }
      .task-list.scrollable { overflow-x: hidden; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #c7d2c9 transparent; }.task-list.scrollable::-webkit-scrollbar { width: 5px; }.task-list.scrollable::-webkit-scrollbar-thumb { border-radius: 8px; background: #c7d2c9; }.task-list.scrollable::-webkit-scrollbar-track { background: transparent; }
      .task-entry { position: relative; min-width: 0; }
      .task-item {
        width: 100%; min-width: 0; overflow: hidden; border: 1px solid transparent; background: rgba(255,255,255,.56); border-radius: 8px;
        padding: 11px 39px 10px 12px; text-align: left; color: var(--ink); transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease, transform .16s ease;
      }
      .task-item:hover { border-color: #dfe8e1; background: #fff; box-shadow: 0 6px 16px rgba(36, 58, 42, .055); transform: translateY(-1px); }
      .task-item.active { border-color: #efcfcd; background: #fff6f5; box-shadow: inset 3px 0 0 var(--forest), 0 7px 18px rgba(181, 59, 59, .08); }
      .task-card-head { display: flex; align-items: center; min-width: 0; }
      .task-name { display: block; min-width: 0; overflow: hidden; color: #2d3a31; white-space: nowrap; text-overflow: ellipsis; font-size: 13px; font-weight: 730; line-height: 1.45; }
      .task-item.active .task-name { color: #9e3436; }
      .task-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 8px; }
      .task-state { display: inline-flex; align-items: center; min-width: 0; gap: 6px; color: #7d8981; font-size: 11px; line-height: 1.2; }.task-state.running { color: #a66a1f; }.task-state.done { color: #287b50; }.task-state.failed { color: var(--danger); }.task-item.active .task-state { color: #9c5a58; }.task-item.active .task-state.done { color: #287b50; }.task-item.active .task-state.failed { color: var(--danger); }
      .task-time { flex: 0 0 auto; color: #95a099; font-size: 10px; font-variant-numeric: tabular-nums; line-height: 1.2; white-space: nowrap; }
      .task-more { position: absolute; top: 10px; right: 7px; display: grid; place-items: center; width: 27px; height: 27px; padding: 0; color: #89958d; border: 1px solid transparent; border-radius: 6px; background: transparent; opacity: 0; transition: opacity .16s ease, color .16s ease, background-color .16s ease; }
      .task-entry:hover .task-more, .task-entry.menu-open .task-more, .task-entry.active .task-more, .task-more:focus { opacity: 1; }
      .task-more:hover { color: var(--forest); border-color: #f0d5d3; background: #fff; }
      .task-action-menu { position: absolute; z-index: 5; top: 41px; right: 5px; display: none; min-width: 122px; padding: 5px; border: 1px solid #e1e8e2; border-radius: 7px; background: #fff; box-shadow: 0 14px 30px rgba(31, 48, 39, .16); }
      .task-entry.menu-open .task-action-menu { display: block; animation: menuIn .16s ease-out; }
      .task-action-menu button { display: flex; align-items: center; gap: 7px; width: 100%; padding: 8px; color: #425048; border: 0; border-radius: 5px; background: transparent; font-size: 12px; text-align: left; }
      .task-action-menu button:hover { background: #f3f7f4; }.task-action-menu .danger { color: var(--danger); }.task-action-menu .danger:hover { background: #fff2f1; }
      .sidebar-empty { margin: 4px 5px 0; padding: 24px 14px; color: var(--muted); border: 1px dashed #d3ded5; border-radius: 9px; background: rgba(255,255,255,.72); text-align: center; }
      .sidebar-empty i { color: var(--forest); }.sidebar-empty strong, .sidebar-empty span { display: block; }.sidebar-empty strong { margin-top: 11px; color: var(--ink); font-size: 12px; }.sidebar-empty span { margin-top: 6px; font-size: 11px; line-height: 1.55; }
      .dot { width: 7px; height: 7px; border-radius: 50%; background: #9ca69f; }
      .dot.running { background: #e59b24; box-shadow: 0 0 0 3px #fff2d7; }
      .dot.done { background: #2f9762; }
      .dot.error { background: var(--danger); }
      .side-footer { flex: 0 0 auto; margin-top: 0; padding: 14px 8px 0; border-top: 1px solid #e2e9e3; }
      .account-wrap { position: relative; }
      .account { display: flex; align-items: center; width: 100%; gap: 9px; padding: 7px 8px; color: #425048; border: 1px solid transparent; border-radius: 7px; background: #edf3ee; text-align: left; transition: .18s ease; }
      .account:hover, .account[aria-expanded="true"] { color: var(--ink); border-color: #c9d8ce; background: #e4eee7; }
      .account-name { overflow: hidden; flex: 1; font-size: 12px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
      .account-menu { position: absolute; z-index: 6; right: 0; bottom: calc(100% + 8px); display: none; min-width: 148px; padding: 5px; border: 1px solid var(--line); border-radius: 7px; background: #fff; box-shadow: 0 12px 28px rgba(31, 48, 39, .15); }
      .account-menu.open { display: block; animation: menuIn .16s ease-out; }
      .account-menu button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px 9px; color: var(--danger); border: 0; border-radius: 5px; background: transparent; font-size: 12px; text-align: left; }
      .account-menu button:hover { background: #fff1f0; }
      .avatar { display: grid; place-items: center; overflow: hidden; width: 31px; height: 31px; border-radius: 50%; color: #fff; font-size: 12px; background: #577265; }
      .avatar img { width: 100%; height: 100%; object-fit: cover; }

      .workspace { min-width: 0; padding: 24px 32px 36px; }
      #taskWorkspace { position: relative; }
      .topbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 30px; }
      .breadcrumb { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 13px; }
      .breadcrumb strong { color: var(--ink); }
      .top-actions { display: flex; gap: 8px; }
      .mobile-create { display: none; align-items: center; gap: 5px; padding: 8px 10px; color: #fff; border: 0; border-radius: 5px; background: var(--forest); font-size: 12px; font-weight: 750; }
      .icon-btn { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); background: #fff; }
      .icon-btn:hover { color: var(--forest); border-color: #f2c2c1; }

      .intro { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
      h1 { margin: 0 0 8px; font-size: 25px; line-height: 1.2; letter-spacing: 0; }
      .task-heading { display: flex; align-items: center; flex: 1; flex-wrap: wrap; min-width: 0; gap: 6px; }
      .task-heading h1 { overflow: hidden; max-width: min(280px, 100%); margin: 0; padding: 5px 9px; color: #46534a; border: 1px solid #e1e9e3; border-radius: 6px; background: #f7faf8; font-size: 12px; font-weight: 720; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
      .task-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; color: #829087; font-size: 10px; line-height: 1.4; }
      .task-meta-item { display: inline-flex; align-items: center; min-width: 0; gap: 4px; padding: 5px 7px; border: 1px solid #e5ece7; border-radius: 6px; background: #fff; }
      .task-meta-item > i { flex: 0 0 auto; color: #9aa69f; }
      .task-meta-item > strong { overflow: hidden; max-width: 190px; color: #748178; font-size: 10px; font-weight: 650; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
      .task-meta-divider { display: none; }
      .status-pill { display: inline-flex; align-items: center; gap: 6px; color: #915413; background: #fff3d8; padding: 6px 9px; border-radius: 999px; font-size: 11px; font-weight: 700; white-space: nowrap; }
      .status-pill.done { color: #18724b; background: #eaf7ef; }
      .status-pill.queued { color: #58645d; background: #eef1ee; }
      .status-pill.failed { color: #a43734; background: #fff0ef; }
      .progress-card { overflow: hidden; background: var(--panel); border: 1px solid var(--line); border-radius: 9px; box-shadow: var(--shadow); }
      .steps { display: grid; grid-template-columns: repeat(5, minmax(118px, 1fr)); padding: 20px 22px 22px; gap: 0; }
      .step { position: relative; min-width: 0; padding-right: 16px; }
      .step:not(:last-child)::after { position: absolute; top: 14px; left: 31px; right: 0; height: 2px; background: #e6ece7; content: ""; transition: background-color .35s ease; }
      .step.completed:not(:last-child)::after { background: #6ab98b; }
      .step-mark { position: relative; z-index: 1; display: grid; place-items: center; width: 30px; height: 30px; color: #9aa69e; border: 2px solid #dfe7e1; border-radius: 50%; background: #fff; transition: color .28s ease, background-color .28s ease, border-color .28s ease, box-shadow .28s ease; }
      .step.completed .step-mark { color: #fff; border-color: #2f9762; background: #2f9762; box-shadow: 0 0 0 4px #edf8f1; }
      .step.running .step-mark { color: #fff; border-color: var(--forest); background: var(--forest); box-shadow: 0 0 0 4px #fff0ef; }
      .step.running .step-mark svg { animation: stageSpinner .9s linear infinite; }
      .step.error .step-mark { color: #fff; background: var(--danger); border-color: var(--danger); box-shadow: 0 0 0 4px #fff0ef; }
      .step-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 10px; }
      .step-name { min-width: 0; color: #405047; font-size: 12px; font-weight: 750; line-height: 1.35; }
      .step-percent { flex: 0 0 auto; color: #9aa69e; font-size: 11px; font-variant-numeric: tabular-nums; }
      .step-note { min-height: 16px; margin-top: 4px; overflow: hidden; color: #8a968e; font-size: 11px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
      .step-progress { height: 4px; margin-top: 9px; overflow: hidden; border-radius: 99px; background: #edf1ee; }
      .step-progress span { display: block; width: 0; height: 100%; border-radius: inherit; background: #bdc9c0; transition: width .42s cubic-bezier(.2,.8,.2,1), background-color .25s ease; }
      .step.completed .step-name, .step.completed .step-percent { color: #287b50; }.step.completed .step-note { color: #5c866d; }.step.completed .step-progress span { background: #4aab72; }
      .step.running .step-name, .step.running .step-percent { color: #ad4245; }.step.running .step-note { color: #a45a55; }.step.running .step-progress span { background: var(--forest); }
      .step.error .step-name, .step.error .step-percent, .step.error .step-note { color: var(--danger); }.step.error .step-progress span { background: var(--danger); }
      .agent-activity { display: none; align-items: center; gap: 6px; min-height: 16px; margin-top: 7px; color: #ad4245; font-size: 11px; font-weight: 700; }
      .step.running .agent-activity { display: flex; }
      .agent-orbit { position: relative; width: 14px; height: 14px; border: 1px solid rgba(228,59,63,.42); border-radius: 50%; animation: agentOrbit 1.5s linear infinite; }
      .agent-orbit::before, .agent-orbit::after { position: absolute; width: 4px; height: 4px; border-radius: 50%; content: ""; }
      .agent-orbit::before { top: -2px; left: 5px; background: var(--forest); box-shadow: 0 0 0 3px rgba(228,59,63,.12); }
      .agent-orbit::after { right: -2px; bottom: 2px; background: #e4a025; }
      @keyframes agentOrbit { to { transform: rotate(360deg); } }
      .process-summary { display: none; box-sizing: border-box; width: 100%; min-height: 66px; padding: 12px 16px; color: inherit; border: 0; background: transparent; text-align: left; cursor: pointer; }
      .progress-card.is-expandable .process-summary { display: flex; align-items: center; gap: 11px; }
      .progress-card.is-expandable:not(.details-open) .steps { display: none; }
      .progress-card.is-compact { border-color: #e2e9e3; background: #fbfdfb; box-shadow: none; }
      .process-summary-icon { display: grid; flex: 0 0 auto; place-items: center; width: 34px; height: 34px; color: #fff; border-radius: 50%; background: #2f9762; box-shadow: 0 0 0 4px #edf8f1; }
      .process-summary-copy { display: grid; flex: 1; min-width: 0; gap: 2px; }
      .process-summary-copy small { color: #7e8c83; font-size: 10px; font-weight: 700; }
      .process-summary-copy strong { overflow: hidden; color: #354238; font-size: 13px; font-weight: 760; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
      .process-summary-copy em { overflow: hidden; color: #87938b; font-size: 11px; font-style: normal; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
      .process-summary-action { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 5px; padding: 7px 8px; color: #607166; border-radius: 6px; font-size: 11px; font-weight: 720; transition: color .16s ease, background-color .16s ease; }
      .process-summary:hover .process-summary-action { color: var(--forest); background: #fff1f0; }
      .process-summary:focus-visible { outline: 2px solid rgba(228, 59, 63, .42); outline-offset: -3px; }
      .progress-card.details-open .process-summary { border-bottom: 1px solid #e9eeea; }
      .progress-card.details-open .process-summary-action svg { transform: rotate(180deg); }
      .process-summary-action svg { transition: transform .18s ease; }
      .progress-card.is-failed .process-summary-icon { background: var(--danger); box-shadow: 0 0 0 4px #fff0ef; }
      .progress-card.is-failed .process-summary-copy strong { color: #a43734; }

      .content-grid { display: grid; grid-template-columns: minmax(0, 1fr); min-width: 0; margin-top: 18px; }
      .panel { min-width: 0; overflow: hidden; background: var(--panel); border: 1px solid var(--line); border-radius: 8px; box-shadow: var(--shadow); }
      .panel-head { display: flex; align-items: center; justify-content: space-between; padding: 17px 20px; border-bottom: 1px solid var(--line); }
      .panel-title { display: flex; align-items: center; gap: 8px; font-weight: 750; }
      .report-export-actions { display: flex; align-items: center; gap: 8px; }
      .report-export-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 31px; padding: 0 10px; color: #5b6960; border: 1px solid #dbe4dd; border-radius: 6px; background: #fff; font-size: 12px; font-weight: 700; transition: color .16s ease, border-color .16s ease, background-color .16s ease, box-shadow .16s ease; }
      .report-export-file-icon { display: block; width: 15px; height: 15px; flex: 0 0 auto; object-fit: contain; }
      .report-export-btn:hover:not(:disabled) { color: var(--forest); border-color: #efc8c6; background: #fff8f7; box-shadow: 0 4px 10px rgba(145, 58, 58, .08); }.report-export-btn:disabled { color: #a6b0a9; border-color: #e6ece7; background: #fafcfa; cursor: not-allowed; }
      .text-btn { border: 0; padding: 4px; color: var(--forest); background: transparent; font-size: 12px; font-weight: 700; }
      .text-btn:disabled { color: #9aa49e; cursor: not-allowed; }
      .report { padding: 22px; }
      .report-cover { display: flex; justify-content: space-between; padding: 5px 0 22px; border-bottom: 1px dashed #d8dfd9; }
      .report-kicker { color: var(--forest); font-size: 12px; font-weight: 800; letter-spacing: 1px; }
      .report-name { margin-top: 8px; font-size: 19px; font-weight: 800; }
      .report-date { color: var(--muted); font-size: 12px; }
      .report-section { padding-top: 20px; }
      .report-section h2 { margin: 0 0 13px; font-size: 15px; }
      .evidence { width: 100%; border-collapse: collapse; font-size: 12px; }
      .evidence th { padding: 9px 8px; color: #695855; background: #fff2ef; text-align: left; font-weight: 700; }
      .evidence td { padding: 10px 8px; border-bottom: 1px solid var(--line); vertical-align: top; }
      .good { color: var(--forest); font-weight: 800; }
      .insights { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; }
      .insight { padding: 12px; background: #fff9f7; border-left: 3px solid var(--lime); }
      .insight strong { display: block; font-size: 13px; }
      .insight span { display: block; margin-top: 5px; color: var(--muted); font-size: 11px; line-height: 1.5; }
      .award { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 9px; padding: 11px 12px; border: 1px solid #e5ebe3; border-radius: 6px; }
      .award b { font-size: 13px; }
      .award p { margin: 4px 0 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
      .rank { color: #846800; background: #fff5bd; padding: 4px 7px; border-radius: 4px; font-size: 11px; white-space: nowrap; }
      .report-skeleton { display: none; padding: 36px 22px; }
      .shimmer { height: 12px; margin-bottom: 14px; border-radius: 4px; background: linear-gradient(90deg, #edf1eb 25%, #fafcf9 37%, #edf1eb 63%); background-size: 400% 100%; animation: shimmer 1.3s infinite; }
      @keyframes shimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

      .checks { padding: 8px 12px; }
      .check { display: flex; gap: 9px; padding: 12px 6px; border-bottom: 1px solid var(--line); }
      .check:last-child { border-bottom: 0; }
      .check i { flex: 0 0 auto; margin-top: 1px; }
      .check strong { display: block; font-size: 12px; }
      .check small { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; line-height: 1.45; }
      .check.pending i { color: var(--warning); }
      .check.success i { color: var(--forest); }
      .notice { margin: 12px 20px 18px; padding: 10px; color: #866018; background: #fff8e5; border-radius: 5px; font-size: 11px; line-height: 1.5; }

      .rightbar { position: sticky; top: 0; height: 100vh; overflow-x: hidden; overflow-y: auto; background: #fbfdfb; border-left: 1px solid #e5ece6; scrollbar-width: thin; scrollbar-color: #ced8d0 transparent; }
      .rightbar::-webkit-scrollbar { width: 5px; }.rightbar::-webkit-scrollbar-thumb { border-radius: 8px; background: #ced8d0; }.rightbar::-webkit-scrollbar-track { background: transparent; }
      .rightbar-inner { min-height: 100%; padding: 25px 17px 28px; }.attachment-area { min-width: 0; }
      .rightbar .right-empty { min-height: calc(100vh - 54px); padding: 28px 16px; border: 1px dashed #d8e3da; border-radius: 9px; background: rgba(255,255,255,.7); }.rightbar .right-empty .empty-icon { width: 46px; height: 46px; }.rightbar .right-empty span { max-width: 190px; }
      .right-section-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 1px 13px; }.right-section-title { display: inline-flex; align-items: center; gap: 7px; color: #536158; }.right-section-title > i, .right-section-title > svg { color: var(--forest); }.rightbar h3 { margin: 0; color: #36443b; font-size: 13px; font-weight: 780; }.attachment-count { flex: 0 0 auto; color: #839087; font-size: 11px; font-weight: 650; }
      .file-list { display: grid; gap: 9px; }.file-card { max-width: 100%; padding: 11px; border: 1px solid #e1e9e3; border-radius: 8px; background: #fff; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
      .file-card:hover { border-color: #cfdbd1; box-shadow: 0 6px 16px rgba(43, 66, 49, .06); transform: translateY(-1px); }.file-row { display: flex; align-items: flex-start; min-width: 0; gap: 9px; }
      .file-icon { display: grid; place-items: center; flex: 0 0 auto; width: 33px; height: 33px; color: #b94743; border-radius: 8px; background: #fff1f0; }
      .file-name { display: -webkit-box; width: 100%; overflow: hidden; color: #334139; font-size: 12px; font-weight: 720; line-height: 1.45; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
      .file-size { margin-top: 4px; color: #8a968e; font-size: 10px; }
      .file-state { display: flex; align-items: center; min-width: 0; gap: 5px; margin-top: 10px; color: #2f9762; font-size: 11px; line-height: 1.45; overflow-wrap: anywhere; }.file-state svg { flex: 0 0 auto; }.file-state.wait { color: #b47722; }.file-state.error { color: var(--danger); }
      .file-context { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }.file-role, .file-quality { display: inline-flex; align-items: center; min-height: 20px; padding: 0 7px; border-radius: 99px; font-size: 10px; font-weight: 700; line-height: 1; }.file-role.primary { color: #1f7a4d; background: #eaf8ef; }.file-role.supplementary { color: #66756b; background: #f1f4f2; }.file-role.excluded { color: #80878f; background: #f3f4f5; }.file-quality.complete { color: #237c50; background: #edf9f1; }.file-quality.partial { color: #a36a1f; background: #fff6e8; }.file-quality.unavailable { color: #bd4545; background: #fff0f0; }.file-quality.pending { color: #728078; background: #f3f5f4; }.file-card.primary { border-color: #b9dfc5; }.file-card.excluded { opacity: .76; }
      .file-preview { flex: 1 1 0; min-width: 0; max-width: 100%; padding: 0; color: inherit; border: 0; background: transparent; text-align: left; }.file-preview:hover .file-name { color: var(--forest); }
      .file-download { display: grid; place-items: center; flex: 0 0 auto; width: 29px; height: 29px; padding: 0; color: #728077; border: 1px solid #dfe7e1; border-radius: 6px; background: #fff; transition: color .16s ease, border-color .16s ease, background-color .16s ease; }.file-download:hover { color: #fff; border-color: var(--forest); background: var(--forest); }
      .right-section-divider { height: 1px; margin: 25px 1px; background: #e3ebe5; }
      .template-card { display: flex; align-items: flex-start; gap: 10px; padding: 13px; border: 1px solid #e5ece6; border-radius: 8px; background: #f8fbf8; }.template-card-mark { display: grid; place-items: center; flex: 0 0 auto; width: 30px; height: 30px; color: #b36d20; border-radius: 8px; background: #fff4dd; }
      .template-card small { display: block; color: #7e8a82; font-size: 10px; font-weight: 720; }.template-card strong { display: block; margin: 3px 0 5px; color: #3d4b42; font-size: 13px; }.template-card span { display: block; color: #78857d; font-size: 11px; line-height: 1.55; }
      .download-btn { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%; margin-top: 13px; padding: 10px; color: var(--forest); border: 1px solid #f0aaa9; border-radius: 6px; background: #fff; font-weight: 750; }
      .download-btn:disabled { color: #a5aaa6; border-color: #dde2dd; background: #f8f9f7; cursor: not-allowed; }
      .toast-stack { position: fixed; z-index: 60; top: 18px; left: 50%; display: grid; width: min(440px, calc(100vw - 32px)); gap: 9px; pointer-events: none; transform: translateX(-50%); }.toast { display: grid; grid-template-columns: 30px minmax(0, 1fr) 28px; align-items: center; gap: 9px; min-height: 52px; padding: 10px 10px 10px 12px; color: #39463e; border: 1px solid #dce6df; border-radius: 8px; background: rgba(255,255,255,.96); box-shadow: 0 13px 32px rgba(23, 42, 29, .15); pointer-events: auto; animation: toastSlideIn .28s cubic-bezier(.2,.8,.2,1) both; }.toast.is-leaving { animation: toastSlideOut .22s ease-in forwards; }.toast-icon { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; }.toast-message { overflow: hidden; font-size: 12px; font-weight: 680; line-height: 1.45; }.toast-close { display: grid; place-items: center; width: 28px; height: 28px; padding: 0; color: #8a968e; border: 0; border-radius: 6px; background: transparent; }.toast-close:hover { color: #46534a; background: #f0f4f1; }.toast-close:focus-visible { outline: 2px solid rgba(35, 134, 92, .28); outline-offset: 1px; }.toast.success { border-color: #cfe8d8; }.toast.success .toast-icon { color: #23865c; background: #ebf8f0; }.toast.info { border-color: #d5e4f2; }.toast.info .toast-icon { color: #3975ae; background: #edf5fc; }.toast.warning { border-color: #f0ddb4; }.toast.warning .toast-icon { color: #b77819; background: #fff7e6; }.toast.error { border-color: #f0cecc; }.toast.error .toast-icon { color: #bd4541; background: #fff1f0; }
      .empty-workspace { display: grid; place-items: center; min-height: calc(100vh - 132px); padding: 48px 28px; border: 1px dashed #d8e0d9; border-radius: 9px; background: rgba(255,255,255,.58); text-align: center; }
      .empty-workspace .empty-icon, .right-empty .empty-icon { display: grid; place-items: center; width: 50px; height: 50px; margin: 0 auto; color: var(--forest); border-radius: 50%; background: #fff0ef; }
      .empty-workspace h1 { margin: 18px 0 8px; font-size: 22px; }.empty-workspace p { max-width: 360px; margin: 0; color: var(--muted); line-height: 1.7; }.empty-workspace .primary-btn { width: auto; margin: 23px auto 0; padding-right: 18px; padding-left: 18px; }
      .right-empty { display: grid; place-items: center; min-height: 260px; padding: 28px 13px; color: var(--muted); text-align: center; }.right-empty strong { display: block; margin-top: 13px; color: var(--ink); font-size: 13px; }.right-empty span { display: block; margin-top: 6px; font-size: 11px; line-height: 1.55; }
      .pending-report { display: grid; place-content: center; min-height: 760px; padding: 52px 24px; color: var(--muted); background: #fff; text-align: center; box-sizing: border-box; }
      .report-thinking { display: grid; place-items: center; gap: 10px; color: #6b7a70; }.report-thinking strong { display: inline-flex; align-items: baseline; color: #415046; font-size: 14px; font-weight: 750; letter-spacing: 0; }.report-thinking small { color: #8b968f; font-size: 11px; }.report-thinking-signal { display: flex; align-items: center; justify-content: center; width: 46px; height: 38px; gap: 4px; padding: 8px; border: 1px solid #dfeae2; border-radius: 10px; background: #f8fcf9; }.report-thinking-signal i { display: block; width: 3px; border-radius: 99px; background: #2d9363; animation: reportThinkingPulse 1.15s ease-in-out infinite; }.report-thinking-signal i:nth-child(1), .report-thinking-signal i:nth-child(4) { height: 8px; }.report-thinking-signal i:nth-child(2) { height: 18px; animation-delay: .14s; }.report-thinking-signal i:nth-child(3) { height: 13px; animation-delay: .28s; }.thinking-dots { display: inline-flex; gap: 2px; margin-left: 2px; }.thinking-dots b { width: 3px; height: 3px; border-radius: 50%; background: #617067; animation: thinkingDot 1.1s ease-in-out infinite; }.thinking-dots b:nth-child(2) { animation-delay: .14s; }.thinking-dots b:nth-child(3) { animation-delay: .28s; }
      .report-failed { display: grid; justify-items: center; gap: 10px; max-width: 360px; color: #546159; }.report-failed-symbol { display: grid; place-items: center; width: 46px; height: 46px; color: #c54a47; border: 1px solid #f2d4d2; border-radius: 50%; background: #fff3f2; }.report-failed strong { color: #3f4a43; font-size: 15px; font-weight: 760; }.report-failed small { max-width: 100%; color: #87928b; font-size: 12px; line-height: 1.65; text-align: center; }.report-restart-btn, .report-timeout-retry { display: inline-flex; align-items: center; gap: 7px; min-height: 34px; margin-top: 4px; padding: 0 12px; color: #bd3d40; border: 1px solid #edc8c7; border-radius: 6px; background: #fff; font-size: 12px; font-weight: 720; transition: color .16s ease, border-color .16s ease, background-color .16s ease, box-shadow .16s ease, opacity .24s ease, transform .24s ease; }.report-restart-btn:hover, .report-timeout-retry:hover { color: #fff; border-color: var(--forest); background: var(--forest); box-shadow: 0 7px 15px rgba(228, 59, 63, .18); }.report-timeout-retry { margin-top: 15px; color: #a65440; border-color: #ecd7cf; background: #fffdfc; animation: timeoutRetryIn .3s ease-out both; }.report-timeout-retry svg { color: #d66b4f; }
      .report-preview { position: relative; min-width: 0; height: 760px; overflow: hidden; background: #fff; }.report-preview iframe { position: relative; z-index: 1; display: block; width: 100%; height: 100%; border: 0; background: #fff; }.report-preview.report-reveal iframe { opacity: 0; animation: reportFrameIn .3s ease-out .58s forwards; }
      .report-skeleton { position: absolute; z-index: 2; inset: 0; display: grid; align-content: start; gap: 24px; padding: 48px 8.5%; background: #fff; pointer-events: none; animation: reportSkeletonOut .32s ease-out .82s forwards; }.skeleton-pulse { display: block; border-radius: 5px; background: #edf2ef; animation: skeletonPulse 1.05s ease-in-out infinite; }.report-skeleton-title { width: 38%; height: 22px; margin: 2px auto 0; }.report-skeleton-meta { display: flex; justify-content: center; gap: 9px; }.report-skeleton-meta span { width: 68px; height: 9px; }.report-skeleton-meta span:nth-child(2) { width: 86px; animation-delay: .12s; }.report-skeleton-meta span:nth-child(3) { width: 56px; animation-delay: .24s; }.report-skeleton-section { display: grid; gap: 11px; }.report-skeleton-section i { width: 122px; height: 15px; }.report-skeleton-section b { width: 100%; height: 11px; }.report-skeleton-section b.short { width: 64%; }.report-skeleton-section b.wide { width: 84%; }.report-skeleton-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 5px; }.report-skeleton-cards span { height: 90px; }.report-skeleton-cards span:last-child { animation-delay: .18s; }
      .report-panel { border-color: #dfe4ea; border-radius: 10px; background: #f5f7f9; box-shadow: 0 12px 30px rgba(34, 47, 64, .06); }.report-panel-head { min-height: 62px; padding: 12px 15px 12px 16px; border-bottom-color: #e3e7ec; background: #fff; }.report-panel-title { gap: 9px; color: #303c4b; font-size: 14px; font-weight: 760; }.report-panel-mark { display: grid; place-items: center; width: 30px; height: 30px; color: #d84245; border: 1px solid #fde0df; border-radius: 7px; background: #fff4f3; }.report-export-actions { gap: 7px; }.report-panel .report-export-btn { min-height: 34px; padding: 0 11px; color: #556273; border-color: #dfe5eb; border-radius: 7px; background: #fff; font-size: 12px; font-weight: 720; }.report-panel .report-export-btn:hover:not(:disabled) { color: #c83f43; border-color: #efc5c6; background: #fff8f7; box-shadow: 0 5px 13px rgba(175, 61, 63, .1); }.report-panel .report-export-btn:disabled { color: #aab2bd; border-color: #e8edf1; background: #fafbfc; }.report-panel .report-export-file-icon { width: 17px; height: 17px; }.report-panel .pending-report { min-height: 760px; background: #f7f8fa; }.report-panel .report-preview { box-sizing: border-box; height: 760px; padding: 12px; background: #f4f6f8; }.report-panel .report-preview iframe { box-sizing: border-box; height: 100%; border: 1px solid #e1e6eb; border-radius: 6px; background: #fff; box-shadow: 0 6px 18px rgba(35, 48, 65, .07); }.report-scroll-top { position: absolute; z-index: 4; right: 26px; bottom: 26px; display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 1px solid rgba(219, 226, 234, .95); border-radius: 50%; background: rgba(255, 255, 255, .96); box-shadow: 0 10px 22px rgba(31, 45, 62, .16); cursor: pointer; opacity: 0; pointer-events: none; transform: translateY(8px) scale(.94); transition: opacity .2s ease, transform .2s ease, border-color .16s ease, box-shadow .16s ease; }.report-scroll-top.show { opacity: 1; pointer-events: auto; transform: translateY(0) scale(1); }.report-scroll-top:hover { border-color: #efc0c0; box-shadow: 0 12px 24px rgba(199, 63, 67, .2); }.report-scroll-top img { display: block; width: 22px; height: 22px; object-fit: contain; }
      .report-panel .report-preview { padding: 0; background: #fff; }.report-panel .report-preview iframe { border: 0; border-radius: 0; box-shadow: none; }.report-scroll-top { right: 16px; bottom: 16px; }
      .file-list { display: grid; gap: 9px; }.task-load-error { margin: 10px 8px; color: var(--danger); font-size: 12px; text-align: center; }
      .task-error-notice { display: flex; align-items: flex-start; gap: 9px; margin: 14px 0 -2px; padding: 12px 14px; color: #a43734; border: 1px solid #f0c8c6; border-radius: 7px; background: #fff4f3; font-size: 12px; line-height: 1.55; }.task-error-notice i { flex: 0 0 auto; margin-top: 1px; }
      .workspace-loading { position: absolute; z-index: 8; top: 16px; right: 18px; display: block; min-height: 0; color: #55635a; background: transparent; pointer-events: none; animation: workspaceLoadingIn .18s ease-out both; }
      .workspace-loading[hidden] { display: none; }.workspace-loading-card { display: flex; align-items: center; gap: 9px; min-width: 0; padding: 8px 11px; border: 1px solid rgba(218, 225, 232, .96); border-radius: 8px; background: rgba(255, 255, 255, .97); box-shadow: 0 8px 22px rgba(35, 47, 64, .1); opacity: 0; transform: translateY(-4px); transition: opacity .16s ease, transform .16s ease; }.workspace-loading.is-visible .workspace-loading-card { opacity: 1; transform: translateY(0); }.workspace-loading strong, .workspace-loading span { display: block; }.workspace-loading strong { color: #394655; font-size: 12px; font-weight: 720; line-height: 1.35; }.workspace-loading span { margin-top: 1px; color: #96a0ab; font-size: 10px; line-height: 1.4; }.workspace-loader-flow { position: relative; display: grid; flex: 0 0 auto; place-items: center; width: 22px; height: 22px; color: #ce726d; border: 0; border-radius: 50%; background: #fff3f2; }.workspace-loader-flow::before { display: none; }.workspace-loader-flow svg { width: 16px; height: 16px; animation: workspaceSpinner .72s linear infinite; }.workspace-loading-copy { min-width: 0; }
      .preview-backdrop { padding: 28px; background: rgba(20, 32, 25, .42); backdrop-filter: blur(5px); }.preview-modal { overflow: hidden; width: min(1120px, 100%); border: 1px solid rgba(223, 230, 225, .9); border-radius: 12px; box-shadow: 0 28px 76px rgba(22, 40, 29, .24); }.preview-backdrop.open .preview-modal { animation: previewModalEnter .24s cubic-bezier(.2, .8, .2, 1) both; }.preview-head { min-height: 76px; padding: 14px 18px; background: #fff; }.preview-file-info { display: flex; min-width: 0; align-items: center; gap: 12px; }.preview-file-icon { display: grid; flex: 0 0 auto; place-items: center; width: 40px; height: 40px; color: #d84842; border: 1px solid #ffe1de; border-radius: 10px; background: #fff4f2; }.preview-title-copy { min-width: 0; }.preview-title-copy h2 { overflow: hidden; margin: 0; color: #27362d; font-size: 15px; font-weight: 760; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }.preview-title-copy span { display: block; overflow: hidden; margin-top: 3px; color: #849087; font-size: 12px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }.preview-body { position: relative; display: grid; min-height: min(68vh, 680px); place-items: center; padding: 20px; background: #f1f4f1; background-image: linear-gradient(45deg, rgba(255, 255, 255, .44) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, .44) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, .44) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, .44) 75%); background-position: 0 0, 0 10px, 10px -10px, -10px 0; background-size: 20px 20px; }.preview-body iframe { position: relative; z-index: 1; width: 100%; height: min(64vh, 640px); border: 1px solid #dfe6e0; border-radius: 7px; background: #fff; box-shadow: 0 10px 26px rgba(35, 53, 41, .09); opacity: 0; transition: opacity .2s ease; }.preview-body img { position: relative; z-index: 1; display: block; max-width: 100%; max-height: min(64vh, 640px); border-radius: 7px; object-fit: contain; box-shadow: 0 10px 26px rgba(35, 53, 41, .12); opacity: 0; transition: opacity .2s ease; }.preview-body .is-ready { opacity: 1; }.preview-loading { position: absolute; z-index: 2; display: flex; align-items: center; gap: 9px; color: #66746a; font-size: 13px; }.preview-loader { width: 19px; height: 19px; border: 2px solid #d7e0d9; border-top-color: var(--forest); border-radius: 50%; animation: previewSpin .8s linear infinite; }.preview-empty { position: relative; z-index: 3; color: var(--muted); text-align: center; }.preview-empty i { color: var(--forest); }.preview-empty strong { display: block; margin-top: 12px; color: var(--ink); }.preview-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 64px; padding: 12px 18px; border-top: 1px solid #e4e9e5; background: #fff; }.preview-action-hint { color: #8a958d; font-size: 12px; }.preview-download-btn { min-width: 108px; justify-content: center; }.preview-download-btn i { flex: 0 0 auto; } @keyframes previewSpin { to { transform: rotate(360deg); } } @keyframes previewModalEnter { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } }
      .preview-backdrop { padding: 24px; }.preview-modal { width: min(1320px, 100%); }.preview-body { min-height: min(76vh, 780px); }.preview-body iframe { height: min(72vh, 740px); }.preview-body img { max-height: min(72vh, 740px); }
      .download-progress { width: min(420px, 100%); padding: 22px; }.download-progress h2 { margin: 0; font-size: 17px; }.download-progress p { margin: 8px 0 17px; color: var(--muted); font-size: 12px; }.progress-track { overflow: hidden; height: 8px; border-radius: 999px; background: #edf1ec; }.progress-bar { width: 0; height: 100%; border-radius: inherit; background: var(--forest); transition: width .16s ease; }.download-percent { margin-top: 10px; color: var(--forest); font-size: 13px; font-weight: 750; text-align: right; }
      .report-export-progress { width: min(410px, 100%); padding: 30px 30px 27px; text-align: center; }.report-export-icon { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 16px; color: var(--forest); border-radius: 14px; background: #fff0ef; }.report-export-progress h2 { margin: 0; color: #27342c; font-size: 18px; }.report-export-progress p { overflow: hidden; margin: 9px 0 22px; color: #7d8981; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.report-export-progress .progress-track { height: 7px; }.report-export-state { display: flex; justify-content: space-between; gap: 12px; margin-top: 11px; color: #849087; font-size: 12px; }.report-export-state span:first-child { color: var(--forest); font-weight: 760; }.report-export-icon svg[data-lucide="circle-check"] { color: #2f9762; }
      .share-modal { width: min(468px, 100%); overflow: hidden; border: 1px solid #dfe7e2; border-radius: 12px; background: #fff; box-shadow: 0 24px 60px rgba(18, 36, 25, .22); }.share-modal-head { padding: 20px 22px 17px; border-bottom: 1px solid #e9eeea; background: #fbfdfb; }.share-modal-head h2 { margin: 4px 0 0; color: #243128; font-size: 20px; line-height: 1.25; }.share-modal-body { padding: 20px 22px 22px; }.share-modal-intro { display: flex; align-items: center; gap: 11px; margin-bottom: 19px; padding: 11px 12px; color: #68776d; border: 1px solid #e4ece6; border-radius: 8px; background: #f8fbf9; font-size: 12px; line-height: 1.55; }.share-modal-intro > span { display: grid; flex: 0 0 auto; place-items: center; width: 30px; height: 30px; color: #c84244; border-radius: 7px; background: #fff0ef; }.share-modal-intro p { margin: 0; }.share-modal .field-label { display: block; margin: 0 0 8px; color: #48584e; font-size: 12px; font-weight: 740; }.share-modal .field-label small { margin-left: 4px; color: #8a968f; font-weight: 500; }.share-password-input { position: relative; display: flex; align-items: center; height: 43px; border: 1px solid #dbe5dd; border-radius: 7px; background: #fff; transition: border-color .16s ease, box-shadow .16s ease; }.share-password-input:focus-within { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(228, 59, 63, .1); }.share-password-input > svg { flex: 0 0 auto; margin-left: 12px; color: #87948b; }.share-password-input input { flex: 1; min-width: 0; height: 100%; padding: 0 12px 0 9px; color: #26342b; border: 0; outline: 0; background: transparent; font-size: 13px; }.share-password-input input::placeholder { color: #a6afa9; }.share-expiry-label { margin-top: 18px !important; }.share-expiry-options { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }.share-expiry-options button { min-height: 34px; padding: 0 7px; color: #66756b; border: 1px solid #dfe7e1; border-radius: 6px; background: #fff; font-size: 12px; cursor: pointer; transition: color .16s ease, border-color .16s ease, background-color .16s ease; }.share-expiry-options button:hover { color: #bd3e41; border-color: #efc6c5; background: #fff8f7; }.share-expiry-options button.selected { color: #b83c40; border-color: #e89090; background: #fff1f0; box-shadow: inset 0 0 0 1px rgba(228, 59, 63, .08); font-weight: 760; }.share-link-result { margin-top: 18px; padding: 12px; border: 1px solid #d7e9dc; border-radius: 8px; background: #f7fcf8; }.share-link-result > span { display: flex; align-items: center; gap: 6px; color: #2d8054; font-size: 12px; font-weight: 740; }.share-link-result > span svg { flex: 0 0 auto; }.share-link-result > div { display: flex; gap: 7px; margin-top: 9px; }.share-link-result input { flex: 1; min-width: 0; height: 36px; padding: 0 9px; color: #526158; border: 1px solid #dbe7de; border-radius: 6px; background: #fff; font-size: 11px; outline: none; }.share-link-result button { flex: 0 0 auto; min-width: 49px; color: #fff; border: 0; border-radius: 6px; background: #3d7d58; font-size: 12px; font-weight: 720; cursor: pointer; }.share-link-result button:hover { background: #2f6d49; }.share-link-result small { display: block; margin-top: 8px; color: #738178; font-size: 11px; }.share-modal .modal-actions { justify-content: flex-end; margin-top: 21px; }.share-modal .start-btn { min-width: 116px; min-height: 39px; }.share-modal .start-btn:disabled svg { animation: taskButtonSpin .85s linear infinite; }
      .report-optimize-backdrop { z-index: 36; padding: 24px; background: rgba(31, 40, 48, .46); backdrop-filter: blur(5px); }.report-optimize-modal { display: flex; flex-direction: column; width: min(1220px, 100%); max-height: min(830px, calc(100vh - 48px)); overflow: hidden; border: 1px solid #dfe5eb; border-radius: 12px; background: #fff; box-shadow: 0 30px 80px rgba(27, 37, 50, .28); }.report-optimize-head { display: flex; align-items: flex-start; min-height: 92px; padding: 20px 24px 18px; border-bottom: 1px solid #e7ebef; background: #fff; }.report-optimize-head h2 { margin: 3px 0 0; color: #273342; font-size: 21px; line-height: 1.3; }.report-optimize-head p { margin: 6px 0 0; color: #85909d; font-size: 12px; line-height: 1.55; }.report-optimize-head .icon-btn { margin-left: auto; }.report-optimize-body { display: grid; flex: 1; min-height: 0; grid-template-columns: 262px minmax(0, 1fr); background: #f7f9fb; }.report-optimize-side { display: flex; min-height: 0; flex-direction: column; padding: 18px; border-right: 1px solid #e5e9ee; background: #fbfcfd; }.optimization-section + .optimization-section { margin-top: 24px; }.optimization-label { display: block; margin-bottom: 10px; color: #7a8795; font-size: 11px; font-weight: 760; letter-spacing: .04em; }.optimization-scope-options { display: grid; gap: 7px; }.optimization-scope-options button { display: flex; min-width: 0; align-items: center; gap: 9px; min-height: 54px; padding: 9px 10px; color: #596777; border: 1px solid #e0e6ec; border-radius: 7px; background: #fff; text-align: left; transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease, color .16s ease; }.optimization-scope-options button:hover { border-color: #cfd8e1; background: #f9fafc; }.optimization-scope-options button.selected { color: #b94145; border-color: #eecccb; background: #fff7f6; box-shadow: inset 3px 0 0 #e84246; }.optimization-scope-options svg { flex: 0 0 auto; color: #758292; }.optimization-scope-options button.selected svg { color: #dc4347; }.optimization-scope-options span { min-width: 0; }.optimization-scope-options strong, .optimization-scope-options small { display: block; }.optimization-scope-options strong { overflow: hidden; color: inherit; font-size: 12px; font-weight: 750; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }.optimization-scope-options small { margin-top: 2px; color: #929ca7; font-size: 10px; line-height: 1.35; }.optimization-history { display: flex; min-height: 0; flex: 1; flex-direction: column; }.optimization-history-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; }.optimization-history-head .optimization-label { margin-bottom: 10px; }.optimization-history-head span:last-child { color: #9aa4af; font-size: 10px; white-space: nowrap; }.optimization-message-list { display: grid; min-height: 0; gap: 8px; overflow-y: auto; padding-right: 3px; scrollbar-width: thin; scrollbar-color: #d8dde4 transparent; }.optimization-message { padding: 9px 10px; border: 1px solid #e5e9ee; border-radius: 7px; background: #fff; }.optimization-message.user { border-color: #f0d7d5; background: #fff9f8; }.optimization-message.assistant { border-color: #dce7ef; background: #f8fbfd; }.optimization-message.system { background: #fafbfc; }.optimization-message header { display: flex; justify-content: space-between; gap: 8px; color: #7a8794; font-size: 10px; }.optimization-message.user header span { color: #c44a4e; }.optimization-message.assistant header span { color: #4b728e; }.optimization-message time { white-space: nowrap; }.optimization-message p { margin: 5px 0 0; color: #566270; font-size: 11px; line-height: 1.55; word-break: break-word; }.optimization-message-empty { display: grid; place-items: center; min-height: 96px; padding: 12px; color: #9aa4af; border: 1px dashed #dfe5eb; border-radius: 7px; font-size: 11px; line-height: 1.55; text-align: center; }.inline-loader { display: inline-block; width: 13px; height: 13px; margin-right: 6px; border: 2px solid #d7dde5; border-top-color: #d9484c; border-radius: 50%; animation: taskButtonSpin .8s linear infinite; vertical-align: -2px; }.optimization-workbench { display: flex; min-width: 0; min-height: 0; flex-direction: column; }.optimization-preview-tabs { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 48px; padding: 0 20px; border-bottom: 1px solid #e7ebef; background: #fff; }.optimization-preview-tabs > span { display: inline-flex; align-items: center; gap: 7px; color: #4e5c6b; font-size: 12px; font-weight: 740; }.optimization-preview-tabs > span svg { color: #d84246; }.optimization-preview-tabs small { color: #98a2ad; font-size: 11px; }.optimization-preview-grid { display: grid; min-height: 0; flex: 1; grid-template-columns: 1fr 1fr; gap: 12px; padding: 14px; }.optimization-preview-pane { display: flex; min-width: 0; min-height: 0; flex-direction: column; overflow: hidden; border: 1px solid #e1e6ec; border-radius: 8px; background: #fff; }.optimization-preview-pane > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 40px; padding: 0 12px; border-bottom: 1px solid #e9edf1; background: #fbfcfd; }.optimization-preview-pane > header span { color: #4d5a68; font-size: 12px; font-weight: 740; }.optimization-preview-pane > header small { color: #9aa4ae; font-size: 10px; }.optimization-preview-pane iframe { display: block; width: 100%; min-height: 0; flex: 1; border: 0; background: #fff; }.optimization-preview-draft { border-color: #d9e4ec; }.optimization-draft-empty { display: grid; flex: 1; place-content: center; justify-items: center; gap: 8px; padding: 24px; color: #8793a0; text-align: center; }.optimization-draft-empty > span { display: grid; place-items: center; width: 40px; height: 40px; color: #d5474c; border-radius: 10px; background: #fff3f2; }.optimization-draft-empty strong { color: #566474; font-size: 13px; }.optimization-draft-empty small { color: #99a3ae; font-size: 11px; }.optimization-composer { padding: 14px 16px 15px; border-top: 1px solid #e5e9ee; background: #fff; }.optimization-composer label { display: block; margin-bottom: 8px; color: #566270; font-size: 12px; font-weight: 740; }.optimization-composer textarea { display: block; box-sizing: border-box; width: 100%; min-height: 66px; max-height: 120px; padding: 10px 11px; resize: vertical; color: #394756; border: 1px solid #dfe5eb; border-radius: 7px; outline: none; background: #fbfcfd; font-family: inherit; font-size: 12px; line-height: 1.55; transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease; }.optimization-composer textarea:focus { border-color: #d78385; background: #fff; box-shadow: 0 0 0 3px rgba(218, 66, 70, .1); }.optimization-composer textarea::placeholder { color: #a6afb8; }.optimization-composer-actions { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 10px; color: #9aa4ae; font-size: 10px; }.optimization-composer-actions > div { display: flex; gap: 8px; }.optimization-composer-actions .secondary-btn, .optimization-composer-actions .start-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 0 12px; border-radius: 6px; font-size: 12px; }.optimization-apply-btn { color: #516273; border-color: #dce3e9; }.optimization-apply-btn:not(:disabled):hover { color: #b74145; border-color: #e9c7c6; background: #fff8f7; }.optimization-apply-btn:disabled { color: #aab2bb; border-color: #e6ebef; background: #fafbfc; cursor: not-allowed; }.optimization-generate-btn { min-width: 138px; }.optimization-generate-btn.is-loading svg, .optimization-apply-btn:disabled svg { animation: taskButtonSpin .85s linear infinite; }
      .login-required .shell { pointer-events: none; user-select: none; filter: blur(4px) saturate(.88); opacity: .62; transform: scale(.994); transform-origin: center; transition: .3s ease; }
      .modal-backdrop { position: fixed; inset: 0; z-index: 20; display: none; place-items: center; padding: 20px; background: rgba(17, 32, 22, .36); }
      .modal-backdrop.open { display: grid; }
      .task-modal-backdrop { background: rgba(18, 29, 22, .32); backdrop-filter: blur(3px) saturate(.92); }.task-modal-backdrop.open { animation: taskModalBackdropIn .2s ease-out both; }.task-modal-backdrop.open .task-modal { animation: taskModalIn .34s cubic-bezier(.2,.86,.25,1) both; }
      #renameModal.open, #deleteTaskModal.open, #retryTaskModal.open { animation: utilityModalBackdropIn .2s ease-out both; }#renameModal.open .rename-modal, #deleteTaskModal.open .task-danger-modal, #retryTaskModal.open .retry-task-modal { animation: utilityModalIn .28s cubic-bezier(.2,.82,.25,1) both; }#renameModal.is-closing, #deleteTaskModal.is-closing, #retryTaskModal.is-closing { animation: utilityModalBackdropOut .19s ease-in both; }#renameModal.is-closing .rename-modal, #deleteTaskModal.is-closing .task-danger-modal, #retryTaskModal.is-closing .retry-task-modal { animation: utilityModalOut .19s ease-in both; }
      .login-backdrop { background: rgba(15, 23, 20, .38); backdrop-filter: blur(8px) saturate(.9); animation: loginBackdropIn .28s ease-out both; }
      .login-backdrop.open .login-modal { animation: loginModalIn .42s cubic-bezier(.2,.8,.2,1) both; }
      .modal { width: min(560px, 100%); overflow: hidden; border-radius: 9px; background: #fff; box-shadow: 0 22px 65px rgba(15, 38, 23, .23); }
      .preview-backdrop .preview-modal { width: min(1320px, 100%); }
      .preview-backdrop .preview-body { min-height: min(calc(100vh - 190px), 780px); }
      .preview-backdrop .preview-body iframe { height: min(calc(100vh - 230px), 740px); }
      .preview-backdrop .preview-body img { max-height: min(calc(100vh - 230px), 740px); }
      .preview-backdrop .preview-body { padding: 0; background: #fff; background-image: none; }
      .preview-backdrop .preview-body iframe { width: 100%; border: 0; border-radius: 0; box-shadow: none; }
      .preview-backdrop .preview-body img { width: 100%; height: min(calc(100vh - 230px), 740px); max-width: none; border-radius: 0; box-shadow: none; object-fit: contain; }
      .modal-head { display: flex; align-items: center; justify-content: space-between; padding: 19px 21px; border-bottom: 1px solid var(--line); }
      .modal-head h2 { margin: 0; font-size: 17px; }
      .modal-body { padding: 19px 21px 21px; }
      .field-label { display: block; margin: 0 0 8px; font-size: 12px; font-weight: 750; }
      .required { color: var(--danger); }
      .product-input { width: 100%; padding: 10px 11px; color: var(--ink); border: 1px solid #ccd5cc; border-radius: 5px; outline: none; }
      .product-input:focus { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(228, 59, 63, .1); }
      .upload-zone { display: grid; place-items: center; min-height: 148px; margin: 8px 0 7px; padding: 18px; border: 1.5px dashed #efb2b1; border-radius: 7px; color: var(--muted); background: #fffafa; text-align: center; }
      .upload-zone.dragover { border-color: var(--forest); background: #fff0ef; }
      .upload-symbol { display: grid; place-items: center; width: 37px; height: 37px; margin: 0 auto 8px; color: var(--forest); border-radius: 50%; background: #ffe5e4; }
      .upload-zone strong { display: block; color: var(--ink); font-size: 13px; }
      .upload-zone span { display: block; margin-top: 5px; font-size: 11px; }
      .upload-zone em { color: var(--forest); font-style: normal; font-weight: 750; }
      .file-selected { display: none; align-items: center; justify-content: space-between; gap: 9px; margin-top: 9px; padding: 9px 10px; border: 1px solid #f2c6c5; border-radius: 5px; background: #fff3f2; }
      .file-selected.show { display: flex; }
      .file-selected div { display: flex; align-items: center; gap: 8px; min-width: 0; color: var(--forest); font-size: 12px; font-weight: 700; }
      .file-selected span { max-width: 330px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
      .template-select { display: flex; align-items: center; gap: 9px; margin-top: 18px; padding: 11px; border: 1px solid var(--line); border-radius: 6px; background: #fbfcfa; }
      .template-select i { color: var(--forest); }
      .template-select strong { display: block; font-size: 12px; }
      .template-select small { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; }
      .modal-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 20px; }
      .task-modal { width: min(840px, calc(100vw - 48px)); border: 1px solid #e1e9e3; border-radius: 11px; box-shadow: 0 28px 70px rgba(17, 38, 25, .22); }
      .task-modal-head { padding: 21px 24px 18px; background: #fbfdfb; }.task-modal-head h2 { margin-top: 4px; color: #26342b; font-size: 20px; }.task-modal-kicker { color: #7b8a80; font-size: 11px; font-weight: 760; letter-spacing: .06em; }
      .task-modal-body { padding: 23px 24px 24px; }.task-modal .field-label { color: #435148; font-size: 12px; }.task-form-gap { height: 20px; }.task-modal .product-input { box-sizing: border-box; height: 44px; padding: 10px 12px; border-color: #dce5df; border-radius: 7px; background: #fff; font-size: 13px; }.task-modal .product-input:focus { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(228, 59, 63, .09); }
      .task-modal { display: flex; flex-direction: column; max-height: calc(100vh - 28px); }.task-modal-body { overflow: auto; scrollbar-width: thin; scrollbar-color: #d4ddd6 transparent; }.task-modal-body::-webkit-scrollbar { width: 5px; }.task-modal-body::-webkit-scrollbar-thumb { border-radius: 8px; background: #d4ddd6; }
      .category-picker { position: relative; margin-top: 8px; }.category-trigger { display: flex; align-items: center; width: 100%; min-height: 52px; padding: 8px 11px; color: #344139; border: 1px solid #dce5df; border-radius: 8px; background: #fff; text-align: left; cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease; }.category-trigger:hover, .category-picker.open .category-trigger { border-color: #e5a5a2; background: #fffdfd; }.category-picker.open .category-trigger { box-shadow: 0 0 0 3px rgba(228, 59, 63, .09); }.category-trigger-icon { display: grid; flex: 0 0 auto; place-items: center; width: 31px; height: 31px; margin-right: 9px; color: #c84644; border-radius: 8px; background: #fff0ef; }.category-trigger-copy { display: grid; min-width: 0; gap: 2px; }.category-trigger-copy strong { overflow: hidden; color: #3a473f; font-size: 12px; font-weight: 740; text-overflow: ellipsis; white-space: nowrap; }.category-trigger-copy small { overflow: hidden; color: #87938b; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }.category-trigger-chevron { flex: 0 0 auto; margin-left: auto; color: #87938b; transition: transform .18s ease; }.category-picker.open .category-trigger-chevron { transform: rotate(180deg); }
      .category-popover { position: absolute; z-index: 8; top: calc(100% + 6px); right: 0; left: 0; overflow: hidden; border: 1px solid #dfe7e1; border-radius: 9px; background: #fff; box-shadow: 0 14px 28px rgba(32, 52, 38, .14); }.category-popover[hidden] { display: none; }.category-search { display: flex; align-items: center; gap: 7px; padding: 10px 11px; border-bottom: 1px solid #edf1ee; }.category-search > i { flex: 0 0 auto; color: #8c988f; }.category-search input { flex: 1; min-width: 0; padding: 2px 0; color: #37443c; border: 0; outline: 0; font-size: 12px; }.category-search input::placeholder { color: #a0aaa4; }.category-search button { display: grid; flex: 0 0 auto; place-items: center; width: 24px; height: 24px; padding: 0; color: #839087; border: 0; border-radius: 5px; background: #f3f6f3; }.category-nav { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 11px; color: #7c8980; border-bottom: 1px solid #edf1ee; background: #fbfdfb; font-size: 10px; }.category-nav > span:first-of-type { overflow: hidden; color: #56655b; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }.category-nav > span:last-child { margin-left: auto; white-space: nowrap; }.category-back { display: inline-flex; align-items: center; gap: 2px; padding: 3px 2px; color: #b54243; border: 0; background: transparent; font-size: 10px; font-weight: 720; }.category-results { max-height: 224px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #d4ddd6 transparent; }.category-results::-webkit-scrollbar { width: 5px; }.category-results::-webkit-scrollbar-thumb { border-radius: 8px; background: #d4ddd6; }.category-loading, .category-empty { display: flex; align-items: center; justify-content: center; gap: 7px; min-height: 102px; color: #849087; font-size: 11px; }.category-loading svg { color: var(--forest); animation: taskButtonSpin .85s linear infinite; }.category-option { display: flex; align-items: center; min-width: 0; padding: 9px 11px; border-bottom: 1px solid #f0f3f0; }.category-option:last-child { border-bottom: 0; }.category-option-main { display: flex; flex: 1; min-width: 0; align-items: center; gap: 8px; padding: 0; color: inherit; border: 0; background: transparent; text-align: left; cursor: pointer; }.category-option-main:hover strong { color: var(--forest); }.category-option-mark { display: grid; flex: 0 0 auto; place-items: center; width: 27px; height: 27px; color: #4a8b68; border-radius: 7px; background: #edf7f0; }.category-option-copy { display: grid; min-width: 0; gap: 2px; }.category-option-copy strong, .category-option-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.category-option-copy strong { color: #405047; font-size: 12px; font-weight: 720; }.category-option-copy small { color: #8b968f; font-size: 10px; }.category-drill { display: grid; flex: 0 0 auto; place-items: center; width: 28px; height: 28px; margin-left: 7px; padding: 0; color: #839087; border: 0; border-radius: 6px; background: transparent; cursor: pointer; }.category-drill:hover { color: var(--forest); background: #fff0ef; }.category-selected { display: flex; align-items: center; min-width: 0; gap: 7px; margin-top: 8px; padding: 8px 9px; color: #2f7d52; border: 1px solid #cfe4d5; border-radius: 7px; background: #f3faf5; }.category-selected[hidden] { display: none; }.category-selected > svg { flex: 0 0 auto; }.category-selected span { overflow: hidden; flex: 1; font-size: 11px; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }.category-selected button { display: grid; flex: 0 0 auto; place-items: center; width: 23px; height: 23px; padding: 0; color: #5e816c; border: 0; border-radius: 5px; background: transparent; cursor: pointer; }.category-selected button:hover { color: #b83e40; background: #fff; }
      .category-popover { display: none !important; }
      .category-modal-backdrop { z-index: 30; padding: 24px; background: rgba(18, 31, 23, .46); backdrop-filter: blur(5px) saturate(.9); }.category-modal-backdrop.open { animation: utilityModalBackdropIn .2s ease-out both; }.category-modal-backdrop.open .category-modal { animation: utilityModalIn .28s cubic-bezier(.2,.82,.25,1) both; }
      .category-modal { display: flex; flex-direction: column; width: min(1120px, 100%); max-height: calc(100vh - 48px); border: 1px solid #dfe8e1; border-radius: 12px; box-shadow: 0 30px 82px rgba(14, 32, 21, .28); }.category-modal-head { padding: 18px 21px; background: #fbfdfb; }.category-modal-head h2 { margin-top: 4px; color: #28372d; font-size: 20px; }.category-modal-body { min-height: 0; padding: 18px 20px 16px; overflow: auto; background: #f8fbf9; }.category-modal-search { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid #dce6df; border-radius: 8px; background: #fff; }.category-modal-search label { display: flex; flex: 1; min-width: 0; align-items: center; gap: 9px; }.category-modal-search label > i { flex: 0 0 auto; color: #819087; }.category-modal-search input { flex: 1; min-width: 0; padding: 4px 0; color: #344239; border: 0; outline: 0; font-size: 13px; }.category-modal-search input::placeholder { color: #a0aaa4; }.category-modal-search .text-btn { padding: 5px 7px; color: #c04444; }.category-modal-count { flex: 0 0 auto; min-width: 66px; padding: 7px 9px; color: #39755a; border-radius: 999px; background: #edf8f0; font-size: 11px; font-weight: 720; text-align: center; }.category-modal-count:empty { display: none; }
      .category-modal-browser { min-height: 330px; margin-top: 14px; overflow: hidden; border: 1px solid #dce6df; border-radius: 9px; background: #fff; }.category-columns { display: grid; grid-auto-columns: minmax(210px, 1fr); grid-auto-flow: column; min-height: 330px; overflow-x: auto; background: #fbfdfb; }.category-column { min-width: 210px; border-right: 1px solid #e5ece7; }.category-column:last-child { border-right: 0; }.category-column header { display: flex; align-items: center; justify-content: space-between; min-height: 43px; padding: 0 13px; color: #526158; border-bottom: 1px solid #e7ede8; background: #f6faf7; font-size: 12px; font-weight: 740; }.category-column header span { color: #94a097; font-size: 10px; font-weight: 600; }.category-column > div { max-height: 360px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #cbd5ce transparent; }.category-column > div::-webkit-scrollbar { width: 5px; }.category-column > div::-webkit-scrollbar-thumb { border-radius: 8px; background: #cbd5ce; }.category-column-item { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 43px; gap: 8px; padding: 8px 11px; color: #45534a; border: 0; border-bottom: 1px solid #f0f3f0; background: transparent; text-align: left; cursor: pointer; transition: color .14s ease, background-color .14s ease; }.category-column-item:hover { color: #b23d40; background: #fff6f5; }.category-column-item.selected { color: #ba3f42; background: #fff0ef; box-shadow: inset 3px 0 0 #e43b3f; }.category-column-item > span { display: grid; min-width: 0; gap: 2px; }.category-column-item strong, .category-column-item small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.category-column-item strong { font-size: 12px; font-weight: 720; }.category-column-item small { color: #8c978f; font-size: 10px; font-weight: 500; }.category-column-item > svg { flex: 0 0 auto; color: #8b978e; }.category-column-loading, .category-column-empty, .category-search-empty { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 110px; color: #849087; font-size: 12px; }.category-column-loading svg { color: var(--forest); animation: taskButtonSpin .85s linear infinite; }
      .category-search-results { max-height: 360px; overflow-y: auto; padding: 6px; background: #fff; }.category-search-results[hidden] { display: none; }.category-search-item { display: flex; align-items: center; width: 100%; min-height: 49px; gap: 9px; padding: 9px 11px; color: #45534a; border: 0; border-bottom: 1px solid #eef2ee; background: transparent; text-align: left; cursor: pointer; }.category-search-item:hover, .category-search-item.selected { background: #fff3f2; }.category-search-item.selected { box-shadow: inset 3px 0 0 #e43b3f; }.category-search-item > span:last-child { display: grid; min-width: 0; gap: 2px; }.category-search-item strong, .category-search-item small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.category-search-item strong { color: #3f4d44; font-size: 12px; font-weight: 740; }.category-search-item small { color: #88948c; font-size: 10px; }.category-modal-selection { display: flex; align-items: flex-start; gap: 13px; min-height: 48px; margin-top: 14px; padding: 11px 13px; border: 1px solid #dbe7de; border-radius: 8px; background: #fff; }.category-modal-selection > span { flex: 0 0 auto; padding: 4px 7px; color: #3e805c; border-radius: 5px; background: #edf8f0; font-size: 10px; font-weight: 760; }.category-modal-selection div { display: grid; min-width: 0; gap: 3px; }.category-modal-selection strong, .category-modal-selection small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.category-modal-selection strong { color: #3d4b42; font-size: 12px; }.category-modal-selection small { color: #87938b; font-size: 11px; }.category-modal-actions { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 20px; border-top: 1px solid #e5ece6; background: #fff; }.category-modal-actions .start-btn { display: inline-flex; align-items: center; gap: 7px; min-height: 38px; }.category-modal-actions .start-btn:disabled { color: #9aa49e; border-color: #e2e8e3; background: #edf1ee; box-shadow: none; cursor: not-allowed; }
      .category-modal-head h2 { font-size: 22px; }.category-modal-search input { font-size: 14px; }.category-modal-count { font-size: 12px; }.category-column header { font-size: 14px; }.category-column header span { font-size: 11px; }.category-column-item { min-height: 48px; }.category-column-item strong, .category-search-item strong { font-size: 14px; }.category-column-item small, .category-search-item small { font-size: 11px; }.category-search-item { min-height: 54px; }.category-modal-selection > span { font-size: 11px; }.category-modal-selection strong { font-size: 14px; }.category-modal-selection small { font-size: 12px; }.category-modal-actions .secondary-btn, .category-modal-actions .start-btn { min-height: 40px; font-size: 13px; }
      .category-trigger-copy small, .category-column-item small, .category-search-item small, .category-modal-selection small { display: none; }
      .task-modal .upload-zone { min-height: 166px; margin: 9px 0 0; border-color: #e5d0cf; border-radius: 8px; background: #fffdfd; cursor: pointer; transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease; }.task-modal .upload-zone:hover { border-color: #e59f9d; background: #fffafa; }.task-modal .upload-zone.dragover { border-color: var(--forest); background: #fff4f3; box-shadow: inset 0 0 0 2px rgba(228, 59, 63, .08); }
      .task-modal .upload-symbol { width: 42px; height: 42px; margin-bottom: 10px; border-radius: 12px; background: #fff0ef; transition: color .18s ease, background-color .18s ease; }.task-modal .upload-zone.is-selecting .upload-symbol, .task-modal .upload-zone.is-uploading .upload-symbol { color: #fff; background: var(--forest); }.task-modal .upload-zone.is-ready .upload-symbol { color: #2f9762; background: #eaf7ef; }.task-modal .upload-zone.is-selecting .upload-symbol svg, .task-modal .upload-zone.is-uploading .upload-symbol svg { animation: taskButtonSpin .85s linear infinite; }
      .task-modal .upload-zone strong { font-size: 13px; }.task-modal .upload-zone span { color: #859188; line-height: 1.55; }.task-modal .upload-zone.is-ready { border-style: solid; border-color: #c6decf; background: #fbfefb; }.task-modal .upload-zone.is-uploading { border-style: solid; border-color: #efc3c1; background: #fffafa; pointer-events: none; }
      .upload-progress { margin-top: 10px; padding: 10px 11px 9px; border: 1px solid #e1e9e3; border-radius: 7px; background: #fbfdfb; }.upload-progress[hidden] { display: none; }.upload-progress > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: #718078; font-size: 11px; }.upload-progress strong { color: #a44244; font-size: 11px; font-variant-numeric: tabular-nums; }.upload-progress-track { height: 5px; margin-top: 8px; overflow: hidden; border-radius: 99px; background: #ebf0ec; }.upload-progress-track span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--forest); transition: width .22s ease; }
      .task-modal .file-selected { margin-top: 10px; border-color: #cfe3d5; border-radius: 7px; background: #f2faf4; }.task-modal .template-select { margin-top: 15px; border-radius: 7px; }.task-modal .modal-actions { margin-top: 24px; }.task-modal .start-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 166px; min-height: 42px; border-radius: 7px; box-shadow: 0 9px 18px rgba(228, 59, 63, .18); }.task-modal .start-btn.is-loading { cursor: wait; opacity: .88; }.task-modal .start-btn.is-loading svg { animation: taskButtonSpin .85s linear infinite; }
      .task-modal .upload-progress { transition: opacity .26s ease, transform .26s ease; }.task-modal .upload-progress.is-complete { opacity: 0; pointer-events: none; transform: translateY(-4px); }.task-modal .upload-progress strong { color: var(--success); }.task-modal .upload-progress-track span { background: var(--success); }
      .upload-file-table { overflow: hidden; margin-top: 10px; border: 1px solid #dce8df; border-radius: 8px; background: #fff; }.upload-file-table-head { display: grid; grid-template-columns: minmax(0, 1fr) 92px; gap: 12px; padding: 9px 12px; color: #849087; border-bottom: 1px solid #e7eee9; background: #f8fbf8; font-size: 10px; font-weight: 760; }.upload-file-table-head span:last-child { text-align: right; }.upload-file-rows { display: grid; }.upload-file-row { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 92px; gap: 12px; min-width: 0; padding: 11px 12px 10px; border-bottom: 1px solid #edf1ee; }.upload-file-row:last-child { border-bottom: 0; }.upload-file-main { display: flex; min-width: 0; align-items: center; gap: 9px; }.upload-file-icon { display: grid; flex: 0 0 auto; place-items: center; width: 30px; height: 30px; color: #b94743; border-radius: 7px; background: #fff1f0; }.upload-file-main > div { min-width: 0; }.upload-file-main strong { display: block; overflow: hidden; color: #3b4940; font-size: 12px; font-weight: 720; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }.upload-file-main small { display: block; margin-top: 3px; color: #8b968f; font-size: 10px; }.upload-file-status { display: flex; align-items: center; justify-content: flex-end; min-width: 0; gap: 5px; color: #7d8981; font-size: 10px; }.upload-file-status span { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: #aab4ad; }.upload-file-status em { overflow: hidden; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }.upload-file-row.preparing .upload-file-status, .upload-file-row.uploading .upload-file-status { color: #277957; }.upload-file-row.preparing .upload-file-status span, .upload-file-row.uploading .upload-file-status span { background: var(--success); box-shadow: 0 0 0 3px rgba(35, 134, 92, .12); animation: uploadStatePulse 1.1s ease-in-out infinite; }.upload-file-row.complete .upload-file-status { color: var(--success); }.upload-file-row.complete .upload-file-status span { background: var(--success); }.upload-file-row.error .upload-file-status { color: var(--danger); }.upload-file-row.error .upload-file-status span { background: var(--danger); }.upload-file-progress { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; max-height: 18px; overflow: hidden; opacity: 1; transition: max-height .3s ease, margin .3s ease, opacity .25s ease; }.upload-file-progress i { display: block; flex: 1; height: 4px; overflow: hidden; border-radius: 99px; background: #e5eee8; }.upload-file-progress b { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--success); transition: width .22s ease; }.upload-file-progress strong { min-width: 28px; color: #4a8a69; font-size: 10px; font-variant-numeric: tabular-nums; text-align: right; }.upload-file-row.error .upload-file-progress b { background: var(--danger); }.upload-file-row.error .upload-file-progress strong { color: var(--danger); }.upload-file-row.progress-finished .upload-file-progress { max-height: 0; margin: 0; opacity: 0; }.upload-file-row.progress-finished { padding-bottom: 9px; } @keyframes uploadStatePulse { 50% { opacity: .48; transform: scale(.8); } }
      .upload-file-table-head { grid-template-columns: minmax(0, 1fr) 108px 92px; }.upload-file-table-head span:nth-child(2) { text-align: center; }.upload-file-row { grid-template-columns: minmax(0, 1fr) 108px 92px; }.upload-file-role { display: inline-flex; align-self: center; align-items: center; justify-content: center; gap: 5px; min-width: 0; min-height: 28px; padding: 0 8px; color: #78877d; border: 1px solid #e0e8e3; border-radius: 6px; background: #fbfcfb; font: inherit; font-size: 10px; cursor: pointer; transition: border-color .18s ease, background .18s ease, color .18s ease; }.upload-file-role:hover { color: #47745b; border-color: #b8d3c1; background: #f2faf4; }.upload-file-role.primary { color: #21764d; border-color: #a9d8b9; background: #ecf8f0; font-weight: 720; }.upload-file-row.is-primary { background: linear-gradient(90deg, rgba(236, 248, 240, .8), #fff 38%); }.upload-primary-hint { display: flex; align-items: center; gap: 7px; padding: 9px 12px; color: #9a6a24; border-bottom: 1px solid #f2e7ce; background: #fffaf0; font-size: 11px; line-height: 1.5; }.upload-primary-hint svg { flex: 0 0 auto; color: #d39a39; }.upload-file-row .upload-file-role + .upload-file-status { grid-column: auto; }.upload-file-row .upload-file-progress { grid-column: 1 / -1; }
      /* 任务附件按业务角色拆分：主报告提供检测事实，补充材料仅提供背景信息。 */
      .task-modal .upload-source-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; margin-top: 9px; }.task-modal .upload-source-card { min-width: 0; padding: 12px; border: 1px solid #e2e9e4; border-radius: 9px; background: #fbfcfb; transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease; }.task-modal .primary-source-card { border-color: #cfe3d4; background: linear-gradient(145deg, #fbfefc, #f3faf5); }.task-modal .upload-source-card:focus-within { border-color: #99c7a8; box-shadow: 0 0 0 3px rgba(45, 139, 91, .1); }.upload-source-head { display: flex; min-width: 0; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 10px; }.upload-source-head > div { display: grid; min-width: 0; gap: 3px; }.upload-source-head strong { color: #314038; font-size: 12px; font-weight: 760; }.upload-source-head small { overflow: hidden; color: #829087; font-size: 10px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }.upload-source-badge { flex: 0 0 auto; padding: 3px 6px; color: #718078; border-radius: 999px; background: #eff3f0; font-size: 10px; font-weight: 720; }.upload-source-badge.required-badge { color: #337957; background: #e7f6ed; }.task-modal .upload-source-zone { display: grid; min-height: 108px; margin: 0; border-style: dashed; border-color: #d8e5dc; border-radius: 8px; background: rgba(255,255,255,.76); }.task-modal .upload-source-zone:hover { border-color: #98c8a9; background: #fff; }.task-modal .upload-source-zone .upload-symbol { width: 36px; height: 36px; margin-bottom: 7px; border-radius: 10px; }.task-modal .upload-source-zone strong { display: block; overflow: hidden; max-width: 100%; padding: 0 7px; color: #405048; font-size: 12px; text-align: center; text-overflow: ellipsis; white-space: nowrap; }.task-modal .upload-source-zone span { display: block; padding: 0 8px; font-size: 10px; text-align: center; }.task-modal .upload-source-zone.is-ready { border-color: #b8d9c2; background: #fff; }.task-modal .upload-source-zone.is-uploading { border-color: #d9c7c6; background: #fffafa; }.upload-source-summary { display: flex; min-width: 0; align-items: center; gap: 6px; margin-top: 8px; padding: 7px 8px; color: #327653; border: 1px solid #d5e8da; border-radius: 6px; background: #fff; }.upload-source-summary[hidden] { display: none; }.upload-source-summary > svg { flex: 0 0 auto; }.upload-source-summary > span { overflow: hidden; flex: 1; font-size: 10px; font-weight: 680; text-overflow: ellipsis; white-space: nowrap; }.upload-source-summary button { display: grid; flex: 0 0 auto; place-items: center; width: 21px; height: 21px; padding: 0; color: #7b9082; border: 0; border-radius: 5px; background: transparent; cursor: pointer; }.upload-source-summary button:hover { color: #b54243; background: #fff1f0; }.task-modal .upload-source-grid + #reportFiles + .upload-progress { margin-top: 10px; }.upload-file-role { cursor: default; }.upload-file-role:hover { color: inherit; border-color: #e0e8e3; background: #fbfcfb; }.upload-file-role.primary:hover { color: #21764d; border-color: #a9d8b9; background: #ecf8f0; }
      /* 发起任务表单以可读性为先，统一放大字段和附件信息层级。 */
      .task-modal-head h2 { font-size: 22px; }.task-modal-kicker { font-size: 12px; }.task-modal .field-label { font-size: 14px; font-weight: 720; }.task-modal .product-input { height: 48px; font-size: 15px; }.task-modal .category-trigger { min-height: 56px; }.task-modal .category-trigger-copy strong { font-size: 14px; }.task-modal .upload-source-head strong { font-size: 14px; }.task-modal .upload-source-head small { font-size: 12px; }.task-modal .upload-source-badge { font-size: 11px; }.task-modal .upload-source-zone strong { font-size: 14px; }.task-modal .upload-source-zone span { font-size: 12px; }.task-modal .upload-source-summary > span { font-size: 12px; }.task-modal .upload-progress > div:first-child, .task-modal .upload-progress strong { font-size: 12px; }.task-modal .file-selected { font-size: 13px; }.task-modal .upload-file-table-head { font-size: 11px; }.task-modal .upload-file-main strong { font-size: 13px; }.task-modal .upload-file-main small, .task-modal .upload-file-status, .task-modal .upload-file-role, .task-modal .upload-file-progress strong { font-size: 11px; }.task-modal .secondary-btn, .task-modal .start-btn { min-height: 44px; font-size: 14px; }
      @media (max-width: 680px) { .task-modal .upload-source-grid { grid-template-columns: 1fr; }.task-modal .upload-source-zone { min-height: 96px; } }
      /* Login modal: focused enterprise authentication surface. */
      .login-modal { position: relative; display: block; width: min(1160px, calc(100vw - 64px)); height: min(650px, calc(100vh - 64px)); min-height: 540px; overflow: hidden; border: 1px solid rgba(255, 255, 255, .72); border-radius: 14px; background: #f9fbfa url('https://cache.zhiliangku.cn/quality-promo-hub/web.login.png') center / cover no-repeat; box-shadow: 0 32px 90px rgba(9, 22, 16, .32); }
      .login-modal::after { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(255,255,255,0) 42%, rgba(245,249,247,.16) 100%); content: ""; pointer-events: none; }
      .login-form { position: absolute; z-index: 1; top: 50%; right: 64px; width: 412px; padding: 36px; border: 1px solid rgba(255, 255, 255, .82); border-radius: 12px; background: rgba(255, 255, 255, .9); box-shadow: 0 22px 56px rgba(21, 43, 30, .17); transform: translateY(-50%); backdrop-filter: blur(18px) saturate(1.08); }
      .login-form-head { margin-bottom: 30px; }
      .login-brand { display: inline-flex; align-items: center; gap: 8px; color: #26332b; font-size: 13px; font-weight: 760; }
      .login-brand-mark { display: grid; place-items: center; width: 24px; height: 24px; color: #fff; border-radius: 7px; background: var(--forest); box-shadow: 0 5px 12px rgba(228, 59, 63, .25); font-size: 13px; }
      .login-heading { margin-top: 25px; }
      .login-form-head h2 { margin: 0; color: #172019; font-size: 28px; font-weight: 780; line-height: 1.2; }
      .login-title-note { margin: 9px 0 0; color: #718078; font-size: 13px; line-height: 1.5; }
      .login-field-group { margin-top: 18px; }
      .login-field-group + .login-field-group { margin-top: 16px; }
      .login-field-group label { display: block; margin-bottom: 8px; color: #48564d; font-size: 12px; font-weight: 720; }
      .login-input-wrap { position: relative; }
      .login-input-wrap > i, .login-input-wrap > svg { position: absolute; z-index: 1; top: 50%; left: 14px; color: #839087; pointer-events: none; transform: translateY(-50%); transition: color .16s ease; }
      .login-field { box-sizing: border-box; width: 100%; height: 48px; padding: 10px 42px; color: #1d2921; border: 1px solid #dce5df; border-radius: 7px; background: rgba(255,255,255,.88); font-size: 14px; outline: none; transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease; }
      .login-field::placeholder { color: #a7b0aa; }.login-input-wrap:focus-within > i, .login-input-wrap:focus-within > svg { color: var(--forest); }.login-field:focus { border-color: var(--forest); background: #fff; box-shadow: 0 0 0 3px rgba(228, 59, 63, .1); }
      .login-field:-webkit-autofill, .login-field:-webkit-autofill:hover, .login-field:-webkit-autofill:focus { -webkit-text-fill-color: #1d2921; -webkit-box-shadow: 0 0 0 1000px #fff inset; transition: background-color 9999s ease-out 0s; }
      .password-toggle { position: absolute; z-index: 2; top: 50%; right: 7px; display: grid; place-items: center; width: 34px; height: 34px; padding: 0; color: #839087; border: 0; border-radius: 5px; background: transparent; cursor: pointer; transform: translateY(-50%); transition: color .16s ease, background-color .16s ease; }
      .password-toggle:hover { color: var(--forest); background: #fff1f0; }.password-toggle:focus-visible { outline: 2px solid var(--forest); outline-offset: 1px; }
      .login-hint { display: flex; align-items: center; gap: 7px; margin: 18px 0 0; color: #76837b; font-size: 12px; line-height: 1.5; }
      .login-hint svg { flex: 0 0 auto; color: #5e7967; }
      .login-modal .modal-actions { margin-top: 27px; }.login-modal .start-btn { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 50px; padding: 0 17px 0 19px; border-radius: 7px; box-shadow: 0 10px 20px rgba(228, 59, 63, .22); font-size: 14px; }.login-modal .start-btn:hover { transform: translateY(-1px); box-shadow: 0 13px 25px rgba(228, 59, 63, .28); }.login-modal .start-btn:disabled { cursor: wait; opacity: .74; transform: none; }
      .login-error { display: none; margin-top: 16px; padding: 9px 11px; color: #a43734; border: 1px solid #f2c8c7; border-radius: 6px; background: #fff5f4; font-size: 12px; line-height: 1.5; }.login-error.show { display: block; }
      .login-auth-panel[hidden] { display: none; }.auth-switch-row { display: flex; align-items: center; justify-content: center; gap: 4px; margin-top: 16px; color: #839087; font-size: 12px; }.auth-switch-btn { padding: 2px 3px; color: #c7363a; border: 0; background: transparent; font-size: 12px; font-weight: 760; cursor: pointer; }.auth-switch-btn:hover { color: #a9272b; text-decoration: underline; }.auth-switch-btn:focus-visible { outline: 2px solid rgba(228, 59, 63, .32); outline-offset: 2px; border-radius: 3px; }.login-form.is-register { padding: 28px 32px; }.login-form.is-register .login-form-head { margin-bottom: 20px; }.login-form.is-register .login-heading { margin-top: 18px; }.login-form.is-register .login-field-group { margin-top: 12px; }.login-form.is-register .login-field-group + .login-field-group { margin-top: 10px; }.login-form.is-register .login-hint { margin-top: 13px; }.login-form.is-register .login-modal-actions { margin-top: 16px; }.login-form.is-register .auth-switch-row { margin-top: 12px; }
      @keyframes menuIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
      @keyframes taskModalBackdropIn { from { opacity: 0; } to { opacity: 1; } }
      @keyframes taskModalIn { from { opacity: 0; transform: translateY(14px) scale(.975); } to { opacity: 1; transform: translateY(0) scale(1); } }
      @keyframes utilityModalBackdropIn { from { opacity: 0; } to { opacity: 1; } } @keyframes utilityModalBackdropOut { to { opacity: 0; } } @keyframes utilityModalIn { from { opacity: 0; transform: translateY(11px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes utilityModalOut { to { opacity: 0; transform: translateY(6px) scale(.99); } }
      @keyframes taskButtonSpin { to { transform: rotate(360deg); } }
      @keyframes loginBackdropIn { from { opacity: 0; } to { opacity: 1; } }
      @keyframes loginModalIn { from { opacity: 0; transform: translateY(18px) scale(.96); } to { opacity: 1; transform: translateY(0) scale(1); } }
      @keyframes workspaceLoadingIn { from { opacity: 0; } to { opacity: 1; } }
      @keyframes workspaceSpinner { to { transform: rotate(360deg); } }
      @keyframes workspaceFlow { 0%, 100% { opacity: .36; transform: scaleY(.58); } 50% { opacity: 1; transform: scaleY(1); } }
      @keyframes timeoutRetryIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
      @keyframes stageSpinner { to { transform: rotate(360deg); } }
      @keyframes reportThinkingSpin { to { transform: rotate(360deg); } }
      @keyframes reportThinkingPulse { 50% { height: 21px; opacity: .45; } } @keyframes thinkingDot { 50% { opacity: .28; transform: translateY(-2px); } } @keyframes toastSlideIn { from { opacity: 0; transform: translateY(-14px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes toastSlideOut { to { opacity: 0; transform: translateY(-9px) scale(.98); } }
      @keyframes reportFrameIn { to { opacity: 1; } }
      @keyframes skeletonPulse { 50% { opacity: .47; } } @keyframes reportSkeletonOut { to { opacity: 0; visibility: hidden; } }
      @keyframes reportRevealMask { 0% { transform: scaleY(1); } 82% { transform: scaleY(.025); } 100% { opacity: 0; transform: scaleY(0); } }
      @keyframes reportCursorSweep { 0% { opacity: 0; transform: translateY(0); } 8% { opacity: 1; } 86% { opacity: 1; transform: translateY(760px); } 100% { opacity: 0; transform: translateY(760px); } }
      .secondary-btn { padding: 10px 13px; color: #566359; border: 1px solid var(--line); border-radius: 5px; background: #fff; font-weight: 700; }
      .modal-kicker { display: block; color: #829087; font-size: 10px; font-weight: 760; letter-spacing: .06em; }.rename-modal { width: min(500px, 100%); border: 1px solid #e1e9e3; border-radius: 11px; }.rename-modal-head { padding: 20px 22px 17px; background: #fbfdfb; }.rename-modal-head h2, .danger-modal-head h2 { margin-top: 4px; color: #2b392f; font-size: 19px; }.rename-modal-body { padding: 21px 22px 22px; }.rename-task-context { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; padding: 11px; border: 1px solid #e4ece6; border-radius: 8px; background: #f8fbf8; }.rename-task-context > span { display: grid; flex: 0 0 auto; place-items: center; width: 31px; height: 31px; color: #4f8062; border-radius: 8px; background: #eaf5ed; }.rename-task-context small { display: block; color: #89958d; font-size: 10px; }.rename-task-context strong { display: block; overflow: hidden; max-width: 350px; margin-top: 3px; color: #3e4c43; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.rename-modal .product-input { box-sizing: border-box; height: 44px; border-color: #dce5df; border-radius: 7px; font-size: 13px; }.rename-input-help { display: flex; justify-content: space-between; gap: 12px; margin-top: 7px; color: #8a968e; font-size: 11px; }.rename-modal .modal-actions { margin-top: 22px; }.rename-modal .start-btn { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; border-radius: 7px; }
      .task-danger-modal { width: min(440px, 100%); border: 1px solid #f0d8d6; border-radius: 11px; }.danger-modal-head { padding: 18px 21px; border-bottom-color: #f1e1df; background: #fffafa; }.danger-modal-head h2 { margin: 0; color: #2b392f; font-size: 19px; }.danger-modal-body { padding: 22px 22px 20px; }.danger-intro { display: flex; align-items: flex-start; gap: 12px; }.danger-symbol { display: grid; flex: 0 0 auto; place-items: center; width: 40px; height: 40px; margin: 0; color: #c54642; border-radius: 10px; background: #fff0ef; }.danger-intro strong { display: block; margin: 1px 0 5px; color: #39463d; font-size: 14px; font-weight: 760; }.danger-intro p { margin: 0; color: #68766e; font-size: 12px; line-height: 1.65; }.danger-task-block { margin-top: 18px; padding: 10px 11px; border: 1px solid #f0dfdc; border-radius: 7px; background: #fdf9f8; }.danger-task-block span { display: block; color: #9b847f; font-size: 10px; font-weight: 720; }.danger-task-block strong { display: block; overflow: hidden; margin-top: 4px; color: #4a574e; font-size: 12px; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }.danger-modal-body .modal-actions { margin-top: 21px; }.danger-btn { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 0 15px; color: #fff; border: 1px solid #dc4442; border-radius: 7px; background: #df4845; box-shadow: 0 8px 16px rgba(210, 62, 59, .18); font-weight: 760; transition: background-color .16s ease, box-shadow .16s ease, transform .16s ease; }.danger-btn:hover { background: #c93a38; box-shadow: 0 10px 20px rgba(210, 62, 59, .25); transform: translateY(-1px); }.danger-btn:disabled { cursor: wait; opacity: .75; transform: none; }.danger-btn:disabled svg { animation: taskButtonSpin .85s linear infinite; }
      .task-danger-modal { width: min(440px, 100%); border: 1px solid #f0d8d6; border-radius: 11px; }.danger-modal-head { padding: 18px 21px; border-bottom-color: #f1e1df; background: #fffafa; }.danger-modal-head h2 { margin: 0; color: #2b392f; font-size: 19px; }.danger-modal-body { padding: 22px 22px 20px; }.danger-intro { display: flex; align-items: flex-start; gap: 12px; }.danger-symbol { display: grid; flex: 0 0 auto; place-items: center; width: 40px; height: 40px; margin: 0; color: #c54642; border-radius: 10px; background: #fff0ef; }.danger-intro strong { display: block; margin: 1px 0 5px; color: #39463d; font-size: 14px; font-weight: 760; }.danger-intro p { margin: 0; color: #68766e; font-size: 12px; line-height: 1.65; }.danger-task-block { margin-top: 18px; padding: 10px 11px; border: 1px solid #f0dfdc; border-radius: 7px; background: #fdf9f8; }.danger-task-block span { display: block; color: #9b847f; font-size: 10px; font-weight: 720; }.danger-task-block strong { display: block; overflow: hidden; margin-top: 4px; color: #4a574e; font-size: 12px; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }.danger-modal-body .modal-actions { margin-top: 21px; }.danger-btn { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 0 15px; color: #fff; border: 1px solid #dc4442; border-radius: 7px; background: #df4845; box-shadow: 0 8px 16px rgba(210, 62, 59, .18); font-weight: 760; transition: background-color .16s ease, box-shadow .16s ease, transform .16s ease; }.danger-btn:hover { background: #c93a38; box-shadow: 0 10px 20px rgba(210, 62, 59, .25); transform: translateY(-1px); }.danger-btn:disabled { cursor: wait; opacity: .75; transform: none; }.danger-btn:disabled svg { animation: taskButtonSpin .85s linear infinite; }.retry-task-modal { width: min(460px, 100%); border: 1px solid #dfe7e3; border-radius: 11px; }.retry-modal-head { padding: 18px 21px; border-bottom: 1px solid #e8eeea; background: #fbfdfc; }.retry-modal-head h2 { margin: 0; color: #2d3b32; font-size: 19px; }.retry-modal-body { padding: 22px 22px 20px; }.retry-intro { display: flex; align-items: flex-start; gap: 12px; }.retry-symbol { display: grid; flex: 0 0 auto; place-items: center; width: 40px; height: 40px; color: #c87942; border-radius: 10px; background: #fff4e9; }.retry-intro strong { display: block; margin: 1px 0 5px; color: #39463d; font-size: 14px; font-weight: 760; }.retry-intro p { margin: 0; color: #68766e; font-size: 12px; line-height: 1.65; }.retry-task-block { margin-top: 18px; padding: 10px 11px; border: 1px solid #e4ece7; border-radius: 7px; background: #f8fbf9; }.retry-task-block span { display: block; color: #8a968e; font-size: 10px; font-weight: 720; }.retry-task-block strong { display: block; overflow: hidden; margin-top: 4px; color: #4a574e; font-size: 12px; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }.retry-modal-body .modal-actions { margin-top: 21px; }.retry-confirm-btn { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 0 15px; }.retry-confirm-btn:disabled { cursor: wait; opacity: .76; }.retry-confirm-btn:disabled svg { animation: taskButtonSpin .85s linear infinite; }
      .retry-task-modal { position: relative; width: min(430px, 100%); overflow: visible; border: 1px solid #e1e6eb; border-radius: 10px; box-shadow: 0 20px 56px rgba(28, 39, 55, .2); }.retry-modal-body { padding: 27px 28px 23px; }.retry-close-btn { position: absolute; z-index: 1; top: 15px; right: 15px; width: 32px; height: 32px; color: #7f8997; border-color: #e5e9ee; border-radius: 7px; background: #fff; }.retry-close-btn:hover { color: #354052; border-color: #d5dbe3; background: #f7f9fb; }.retry-intro { align-items: flex-start; gap: 13px; padding-right: 38px; }.retry-symbol { width: 38px; height: 38px; color: #d26b43; border: 1px solid #fee5d7; border-radius: 9px; background: #fff5ee; }.retry-copy { min-width: 0; }.retry-eyebrow { display: block; margin: 1px 0 4px; color: #9a7a69; font-size: 10px; font-weight: 720; letter-spacing: .04em; }.retry-copy h2 { margin: 0; color: #2d3848; font-size: 17px; font-weight: 760; line-height: 1.35; }.retry-copy p { margin: 6px 0 0; color: #748092; font-size: 12px; line-height: 1.58; }.retry-task-line { display: flex; min-width: 0; align-items: center; gap: 9px; margin-top: 21px; padding: 10px 12px; border: 1px solid #e7ebef; border-radius: 7px; background: #fafbfc; }.retry-task-line > span { flex: 0 0 auto; color: #99a2af; font-size: 11px; }.retry-task-line strong { overflow: hidden; color: #465263; font-size: 12px; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }.retry-modal-actions { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 9px; margin-top: 19px; }.retry-modal-actions .secondary-btn, .retry-confirm-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 0 14px; border-radius: 7px; white-space: nowrap; }.retry-modal-actions .secondary-btn { min-width: 72px; padding: 0; color: #697585; border-color: #dfe4ea; }.retry-confirm-btn { width: 100%; box-shadow: 0 7px 14px rgba(228, 59, 63, .16); }.retry-confirm-btn:hover { box-shadow: 0 9px 18px rgba(228, 59, 63, .24); transform: translateY(-1px); }
      .preview-actions .preview-download-btn { display: inline-flex; align-items: center; min-height: 38px; padding: 9px 16px; color: #fff; border: 1px solid #e83c40; border-radius: 7px; background: #eb3d41; box-shadow: 0 7px 15px rgba(218, 57, 59, .2); font-size: 12px; font-weight: 760; line-height: 1; transition: transform .16s ease, background-color .16s ease, box-shadow .16s ease; }
      .preview-actions .preview-download-btn:hover { background: #d83236; box-shadow: 0 9px 18px rgba(218, 57, 59, .27); transform: translateY(-1px); }
      .preview-actions .preview-download-btn:active { box-shadow: 0 3px 8px rgba(218, 57, 59, .2); transform: translateY(0); }
      .preview-actions .preview-download-btn:focus-visible { outline: 3px solid rgba(235, 61, 65, .2); outline-offset: 2px; }
      .start-btn { width: auto; padding: 10px 15px; box-shadow: none; }

      @media (max-width: 860px) { .login-modal { width: min(500px, calc(100vw - 32px)); height: auto; min-height: 0; background-position: 34% center; }.login-modal::after { background: rgba(255,255,255,.12); }.login-form { position: relative; top: auto; right: auto; width: 100%; min-width: 0; padding: 38px 30px 32px; border: 0; border-radius: 0; background: rgba(255,255,255,.95); box-shadow: none; transform: none; } }
      @media (max-width: 1120px) { .shell { grid-template-columns: 232px minmax(500px, 1fr); } .rightbar { display: none; } .workspace { padding-right: 26px; padding-left: 26px; } }
      @media (max-width: 980px) { .report-optimize-backdrop { padding: 14px; }.report-optimize-modal { max-height: calc(100vh - 28px); }.report-optimize-body { grid-template-columns: 220px minmax(0, 1fr); }.optimization-preview-grid { grid-template-columns: 1fr; overflow-y: auto; }.optimization-preview-pane { min-height: 280px; }.optimization-preview-tabs small { display: none; } }
      @media (max-width: 760px) {
        .shell { display: block; } .sidebar { display: none; } .workspace { padding: 18px 15px 28px; }
        .content-grid { grid-template-columns: 1fr; } .steps { display: block; padding: 14px 20px 17px; }
        .step { display: grid; grid-template-columns: 28px minmax(0, 1fr); column-gap: 11px; padding-bottom: 16px; }
        .step:last-child { padding-bottom: 0; } .step:not(:last-child)::after { top: 30px; bottom: 0; left: 14px; right: auto; width: 2px; height: auto; }
        .step-head { align-self: end; margin-top: 0; }.step-name { margin: 0; } .step-note, .step-progress, .agent-activity { grid-column: 2; } .step-note { margin-top: 2px; } .step-progress { margin-top: 7px; max-width: 260px; } .agent-activity { margin-top: 6px; } .intro { align-items: flex-start; flex-direction: column; } .insights { grid-template-columns: 1fr; }
        .mobile-create { display: inline-flex; } .top-actions .icon-btn:first-child { display: none; }
      }

      /* 新建任务的固定输出规则无需在表单中重复展示。 */
      .task-modal .template-select { display: none; }

      /* 冷白背景体系：减少页面大面积绿色灰感，保留红色品牌强调与状态色。 */
      .sidebar { background: #fbfbfc; border-right-color: #e7e9ed; }
      .rightbar { background: #fbfbfc; border-left-color: #e7e9ed; scrollbar-color: #d8dce3 transparent; }
      .rightbar::-webkit-scrollbar-thumb { background: #d8dce3; }
      .account { color: #4d5560; border-color: #e7e9ed; background: #f1f3f5; }
      .account:hover, .account[aria-expanded="true"] { color: var(--ink); border-color: #dce0e6; background: #eaedf1; }
      .task-count { color: #68717c; background: #f0f2f5; }
      .task-search, .task-status-filter { border-color: #e0e3e8; background: #fff; }
      .task-search:focus-within, .task-status-filter:focus { border-color: #d6dae1; box-shadow: 0 0 0 3px rgba(80, 92, 110, .08); }
      .task-item { background: #fff; }
      .task-item:hover { border-color: #e0e4e9; box-shadow: 0 6px 16px rgba(29, 39, 55, .055); }
      .task-action-menu { border-color: #e4e7ec; box-shadow: 0 12px 28px rgba(29, 39, 55, .1); }
      .file-card { border-color: #e4e7ec; }
      .rightbar .right-empty, .empty-workspace { border-color: #dde1e7; background: #fff; }
      .workspace-loading { color: #59616d; background: transparent; }

      /* 报告优化采用单一大预览区：先看正式报告，生成后切换到 AI 预览，避免双栏压缩文档正文。 */
      .report-optimize-backdrop { padding: 24px; }
      .report-optimize-backdrop .report-optimize-modal { width: min(1180px, calc(100vw - 48px)); height: min(820px, calc(100vh - 48px)); max-height: none; }
      .report-optimize-head { min-height: 94px; padding: 21px 26px 19px; }
      .report-optimize-head h2 { font-size: 22px; }
      .report-optimize-head p { max-width: 720px; font-size: 13px; }
      .report-optimize-body { grid-template-columns: 280px minmax(0, 1fr); }
      .report-optimize-side { padding: 20px; }
      .optimization-label { font-size: 12px; }
      .optimization-section:first-child .optimization-label::before, .optimization-composer label::before { display: inline-grid; width: 18px; height: 18px; margin-right: 6px; place-items: center; color: #bd4548; border-radius: 50%; background: #fff0ef; font-size: 10px; font-style: normal; font-weight: 760; vertical-align: -1px; }
      .optimization-section:first-child .optimization-label::before { content: '1'; }
      .optimization-composer label::before { content: '2'; }
      .optimization-scope-options button { min-height: 59px; padding: 11px; }
      .optimization-scope-options strong { font-size: 13px; }
      .optimization-scope-options small { font-size: 11px; }
      .optimization-preview-tabs { min-height: 54px; padding: 0 22px; }
      .optimization-preview-tabs > span { font-size: 13px; }
      .optimization-preview-grid { display: flex; min-height: 0; padding: 16px 18px; }
      .optimization-preview-pane { width: 100%; min-height: 0; }
      .optimization-preview-pane > header { min-height: 44px; padding: 0 14px; }
      .optimization-preview-pane > header span { font-size: 13px; }
      .optimization-preview-draft { display: none; }
      .report-optimize-modal.has-preview .optimization-preview-pane:first-child { display: none; }
      .report-optimize-modal.has-preview .optimization-preview-draft { display: flex; }
      .optimization-composer { padding: 16px 18px 17px; }
      .optimization-composer label { font-size: 13px; }
      .optimization-composer textarea { min-height: 82px; padding: 12px 13px; font-size: 13px; }
      .optimization-composer-actions { margin-top: 12px; font-size: 11px; }
      .optimization-composer-actions .secondary-btn, .optimization-composer-actions .start-btn { min-height: 40px; padding: 0 14px; font-size: 13px; }
      .optimization-generate-btn { min-width: 156px; }
      @media (max-width: 900px) { .report-optimize-backdrop { padding: 14px; }.report-optimize-backdrop .report-optimize-modal { width: calc(100vw - 28px); height: calc(100vh - 28px); }.report-optimize-body { grid-template-columns: 230px minmax(0, 1fr); }.optimization-preview-tabs small { display: none; } }
      .optimization-apply-btn:disabled svg { animation: none !important; }
      .optimization-preview-grid { position: relative; }
      .report-optimize-modal.is-generating .optimization-preview-grid::after { position: absolute; z-index: 3; inset: 16px 18px; display: grid; place-items: center; color: #5d6a79; border: 1px solid rgba(218, 224, 232, .92); border-radius: 8px; background: rgba(255, 255, 255, .88); box-shadow: 0 10px 28px rgba(42, 54, 70, .08); content: 'AI 正在根据你的建议生成预览，请稍候…'; font-size: 13px; font-weight: 720; letter-spacing: 0; }
      .report-optimize-modal.is-generating .optimization-preview-grid::before { position: absolute; z-index: 4; top: 50%; left: calc(50% - 102px); width: 22px; height: 22px; border: 3px solid #e3e8ee; border-top-color: #e84246; border-radius: 50%; content: ''; animation: taskButtonSpin .8s linear infinite; }
      .optimization-generate-btn:disabled { color: #a9b1bb; border-color: #e6eaee; background: #f4f6f8; box-shadow: none; cursor: not-allowed; }
      .optimization-generate-btn.is-ready { color: #fff; border-color: #e83d42; background: #ec3d42; box-shadow: 0 8px 18px rgba(220, 57, 61, .2); }
      .report-optimize-modal.has-preview.showing-current .optimization-preview-pane:first-child { display: flex; }
      .report-optimize-modal.has-preview.showing-current .optimization-preview-draft { display: none; }
      .optimization-preview-mode { display: inline-flex; flex: 0 0 auto; gap: 2px; margin-left: auto; padding: 3px; border: 1px solid #e1e6ec; border-radius: 7px; background: #f7f9fb; }
      .optimization-preview-mode button { min-height: 27px; padding: 0 9px; color: #7a8693; border: 0; border-radius: 5px; background: transparent; font-size: 11px; font-weight: 700; }
      .optimization-preview-mode button.selected { color: #b94045; background: #fff; box-shadow: 0 1px 4px rgba(37, 50, 65, .1); }
      .optimization-change-summary { margin: 0 0 10px; padding: 10px; border: 1px solid #d8e7ef; border-radius: 7px; background: #f7fbfd; }
      .optimization-change-summary strong { display: flex; align-items: center; gap: 5px; color: #446a83; font-size: 11px; font-weight: 760; }.optimization-change-summary strong svg { color: #d6474b; }
      .optimization-change-summary span, .optimization-change-summary small { display: block; margin-top: 5px; color: #718190; font-size: 10px; line-height: 1.5; }.optimization-change-summary small { color: #a07456; }

      /* AI 润色三栏工作台：低饱和珊瑚红仅用于选中态与关键操作。 */
      .report-optimize-backdrop { background: rgba(43, 52, 59, .35); backdrop-filter: blur(4px); }
      .report-optimize-backdrop .report-optimize-modal { width: min(1420px, calc(100vw - 64px)); height: min(860px, calc(100vh - 56px)); border-color: #e3e7eb; border-radius: 10px; box-shadow: 0 24px 68px rgba(32, 42, 50, .22); }
      .report-optimize-head { min-height: 88px; padding: 18px 24px; }.report-optimize-head h2 { color: #2e3942; font-size: 20px; }.report-optimize-head p { color: #7c8891; font-size: 12px; }.report-optimize-head .icon-btn { color: #7d8992; border-color: #e2e6ea; }
      .ai-editor-layout { display: grid; min-height: 0; flex: 1; grid-template-columns: 230px minmax(0, 1fr) 346px; background: #f7f8fa; }
      .ai-editor-toc { display: flex; min-width: 0; flex-direction: column; gap: 8px; padding: 20px 16px; border-right: 1px solid #e5e8eb; background: #fff; }.ai-editor-eyebrow { margin: 0 8px 8px; color: #8b969f; font-size: 11px; font-weight: 760; letter-spacing: .05em; }
      .ai-editor-node { display: flex; align-items: flex-start; gap: 10px; min-height: 61px; padding: 12px; color: #65737e; border: 1px solid transparent; border-radius: 7px; background: transparent; text-align: left; transition: color .16s ease, border-color .16s ease, background-color .16s ease; }.ai-editor-node:hover { color: #4a5a65; background: #f8fafb; }.ai-editor-node.active, .ai-editor-node.selected { color: #ba6762; border-color: #e8c4c1; background: #fff6f5; box-shadow: inset 3px 0 0 #cf817a; }.ai-editor-node svg { flex: 0 0 auto; margin-top: 1px; color: #82909b; }.ai-editor-node.active svg, .ai-editor-node.selected svg { color: #c77570; }.ai-editor-node span { min-width: 0; }.ai-editor-node span, .ai-editor-node small { display: block; }.ai-editor-node span { font-size: 13px; font-weight: 740; }.ai-editor-node small { margin-top: 4px; color: #95a0a8; font-size: 10px; font-weight: 500; line-height: 1.4; }.ai-editor-toc-note { display: flex; align-items: flex-start; gap: 6px; margin-top: auto; padding: 11px 9px 0; color: #8c989f; border-top: 1px solid #eef0f2; font-size: 11px; line-height: 1.45; }.ai-editor-toc-note svg { flex: 0 0 auto; color: #cc807a; }
      .ai-editor-parent { position: relative; width: 100%; margin: 0; cursor: pointer; }.ai-editor-parent-chevron { margin-left: auto; transition: transform .16s ease; }.ai-editor-parent.collapsed .ai-editor-parent-chevron { transform: rotate(-90deg); }.ai-editor-children { display: grid; gap: 3px; margin: -2px 0 4px 14px; padding-left: 10px; border-left: 1px solid #e4e8eb; }.ai-editor-children.collapsed { display: none; }.ai-editor-child { min-height: 32px; padding: 0 8px; color: #71808a; border: 1px solid transparent; border-radius: 5px; background: transparent; font-size: 11px; text-align: left; }.ai-editor-child:hover { color: #596a75; background: #f6f8f9; }.ai-editor-child.active, .ai-editor-child.selected { color: #bd6d67; border-color: #ebcfcc; background: #fff7f6; font-weight: 720; }
      .ai-editor-document { display: flex; min-width: 0; min-height: 0; flex-direction: column; padding: 16px; background: #f5f6f8; }.ai-editor-document-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 0 13px; border: 1px solid #e3e7eb; border-bottom: 0; border-radius: 8px 8px 0 0; background: #fff; }.ai-editor-document-head > div { min-width: 0; }.ai-editor-document-head > div > span { display: block; overflow: hidden; color: #485761; font-size: 13px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }.ai-editor-document-head small { display: block; margin-top: 2px; color: #9aa4ab; font-size: 10px; }.ai-document-status { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 5px; color: #79907f; font-size: 11px; }.ai-document-status svg { color: #83a18c; }.ai-editor-document iframe { display: block; min-width: 0; min-height: 0; flex: 1; border: 1px solid #e3e7eb; border-radius: 0 0 8px 8px; background: #fff; box-shadow: 0 5px 16px rgba(42, 54, 64, .05); }
      .ai-editor-chat { display: flex; min-width: 0; min-height: 0; flex-direction: column; border-left: 1px solid #e5e8eb; background: #fff; }.ai-chat-head { display: flex; align-items: center; gap: 10px; min-height: 70px; padding: 13px 16px; border-bottom: 1px solid #e8ebee; }.ai-chat-mark { display: grid; flex: 0 0 auto; place-items: center; width: 32px; height: 32px; color: #c47772; border-radius: 8px; background: #fff0ef; }.ai-chat-head strong, .ai-chat-head small { display: block; }.ai-chat-head strong { color: #3f4d57; font-size: 14px; }.ai-chat-head small { margin-top: 3px; color: #929ca4; font-size: 10px; }.ai-chat-messages { display: flex; min-height: 0; flex: 1; flex-direction: column; gap: 10px; overflow-y: auto; padding: 15px; background: #fbfcfd; scrollbar-width: thin; scrollbar-color: #d9dee2 transparent; }.ai-chat-bubble { max-width: 91%; padding: 10px 11px; border: 1px solid #e5e9ec; border-radius: 8px; background: #fff; box-shadow: 0 3px 10px rgba(44, 56, 67, .035); }.ai-chat-bubble.user { align-self: flex-end; color: #834d49; border-color: #ead0cd; background: #fff6f5; }.ai-chat-bubble.assistant { align-self: flex-start; }.ai-chat-bubble.system { align-self: center; max-width: 100%; padding: 7px 10px; color: #7b888f; border: 0; background: #f0f3f4; }.ai-chat-bubble header { display: flex; justify-content: space-between; gap: 8px; color: #9ba4aa; font-size: 10px; }.ai-chat-bubble.user header span { color: #be706a; }.ai-chat-bubble.assistant header span { color: #728994; }.ai-chat-bubble p { margin: 6px 0 0; color: #5c6a74; font-size: 12px; line-height: 1.6; word-break: break-word; }.ai-chat-bubble.system p { margin: 0; font-size: 11px; }.ai-chat-candidate { padding: 0 15px 10px; background: #fbfcfd; }.ai-chat-candidate .candidate { max-width: none; margin: 0; border-color: #d6e2e8; background: #f8fbfd; }.ai-chat-candidate ul { display: grid; gap: 7px; margin: 9px 0 0; padding: 0; list-style: none; }.ai-chat-candidate li { padding: 8px; border-radius: 6px; background: #fff; }.ai-chat-candidate li strong, .ai-chat-candidate li span { display: block; }.ai-chat-candidate li strong { color: #506a79; font-size: 11px; }.ai-chat-candidate li span { margin-top: 3px; color: #73818b; font-size: 11px; line-height: 1.5; }.ai-chat-composer { padding: 13px 15px 11px; border-top: 1px solid #e7eaed; background: #fff; }.ai-chat-composer label { display: block; margin-bottom: 7px; color: #697781; font-size: 11px; font-weight: 740; }.ai-chat-composer textarea { display: block; box-sizing: border-box; width: 100%; min-height: 78px; padding: 10px; resize: none; color: #475660; border: 1px solid #dfe4e7; border-radius: 7px; outline: none; background: #fbfcfc; font-family: inherit; font-size: 12px; line-height: 1.55; }.ai-chat-composer textarea:focus { border-color: #d9a09b; background: #fff; box-shadow: 0 0 0 3px rgba(207, 129, 122, .12); }.ai-chat-composer-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 9px; color: #a2abb1; font-size: 10px; }.ai-chat-composer-foot .optimization-generate-btn { min-width: 76px; min-height: 34px; padding: 0 11px; border-radius: 6px; font-size: 12px; }.ai-chat-candidate-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 0 15px 12px; background: #fbfcfd; }.ai-chat-candidate-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 36px; padding: 0 10px; border-radius: 6px; font-size: 12px; }.ai-chat-candidate-actions .primary-btn { background: #c87872; box-shadow: none; }.ai-chat-candidate-actions .primary-btn:hover { background: #b86963; }.ai-chat-cancel { margin: 0 15px 15px; padding: 0; color: #98a2a8; border: 0; background: transparent; font-size: 11px; text-align: left; }.ai-chat-cancel:hover { color: #65737d; }
      .report-optimize-modal.is-generating .ai-editor-chat::after { position: absolute; right: 28px; bottom: 130px; z-index: 8; display: flex; align-items: center; gap: 8px; padding: 9px 11px; color: #687680; border: 1px solid #dfe5e8; border-radius: 7px; background: rgba(255,255,255,.96); box-shadow: 0 8px 22px rgba(38, 49, 59, .12); content: 'AI 正在思考中'; font-size: 12px; }.report-optimize-modal.is-generating .ai-editor-chat { position: relative; }.report-optimize-modal.is-generating .ai-editor-chat::before { position: absolute; right: 135px; bottom: 140px; z-index: 9; width: 15px; height: 15px; border: 2px solid #dfe5e8; border-top-color: #c87872; border-radius: 50%; content: ''; animation: taskButtonSpin .8s linear infinite; }
      @media (max-width: 1120px) { .report-optimize-backdrop .report-optimize-modal { width: calc(100vw - 28px); }.ai-editor-layout { grid-template-columns: 200px minmax(0, 1fr) 300px; } }
      .ai-chat-candidate .ai-change-item { display: grid; gap: 7px; border: 1px solid #e4e9ec; }.ai-chat-candidate .ai-change-item > strong { padding-bottom: 6px; border-bottom: 1px solid #edf0f2; }.ai-chat-candidate .ai-change-item > div { padding: 7px 8px; border-radius: 5px; background: #f6f8f9; }.ai-chat-candidate .ai-change-item > div.after { border: 1px solid #ead0cd; background: #fff7f6; }.ai-chat-candidate .ai-change-item small { display: block; color: #98a2a8; font-size: 9px; font-weight: 700; }.ai-chat-candidate .ai-change-item .after small { color: #bf716b; }.ai-chat-candidate .ai-change-item > div span { margin-top: 3px; color: #5e6c75; }
      /* 右侧 AI 面板固定操作区，候选差异过长时仅在自身区域滚动。 */
      .ai-editor-chat { overflow: hidden; }.ai-chat-messages { flex: 1 1 auto; min-height: 84px; }.ai-chat-candidate { flex: 0 1 auto; max-height: min(38vh, 330px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #d8dee2 transparent; }.ai-chat-candidate::-webkit-scrollbar { width: 6px; }.ai-chat-candidate::-webkit-scrollbar-thumb { border-radius: 8px; background: #d8dee2; }.ai-chat-candidate .ai-change-item > div { max-height: 116px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }.ai-chat-composer, .ai-chat-candidate-actions, .ai-chat-cancel { flex: 0 0 auto; }.ai-chat-composer { position: relative; z-index: 2; }.ai-chat-candidate-actions { position: relative; z-index: 2; }.ai-chat-cancel { position: relative; z-index: 2; }
      .ai-editor-children .ai-editor-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
      /* AI 润色采用近全屏三栏工作区，确保报告正文与聊天内容都有足够阅读空间。 */
      .report-optimize-backdrop { padding: 16px; }.report-optimize-backdrop .report-optimize-modal { width: calc(100vw - 32px); height: calc(100vh - 32px); max-width: none; max-height: none; }.ai-editor-layout { grid-template-columns: 272px minmax(0, 1fr) 382px; }.ai-editor-toc { gap: 10px; padding: 23px 18px; }.ai-editor-eyebrow { font-size: 13px; }.ai-editor-node { min-height: 68px; padding: 13px; }.ai-editor-node span { font-size: 15px; }.ai-editor-node small { font-size: 12px; }.ai-editor-parent-chevron { width: 18px; height: 18px; }.ai-editor-children { gap: 5px; margin-left: 16px; padding-left: 12px; }.ai-editor-child { min-height: 38px; padding: 0 10px; font-size: 13px; }.ai-editor-toc-note { font-size: 12px; }.ai-chat-head { min-height: 78px; padding: 15px 18px; }.ai-chat-mark { width: 36px; height: 36px; }.ai-chat-head strong { font-size: 16px; }.ai-chat-head small { font-size: 12px; }.ai-chat-messages { gap: 12px; padding: 18px; }.ai-chat-bubble { padding: 12px 13px; }.ai-chat-bubble header { font-size: 11px; }.ai-chat-bubble p { font-size: 14px; line-height: 1.65; }.ai-chat-bubble.system p { font-size: 12px; }.optimization-message-empty { font-size: 13px; }.ai-chat-candidate { padding: 0 18px 12px; }.ai-chat-candidate li strong { font-size: 12px; }.ai-chat-candidate li span { font-size: 12px; line-height: 1.6; }.ai-chat-composer { padding: 15px 18px 13px; }.ai-chat-composer label { font-size: 13px; }.ai-chat-composer textarea { min-height: 92px; padding: 12px; font-size: 14px; }.ai-chat-composer-foot { font-size: 12px; }.ai-chat-composer-foot .optimization-generate-btn, .ai-chat-candidate-actions button { min-height: 39px; font-size: 13px; }.ai-chat-candidate-actions { padding: 0 18px 13px; }.ai-chat-cancel { margin: 0 18px 16px; font-size: 12px; }@media (max-width: 1120px) { .report-optimize-backdrop .report-optimize-modal { width: calc(100vw - 24px); height: calc(100vh - 24px); }.ai-editor-layout { grid-template-columns: 236px minmax(0, 1fr) 332px; } }

      /* AI 润色窗口采用分层过渡，避免内容区在打开时突兀出现。 */
      .report-optimize-backdrop.open { animation: reportOptimizeBackdropIn .22s ease-out both; }
      .report-optimize-backdrop.open .report-optimize-modal { transform-origin: 50% 42%; animation: reportOptimizeModalIn .34s cubic-bezier(.18,.88,.28,1) both; }
      .report-optimize-backdrop.is-closing { animation: reportOptimizeBackdropOut .19s ease-in both; }
      .report-optimize-backdrop.is-closing .report-optimize-modal { animation: reportOptimizeModalOut .19s ease-in both; }
      @keyframes reportOptimizeBackdropIn { from { opacity: 0; backdrop-filter: blur(0); } to { opacity: 1; backdrop-filter: blur(4px); } }
      @keyframes reportOptimizeBackdropOut { from { opacity: 1; } to { opacity: 0; } }
      @keyframes reportOptimizeModalIn { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } }
      @keyframes reportOptimizeModalOut { from { opacity: 1; transform: translateY(0) scale(1); } to { opacity: 0; transform: translateY(8px) scale(.992); } }

      /* AI 润色生成反馈：以聊天气泡呈现实际等待状态，避免静态界面造成卡顿错觉。 */
      .report-optimize-modal.is-generating .ai-editor-chat::before,
      .report-optimize-modal.is-generating .ai-editor-chat::after { display: none; }
      .optimization-generate-btn.is-thinking { color: #fff; border-color: #c87872; background: #c87872; box-shadow: 0 8px 18px rgba(184, 102, 96, .2); }
      .optimization-generate-btn.is-thinking svg { animation: taskButtonSpin .8s linear infinite; }
      .ai-thinking-message { min-width: 220px; border-color: #d9e4e8; background: linear-gradient(135deg, #fff, #f8fbfc); animation: aiThinkingMessageIn .22s ease-out both; }
      .ai-thinking-message.is-completing { animation: aiThinkingMessageOut .18s ease-in both; }
      .ai-thinking-message header span { color: #547482; }
      .ai-thinking-message header time { color: #a27b68; }
      .ai-thinking-message p { display: flex; align-items: center; gap: 7px; }
      .ai-thinking-dots { display: inline-flex; align-items: center; gap: 3px; height: 14px; }
      .ai-thinking-dots i { display: block; width: 4px; height: 4px; border-radius: 50%; background: #c87872; animation: aiThinkingDot 1.05s ease-in-out infinite; }
      .ai-thinking-dots i:nth-child(2) { animation-delay: .14s; }.ai-thinking-dots i:nth-child(3) { animation-delay: .28s; }
      @keyframes aiThinkingMessageIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
      @keyframes aiThinkingMessageOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-4px); } }
      @keyframes aiThinkingDot { 0%, 80%, 100% { opacity: .32; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }

      /* 润色候选内容以中间文档预览为主，右侧仅保留结论与确认动作。 */
      .ai-document-status.is-preview { color: #a66b50; }
      .ai-document-status.is-preview svg { color: #c6875f; }
      .ai-result-summary { display: flex; align-items: flex-start; gap: 7px; margin-top: 10px; padding: 9px 10px; color: #63747e; border: 1px solid #dce7ea; border-radius: 6px; background: rgba(255,255,255,.82); font-size: 12px; line-height: 1.55; }
      .ai-result-summary svg { flex: 0 0 auto; margin-top: 2px; color: #c87872; }
      .ai-chat-candidate-actions { grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) minmax(0, 1.1fr); }
      .ai-chat-candidate-actions .view-original-btn { color: #627681; border-color: #d7e0e3; background: #fff; }
      .ai-chat-candidate-actions .view-original-btn:hover { color: #4d6470; border-color: #bdced3; background: #f8fbfb; }
      .ai-chat-candidate-actions .secondary-btn { white-space: nowrap; }
      @media (max-width: 1120px) { .ai-chat-candidate-actions { grid-template-columns: 1fr 1fr; }.ai-chat-candidate-actions .view-original-btn { grid-column: 1 / -1; } }

      /* AI 身份头像在标题和对话流中保持统一，便于快速分辨消息来源。 */
      .ai-chat-mark { overflow: hidden; border: 1px solid #f0dedb; background: #fff; box-shadow: 0 3px 9px rgba(152, 81, 76, .08); }
      .ai-chat-header-avatar { display: block; width: 100%; height: 100%; object-fit: cover; }
      .ai-chat-speaker { display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
      .ai-chat-avatar { display: block; width: 19px; height: 19px; flex: 0 0 auto; border: 1px solid rgba(234, 213, 210, .9); border-radius: 50%; object-fit: cover; background: #fff; }
      .ai-chat-bubble.assistant .ai-chat-speaker > span { color: #728994; }
      .ai-thinking-message .ai-chat-avatar { box-shadow: 0 0 0 3px rgba(200, 120, 114, .1); }

      /* 输入区采用图标主操作，结果到达时提供一次清晰但不打扰的反馈。 */
      .ai-chat-composer-foot { justify-content: flex-end; }
      .ai-chat-composer-foot #optimizationInstructionCount { margin-right: auto; }
      .ai-chat-composer-foot .optimization-generate-btn { display: inline-grid; place-items: center; width: 42px; min-width: 42px; height: 42px; min-height: 42px; padding: 0; border-radius: 8px; line-height: 1; }
      .ai-chat-composer-foot .optimization-generate-btn svg { margin: 0; }
      .ai-chat-composer-foot .optimization-generate-btn:not(:disabled):hover { transform: translateY(-1px); box-shadow: 0 10px 20px rgba(184, 102, 96, .24); }
      .ai-chat-composer-foot .optimization-generate-btn:focus-visible { outline: 0; box-shadow: 0 0 0 3px rgba(200, 120, 114, .22); }
      .ai-chat-candidate.is-arriving .candidate { animation: aiCandidateArrive .46s cubic-bezier(.18,.84,.28,1) both; }
      .ai-chat-candidate.is-arriving .ai-result-summary { animation: aiResultSummaryGlow 2.5s ease-in-out .32s 2; }
      @keyframes aiCandidateArrive { from { opacity: 0; transform: translateY(8px); } 62% { opacity: 1; transform: translateY(-1px); } to { opacity: 1; transform: translateY(0); } }
      @keyframes aiResultSummaryGlow { 0%,100% { border-color: #dce7ea; box-shadow: 0 0 0 0 rgba(200, 120, 114, 0); } 50% { border-color: #d7aaa4; box-shadow: 0 0 0 4px rgba(200, 120, 114, .12), 0 8px 18px rgba(182, 99, 94, .1); } }
      /* 将发送动作收进输入框，减少聊天面板底部的视觉层级。 */
      .ai-chat-composer { position: relative; }
      .ai-chat-composer textarea { padding: 12px 84px 37px 12px; }
      .ai-chat-composer-foot { position: absolute; right: 24px; bottom: 21px; z-index: 1; display: block; margin: 0; }
      .ai-chat-composer-foot #optimizationInstructionCount { position: absolute; right: 68px; bottom: 8px; margin: 0; color: #a2abb1; line-height: 1; white-space: nowrap; pointer-events: none; }
      .ai-chat-composer-foot .optimization-generate-btn { display: inline-flex; align-items: center; justify-content: center; width: auto; min-width: 56px; height: 29px; min-height: 29px; padding: 0 10px; border-radius: 6px; font-size: 12px; line-height: 1; box-shadow: 0 5px 12px rgba(184, 102, 96, .16); }
      .ai-chat-composer-foot .optimization-generate-btn svg { display: none; }
      .ai-chat-composer-foot .optimization-generate-btn > span { display: none; }
      .ai-chat-composer-foot .optimization-generate-btn::after { content: '发送'; }
      .ai-chat-composer-foot .optimization-generate-btn.is-thinking { min-width: 62px; }
      .ai-chat-composer-foot .optimization-generate-btn.is-thinking::after { content: '思考中'; }
      .ai-chat-composer-foot .optimization-generate-btn:not(:disabled):hover { transform: translateY(-1px); box-shadow: 0 8px 16px rgba(184, 102, 96, .24); }
      .ai-chat-composer-foot .optimization-generate-btn:focus-visible { outline: 0; box-shadow: 0 0 0 3px rgba(200, 120, 114, .22); }
