:root{--background:#f6f8fb;--foreground:#111827;--muted:#64748b;--muted-strong:#475569;--surface:#fff;--surface-soft:#f8fafc;--border:#dce3ec;--border-strong:#c6d1dd;--primary:#155ba8;--primary-strong:#0f4077;--primary-soft:#e7f0fb;--teal:#0f766e;--teal-soft:#e6f5f3;--amber:#a16207;--amber-soft:#fff4d6;--slate:#334155;--slate-soft:#edf2f7;--success:#177245;--success-soft:#e7f6ed;--warning:#9a5b00;--warning-soft:#fff3d8;--danger:#b42318;--danger-soft:#fde8e7;--shadow:0 18px 50px #0f172a14;--radius:8px;--container:1180px}*{box-sizing:border-box}html{background:var(--background);min-height:100%}body{background:linear-gradient(180deg, #fff 0, #f6f8fb 360px), var(--background);min-height:100%;color:var(--foreground);letter-spacing:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;letter-spacing:0}.app-shell{min-height:100vh}.topbar{z-index:10;height:72px;padding:0 max(24px, calc((100vw - var(--container)) / 2));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffeb;border-bottom:1px solid #dce3ecd1;justify-content:space-between;align-items:center;gap:24px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;min-width:0;display:inline-flex}.brand-mark{border-radius:var(--radius);background:var(--primary);color:#fff;place-items:center;width:38px;height:38px;font-size:18px;font-weight:800;display:grid}.brand strong,.brand small{line-height:1.1;display:block}.brand strong{font-size:15px}.brand small{color:var(--muted);margin-top:4px;font-size:12px}.topbar-status{color:var(--muted-strong);white-space:nowrap;align-items:center;gap:8px;font-size:13px;display:inline-flex}.status-dot{background:var(--success);width:9px;height:9px;box-shadow:0 0 0 4px var(--success-soft);border-radius:999px}.page-frame{width:min(var(--container), calc(100vw - 48px));margin:0 auto;padding:34px 0 56px}.dashboard-hero{grid-template-columns:minmax(0,1fr);align-items:end;gap:32px;margin-bottom:28px;display:grid}.section-kicker{color:var(--muted-strong);align-items:center;gap:8px;margin-bottom:18px;font-size:13px;font-weight:700;display:inline-flex}.section-kicker svg,.panel-heading svg,.system-card-title svg,.security-note svg{width:18px;height:18px}.dashboard-hero h1,.workflow-title h1{color:#0f172a;max-width:780px;margin:0;font-size:42px;font-weight:760;line-height:1.14}.dashboard-hero p,.workflow-title p{max-width:720px;color:var(--muted);margin:14px 0 0;font-size:17px;line-height:1.72}.system-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:20px}.system-card-title{color:var(--primary-strong);align-items:center;gap:10px;font-size:15px;font-weight:760;display:flex}.system-card ul{color:var(--muted-strong);gap:10px;margin:14px 0 0;padding-left:18px;font-size:14px;line-height:1.55;display:grid}.workflow-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.workflow-card{outline:none;display:block}.workflow-card .card{height:100%;transition:transform .18s,border-color .18s,box-shadow .18s}.workflow-card:hover .card,.workflow-card:focus-visible .card{border-color:var(--border-strong);transform:translateY(-3px);box-shadow:0 22px 60px #0f172a1f}.workflow-card-disabled{cursor:default}.workflow-card-disabled .card{background:linear-gradient(135deg,#f8fafceb,#fffffffa),#fff;position:relative;overflow:hidden}.workflow-card-disabled .card:after{background:linear-gradient(90deg, transparent 0, var(--warning) 45%, transparent 100%);content:"";height:3px;animation:1.8s ease-in-out infinite construction-scan;position:absolute;inset:auto 0 0}.workflow-card-disabled:hover .card{border-color:var(--border);transform:none;box-shadow:0 1px 2px #0f172a0a}.workflow-card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.workflow-card-blue .icon-box{background:var(--primary-soft);color:var(--primary)}.workflow-card-teal .icon-box{background:var(--teal-soft);color:var(--teal)}.workflow-card-amber .icon-box{background:var(--amber-soft);color:var(--amber)}.workflow-card-slate .icon-box{background:var(--slate-soft);color:var(--slate)}.icon-box{border-radius:var(--radius);place-items:center;width:42px;height:42px;display:grid}.icon-box svg{width:21px;height:21px}.card-link{color:var(--primary);align-items:center;gap:8px;font-size:14px;font-weight:760;display:inline-flex}.card-link svg{width:16px;height:16px}.construction-link{color:var(--warning);align-items:center;gap:8px;font-size:14px;font-weight:760;display:inline-flex}.construction-link svg{width:16px;height:16px}.construction-dots{gap:4px;display:inline-flex}.construction-dots span{background:currentColor;border-radius:999px;width:4px;height:4px;animation:1.2s ease-in-out infinite construction-dot}.construction-dots span:nth-child(2){animation-delay:.14s}.construction-dots span:nth-child(3){animation-delay:.28s}.dashboard-lower{grid-template-columns:minmax(0,1fr);gap:16px;margin-top:16px;display:grid}.panel-heading{align-items:center;gap:10px;display:flex}.ops-note-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.ops-note-grid span{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);color:var(--muted-strong);padding:12px;font-size:13px;font-weight:700}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:0 1px 2px #0f172a0a}.card-header{padding:20px 20px 0}.card-title{color:#0f172a;margin:0;font-size:17px;font-weight:760;line-height:1.35}.card-description{color:var(--muted);margin:8px 0 0;font-size:13px;line-height:1.6}.card-content{padding:20px}.card-footer{padding:0 20px 20px}.badge{white-space:nowrap;border-radius:999px;align-items:center;width:fit-content;min-height:26px;padding:4px 10px;font-size:12px;font-weight:760;line-height:1.1;display:inline-flex}.badge-neutral{background:var(--slate-soft);color:var(--slate)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-outline{border:1px solid var(--border);color:var(--muted-strong);background:#fff}.button{border-radius:var(--radius);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 14px;font-size:14px;font-weight:760;line-height:1;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.button:disabled{cursor:not-allowed;opacity:.56}.button:not(:disabled):active{transform:translateY(1px)}.button svg{width:16px;height:16px}.button-primary{background:var(--primary);color:#fff}.button-primary:hover:not(:disabled){background:var(--primary-strong)}.button-secondary{border-color:var(--border);color:var(--foreground);background:#fff}.button-secondary:hover:not(:disabled),.button-ghost:hover:not(:disabled){background:var(--surface-soft)}.button-ghost{color:var(--muted-strong);background:0 0}.button-danger{background:var(--danger);color:#fff}.button-sm{min-height:34px;padding:0 11px;font-size:13px}.button-icon{width:40px;padding:0}.field-group{flex-direction:column;gap:18px;display:flex}.field{flex-direction:column;gap:8px;display:flex}.field-label{color:#1e293b;font-size:13px;font-weight:760}.field-description{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.required-mark{color:var(--danger);margin-left:4px}.input,.select,.textarea{border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;color:var(--foreground);background:#fff;outline:none;font-size:14px;transition:border-color .16s,box-shadow .16s}.input,.select{height:42px;padding:0 12px}.textarea{resize:vertical;min-height:120px;padding:12px;line-height:1.65}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #155ba821}.back-row{margin-bottom:18px}.back-link{color:var(--muted-strong);align-items:center;gap:8px;font-size:14px;font-weight:760;display:inline-flex}.back-link svg{width:16px;height:16px}.workflow-title{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) 340px;align-items:end;gap:28px;margin-bottom:22px;padding-bottom:22px;display:grid}.workflow-title .badge{margin-bottom:14px}.security-note{border:1px solid var(--border);border-radius:var(--radius);color:var(--muted-strong);background:#fff;align-items:flex-start;gap:10px;padding:14px;font-size:13px;line-height:1.55;display:flex}.security-note svg{color:var(--success);flex:none}.ppt-primary-action-panel{border:1px solid color-mix(in srgb, var(--amber) 28%, var(--border));border-radius:var(--radius);background:linear-gradient(#fffaf0 0%,#fff 92%);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;margin:-4px 0 22px;padding:18px;display:grid;box-shadow:0 14px 38px #a1620717}.ppt-primary-action-panel h2{color:#0f172a;margin:8px 0 0;font-size:21px;font-weight:800;line-height:1.28}.ppt-primary-action-panel p{max-width:760px;color:var(--muted-strong);margin:8px 0 0;font-size:13px;line-height:1.65}.ppt-primary-action-panel .button{min-width:190px;min-height:46px}.workflow-pack-download-panel{border:1px solid var(--border);border-radius:var(--radius);background:#fff;align-items:center;gap:14px;margin:-4px 0 22px;padding:14px;display:flex}.workflow-pack-download-panel p{color:var(--muted-strong);margin:0;font-size:13px;line-height:1.55}.workflow-pack-download-button{white-space:nowrap;flex:none}.ppt-feishu-entry-panel{border:1px solid var(--border);border-radius:var(--radius);background:#fff;grid-template-columns:minmax(0,1fr) 168px;align-items:center;gap:18px;margin:-6px 0 22px;padding:16px;display:grid;box-shadow:0 1px 2px #0f172a0a}.ppt-feishu-entry-copy{flex-direction:column;align-items:flex-start;gap:10px;min-width:0;display:flex}.ppt-feishu-entry-copy h2{color:#0f172a;margin:0;font-size:18px;font-weight:760;line-height:1.35}.ppt-feishu-entry-copy p{max-width:680px;color:var(--muted);margin:0;font-size:13px;line-height:1.6}.ppt-feishu-qr{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);justify-items:center;gap:8px;padding:10px;display:grid}.ppt-feishu-qr img{background:#fff;border-radius:4px;width:118px;height:118px}.ppt-feishu-qr span{max-width:148px;color:var(--muted);text-align:center;word-break:break-all;font-size:11px;line-height:1.35}.workflow-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:18px;display:grid}.workflow-main,.workflow-side{flex-direction:column;gap:16px;display:flex}.workflow-side{position:sticky;top:92px}.resource-list{flex-direction:column;gap:10px;display:flex}.resource-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);cursor:pointer;grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:12px;padding:13px;display:grid}.resource-row:hover{border-color:var(--border-strong);background:#fff}.resource-checkbox{width:16px;height:16px;accent-color:var(--primary);margin:2px 0 0}.resource-content{flex-direction:column;gap:4px;min-width:0;display:flex}.resource-content strong{color:#1e293b;font-size:14px;line-height:1.35}.resource-content small,.resource-row time{color:var(--muted);font-size:12px;line-height:1.45}.placeholder-uploader{border:1px dashed var(--border-strong);border-radius:var(--radius);background:#fff;gap:12px;margin-top:12px;padding:14px;display:flex}.placeholder-uploader svg{width:22px;height:22px;color:var(--primary)}.placeholder-uploader strong{color:#1e293b;font-size:14px}.placeholder-uploader p{color:var(--muted);margin:5px 0 0;font-size:13px;line-height:1.55}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ppt-upload-panel{border:1px dashed color-mix(in srgb, var(--primary) 42%, var(--border));border-radius:var(--radius);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-top:12px;padding:14px;display:grid}.ppt-upload-copy{align-items:flex-start;gap:12px;min-width:0;display:flex}.ppt-upload-copy svg{width:22px;height:22px;color:var(--primary);flex:none}.ppt-upload-copy strong{color:#1e293b;font-size:14px;line-height:1.35}.ppt-upload-copy p{color:var(--muted);margin:5px 0 0;font-size:13px;line-height:1.55}.ppt-upload-button{cursor:pointer;white-space:nowrap}.ppt-upload-button.is-disabled{pointer-events:none;opacity:.65}.upload-status{color:var(--primary-strong);grid-column:1/-1;margin:0;font-size:13px;font-weight:700}.action-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.form-error{color:var(--danger);margin:0;font-size:13px;font-weight:700}.output-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.review-actions{flex-wrap:wrap;gap:10px;margin-bottom:14px;display:flex}.ppt-output-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.ppt-output-entry{border:1px solid var(--border);border-radius:var(--radius);background:#fff;justify-content:space-between;align-items:center;gap:14px;min-height:78px;padding:16px;transition:border-color .16s,background-color .16s,transform .16s;display:flex}.ppt-output-entry:hover{border-color:var(--border-strong);background:var(--surface-soft);transform:translateY(-1px)}.ppt-output-entry span{flex-direction:column;gap:5px;min-width:0;display:flex}.ppt-output-entry strong{color:#0f172a;font-size:16px;font-weight:800;line-height:1.25}.ppt-output-entry small{color:var(--muted);font-size:12px;font-weight:700}.ppt-output-entry svg{width:21px;height:21px;color:var(--primary);flex:none}.ppt-output-entry-html{border-color:color-mix(in srgb, var(--primary) 24%, var(--border))}.ppt-output-entry-pptx{border-color:color-mix(in srgb, var(--amber) 28%, var(--border))}.markdown-output{border:1px solid var(--border);border-radius:var(--radius);color:#e5eef9;white-space:pre-wrap;background:#0f172a;max-height:520px;margin:0;padding:18px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.72;overflow:auto}.empty-output{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface-soft);min-height:210px;color:var(--muted);text-align:center;place-items:center;padding:24px;display:grid}.empty-output svg{width:28px;height:28px;color:var(--primary);margin-bottom:10px}.empty-output p,.empty-text{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.status-readout{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);padding:14px}.status-readout p{color:var(--muted);word-break:break-word;margin:9px 0 0;font-size:13px;line-height:1.55}.status-badge{border-radius:999px;padding:5px 10px;font-size:12px;font-weight:760;display:inline-flex}.status-idle{background:var(--slate-soft);color:var(--slate)}.status-queued,.status-running{background:var(--warning-soft);color:var(--warning)}.status-completed{background:var(--success-soft);color:var(--success)}.status-failed{background:var(--danger-soft);color:var(--danger)}.status-steps{gap:8px;margin-top:12px;display:grid}.status-step{border-left:3px solid var(--border);color:var(--muted);padding:8px 10px;font-size:13px;font-weight:700}.status-step-active{border-left-color:var(--primary);background:var(--primary-soft);color:var(--primary-strong)}.selected-files{flex-wrap:wrap;gap:8px;display:flex}.selected-files span{border:1px solid var(--border);color:var(--muted-strong);background:#fff;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700}.artifact-list{gap:8px;margin:12px 0;display:grid}.artifact-row{border:1px solid var(--border);border-radius:var(--radius);background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.artifact-row span{flex-direction:column;gap:3px;min-width:0;display:flex}.artifact-row strong,.artifact-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.artifact-row strong{color:#1e293b;font-size:13px}.artifact-row small,.artifact-row a{color:var(--muted);font-size:12px;font-weight:700}.history-list{flex-direction:column;gap:8px;display:flex}.history-list.compact{max-height:390px;overflow:auto}.history-row{border:1px solid var(--border);border-radius:var(--radius);width:100%;color:inherit;text-align:left;background:#fff;justify-content:space-between;align-items:center;gap:14px;padding:12px;display:flex}.history-row:hover{border-color:var(--border-strong);background:var(--surface-soft)}.history-row span{flex-direction:column;gap:4px;min-width:0;display:flex}.history-row strong,.history-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.history-row strong{color:#1e293b;font-size:13px}.history-row small,.history-row time{color:var(--muted);font-size:12px}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes construction-scan{0%,to{transform:translate(-55%)}50%{transform:translate(55%)}}@keyframes construction-dot{0%,80%,to{opacity:.32;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (max-width:1040px){.workflow-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero,.dashboard-lower,.workflow-title,.workflow-layout{grid-template-columns:1fr}.workflow-side{position:static}}@media (max-width:680px){.topbar{align-items:flex-start;height:auto;padding:14px 16px}.topbar-status{display:none}.page-frame{width:min(100% - 28px, var(--container));padding-top:24px}.dashboard-hero h1,.workflow-title h1{font-size:30px}.dashboard-hero p,.workflow-title p{font-size:15px}.workflow-grid{grid-template-columns:1fr}.resource-row{grid-template-columns:18px minmax(0,1fr)}.resource-row time{grid-column:2}.output-head,.history-row,.ppt-primary-action-panel,.ppt-upload-panel,.workflow-pack-download-panel,.ppt-feishu-entry-panel{flex-direction:column;align-items:flex-start}.ppt-primary-action-panel,.ppt-upload-panel,.ppt-feishu-entry-panel{display:flex}.ppt-feishu-qr{width:100%}.action-bar,.review-actions,.ppt-output-entry-grid{flex-direction:column;grid-template-columns:1fr;align-items:stretch}.button{width:100%}.ops-note-grid{grid-template-columns:1fr}}
