/* V150 Batch 03: projects, five-stage workbench and shooting-reference selection. */
.v150-workbench-host{width:min(1500px,calc(100% - 40px));max-width:none}
.v150-workbench-frame{display:grid;grid-template-columns:210px minmax(0,1fr);gap:20px;align-items:start}
.v150-workbench-frame.has-context{grid-template-columns:210px minmax(0,1fr) 260px}
.v150-workbench-main{min-width:0;overflow-wrap:anywhere}
.v150-workbench-main .storyboard-workbench-head>div,.v150-workbench-main .storyboard-plan-toolbar>div{min-width:0}
.v150-workbench-main .storyboard-workbench-head span,.v150-workbench-main .storyboard-workbench-head p{overflow-wrap:anywhere;word-break:break-word}
.v150-workbench-frame>.v149-workflow-stage{position:sticky;top:88px;margin:0;padding:14px;border-radius:20px}
.v150-workbench-frame>.v149-workflow-stage>header{display:grid;align-items:start;gap:4px;margin-bottom:13px}
.v150-workbench-frame>.v149-workflow-stage>header small{overflow-wrap:anywhere}
.v150-workbench-frame>.v149-workflow-stage>header button{display:none}
.v150-workbench-frame>.v149-workflow-stage ol{grid-template-columns:1fr;gap:7px}
.v150-workbench-frame>.v149-workflow-stage li>a,.v150-workbench-frame>.v149-workflow-stage li>div{min-height:56px;padding:9px}
.v150-workbench-frame>.v149-workflow-stage li i{width:28px;height:28px;flex-basis:28px;margin-right:8px;font-size:12px}
.v150-workbench-frame .viral-replication-head h1{font-size:clamp(38px,5vw,72px)}
.v150-workbench-frame .viral-stage-layout{grid-template-columns:minmax(0,1.55fr) minmax(270px,.66fr)}
.v150-workbench-frame .viral-stage-layout.prepare>main{grid-template-columns:minmax(250px,.72fr) minmax(390px,1.28fr)}
.v150-workbench-context{position:sticky;top:88px;padding:18px;border:1px solid var(--ui-line,#ddd8ca);border-radius:20px;background:var(--ui-surface,#fffdf8);box-shadow:var(--ui-shadow-sm,0 12px 30px rgba(20,45,36,.07))}
.v150-workbench-context>span,.v150-project-map>header span{color:var(--ui-accent,#075e4d);font-size:12px;font-weight:700;letter-spacing:.14em}
.v150-workbench-context h2{margin:8px 0 15px;font-size:22px}
.v150-workbench-context dl{display:grid;gap:0;margin:0}
.v150-workbench-context dl>div{display:grid;gap:3px;padding:10px 0;border-top:1px solid var(--ui-line,#e5e0d4)}
.v150-workbench-context dt{color:var(--ui-muted,#687670);font-size:12px}
.v150-workbench-context dd{overflow-wrap:anywhere;margin:0;font-size:12px;font-weight:700}
.v150-workbench-context p{margin:14px 0 0;color:var(--ui-muted,#687670);font-size:12px;line-height:1.6}

.v150-project-filters{display:grid;grid-template-columns:minmax(240px,1fr) 220px auto auto auto;align-items:end;gap:10px;margin:0 0 20px;padding:16px;border:1px solid var(--ui-line,#ddd8ca);border-radius:18px;background:var(--ui-surface,#fffdf8)}
.v150-project-filters label{display:grid;gap:6px;color:var(--ui-accent,#075e4d);font-size:12px;font-weight:700}
.v150-project-filters input,.v150-project-filters select{min-width:0;padding:11px 12px;border:1px solid var(--ui-line,#ddd8ca);border-radius:11px;background:#fff;font:inherit}
.v150-project-filters button{padding:11px 14px;border:1px solid var(--ui-line,#ddd8ca);border-radius:11px;background:#fff;color:var(--ui-accent,#075e4d);font-weight:700;cursor:pointer}
.v150-project-filters button[type=submit]{border-color:var(--ui-lime,#b9e769);background:var(--ui-lime,#b9e769);color:#13251f}
.v150-project-filters>span{align-self:center;color:var(--ui-muted,#687670);font-size:12px;white-space:nowrap}
.v150-project-actions{display:flex;align-items:center;gap:14px;margin-top:18px}
.v150-project-actions a{color:var(--ui-accent,#075e4d);font-weight:700;text-decoration:none}
.v150-project-actions a:last-child{color:var(--ui-muted,#687670);font-size:12px}
.v150-project-map{margin-bottom:20px;padding:20px;border:1px solid var(--ui-accent,#075e4d);border-radius:22px;background:#f7faef}
.v150-project-map>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.v150-project-map h2{margin:6px 0 0}
.v150-project-map>header>a{color:var(--ui-accent,#075e4d);font-weight:700;text-decoration:none}
.v150-project-boundary{overflow-wrap:anywhere;margin:14px 0;padding:11px 13px;border-radius:12px;background:#edf3e7;color:var(--ui-accent,#075e4d);font-size:13px;line-height:1.6}
.v150-project-map ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.v150-project-map li{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px;border:1px solid var(--ui-line,#ddd8ca);border-radius:13px;background:#fff}
.v150-project-map li i{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--ui-lime,#b9e769);font-size:12px;font-style:normal;font-weight:700}
.v150-project-map li div{display:grid;gap:2px;min-width:0}.v150-project-map li code{overflow:hidden;overflow-wrap:anywhere;text-overflow:ellipsis;word-break:break-all}.v150-project-map li small{color:var(--ui-muted,#687670)}
.v150-project-map li>a{color:var(--ui-accent,#075e4d);font-size:12px;font-weight:700;text-decoration:none}.v150-project-map li>span{color:var(--ui-muted,#687670);font-size:12px}
.v150-project-map li.empty{display:grid;grid-template-columns:1fr}.v150-project-filter-empty{padding:28px;border:1px dashed var(--ui-line,#ddd8ca);border-radius:18px;text-align:center}
.v150-completion-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.v150-completion-summary article{display:grid;gap:7px;padding:18px;border:1px solid var(--ui-line,#ddd8ca);border-radius:17px;background:var(--ui-surface,#fffdf8)}.v150-completion-summary article span{color:var(--ui-accent,#075e4d);font-size:12px;font-weight:700}.v150-completion-summary article b{overflow-wrap:anywhere}.v150-completion-summary article small{color:var(--ui-muted,#687670)}

.storyboard-selection-mode{display:flex;align-items:center;gap:14px;margin:0 0 18px;padding:14px 16px;border:1px solid var(--ui-lime,#b9e769);border-radius:16px;background:#f2f9e9}.storyboard-selection-mode b{color:var(--ui-accent,#075e4d)}.storyboard-selection-mode span{flex:1;color:var(--ui-muted,#687670);font-size:13px}.storyboard-selection-mode a{color:var(--ui-accent,#075e4d);font-size:12px;font-weight:700;text-decoration:none}
.storyboard-select-reference{width:100%;margin-top:14px;padding:12px;border:1px solid var(--ui-lime,#b9e769);border-radius:11px;background:var(--ui-lime,#b9e769);color:#13251f;font-weight:700;cursor:pointer}
.storyboard-plan-shot-actions a{padding:9px 11px;border:1px solid var(--ui-lime,#b9e769);border-radius:10px;background:#f2f9e9;color:var(--ui-accent,#075e4d);font-weight:700;text-decoration:none}
.storyboard-plan-shot:target{border-color:var(--ui-lime,#b9e769);box-shadow:0 0 0 4px rgba(185,231,105,.28),0 18px 44px rgba(20,45,36,.07)}

@media(max-width:1279px){
  .v150-workbench-host{width:min(100% - 28px,1180px)}
  .v150-workbench-frame,.v150-workbench-frame.has-context{grid-template-columns:72px minmax(0,1fr)}
  .v150-workbench-frame>.v149-workflow-stage{padding:9px}
  .v150-workbench-frame>.v149-workflow-stage>header div,.v150-workbench-frame>.v149-workflow-stage>header>small,.v150-workbench-frame>.v149-workflow-stage li span{display:none}
  .v150-workbench-frame>.v149-workflow-stage li>a,.v150-workbench-frame>.v149-workflow-stage li>div{justify-content:center;padding:8px}.v150-workbench-frame>.v149-workflow-stage li i{margin:0}
  .v150-workbench-context{display:none}
  .v150-workbench-frame.has-context .v150-workbench-main{grid-column:2}
  .v150-workbench-frame .viral-stage-layout,.v150-workbench-frame .viral-stage-layout.prepare{grid-template-columns:1fr}
}
@media(max-width:700px){
  .v150-workbench-host{width:100%}
  .v150-workbench-frame,.v150-workbench-frame.has-context{display:block}
  .v150-workbench-frame>.v149-workflow-stage{position:relative;top:auto;margin:0 14px 14px;padding:12px}
  .v150-workbench-frame>.v149-workflow-stage>header{display:flex;align-items:center;margin:0}.v150-workbench-frame>.v149-workflow-stage>header div{display:grid}.v150-workbench-frame>.v149-workflow-stage>header>small{display:none}.v150-workbench-frame>.v149-workflow-stage>header button{display:block;margin-left:auto;padding:8px 10px;border:1px solid var(--ui-line,#ddd8ca);border-radius:9px;background:#fff;color:var(--ui-accent,#075e4d);font-weight:700}
  .v150-workbench-frame>.v149-workflow-stage ol{display:none;margin-top:12px}.v150-workbench-frame>.v149-workflow-stage.is-open ol{display:grid}.v150-workbench-frame>.v149-workflow-stage li span{display:grid}.v150-workbench-frame>.v149-workflow-stage li>a,.v150-workbench-frame>.v149-workflow-stage li>div{justify-content:flex-start}.v150-workbench-frame>.v149-workflow-stage li i{margin-right:8px}
  .v150-workbench-main{min-width:0;overflow:hidden}.v150-workbench-main .storyboard-workbench-head,.v150-workbench-main .storyboard-plan-toolbar,.v150-workbench-main .storyboard-plan-notice{max-width:100%}
  .v149-project-page{min-width:0;overflow:hidden}.v149-project-page .v149-project-head p{overflow-wrap:anywhere}
  .v150-project-filters,.v150-completion-summary{grid-template-columns:1fr}.v150-project-filters>span{justify-self:start}.v150-project-actions{align-items:flex-start;flex-direction:column;gap:8px}
  .v150-project-map li{grid-template-columns:34px minmax(0,1fr)}.v150-project-map li>a,.v150-project-map li>span{grid-column:2}
  .storyboard-selection-mode{align-items:flex-start;flex-direction:column}.storyboard-selection-mode a{align-self:stretch;padding:9px;border:1px solid var(--ui-line,#ddd8ca);border-radius:9px;text-align:center}
}
@media(prefers-reduced-motion:reduce){.storyboard-plan-shot:target{scroll-behavior:auto}}

/* V157 UI-03 approved workflow-navigation master. */
.v157-workflow-rail{max-height:min(720px,calc(100vh - 170px));overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.v157-workflow-rail::-webkit-scrollbar{width:5px}.v157-workflow-rail::-webkit-scrollbar-thumb{border-radius:999px;background:#b8c9b1}.v157-workflow-rail>header{align-items:start}.v157-workflow-rail>header small{overflow-wrap:anywhere;word-break:break-word}.v157-workflow-rail>ol{display:grid!important;grid-template-columns:1fr!important;gap:0!important}.v157-workflow-group{position:relative;display:grid!important;min-height:67px}.v157-workflow-group>.v157-workflow-stage-head{display:grid!important;grid-template-columns:28px minmax(0,1fr) 40px;align-items:start;min-height:58px;padding:8px!important;border:0!important;background:transparent!important}.v157-workflow-stage-head>i{width:26px!important;height:26px!important;flex-basis:26px!important;margin:0 8px 0 0!important}.v157-workflow-stage-head>span{display:grid!important;gap:2px}.v157-workflow-stage-head>button{display:grid;width:40px;height:40px;place-items:center;border:0;border-radius:8px;background:transparent;color:#0b5d4b;font:inherit;cursor:pointer}.v157-workflow-group>ul,.v157-workflow-node>ul{display:grid;gap:5px;margin:0 0 8px 36px;padding:0;list-style:none}.v157-workflow-group.is-collapsed>ul{display:none}.v157-workflow-node{min-height:40px}.v157-workflow-node>a,.v157-workflow-node>button,.v157-workflow-node>div{display:grid!important;min-height:40px!important;align-content:center!important;gap:2px!important;width:100%;border:1px solid #dfe7da!important;border-radius:9px!important;background:#fff!important;color:#20352c!important;padding:6px 8px!important;text-align:left;text-decoration:none;font:inherit;cursor:pointer}.v157-workflow-node span{display:grid!important;min-width:0}.v157-workflow-node b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.v157-workflow-node small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#718078;font-size:10px}.v157-workflow-node.is-current>a,.v157-workflow-node.is-current>button{border-color:#8fc94c!important;background:#eff8e5!important;box-shadow:inset 3px 0 #79b13d}.v157-workflow-node.is-failed>a,.v157-workflow-node.is-failed>button,.v157-workflow-node.is-failed>div{border-color:#e39a90!important;background:#fff2ef!important}
@media(min-width:1200px){.v154-topic-workspace{grid-template-columns:250px minmax(360px,.9fr) minmax(450px,1.1fr) 226px}.v154-topic-workspace.v154-viral-layout{grid-template-columns:250px minmax(360px,1.05fr) minmax(400px,1fr) 250px}.v154-viral-layout{grid-template-columns:250px minmax(0,1fr) 250px}}
@media(min-width:768px) and (max-width:1199px){.v157-workflow-rail{max-height:min(680px,calc(100vh - 150px))}.v150-workbench-frame,.v150-workbench-frame.has-context{grid-template-columns:220px minmax(0,1fr)}.v150-workbench-frame>.v149-workflow-stage>header div,.v150-workbench-frame>.v149-workflow-stage>header>small,.v150-workbench-frame>.v149-workflow-stage li span{display:grid}.v150-workbench-frame>.v149-workflow-stage{padding:10px}.v154-topic-workspace,.v154-topic-workspace.v154-viral-layout,.v154-viral-layout{grid-template-columns:220px minmax(0,1fr)}.v154-topic-input,.v154-topic-output,.v154-topic-summary{grid-column:2}.v154-topic-summary,.v154-viral-context{grid-column:2}}
@media(max-width:767px){.v157-workflow-rail{max-height:none;overflow:visible}.v157-workflow-rail>header button{display:block}.v157-workflow-rail>ol{display:none!important}.v157-workflow-rail.is-open>ol{display:grid!important}.v157-workflow-group>ul,.v157-workflow-node>ul{margin-left:34px}.v157-workflow-node{min-height:44px}.v157-workflow-node>a,.v157-workflow-node>button,.v157-workflow-node>div{min-height:44px!important}.v154-topic-workspace,.v154-topic-workspace.v154-viral-layout,.v154-viral-layout{grid-template-columns:1fr}.v154-topic-input,.v154-topic-output,.v154-topic-summary,.v154-viral-context{grid-column:1}.v157-workflow-node b,.v157-workflow-node small{overflow-wrap:anywhere;text-overflow:clip;white-space:normal}}

/* V158 UI-01 approved workflow master for brainstorm, parser, reference copy and replication shells. */
.v154-viral-reference-page .ui01-workflow{box-sizing:border-box;position:sticky;top:88px;min-width:0;max-height:none!important;overflow:visible!important;margin:0;padding:14px;border:1px solid #dce4da;border-radius:14px;background:rgba(255,255,255,.88);box-shadow:0 10px 26px rgba(25,45,36,.05)}
.v154-viral-reference-page .ui01-workflow>header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:5px 8px;margin:0;padding:0 0 12px;border-bottom:1px solid #e7ece5}
.v154-viral-reference-page .ui01-workflow>header>div{display:grid;gap:3px;min-width:0}
.v154-viral-reference-page .ui01-workflow>header span{color:#0b5d4b;font-size:11px;font-weight:800;letter-spacing:.12em}
.v154-viral-reference-page .ui01-workflow>header b{font-size:17px;line-height:1.45}
.v154-viral-reference-page .ui01-workflow>header>small{display:block;grid-column:1/-1;max-width:100%;overflow:hidden;color:#73827b;font-size:11px;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:normal;word-break:normal}
.v154-viral-reference-page .ui01-workflow>header>button{display:none;min-width:88px;height:38px;border:1px solid #b9c8bb;border-radius:8px;background:#fff;color:#0b5d4b;font-weight:700}
.v154-viral-reference-page .ui01-workflow>ol{display:grid!important;grid-template-columns:1fr!important;gap:0!important;margin:12px 0 0;padding:0;list-style:none}
.v154-viral-reference-page .ui01-workflow .workflow-group{position:relative;display:grid!important;min-height:72px}
.v154-viral-reference-page .ui01-workflow .workflow-group:not(:last-child)::before{position:absolute;z-index:0;top:26px;bottom:-4px;left:15px;width:2px;border-radius:99px;background:#dfe5dd;content:""}
.v154-viral-reference-page .ui01-workflow .workflow-group.is-completed:not(:last-child)::before,.v154-viral-reference-page .ui01-workflow .workflow-group.is-current:not(:last-child)::before{background:#8fc94c}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head{position:relative;z-index:1;display:grid!important;grid-template-columns:32px minmax(0,1fr) 38px!important;align-items:start;min-height:60px;padding:7px 0!important;border:0!important;background:transparent!important}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head>i{display:grid;width:30px!important;height:30px!important;flex-basis:30px!important;margin:0!important;place-items:center;border:2px solid #e1e6e0;border-radius:50%;background:#fff;color:#819089;font-size:11px;font-style:normal;font-weight:800}
.v154-viral-reference-page .ui01-workflow .workflow-group.is-completed .workflow-stage-head>i{border-color:#8fc94c;background:#8fc94c;color:#12321f}
.v154-viral-reference-page .ui01-workflow .workflow-group.is-current .workflow-stage-head>i{border-color:#9be343;background:#eff9e2;color:#315d24;box-shadow:0 0 0 4px rgba(155,227,67,.2)}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head>span{display:grid!important;gap:3px;min-width:0;padding:2px 7px 0 10px}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head>span>b{font-size:14px;line-height:1.5;white-space:normal;word-break:keep-all;writing-mode:horizontal-tb}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head>span>small{color:#74827c;font-size:11px}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head>button{display:grid;width:38px;height:38px;place-items:center;border:0;border-radius:8px;background:transparent;color:#0b5d4b;font-size:15px;cursor:pointer}
.v154-viral-reference-page .ui01-workflow .workflow-stage-head>button:hover,.v154-viral-reference-page .ui01-workflow .workflow-stage-head>button:focus-visible{background:#edf4ea;outline:2px solid rgba(11,93,75,.16)}
.v154-viral-reference-page .ui01-workflow .workflow-group>ul{display:grid;gap:6px;margin:0 0 10px 42px;padding:0;list-style:none}
.v154-viral-reference-page .ui01-workflow .workflow-group.is-collapsed>ul{display:none}
.v154-viral-reference-page .ui01-workflow .workflow-node{min-height:44px}
.v154-viral-reference-page .ui01-workflow .workflow-node>a,.v154-viral-reference-page .ui01-workflow .workflow-node>button,.v154-viral-reference-page .ui01-workflow .workflow-node>div{display:grid!important;width:100%;min-height:44px!important;align-content:center!important;box-sizing:border-box;border:1px solid #dfe7da!important;border-radius:9px!important;background:#fff!important;color:#20352c!important;padding:7px 9px!important;text-align:left;text-decoration:none;font:inherit;cursor:pointer}
.v154-viral-reference-page .ui01-workflow .workflow-node>a:hover,.v154-viral-reference-page .ui01-workflow .workflow-node>a:focus-visible,.v154-viral-reference-page .ui01-workflow .workflow-node>button:hover,.v154-viral-reference-page .ui01-workflow .workflow-node>button:focus-visible{border-color:#84bd49!important;outline:2px solid rgba(132,189,73,.16)}
.v154-viral-reference-page .ui01-workflow .workflow-node span{display:grid!important;gap:2px;min-width:0}
.v154-viral-reference-page .ui01-workflow .workflow-node b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.v154-viral-reference-page .ui01-workflow .workflow-node small{overflow:hidden;color:#718078;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.v154-viral-reference-page .ui01-workflow .workflow-node.is-completed>a,.v154-viral-reference-page .ui01-workflow .workflow-node.is-completed>button,.v154-viral-reference-page .ui01-workflow .workflow-node.is-completed>div{background:#f5f9ef!important}
.v154-viral-reference-page .ui01-workflow .workflow-node.is-current>a,.v154-viral-reference-page .ui01-workflow .workflow-node.is-current>button{border-color:#8fc94c!important;background:#eff8e5!important;box-shadow:inset 3px 0 #79b13d}
.v154-viral-reference-page .ui01-workflow .workflow-node.is-failed>a,.v154-viral-reference-page .ui01-workflow .workflow-node.is-failed>button,.v154-viral-reference-page .ui01-workflow .workflow-node.is-failed>div{border-color:#e39a90!important;background:#fff2ef!important}
.v154-viral-reference-page .ui01-workflow .workflow-node.is-failed b::after{margin-left:6px;color:#b8453c;content:"失败";font-size:10px}
@media(min-width:768px) and (max-width:1199.98px){.v154-viral-reference-page .v154-topic-workspace,.v154-viral-reference-page .v154-topic-workspace.v154-viral-layout,.v154-viral-reference-page .v154-viral-layout{grid-template-columns:220px minmax(0,1fr)}.v154-viral-reference-page .ui01-workflow{grid-row:1/span 4;width:auto}.v154-viral-reference-page .v154-topic-input,.v154-viral-reference-page .v154-topic-output,.v154-viral-reference-page .v154-topic-summary,.v154-viral-reference-page .v154-viral-context{grid-column:2}.v154-viral-reference-page .ui01-workflow .workflow-stage-head>span{display:grid!important}}
@media(max-width:767px){.v154-viral-reference-page .ui01-workflow{position:static;grid-column:1;grid-row:auto;width:auto;padding:12px}.v154-viral-reference-page .ui01-workflow>header{grid-template-columns:minmax(0,1fr) auto;align-items:center;border:0;padding:0}.v154-viral-reference-page .ui01-workflow>header>small{display:none}.v154-viral-reference-page .ui01-workflow>header>button{display:block}.v154-viral-reference-page .ui01-workflow>ol{display:none!important;margin-top:13px;border-top:1px solid #e7ece5;padding-top:8px}.v154-viral-reference-page .ui01-workflow.is-open>ol{display:grid!important}.v154-viral-reference-page .ui01-workflow .workflow-stage-head>span>b{font-size:15px}.v154-viral-reference-page .ui01-workflow .workflow-node>a,.v154-viral-reference-page .ui01-workflow .workflow-node>button,.v154-viral-reference-page .ui01-workflow .workflow-node>div{min-height:46px!important}.v154-viral-reference-page .ui01-workflow .workflow-node b,.v154-viral-reference-page .ui01-workflow .workflow-node small{overflow-wrap:anywhere;text-overflow:clip;white-space:normal}}
@media(prefers-reduced-motion:reduce){.v154-viral-reference-page .ui01-workflow .workflow-stage-head>button{transition:none}}
