@property --kb-count {
      syntax: "<integer>";
      initial-value: 0;
      inherits: false;
    }

@counter-style kb-pad {
      system: numeric;
      symbols: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9";
      pad: 3 "0";
    }

.factory-ui {
      --paper: #e9ece6;
      --paper-2: #f2f3ef;
      --ink: #19211d;
      --muted: #68716b;
      --line: #bcc5be;
      --violet: #75658c;
      --green: #517b69;
      --orange: #cc654f;
      --gold: #a7833f;
    }

.factory-ui * { box-sizing: border-box; }

.factory-ui,
.factory-ui { margin: 0; min-height: 100%; }

.factory-ui {
      background: var(--paper);
      color: var(--ink);
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
    }

.factory-ui button { font: inherit; color: inherit; }

.factory-ui .app {
      min-height: 100vh;
      padding: 24px clamp(16px, 4vw, 64px) 34px;
      display: grid;
      grid-template-rows: auto 1fr auto;
      gap: 18px;
    }

.factory-ui .masthead {
      display: grid;
      grid-template-columns: minmax(0, 1fr) minmax(280px, 470px);
      gap: clamp(24px, 6vw, 90px);
      align-items: end;
    }

.factory-ui .eyebrow,
.factory-ui .window-lens,
.factory-ui .window-contract,
.factory-ui .mini-label,
.factory-ui .runtime-label,
.factory-ui .seam-label,
.factory-ui .tour-count {
      margin: 0;
      color: var(--muted);
      font-size: 9px;
      font-weight: 800;
      letter-spacing: .13em;
      text-transform: uppercase;
    }

.factory-ui .eyebrow::before {
      content: "";
      display: inline-block;
      width: 25px;
      height: 1px;
      margin: 0 10px 3px 0;
      background: currentColor;
    }

.factory-ui h1 {
      margin: 9px 0 0;
      font-family: Georgia, "Times New Roman", serif;
      font-size: clamp(42px, 6vw, 80px);
      font-weight: 400;
      line-height: .96;
      letter-spacing: -.035em;
    }

.factory-ui .intro {
      margin: 0 0 6px;
      padding-left: 22px;
      border-left: 1px solid var(--ink);
      color: var(--muted);
      font-size: 14px;
      line-height: 1.6;
    }

.factory-ui .factory-map {
      position: relative;
      z-index: 1;
      width: 100%;
      min-width: 0;
      padding: 8px 0 4px 18px;
      border-left: 2px solid var(--violet);
      align-self: end;
    }

.factory-ui .factory-map-head {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 20px;
      margin-bottom: 2px;
    }

.factory-ui .factory-map-label,
.factory-ui .factory-map-count,
.factory-ui .factory-task-index {
      margin: 0;
      color: var(--muted);
      font-size: 8px;
      font-weight: 900;
      letter-spacing: .13em;
      text-transform: uppercase;
    }

.factory-ui .factory-map-count {
      color: var(--ink);
      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
    }

.factory-ui .factory-map-scroll {
      overflow: hidden;
    }

.factory-ui [data-factory-graph] {
      display: block;
      width: 100%;
      min-width: 0;
      height: auto;
      aspect-ratio: 940 / 146;
      overflow: visible;
    }

.factory-ui .factory-edge {
      fill: none;
      stroke: var(--line);
      stroke-width: 1;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .factory-join {
      fill: var(--paper);
      stroke: var(--line);
      stroke-width: 1;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .factory-node {
      fill: var(--paper);
      stroke: var(--line);
      stroke-width: 1.15;
      vector-effect: non-scaling-stroke;
      transition: fill .18s ease, stroke .18s ease, stroke-width .18s ease;
    }

.factory-ui .factory-node-hit {
      fill: transparent;
      pointer-events: all;
    }

.factory-ui .factory-node-group {
      cursor: pointer;
      outline: none;
    }

.factory-ui .factory-node-group:hover .factory-node,
.factory-ui .factory-node-group:focus .factory-node,
.factory-ui .factory-node-group.selected .factory-node {
      fill: var(--paper-2);
      stroke: var(--violet);
      stroke-width: 2.1;
    }

.factory-ui .factory-node-number {
      fill: var(--muted);
      font: 900 6.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      pointer-events: none;
    }

.factory-ui .factory-node-group.selected .factory-node-number { fill: var(--violet); }

.factory-ui .factory-phase-rule {
      fill: none;
      stroke: var(--muted);
      stroke-width: .85;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .factory-phase-label {
      fill: var(--muted);
      font: 900 11px Inter, ui-sans-serif, system-ui, sans-serif;
      letter-spacing: .12em;
    }

.factory-ui .factory-phase-label { fill: var(--violet); }

.factory-ui .factory-phase-rule { stroke: var(--violet); opacity: .72; }

.factory-ui .factory-task-rail {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 9px;
      min-height: 24px;
      margin-top: -3px;
      isolation: isolate;
    }

.factory-ui .factory-task-rail::before {
      content: "";
      position: absolute;
      z-index: -1;
      left: 0;
      right: 0;
      top: 50%;
      border-top: 1px dashed var(--line);
    }

.factory-ui .factory-task-index,
.factory-ui .factory-task-name {
      padding: 2px 6px;
      background: var(--paper);
    }

.factory-ui .factory-task-index { color: var(--violet); }

.factory-ui .factory-task-name {
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .04em;
      text-transform: uppercase;
    }

.factory-ui .task-rail-label {
      position: absolute;
      z-index: 2;
      left: 50%;
      top: 235px;
      max-width: 285px;
      padding: 2px 7px;
      transform: translateX(-50%);
      background: var(--paper-2);
      color: var(--muted);
      font: 900 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-align: center;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .viewport {
      position: relative;
      min-height: 600px;
      overflow: hidden;
      border-top: 1px solid var(--line);
      border-bottom: 1px solid var(--line);
      background:
        linear-gradient(180deg, rgba(255,255,255,.25), transparent 38%),
        repeating-linear-gradient(90deg, transparent 0 119px, rgba(25,33,29,.025) 119px 120px);
    }

.factory-ui .viewport::before,
.factory-ui .viewport::after {
      content: "";
      position: absolute;
      z-index: 8;
      top: 0;
      bottom: 0;
      width: clamp(20px, 6vw, 100px);
      pointer-events: none;
    }

.factory-ui .viewport::before { left: 0; background: linear-gradient(90deg, var(--paper), transparent); }

.factory-ui .viewport::after { right: 0; background: linear-gradient(-90deg, var(--paper), transparent); }

.factory-ui .strip {
      position: absolute;
      inset: 0 auto 0 0;
      display: flex;
      width: max-content;
      height: 100%;
      padding: 0 220px;
      transform: translate3d(0,0,0);
      transition: transform 1.2s cubic-bezier(.65,0,.24,1);
      will-change: transform;
    }

.factory-ui .obligation-window {
      position: relative;
      flex: 0 0 460px;
      min-height: 600px;
      padding: 34px 34px 42px;
      border-left: 1px solid var(--line);
      opacity: .34;
      transition: opacity .45s ease, background .45s ease;
    }

.factory-ui .obligation-window:last-child { border-right: 1px solid var(--line); }

.factory-ui .obligation-window.active {
      opacity: 1;
      background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 6%, transparent), transparent 42%);
    }

.factory-ui .window-topline {
      display: flex;
      justify-content: space-between;
      gap: 20px;
      align-items: flex-start;
    }

.factory-ui .window-lens { color: var(--accent); }

.factory-ui .window-contract { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .04em; }

.factory-ui .obligation-window h2 {
      max-width: 350px;
      margin: 15px 0 8px;
      font-family: Georgia, "Times New Roman", serif;
      font-size: 32px;
      font-weight: 400;
      line-height: 1.02;
    }

.factory-ui .window-copy {
      max-width: 360px;
      min-height: 21px;
      margin: 0;
      color: var(--muted);
      font-size: 12px;
      line-height: 1.55;
    }

.factory-ui .scene {
      position: absolute;
      left: 28px;
      right: 28px;
      bottom: 42px;
      height: 360px;
    }

.factory-ui .sidewalk {
      position: absolute;
      left: -28px;
      right: -28px;
      top: 194px;
      height: 94px;
      border-top: 1px solid var(--ink);
      border-bottom: 1px solid var(--ink);
      background:
        repeating-linear-gradient(90deg, transparent 0 34px, rgba(25,33,29,.08) 34px 35px),
        linear-gradient(180deg, var(--paper-2), #dde2db);
      overflow: hidden;
    }

.factory-ui .seam {
      position: absolute;
      z-index: 4;
      right: -7px;
      top: 165px;
      width: 14px;
      height: 150px;
      border: 1px solid var(--line);
      background: var(--paper);
      transform: skewX(-10deg);
      transition: border-color .4s ease, background .4s ease;
    }

.factory-ui .active .seam {
      border-color: var(--accent);
      background: color-mix(in srgb, var(--accent) 9%, var(--paper));
    }

.factory-ui .seam-label {
      position: absolute;
      z-index: 5;
      left: -56px;
      top: 50%;
      width: 112px;
      padding: 4px 0;
      background: var(--paper);
      text-align: center;
      transform: translateY(-50%) rotate(-90deg);
    }

.factory-ui .runtime-label {
      position: absolute;
      z-index: 5;
      left: -35px;
      top: calc(50% + 109px);
      width: 70px;
      padding: 4px 0;
      background: var(--paper);
      text-align: center;
      transform: translateY(-50%) rotate(-90deg);
    }

.factory-ui .organism {
      position: absolute;
      z-index: 3;
      width: 48px;
      height: 48px;
      color: var(--accent);
      opacity: 0;
      transform: scale(.2);
      transition: opacity .5s ease, transform .65s cubic-bezier(.2,.85,.3,1.2);
    }

.factory-ui .active .organism { opacity: 1; transform: scale(1); }

.factory-ui .organism::before,
.factory-ui .organism::after {
      content: "";
      position: absolute;
      inset: 5px;
      border: 1.5px solid currentColor;
      border-radius: 50%;
    }

.factory-ui .organism::after { inset: 13px; background: var(--paper); box-shadow: inset 0 0 0 5px currentColor; }

.factory-ui .organism.hex::after { border-radius: 3px; transform: rotate(45deg); }

.factory-ui .organism.tri::after { clip-path: polygon(50% 0, 100% 100%, 0 100%); border-radius: 0; transform: none; }

.factory-ui .organism.square::after { border-radius: 0; }

.factory-ui .agent-tag {
      position: absolute;
      top: 51px;
      left: 50%;
      width: 92px;
      transform: translateX(-50%);
      color: var(--ink);
      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
      font-size: 9px;
      font-weight: 800;
      text-align: center;
    }

/* First lens: the active agent motion carried over from the hybrid study. */

.factory-ui .first-lens .agent-traveler {
      position: absolute;
      z-index: 5;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: translateX(0) translateY(0) scale(.18);
    }

.factory-ui .first-lens .agent-halo,
.factory-ui .first-lens .agent-orbit,
.factory-ui .first-lens .agent-core,
.factory-ui .first-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .first-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      border-radius: 50%;
      background: currentColor;
    }

.factory-ui .first-lens .agent-cell.c1 { transform: translate(-13px,10px); }

.factory-ui .first-lens .agent-cell.c2 { transform: translate(11px,-11px); }

.factory-ui .first-lens .agent-cell.c3 { transform: translate(9px,12px); }

.factory-ui .first-lens .agent-name {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      transform: translateX(-50%);
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .validation-agent {
      position: absolute;
      z-index: 10;
      right: -55px;
      top: 214px;
      width: 54px;
      height: 54px;
      color: #b45f3f;
      opacity: 0;
      transform: scale(.18) rotate(-80deg);
      transform-origin: center;
      pointer-events: none;
    }

.factory-ui .guardian-ring,
.factory-ui .guardian-core,
.factory-ui .guardian-scan {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .guardian-ring {
      width: 50px;
      height: 50px;
      margin: -25px;
      border: 3px double currentColor;
      border-radius: 50%;
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 9%, transparent);
    }

.factory-ui .guardian-ring::before,
.factory-ui .guardian-ring::after {
      content: "";
      position: absolute;
      left: 50%;
      top: -5px;
      width: 1px;
      height: 58px;
      background: currentColor;
    }

.factory-ui .guardian-ring::after { transform: rotate(90deg); }

.factory-ui .guardian-core {
      width: 21px;
      height: 24px;
      margin: -12px -10.5px;
      border: 2px solid currentColor;
      background: var(--paper);
      clip-path: polygon(50% 0,94% 18%,84% 76%,50% 100%,16% 76%,6% 18%);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 68%, transparent);
    }

.factory-ui .guardian-name,
.factory-ui .guardian-review {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      color: #91432d;
      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
      font-weight: 900;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .guardian-name { top: -29px; width: 126px; font-size: 8px; letter-spacing: .08em; }

.factory-ui .guardian-review { top: -17px; width: 190px; font-size: 6.5px; letter-spacing: .05em; }

.factory-ui .work-agent-anchor {
      position: absolute;
      z-index: 8;
      right: -56px;
      top: 230px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .work-agent-anchor .agent-cell { opacity: .58; }

.factory-ui .anchor-name {
      position: absolute;
      left: 50%;
      top: 62px;
      width: 130px;
      transform: translateX(-50%);
      color: var(--accent);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .first-lens .sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .elastic-rails {
      position: absolute;
      z-index: 6;
      left: -28px;
      top: 176px;
      width: calc(100% + 56px);
      height: 130px;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .elastic-rail {
      fill: none;
      stroke: var(--ink);
      stroke-width: 1.25;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .ingredient {
      position: absolute;
      padding-bottom: 4px;
      border-bottom: 1px solid currentColor;
      color: var(--muted);
      font-size: 8px;
      font-weight: 800;
      letter-spacing: .1em;
      text-transform: uppercase;
      opacity: .25;
    }

.factory-ui .ingredient.i1 { left: 18px; top: 70px; }

.factory-ui .first-lens .ingredient {
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .first-lens .ingredient::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .first-lens .ingredient.i1 { left: 116px; right: auto; top: 156px; width: 82px; text-align: center; }

.factory-ui .first-lens .ingredient.i2 { left: 185px; right: auto; top: 301px; width: 94px; text-align: center; }

.factory-ui .first-lens .ingredient.i1::after { top: 100%; }

.factory-ui .first-lens .ingredient.i2::after { bottom: 100%; }

.factory-ui .index-tool-call {
      position: absolute;
      z-index: 8;
      left: 130px;
      top: -8px;
      width: 190px;
      height: 118px;
      padding: 8px 9px 6px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .index-tool-label {
      margin: 0;
      color: var(--ink);
      font: 800 5.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .index-tree-heading {
      position: absolute;
      left: 50%;
      top: 0;
      margin: 0;
      padding: 0 7px;
      background: var(--paper);
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .14em;
      text-align: center;
      text-transform: uppercase;
      transform: translate(-50%, -50%);
    }

.factory-ui .index-tree {
      display: block;
      width: 100%;
      height: 72px;
      margin-top: 3px;
      overflow: visible;
    }

.factory-ui .index-tree-edge {
      fill: none;
      stroke: var(--line);
      stroke-width: 1;
      stroke-dasharray: 200;
      stroke-dashoffset: 200;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .index-tree-node {
      fill: var(--paper);
      stroke: var(--accent);
      stroke-width: 1.2;
      opacity: 0;
      transform-box: fill-box;
      transform-origin: center;
    }

.factory-ui .index-receipt-flight {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .index-receipt-flight path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .index-receipt-token {
      position: absolute;
      z-index: 10;
      left: 310px;
      top: 74px;
      width: 18px;
      height: 18px;
      border: 1px dashed var(--accent);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      pointer-events: none;
    }

.factory-ui .index-receipt-token::before {
      content: "";
      position: absolute;
      inset: 5px;
      background: currentColor;
    }

.factory-ui .index-receipt-token span {
      position: absolute;
      left: 18px;
      top: -1px;
      width: 92px;
      color: var(--accent);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      transform: rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .index-agent-ack {
      position: absolute;
      inset: -6px;
      border: 1px solid var(--accent);
      border-radius: 50%;
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .first-lens .context-gauge { top: 338px; }

.factory-ui .artifact-links {
      position: absolute;
      z-index: 8;
      left: -28px;
      top: 0;
      width: calc(100% + 56px);
      height: 360px;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .index-artifact-link,
.factory-ui .si-artifact-link,
.factory-ui .pack-artifact-link,
.factory-ui .runner-artifact-link,
.factory-ui .proof-receipt-link,
.factory-ui .route-report-link {
      fill: none;
      vector-effect: non-scaling-stroke;
      opacity: 0;
    }

.factory-ui .index-artifact-link,
.factory-ui .si-artifact-link,
.factory-ui .pack-artifact-link,
.factory-ui .runner-artifact-link,
.factory-ui .proof-receipt-link { stroke: var(--accent); stroke-width: 1; stroke-dasharray: 2 4; }

.factory-ui .route-report-link { stroke: #b45f3f; stroke-width: 1.2; }

.factory-ui .artifact-node {
      position: absolute;
      z-index: 12;
      top: 303px;
      width: 22px;
      height: 22px;
      opacity: 0;
    }

.factory-ui .receipt-node { top: 123px; right: -28px; color: var(--accent); }

.factory-ui .index-artifact-node { left: 221px; right: auto; top: 110px; }

.factory-ui .si-artifact-node { left: 191px; right: auto; top: 110px; }

.factory-ui .pack-artifact-node { left: 193px; right: auto; top: 110px; }

.factory-ui .runner-artifact-node { left: 193px; right: auto; top: 110px; }

.factory-ui .route-report-node { top: 321px; right: -39px; color: #b45f3f; }

.factory-ui .artifact-trigger {
      position: relative;
      display: block;
      width: 22px;
      height: 22px;
      padding: 0;
      border: 1px solid currentColor;
      border-radius: 50%;
      background: var(--paper);
      color: inherit;
      cursor: pointer;
    }

.factory-ui .artifact-trigger::before,
.factory-ui .artifact-trigger::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%,-50%);
    }

.factory-ui .receipt-node .artifact-trigger::before {
      width: 8px;
      height: 8px;
      border: 1px dashed currentColor;
      transform: translate(-50%,-50%) rotate(45deg);
    }

.factory-ui .receipt-node .artifact-trigger::after {
      width: 2px;
      height: 2px;
      background: currentColor;
      box-shadow: -5px 0 0 currentColor, 5px 0 0 currentColor, 0 -5px 0 currentColor, 0 5px 0 currentColor;
    }

.factory-ui .route-report-node .artifact-trigger::before {
      width: 10px;
      height: 10px;
      border: 2px double currentColor;
      border-radius: 50%;
    }

.factory-ui .route-report-node .artifact-trigger::after {
      width: 4px;
      height: 4px;
      background: currentColor;
      clip-path: polygon(50% 0,100% 100%,0 100%);
    }

.factory-ui .artifact-trigger:focus-visible {
      outline: 3px solid color-mix(in srgb, currentColor 28%, transparent);
      outline-offset: 2px;
    }

.factory-ui .artifact-drawer {
      position: absolute;
      z-index: 14;
      top: 28px;
      right: 0;
      margin: 0;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--ink);
      box-shadow: 4px 4px 0 color-mix(in srgb, currentColor 12%, transparent);
      opacity: 0;
      overflow: hidden;
      pointer-events: none;
      transform: translateY(-4px) scaleY(.72);
      transform-origin: top right;
      transition: opacity .18s ease, transform .22s ease;
    }

.factory-ui .receipt-drawer {
      width: 180px;
      padding: 8px 9px;
      font: 700 7.5px/1.42 ui-monospace, SFMono-Regular, Menlo, monospace;
      white-space: pre-wrap;
    }

.factory-ui .route-report-drawer {
      width: 128px;
      padding: 5px 7px;
      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: left;
    }

.factory-ui .route-report-node .artifact-drawer {
      top: auto;
      bottom: 28px;
      transform: translateY(4px) scaleY(.72);
      transform-origin: bottom right;
    }

.factory-ui .route-report-drawer strong { display: block; color: #9a452e; font-size: 10px; line-height: 1; letter-spacing: .08em; }

.factory-ui .route-report-drawer span { display: block; margin-top: 3px; color: var(--muted); font-size: 6.3px; line-height: 1.3; white-space: nowrap; }

.factory-ui .artifact-node:hover .artifact-drawer,
.factory-ui .artifact-node:focus-within .artifact-drawer {
      opacity: 1;
      pointer-events: auto;
      transform: translateY(0) scaleY(1);
    }

/* Task 02: deterministic source intelligence. */
.factory-ui .source-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .source-lens .sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .source-lens .agent-traveler {
      position: absolute;
      z-index: 9;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: translateX(0) translateY(0) scale(.18);
    }

.factory-ui .source-lens .agent-body {
      position: absolute;
      inset: 0;
      transform-origin: center;
    }

.factory-ui .source-lens .agent-halo,
.factory-ui .source-lens .agent-orbit,
.factory-ui .source-lens .agent-core,
.factory-ui .source-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .source-lens .agent-halo {
      width: 54px;
      height: 54px;
      margin: -27px;
      border: 1px solid currentColor;
      border-radius: 50%;
      opacity: .28;
    }

.factory-ui .source-lens .agent-orbit {
      width: 40px;
      height: 40px;
      margin: -20px;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .source-lens .agent-core {
      width: 24px;
      height: 24px;
      margin: -12px;
      border: 2px solid currentColor;
      background: var(--paper);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 74%, transparent);
      clip-path: polygon(50% 0,100% 50%,50% 100%,0 50%);
    }

.factory-ui .source-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      border-radius: 0;
      background: currentColor;
      transform: rotate(45deg);
    }

.factory-ui .source-lens .agent-cell.c1 { transform: translate(-13px,10px) rotate(45deg); }

.factory-ui .source-lens .agent-cell.c2 { transform: translate(11px,-11px) rotate(45deg); }

.factory-ui .source-lens .agent-cell.c3 { transform: translate(9px,12px) rotate(45deg); }

.factory-ui .source-lens .agent-name {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      transform: translateX(-50%);
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .source-bound {
      position: absolute;
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      font-size: 8px;
      font-weight: 800;
      letter-spacing: .1em;
      text-align: center;
      text-transform: uppercase;
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .source-bound::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .source-index-bound { left: 61px; top: 156px; width: 82px; }

.factory-ui .source-index-bound::after { top: 100%; }

.factory-ui .source-receipt-bound { left: 250px; top: 306px; width: 84px; }

.factory-ui .source-receipt-bound::after {
      left: -48px;
      bottom: 100%;
      width: 48px;
      height: 18px;
      border-left: 1px solid currentColor;
      border-bottom: 1px solid currentColor;
    }

.factory-ui .source-intelligence-tool {
      position: absolute;
      z-index: 8;
      left: 112px;
      top: -5px;
      width: 226px;
      min-height: 112px;
      padding: 10px 10px 9px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .source-tool-label {
      margin: 0;
      color: var(--ink);
      font: 800 5.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .source-tool-heading {
      position: absolute;
      left: 50%;
      top: 0;
      margin: 0;
      padding: 0 7px;
      background: var(--paper);
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .12em;
      text-transform: uppercase;
      transform: translate(-50%,-50%);
      white-space: nowrap;
    }

.factory-ui .source-intel-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 5px;
      margin-top: 10px;
    }

.factory-ui .source-intel-item {
      display: grid;
      grid-template-columns: 1fr auto;
      align-items: center;
      gap: 5px;
      min-height: 28px;
      padding: 5px 6px;
      border: 1px solid var(--line);
      background: var(--paper-2);
      opacity: 0;
      transform: translateY(5px) scale(.94);
    }

.factory-ui .source-intel-item b,
.factory-ui .source-intel-item i {
      font: 800 6.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .04em;
      text-transform: uppercase;
    }

.factory-ui .source-intel-item b { color: var(--muted); }

.factory-ui .source-intel-item i { color: var(--accent); font-style: normal; }

.factory-ui .si-receipt-flight {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .si-receipt-flight path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .si-receipt-token {
      position: absolute;
      z-index: 11;
      left: 310px;
      top: 74px;
      width: 18px;
      height: 18px;
      border: 1px dashed currentColor;
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      transform-origin: center;
      pointer-events: none;
    }

.factory-ui .si-receipt-token::before {
      content: "";
      position: absolute;
      inset: 4px;
      background: currentColor;
    }

.factory-ui .si-receipt-token span {
      position: absolute;
      left: 25px;
      top: 50%;
      width: 100px;
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-transform: uppercase;
      transform: translateY(-50%) rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .source-lens .context-gauge { top: 338px; }

/* Task 03: deterministic inspection packing. */
.factory-ui .pack-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .pack-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .pack-lens .sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .pack-lens .agent-traveler {
      position: absolute;
      z-index: 9;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: translateX(0) translateY(0) scale(.18);
    }

.factory-ui .pack-lens .agent-body {
      position: absolute;
      inset: 0;
      transform-origin: center;
    }

.factory-ui .pack-lens .agent-halo,
.factory-ui .pack-lens .agent-orbit,
.factory-ui .pack-lens .agent-core,
.factory-ui .pack-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .pack-lens .agent-halo {
      width: 54px;
      height: 54px;
      margin: -27px;
      border: 1px solid currentColor;
      border-radius: 50%;
      opacity: .28;
    }

.factory-ui .pack-lens .agent-orbit {
      width: 40px;
      height: 40px;
      margin: -20px;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .pack-lens .agent-core {
      width: 24px;
      height: 24px;
      margin: -12px;
      border: 2px solid currentColor;
      background: var(--paper);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 74%, transparent);
      clip-path: polygon(25% 0,100% 25%,75% 100%,0 75%);
    }

.factory-ui .pack-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      background: currentColor;
      clip-path: polygon(50% 0,100% 100%,0 100%);
    }

.factory-ui .pack-lens .agent-cell.c1 { transform: translate(-13px,10px) rotate(-18deg); }

.factory-ui .pack-lens .agent-cell.c2 { transform: translate(11px,-11px) rotate(22deg); }

.factory-ui .pack-lens .agent-cell.c3 { transform: translate(9px,12px) rotate(52deg); }

.factory-ui .pack-lens .agent-name {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      transform: translateX(-50%);
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .pack-bound {
      position: absolute;
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      font-size: 8px;
      font-weight: 800;
      letter-spacing: .1em;
      text-align: center;
      text-transform: uppercase;
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .pack-bound::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .pack-source-bound { left: 61px; top: 156px; width: 82px; }

.factory-ui .pack-source-bound::after { top: 100%; }

.factory-ui .pack-receipt-bound { left: 250px; top: 306px; width: 94px; }

.factory-ui .pack-receipt-bound::after {
      left: -48px;
      bottom: 100%;
      width: 48px;
      height: 18px;
      border-left: 1px solid currentColor;
      border-bottom: 1px solid currentColor;
    }

.factory-ui .inspection-pack-tool {
      position: absolute;
      z-index: 8;
      left: 42px;
      top: -12px;
      width: 320px;
      min-height: 162px;
      padding: 10px 10px 7px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .pack-tool-label {
      margin: 0;
      color: var(--ink);
      font: 800 5.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .pack-tool-heading {
      position: absolute;
      left: 50%;
      top: 0;
      margin: 0;
      padding: 0 7px;
      background: var(--paper);
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .12em;
      text-transform: uppercase;
      transform: translate(-50%,-50%);
      white-space: nowrap;
    }

.factory-ui .inspection-pack-grid {
      display: grid;
      grid-template-columns: repeat(3,1fr);
      gap: 5px;
      margin-top: 9px;
    }

.factory-ui .inspection-pack {
      display: grid;
      grid-template-columns: 1fr;
      align-items: center;
      gap: 1px;
      min-height: 52px;
      padding: 4px 6px 5px;
      border: 1px solid var(--line);
      background: var(--paper-2);
      opacity: 0;
      transform: translateY(5px) scale(.9);
    }

.factory-ui .inspection-pack > b,
.factory-ui .inspection-pack > em {
      font: 800 5.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .035em;
      white-space: nowrap;
    }

.factory-ui .inspection-pack > b { color: var(--accent); }

.factory-ui .inspection-pack > em { color: var(--muted); font-style: normal; text-align: right; }

.factory-ui .inspection-pack > .pack-kb-count {
      --kb-count: 0;
      display: flex;
      align-items: baseline;
      justify-content: flex-end;
      color: var(--ink);
      font-size: 18px;
      line-height: 1;
      letter-spacing: -.075em;
      text-align: right;
      counter-reset: kb var(--kb-count);
      font-variant-numeric: tabular-nums;
    }

.factory-ui .pack-kb-count::before { content: counter(kb,kb-pad); }

.factory-ui .pack-kb-count::after {
      content: "KB";
      margin-left: 4px;
      color: var(--muted);
      font-size: 8px;
      letter-spacing: .04em;
    }

.factory-ui .pack-1 .pack-kb-count { --kb-1:9; --kb-2:31; --kb-3:67; --kb-4:103; }
.factory-ui .pack-2 .pack-kb-count { --kb-1:9; --kb-2:29; --kb-3:62; --kb-4:97; }
.factory-ui .pack-3 .pack-kb-count { --kb-1:8; --kb-2:26; --kb-3:56; --kb-4:88; }
.factory-ui .pack-4 .pack-kb-count { --kb-1:7; --kb-2:23; --kb-3:50; --kb-4:78; }
.factory-ui .pack-5 .pack-kb-count { --kb-1:6; --kb-2:20; --kb-3:42; --kb-4:66; }
.factory-ui .pack-6 .pack-kb-count { --kb-1:5; --kb-2:16; --kb-3:35; --kb-4:55; }

.factory-ui .runner-pack-files {
      display: flex;
      grid-column: 1 / -1;
      flex-direction: column;
      gap: 2px;
      width: 100%;
      padding-right: 1px;
      border-right: 1px solid var(--accent);
    }

.factory-ui .runner-file-slot {
      display: block;
      width: var(--file-size);
      height: 1.5px;
      background: var(--accent);
      opacity: 0;
      transform: scaleX(0);
      transform-origin: left center;
    }

.factory-ui .pack-tool-result {
      margin: 5px 0 0;
      color: var(--muted);
      font: 800 5.8px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .05em;
      text-align: right;
      text-transform: uppercase;
    }

.factory-ui .pack-receipt-flight {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .pack-receipt-flight path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .pack-receipt-token {
      position: absolute;
      z-index: 11;
      left: 310px;
      top: 74px;
      width: 18px;
      height: 18px;
      border: 1px dashed currentColor;
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      transform-origin: center;
      pointer-events: none;
    }

.factory-ui .pack-receipt-token::before {
      content: "";
      position: absolute;
      inset: 4px;
      background: currentColor;
    }

.factory-ui .pack-receipt-token span {
      position: absolute;
      left: 25px;
      top: 50%;
      width: 112px;
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-transform: uppercase;
      transform: translateY(-50%) rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .pack-lens .context-gauge { top: 338px; }

/* Task 04: deterministic analysis runner composition. */
.factory-ui .runner-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .runner-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .runner-lens .sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .runner-lens .agent-traveler {
      position: absolute;
      z-index: 9;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: translateX(0) translateY(0) scale(.18);
    }

.factory-ui .runner-lens .agent-body {
      position: absolute;
      inset: 0;
      transform-origin: center;
    }

.factory-ui .runner-lens .agent-halo,
.factory-ui .runner-lens .agent-orbit,
.factory-ui .runner-lens .agent-core,
.factory-ui .runner-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .runner-lens .agent-halo {
      width: 54px;
      height: 54px;
      margin: -27px;
      border: 1px solid currentColor;
      border-radius: 50%;
      opacity: .28;
    }

.factory-ui .runner-lens .agent-orbit {
      width: 40px;
      height: 40px;
      margin: -20px;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .runner-lens .agent-core {
      width: 24px;
      height: 24px;
      margin: -12px;
      border: 2px solid currentColor;
      background: var(--paper);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 74%, transparent);
    }

.factory-ui .runner-lens .agent-core::before,
.factory-ui .runner-lens .agent-core::after {
      content: "";
      position: absolute;
      background: var(--paper);
    }

.factory-ui .runner-lens .agent-core::before { left: 50%; top: 0; bottom: 0; width: 2px; transform: translateX(-50%); }

.factory-ui .runner-lens .agent-core::after { left: 0; right: 0; top: 50%; height: 2px; transform: translateY(-50%); }

.factory-ui .runner-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      background: currentColor;
    }

.factory-ui .runner-lens .agent-cell.c1 { transform: translate(-14px,9px); }

.factory-ui .runner-lens .agent-cell.c2 { transform: translate(12px,-12px); }

.factory-ui .runner-lens .agent-cell.c3 { transform: translate(11px,13px); }

.factory-ui .runner-lens .agent-name {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      transform: translateX(-50%);
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .runner-bound {
      position: absolute;
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      font-size: 8px;
      font-weight: 800;
      letter-spacing: .1em;
      text-align: center;
      text-transform: uppercase;
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .runner-bound::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .runner-pack-bound { left: 61px; top: 156px; width: 82px; }

.factory-ui .runner-pack-bound::after { top: 100%; }

.factory-ui .runner-receipt-bound { left: 250px; top: 306px; width: 102px; }

.factory-ui .runner-receipt-bound::after {
      left: -48px;
      bottom: 100%;
      width: 48px;
      height: 18px;
      border-left: 1px solid currentColor;
      border-bottom: 1px solid currentColor;
    }

.factory-ui .runner-composition-tool {
      position: absolute;
      z-index: 8;
      left: 74px;
      top: -8px;
      width: 312px;
      min-height: 128px;
      padding: 10px 10px 8px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .runner-tool-label {
      margin: 0;
      color: var(--ink);
      font: 800 5.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .runner-tool-heading {
      position: absolute;
      left: 50%;
      top: 0;
      margin: 0;
      padding: 0 7px;
      background: var(--paper);
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .12em;
      text-transform: uppercase;
      transform: translate(-50%,-50%);
      white-space: nowrap;
    }

.factory-ui .runner-routing {
      position: absolute;
      z-index: 0;
      left: 1px;
      top: 20px;
      width: 310px;
      height: 98px;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .runner-routing path {
      fill: none;
      stroke: var(--line);
      stroke-width: 1;
      stroke-dasharray: 2 3;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .runner-packet-source {
      position: absolute;
      z-index: 2;
      left: 10px;
      top: 25px;
      width: 90px;
      height: 78px;
    }

.factory-ui .runner-file-packet {
      position: absolute;
      display: grid;
      width: 23px;
      height: 10px;
      place-items: center;
      border: 1px solid color-mix(in srgb, var(--accent) 52%, var(--line));
      background: var(--paper-2);
      color: var(--muted);
      font: 800 4.6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .02em;
      opacity: 0;
      transform-origin: center;
    }

.factory-ui .runner-file-packet::before {
      content: "";
      position: absolute;
      left: 2px;
      right: 2px;
      bottom: 1px;
      border-bottom: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
    }

.factory-ui .runner-file-packet.packet-1 { left: 0; top: 4px; --packet-delay:2.4s; --pull-x:96px; --pull-y:31px; }
.factory-ui .runner-file-packet.packet-2 { left: 29px; top: 0; --packet-delay:2.52s; --pull-x:67px; --pull-y:35px; }
.factory-ui .runner-file-packet.packet-3 { left: 57px; top: 5px; --packet-delay:2.64s; --pull-x:39px; --pull-y:30px; }
.factory-ui .runner-file-packet.packet-4 { left: 7px; top: 24px; --packet-delay:2.76s; --pull-x:89px; --pull-y:11px; }
.factory-ui .runner-file-packet.packet-5 { left: 37px; top: 20px; --packet-delay:2.88s; --pull-x:59px; --pull-y:15px; }
.factory-ui .runner-file-packet.packet-6 { left: 64px; top: 28px; --packet-delay:3s; --pull-x:32px; --pull-y:7px; }
.factory-ui .runner-file-packet.packet-7 { left: 0; top: 45px; --packet-delay:3.12s; --pull-x:96px; --pull-y:-10px; }
.factory-ui .runner-file-packet.packet-8 { left: 29px; top: 49px; --packet-delay:3.24s; --pull-x:67px; --pull-y:-14px; }
.factory-ui .runner-file-packet.packet-9 { left: 59px; top: 44px; --packet-delay:3.36s; --pull-x:37px; --pull-y:-9px; }
.factory-ui .runner-file-packet.packet-10 { left: 8px; top: 65px; --packet-delay:3.48s; --pull-x:88px; --pull-y:-30px; }
.factory-ui .runner-file-packet.packet-11 { left: 38px; top: 67px; --packet-delay:3.6s; --pull-x:58px; --pull-y:-32px; }
.factory-ui .runner-file-packet.packet-12 { left: 65px; top: 63px; --packet-delay:3.72s; --pull-x:31px; --pull-y:-28px; }

.factory-ui .runner-server {
      position: absolute;
      z-index: 3;
      left: 111px;
      top: 34px;
      width: 55px;
      height: 65px;
      border: 1px solid var(--accent);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
    }

.factory-ui .runner-server::before,
.factory-ui .runner-server::after {
      content: "";
      position: absolute;
      left: 7px;
      right: 7px;
      height: 1px;
      background: var(--line);
    }

.factory-ui .runner-server::before { top: 20px; }
.factory-ui .runner-server::after { bottom: 15px; }

.factory-ui .runner-server > span {
      position: absolute;
      left: 50%;
      bottom: 4px;
      width: 70px;
      color: var(--ink);
      font: 800 5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .09em;
      text-align: center;
      transform: translateX(-50%);
      white-space: nowrap;
    }

.factory-ui .runner-server-intake,
.factory-ui .runner-server-output {
      position: absolute;
      top: 28px;
      width: 7px;
      height: 9px;
      border: 1px solid currentColor;
      background: var(--paper);
    }

.factory-ui .runner-server-intake { left: -7px; border-right: 0; }
.factory-ui .runner-server-output { right: -7px; border-left: 0; }

.factory-ui .runner-server-core {
      position: absolute;
      left: 9px;
      right: 9px;
      top: 25px;
      display: grid;
      grid-template-columns: repeat(4,1fr);
      gap: 3px;
      height: 15px;
      padding: 3px;
      border: 1px solid var(--line);
      background: var(--paper-2);
    }

.factory-ui .runner-server-core i { display: block; background: var(--accent); opacity: .16; }

.factory-ui .runner-output-grid {
      position: absolute;
      z-index: 2;
      left: 199px;
      top: 27px;
      display: grid;
      grid-template-columns: repeat(2,1fr);
      width: 104px;
      gap: 3px;
    }

.factory-ui .runner-output {
      position: relative;
      display: grid;
      grid-template-columns: 1fr;
      gap: 1px;
      min-height: 24px;
      padding: 2px 3px;
      border: 1px solid var(--line);
      border-left: 2px solid var(--accent);
      background: var(--paper-2);
      opacity: 0;
      transform: translateX(-34px) scaleX(.18);
      transform-origin: left center;
    }

.factory-ui .runner-output b,
.factory-ui .runner-output em,
.factory-ui .runner-output i {
      font: 800 4.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .03em;
      white-space: nowrap;
    }

.factory-ui .runner-output b { color: var(--accent); }

.factory-ui .runner-output em { color: var(--muted); font-style: normal; text-align: left; }

.factory-ui .runner-output > span {
      display: flex;
      grid-column: 1 / -1;
      gap: 3px;
    }

.factory-ui .runner-output i {
      flex: 1;
      padding: 1px 3px;
      background: color-mix(in srgb, var(--accent) 8%, var(--paper));
      color: var(--muted);
      font-style: normal;
      text-align: center;
    }

.factory-ui .runner-tool-result {
      position: absolute;
      right: 10px;
      bottom: 4px;
      margin: 0;
      color: var(--muted);
      font: 800 6.2px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-align: right;
      text-transform: uppercase;
      opacity: 0;
    }

.factory-ui .runner-receipt-flight {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .runner-receipt-flight path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .runner-receipt-token {
      position: absolute;
      z-index: 11;
      left: 310px;
      top: 74px;
      width: 18px;
      height: 18px;
      border: 1px dashed currentColor;
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      transform-origin: center;
      pointer-events: none;
    }

.factory-ui .runner-receipt-token::before {
      content: "";
      position: absolute;
      inset: 4px;
      background: currentColor;
    }

.factory-ui .runner-receipt-token span {
      position: absolute;
      left: 25px;
      top: 50%;
      width: 118px;
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-transform: uppercase;
      transform: translateY(-50%) rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .runner-lens .context-gauge { top: 338px; }

/* Task 05: six vertically stacked runner projects, each with four concurrent task agents. */
.factory-ui .execution-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .execution-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .execution-flow-routes {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
      transform: translateY(22px);
    }

.factory-ui .execution-flow-routes path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 3 5;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .execution-burst {
      position: absolute;
      z-index: 8;
      left: 30px;
      top: 10px;
      width: 344px;
      height: 330px;
      padding: 10px 8px 7px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .execution-tool-label {
      display: flex;
      justify-content: space-between;
      gap: 8px;
      margin: 0;
      color: var(--ink);
      font: 800 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .execution-tool-label span {
      color: var(--accent);
      font-size: 6.5px;
      letter-spacing: .11em;
    }

.factory-ui .execution-tool-heading {
      position: absolute;
      left: 50%;
      top: 0;
      margin: 0;
      padding: 0 7px;
      background: var(--paper);
      color: var(--ink);
      font: 800 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .1em;
      text-transform: uppercase;
      transform: translate(-50%,-50%);
      white-space: nowrap;
    }

.factory-ui .execution-project-grid {
      position: absolute;
      z-index: 1;
      left: 8px;
      right: 8px;
      top: 21px;
      display: grid;
      grid-template-columns: 1fr;
      gap: 3px;
    }

.factory-ui .execution-project {
      position: relative;
      height: 48px;
      padding: 3px 6px 6px;
      border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line));
      border-left: 2px solid var(--accent);
      background: color-mix(in srgb, var(--accent) 4%, var(--paper));
      opacity: 0;
      overflow: visible;
      transform: translate(var(--unfold-x,0),var(--unfold-y,0)) scale(.16);
      transform-origin: var(--origin-x,100%) var(--origin-y,100%);
    }

.factory-ui .execution-project.project-1 { --unfold-x:-20px; --unfold-y:112px; --origin-x:0%; --origin-y:50%; }
.factory-ui .execution-project.project-2 { --unfold-x:-20px; --unfold-y:68px; --origin-x:0%; --origin-y:50%; }
.factory-ui .execution-project.project-3 { --unfold-x:-20px; --unfold-y:24px; --origin-x:0%; --origin-y:50%; }
.factory-ui .execution-project.project-4 { --unfold-x:-20px; --unfold-y:-24px; --origin-x:0%; --origin-y:50%; }
.factory-ui .execution-project.project-5 { --unfold-x:-20px; --unfold-y:-68px; --origin-x:0%; --origin-y:50%; }
.factory-ui .execution-project.project-6 { --unfold-x:-20px; --unfold-y:-112px; --origin-x:0%; --origin-y:50%; }

.factory-ui .execution-project header {
      display: flex;
      justify-content: space-between;
      gap: 6px;
      min-height: 8px;
      color: var(--ink);
      font: 800 5.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .04em;
      text-transform: uppercase;
    }

.factory-ui .execution-project header b { color: var(--accent); }

.factory-ui .execution-project header em { color: var(--muted); font-style: normal; }

.factory-ui .execution-project-live {
      display: flex;
      align-items: center;
      gap: 3px;
      color: var(--accent);
      opacity: 0;
    }

.factory-ui .execution-project-live i {
      display: block;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: currentColor;
      box-shadow: 0 0 0 2px color-mix(in srgb, currentColor 16%, transparent);
    }

.factory-ui .execution-project-profile {
      color: var(--ink);
      font: 800 5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .execution-project-context {
      position: absolute;
      left: 6px;
      right: 6px;
      bottom: 2px;
      height: 1px;
      overflow: hidden;
      background: var(--line);
    }

.factory-ui .execution-project-context::before {
      content: "";
      display: block;
      width: var(--runner-context-fill);
      height: 100%;
      background: var(--accent);
      transform: scaleX(0);
      transform-origin: left;
    }

.factory-ui .execution-task-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 0;
      margin-top: 1px;
    }

.factory-ui .execution-task-cell {
      position: relative;
      display: block;
      min-width: 0;
      height: 8px;
      color: var(--muted);
      --task-run: 278px;
    }

.factory-ui .execution-task-cell::after {
      content: "";
      position: absolute;
      z-index: 0;
      left: 28px;
      right: 13px;
      top: 4px;
      border-top: 1px dotted color-mix(in srgb, var(--accent) 36%, var(--line));
    }

.factory-ui .execution-task-cell small {
      position: absolute;
      z-index: 2;
      left: 0;
      top: 0;
      color: var(--muted);
      font: 800 4.8px/8px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .015em;
    }

.factory-ui .execution-task-agent,
.factory-ui .execution-task-receipt,
.factory-ui .execution-task-guardian {
      position: absolute;
      z-index: 2;
      opacity: 0;
      transform-origin: center;
    }

.factory-ui .execution-task-agent {
      left: 28px;
      top: -1px;
      width: 10px;
      height: 10px;
      border: 1px dotted var(--accent);
      border-radius: 50%;
    }

.factory-ui .execution-task-agent::before {
      content: "";
      position: absolute;
      inset: 2px;
      border: 1px solid var(--accent);
      background: var(--paper);
      transform: rotate(45deg);
    }

.factory-ui .execution-task-agent::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 2px;
      height: 2px;
      background: var(--accent);
      transform: translate(-50%,-50%);
    }

.factory-ui .execution-task-receipt {
      left: calc(28px + var(--task-run));
      top: 0;
      width: 8px;
      height: 8px;
      border: 1px solid var(--accent);
      background: var(--paper);
      transform: rotate(45deg) scale(.2);
    }

.factory-ui .execution-task-receipt::before {
      content: "";
      position: absolute;
      inset: 2px;
      background: var(--accent);
    }

.factory-ui .execution-task-guardian {
      left: calc(28px + var(--task-run) - 1px);
      top: -2px;
      z-index: 4;
      width: 12px;
      height: 12px;
      border: 1px solid #b45f3f;
      border-radius: 50%;
      background: transparent;
      color: #b45f3f;
      transform: scale(.2) rotate(-70deg);
    }

.factory-ui .execution-task-guardian::before {
      content: "";
      position: absolute;
      inset: 2px;
      border: 1px dotted currentColor;
      border-radius: 50%;
    }

.factory-ui .execution-task-guardian::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 3px;
      height: 3px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .execution-tool-result {
      position: absolute;
      right: 9px;
      bottom: -11px;
      margin: 0;
      color: var(--muted);
      font: 800 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .045em;
      opacity: 0;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .execution-lens .context-gauge { top: 338px; }

/* Task 06: published runner findings converge into indexed evidence and bounded slices. */
.factory-ui .intake-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .intake-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .intake-sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .intake-bound {
      position: absolute;
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      font-size: 8px;
      font-weight: 800;
      letter-spacing: .1em;
      text-align: center;
      text-transform: uppercase;
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .intake-bound::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .intake-source-bound { left: 34px; top: 306px; width: 112px; }

.factory-ui .intake-source-bound::after { bottom: 100%; }

.factory-ui .intake-receipt-bound { left: 213px; top: 306px; width: 94px; }

.factory-ui .intake-receipt-bound::after { bottom: 100%; }

.factory-ui .intake-task-rail-label {
      position: absolute;
      z-index: 6;
      left: 50%;
      top: 235px;
      padding: 2px 7px;
      background: var(--paper-2);
      color: var(--muted);
      font: 900 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-transform: uppercase;
      transform: translateX(-50%);
      white-space: nowrap;
    }

.factory-ui .intake-flow-routes {
      position: absolute;
      z-index: 6;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .intake-flow-routes path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 3 5;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .intake-receipt-rack {
      position: absolute;
      z-index: 8;
      left: -4px;
      top: 22px;
      width: 118px;
      height: 166px;
      padding: 6px 7px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
    }

.factory-ui .intake-receipt-rack p {
      display: flex;
      justify-content: space-between;
      gap: 5px;
      margin: 0 0 7px;
      color: var(--muted);
      font: 800 5.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .04em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .intake-receipt-rack p span { color: var(--accent); }

.factory-ui .intake-receipt-rack > div {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 8px 10px;
      padding: 2px 3px;
    }

.factory-ui .intake-receipt {
      position: relative;
      z-index: 2;
      display: block;
      width: 12px;
      height: 12px;
      border: 1px solid currentColor;
      background: var(--paper);
      opacity: 0;
      transform: rotate(45deg) scale(.2);
      transform-origin: center;
    }

.factory-ui .intake-receipt::before {
      content: "";
      position: absolute;
      inset: 3px;
      background: currentColor;
    }

.factory-ui .intake-indexer {
      position: absolute;
      z-index: 9;
      left: 137px;
      top: 60px;
      width: 91px;
      height: 122px;
      padding: 7px 6px;
      border: 1px solid var(--accent);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: scale(.78);
    }

.factory-ui .intake-tool-label {
      position: absolute;
      left: 50%;
      top: -27px;
      width: 176px;
      margin: 0;
      padding: 1px 3px;
      background: var(--paper);
      color: var(--ink);
      font: 800 5.7px/1.3 ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      text-align: center;
      transform: translateX(-50%);
      white-space: normal;
    }

.factory-ui .intake-indexer-core {
      position: relative;
      width: 58px;
      height: 58px;
      margin: 12px auto 0;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .intake-indexer-core::before,
.factory-ui .intake-indexer-core::after {
      content: "";
      position: absolute;
      inset: 8px;
      border: 1px solid currentColor;
      transform: rotate(45deg);
    }

.factory-ui .intake-indexer-core::after {
      inset: 17px;
      background: color-mix(in srgb, var(--accent) 18%, var(--paper));
      transform: rotate(0);
    }

.factory-ui .intake-indexer-core i {
      position: absolute;
      z-index: 2;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: currentColor;
      opacity: .22;
    }

.factory-ui .intake-indexer-core i:nth-child(1) { left: 4px; top: 26px; }
.factory-ui .intake-indexer-core i:nth-child(2) { right: 4px; top: 26px; }
.factory-ui .intake-indexer-core i:nth-child(3) { left: 26px; top: 4px; }
.factory-ui .intake-indexer-core i:nth-child(4) { left: 26px; bottom: 4px; }

.factory-ui .intake-indexer-core b {
      position: absolute;
      z-index: 3;
      left: 50%;
      top: 50%;
      color: var(--ink);
      font: 900 5px/1.15 ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .05em;
      text-align: center;
      transform: translate(-50%,-50%);
    }

.factory-ui .intake-indexer-result {
      margin: 9px 0 0;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .05em;
      text-align: center;
      opacity: 0;
    }

.factory-ui .intake-tool-receipt-flight,
.factory-ui .static-tool-receipt-flight {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .intake-tool-receipt-flight path,
.factory-ui .static-tool-receipt-flight path {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .intake-tool-receipt-token,
.factory-ui .static-tool-receipt-token {
      position: absolute;
      z-index: 10;
      width: 18px;
      height: 18px;
      border: 1px dashed var(--accent);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      pointer-events: none;
    }

.factory-ui .intake-tool-receipt-token { left: 173px; top: 167px; }
.factory-ui .static-tool-receipt-token { left: 261px; top: 107px; }

.factory-ui .intake-tool-receipt-token::before,
.factory-ui .static-tool-receipt-token::before {
      content: "";
      position: absolute;
      inset: 5px;
      background: currentColor;
    }

.factory-ui .intake-tool-receipt-token span,
.factory-ui .static-tool-receipt-token span {
      position: absolute;
      left: 18px;
      top: -1px;
      width: 120px;
      color: var(--accent);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      transform: rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .intake-agent .tool-receipt-ack,
.factory-ui .static-agent-traveler .tool-receipt-ack {
      position: absolute;
      inset: -6px;
      border: 1px solid var(--accent);
      border-radius: 50%;
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .intake-evidence-families {
      position: absolute;
      z-index: 8;
      left: 260px;
      top: 20px;
      display: grid;
      grid-template-columns: repeat(2, 65px);
      gap: 5px;
      width: 135px;
    }

.factory-ui .intake-evidence-families > p,
.factory-ui .intake-knowledge-slices > p {
      grid-column: 1 / -1;
      margin: 0 0 2px;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .08em;
      text-transform: uppercase;
    }

.factory-ui .evidence-family {
      position: relative;
      display: grid;
      grid-template-columns: 9px 1fr;
      grid-template-rows: auto auto;
      column-gap: 4px;
      min-height: 27px;
      padding: 4px;
      border: 1px solid color-mix(in srgb, var(--accent) 40%, var(--line));
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: translateX(-13px) scale(.78);
    }

.factory-ui .evidence-family i {
      grid-row: 1 / 3;
      align-self: stretch;
      border-left: 2px solid currentColor;
      background: repeating-linear-gradient(180deg, transparent 0 3px, color-mix(in srgb, currentColor 18%, transparent) 3px 4px);
    }

.factory-ui .evidence-family b,
.factory-ui .evidence-family em {
      font: 900 5.3px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .03em;
      white-space: nowrap;
    }

.factory-ui .evidence-family em { color: var(--muted); font-size: 4.7px; font-style: normal; }

.factory-ui .intake-knowledge-slices {
      position: absolute;
      z-index: 8;
      left: 260px;
      top: 143px;
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 5px;
      width: 135px;
    }

.factory-ui .knowledge-slice {
      min-height: 31px;
      padding: 4px 3px;
      border-top: 2px solid var(--accent);
      background: color-mix(in srgb, var(--accent) 5%, var(--paper));
      color: var(--accent);
      opacity: 0;
      transform: translateY(-10px) scaleY(.4);
      transform-origin: top;
    }

.factory-ui .knowledge-slice b,
.factory-ui .knowledge-slice em {
      display: block;
      font: 900 5.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .03em;
      text-align: center;
    }

.factory-ui .knowledge-slice em { margin-top: 4px; color: var(--muted); font-size: 4.4px; font-style: normal; }

.factory-ui .intake-agent {
      position: absolute;
      z-index: 9;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: scale(.18);
    }

.factory-ui .intake-lens .agent-halo,
.factory-ui .intake-lens .agent-orbit,
.factory-ui .intake-lens .agent-core,
.factory-ui .intake-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .intake-lens .agent-body { position: absolute; inset: 0; transform-origin: center; }

.factory-ui .intake-lens .agent-halo {
      width: 54px;
      height: 54px;
      margin: -27px;
      border: 1px solid currentColor;
      border-radius: 50%;
      opacity: .28;
    }

.factory-ui .intake-lens .agent-orbit {
      width: 40px;
      height: 40px;
      margin: -20px;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .intake-lens .agent-core {
      width: 24px;
      height: 24px;
      margin: -12px;
      border: 2px solid currentColor;
      background: var(--paper);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 68%, transparent);
      clip-path: polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%);
    }

.factory-ui .intake-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      border-radius: 50%;
      background: currentColor;
    }

.factory-ui .intake-lens .agent-cell.c1 { transform: translate(-13px,10px); }
.factory-ui .intake-lens .agent-cell.c2 { transform: translate(11px,-11px); }
.factory-ui .intake-lens .agent-cell.c3 { transform: translate(9px,12px); }

.factory-ui .intake-agent > span {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      transform: translateX(-50%);
      white-space: nowrap;
    }

.factory-ui .intake-agent-anchor { right: -56px; top: 230px; }

.factory-ui .intake-index-link,
.factory-ui .intake-receipt-link {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .intake-index-node { left: 235px; right: auto; top: 110px; }
.factory-ui .intake-task-receipt-node { right: -28px; top: 123px; }
.factory-ui .intake-route-report-node { right: -39px; top: 321px; }
.factory-ui .intake-lens .context-gauge {
      z-index: 11;
      left: 252px;
      top: 330px;
      width: 145px;
      height: 4px;
      background: color-mix(in srgb, var(--accent) 24%, var(--line));
    }

.factory-ui .static-analysis-lens .context-gauge {
      z-index: 11;
      left: 80px;
      top: 318px;
      width: 156px;
      height: 4px;
      background: color-mix(in srgb, var(--accent) 24%, var(--line));
    }

.factory-ui .intake-lens .context-gauge span,
.factory-ui .static-analysis-lens .context-gauge span {
      top: 9px;
      color: var(--ink);
      font-size: 9px;
      line-height: 1;
    }

.factory-ui .intake-lens .context-gauge .context-model,
.factory-ui .static-analysis-lens .context-gauge .context-model {
      top: 22px;
      font-size: 7px;
    }

.factory-ui .intake-lens.settled .intake-receipt-rack,
.factory-ui .intake-lens.settled .intake-indexer,
.factory-ui .intake-lens.settled .intake-indexer-result,
.factory-ui .intake-lens.settled .evidence-family,
.factory-ui .intake-lens.settled .knowledge-slice {
      opacity: 1;
      transform: none;
    }

.factory-ui .intake-lens.settled .intake-receipt { opacity: .3; transform: rotate(45deg) scale(.62); }
.factory-ui .intake-lens.settled .intake-flow-routes path,
.factory-ui .intake-lens.settled .intake-index-link,
.factory-ui .intake-lens.settled .intake-receipt-link { opacity: .65; }
.factory-ui .intake-lens.settled .intake-agent-anchor { opacity: .6; }

.factory-ui .intake-lens.settled .intake-bound { opacity: 1; transform: none; }

/* Task 07: static analysis reconciles scanner output inside one bounded agent window. */
.factory-ui .static-analysis-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .static-analysis-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .static-sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .static-task-rail-label,
.factory-ui .intake-task-rail-label {
      position: absolute;
      z-index: 6;
      left: 50%;
      top: 235px;
      padding: 2px 7px;
      background: var(--paper-2);
      color: var(--muted);
      font: 900 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-transform: uppercase;
      transform: translateX(-50%);
      white-space: nowrap;
    }

.factory-ui .static-bound {
      position: absolute;
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      font-size: 8px;
      font-weight: 800;
      letter-spacing: .1em;
      text-align: center;
      text-transform: uppercase;
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .static-bound::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .static-source-bound { left: 49px; top: 156px; width: 106px; }
.factory-ui .static-source-bound::after { top: 100%; }
.factory-ui .static-receipt-bound { left: 213px; top: 306px; width: 94px; }
.factory-ui .static-receipt-bound::after { bottom: 100%; }

.factory-ui .static-analysis-tool {
      position: absolute;
      z-index: 8;
      left: 135px;
      top: 20px;
      width: 220px;
      min-height: 116px;
      padding: 10px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .static-tool-label {
      margin: 0 0 17px;
      color: var(--ink);
      font: 800 6.3px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .static-ledger {
      display: grid;
      grid-template-columns: 1fr 12px 1fr 12px 1fr;
      align-items: center;
      gap: 3px;
    }

.factory-ui .static-ledger > span {
      display: grid;
      gap: 2px;
      text-align: center;
      opacity: 0;
      transform: translateY(5px) scale(.86);
    }

.factory-ui .static-ledger b {
      color: var(--accent);
      font: 400 24px/.9 Georgia, "Times New Roman", serif;
    }

.factory-ui .static-ledger em,
.factory-ui .static-ledger i {
      color: var(--muted);
      font: 800 5.7px ui-monospace, SFMono-Regular, Menlo, monospace;
      font-style: normal;
      letter-spacing: .04em;
      text-transform: uppercase;
    }

.factory-ui .static-ledger i { text-align: center; }

.factory-ui .static-ledger-result {
      display: flex;
      justify-content: space-between;
      margin: 15px 0 0;
      padding-top: 5px;
      border-top: 1px dotted var(--line);
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .055em;
      text-transform: uppercase;
      opacity: 0;
    }

.factory-ui .static-ledger-result b { color: var(--accent); }

.factory-ui .static-agent-traveler {
      position: absolute;
      z-index: 9;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: translateX(0) translateY(0) scale(.18);
    }

.factory-ui .static-analysis-lens .agent-body {
      position: absolute;
      inset: 0;
      transform-origin: center;
    }

.factory-ui .static-analysis-lens .agent-halo,
.factory-ui .static-analysis-lens .agent-orbit,
.factory-ui .static-analysis-lens .agent-core,
.factory-ui .static-analysis-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .static-analysis-lens .agent-halo {
      width: 54px;
      height: 54px;
      margin: -27px;
      border: 1px solid currentColor;
      border-radius: 50%;
      opacity: .28;
    }

.factory-ui .static-analysis-lens .agent-orbit {
      width: 40px;
      height: 40px;
      margin: -20px;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .static-analysis-lens .agent-core {
      width: 24px;
      height: 24px;
      margin: -12px;
      border: 2px solid currentColor;
      background: var(--paper);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 70%, transparent);
      clip-path: polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);
    }

.factory-ui .static-analysis-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      border-radius: 50%;
      background: currentColor;
    }

.factory-ui .static-analysis-lens .agent-cell.c1 { transform: translate(-13px,10px); }
.factory-ui .static-analysis-lens .agent-cell.c2 { transform: translate(11px,-11px); }
.factory-ui .static-analysis-lens .agent-cell.c3 { transform: translate(9px,12px); }

.factory-ui .static-analysis-lens .agent-name {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      transform: translateX(-50%);
      white-space: nowrap;
    }

.factory-ui .static-evidence-link {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .static-evidence-node { left: 80px; right: auto; top: 110px; }
.factory-ui .static-task-receipt-node { right: -28px; top: 123px; }
.factory-ui .static-route-report-node { right: -39px; top: 321px; }
.factory-ui .static-analysis-lens.settled .static-bound,
.factory-ui .static-analysis-lens.settled .static-analysis-tool,
.factory-ui .static-analysis-lens.settled .static-ledger > span,
.factory-ui .static-analysis-lens.settled .static-ledger-result {
      opacity: 1;
      transform: none;
    }

.factory-ui .static-analysis-lens.settled .static-evidence-link { opacity: .8; }

/* Task 08: one analysis section, six independently bounded concurrent tasks. */
.factory-ui .analysis-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .analysis-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .analysis-task-bank {
      position: absolute;
      z-index: 8;
      left: 0;
      top: -10px;
      width: 404px;
      height: 326px;
      padding: 13px 10px 18px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .analysis-tool-label {
      display: flex;
      justify-content: space-between;
      gap: 8px;
      margin: 0 0 8px;
      color: var(--ink);
      font: 800 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .analysis-tool-label span {
      color: var(--accent);
      font-size: 6.5px;
      letter-spacing: .11em;
    }

.factory-ui .analysis-task-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 4px;
    }

.factory-ui .analysis-task {
      position: relative;
      height: 43px;
      padding: 5px 8px;
      border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line));
      border-left: 2px solid var(--accent);
      background: color-mix(in srgb, var(--accent) 4%, var(--paper));
      color: var(--accent);
      opacity: 0;
      overflow: hidden;
      transform: translateX(-18px) scaleX(.88);
      transform-origin: left center;
      --analysis-run: 326px;
    }

.factory-ui .analysis-task header {
      display: flex;
      justify-content: space-between;
      gap: 8px;
      color: var(--ink);
      font: 900 6.4px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .045em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .analysis-task header b { color: var(--accent); }

.factory-ui .analysis-task header em {
      color: var(--muted);
      font-style: normal;
    }

.factory-ui .analysis-task-track {
      position: absolute;
      z-index: 0;
      left: 14px;
      right: 31px;
      top: 29px;
      border-top: 1px dotted color-mix(in srgb, var(--accent) 48%, var(--line));
    }

.factory-ui .analysis-task-agent,
.factory-ui .analysis-task-receipt,
.factory-ui .analysis-task-guardian {
      position: absolute;
      z-index: 2;
      opacity: 0;
      transform-origin: center;
    }

.factory-ui .analysis-task-agent {
      left: 12px;
      top: 22px;
      width: 14px;
      height: 14px;
      border: 1px dotted var(--accent);
      border-radius: 50%;
      background: var(--paper);
    }

.factory-ui .analysis-task-agent::before {
      content: "";
      position: absolute;
      inset: 3px;
      border: 1px solid currentColor;
      background: color-mix(in srgb, currentColor 12%, var(--paper));
      transform: rotate(45deg);
    }

.factory-ui .analysis-task-agent::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 3px;
      height: 3px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .analysis-task-receipt {
      right: 29px;
      top: 24px;
      width: 9px;
      height: 9px;
      border: 1px solid var(--accent);
      background: var(--paper);
      transform: rotate(45deg) scale(.2);
    }

.factory-ui .analysis-task-receipt::before {
      content: "";
      position: absolute;
      inset: 2px;
      background: var(--accent);
    }

.factory-ui .analysis-task-guardian {
      right: 8px;
      top: 21px;
      width: 15px;
      height: 15px;
      border: 1px solid #b45f3f;
      border-radius: 50%;
      color: #b45f3f;
      transform: scale(.2) rotate(-70deg);
    }

.factory-ui .analysis-task-guardian::before {
      content: "";
      position: absolute;
      inset: 3px;
      border: 1px dotted currentColor;
      border-radius: 50%;
    }

.factory-ui .analysis-task-guardian::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 3px;
      height: 3px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .analysis-tool-result {
      position: absolute;
      right: 10px;
      bottom: 5px;
      margin: 0;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      opacity: 0;
      white-space: nowrap;
    }

.factory-ui .analysis-lens.settled .analysis-task-bank,
.factory-ui .analysis-lens.settled .analysis-task,
.factory-ui .analysis-lens.settled .analysis-tool-result {
      opacity: 1;
      transform: none;
    }

.factory-ui .analysis-lens.settled .analysis-task-agent {
      opacity: .28;
      transform: translateX(var(--analysis-run)) rotate(400deg) scale(.62);
    }

.factory-ui .analysis-lens.settled .analysis-task-receipt {
      opacity: .78;
      transform: rotate(45deg) scale(.72);
    }

.factory-ui .analysis-lens.settled .analysis-task-guardian {
      opacity: .74;
      transform: scale(.82) rotate(45deg);
    }

.factory-ui .analysis-converge-routes,
.factory-ui .synthesis-handoff-routes {
      position: absolute;
      z-index: 10;
      left: -28px;
      top: 0;
      width: 460px;
      height: 360px;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .analysis-converge-route,
.factory-ui .synthesis-intake-route,
.factory-ui .synthesis-outbound-route {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 3 5;
      stroke-dashoffset: 80;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .analysis-handoff-node,
.factory-ui .synthesis-intake-node,
.factory-ui .synthesis-outbound-node {
      fill: var(--paper);
      stroke: var(--accent);
      stroke-width: 1;
      opacity: 0;
      vector-effect: non-scaling-stroke;
    }

.factory-ui .analysis-lens.settled .analysis-converge-route,
.factory-ui .synthesis-lens.settled .synthesis-intake-route,
.factory-ui .synthesis-lens.settled .synthesis-outbound-route {
      stroke-dashoffset: 0;
      opacity: .58;
    }

.factory-ui .analysis-lens.settled .analysis-handoff-node,
.factory-ui .synthesis-lens.settled .synthesis-intake-node,
.factory-ui .synthesis-lens.settled .synthesis-outbound-node { opacity: .78; }

/* Task 08: parallel analysis retains its own runtime budget summary. */
.factory-ui .analysis-lens .context-gauge {
      z-index: 11;
      left: 112px;
      top: 326px;
      width: 176px;
    }

/* Task 09: two synthesis obligations execute concurrently from the completed analysis family. */
.factory-ui .synthesis-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .synthesis-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .synthesis-task-bank {
      position: absolute;
      z-index: 8;
      left: 0;
      top: 2px;
      width: 404px;
      height: 314px;
      padding: 13px 10px 18px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .synthesis-bank-label {
      display: flex;
      justify-content: space-between;
      gap: 8px;
      margin: 0 0 9px;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .synthesis-bank-label span { color: var(--accent); letter-spacing: .11em; }

.factory-ui .synthesis-task-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 9px;
    }

.factory-ui .synthesis-task {
      position: relative;
      height: 125px;
      padding: 7px 8px;
      border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line));
      border-left: 2px solid var(--accent);
      background: color-mix(in srgb, var(--accent) 4%, var(--paper));
      color: var(--accent);
      opacity: 0;
      overflow: hidden;
      transform: translateX(-16px) scaleX(.9);
      transform-origin: left center;
      --synthesis-run: 230px;
    }

.factory-ui .synthesis-task header {
      display: flex;
      justify-content: space-between;
      gap: 8px;
      color: var(--ink);
      font: 900 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .05em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .synthesis-task header b { color: var(--accent); }

.factory-ui .synthesis-task header em {
      color: var(--muted);
      font-style: normal;
    }

.factory-ui .synthesis-tool-call {
      position: absolute;
      left: 8px;
      top: 25px;
      color: var(--muted);
      font: 800 5.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .synthesis-input-stack {
      position: absolute;
      left: 9px;
      top: 53px;
      display: grid;
      grid-template-columns: repeat(2, 15px);
      gap: 5px 4px;
      width: 34px;
    }

.factory-ui .synthesis-input-stack i {
      position: relative;
      display: block;
      width: 15px;
      height: 7px;
      border: 1px solid color-mix(in srgb, var(--accent) 48%, var(--line));
      background: var(--paper);
      opacity: 0;
    }

.factory-ui .synthesis-input-stack i::after {
      content: "";
      position: absolute;
      left: 2px;
      right: 2px;
      top: 2px;
      border-top: 1px solid color-mix(in srgb, var(--accent) 34%, transparent);
    }

.factory-ui .synthesis-track {
      position: absolute;
      z-index: 0;
      left: 52px;
      right: 67px;
      top: 83px;
      border-top: 1px dotted color-mix(in srgb, var(--accent) 50%, var(--line));
    }

.factory-ui .synthesis-agent,
.factory-ui .synthesis-receipt,
.factory-ui .synthesis-guardian {
      position: absolute;
      z-index: 3;
      opacity: 0;
      transform-origin: center;
    }

.factory-ui .synthesis-agent {
      left: 49px;
      top: 72px;
      width: 22px;
      height: 22px;
      border: 1px dotted var(--accent);
      border-radius: 50%;
      background: var(--paper);
    }

.factory-ui .synthesis-agent::before {
      content: "";
      position: absolute;
      inset: 5px;
      border: 1px solid currentColor;
      background: color-mix(in srgb, currentColor 13%, var(--paper));
      transform: rotate(45deg);
    }

.factory-ui .synthesis-agent::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .synthesis-output {
      position: absolute;
      z-index: 2;
      right: 27px;
      top: 48px;
      display: grid;
      width: 69px;
      height: 50px;
      place-content: center;
      border-top: 2px solid var(--accent);
      background: color-mix(in srgb, var(--accent) 7%, var(--paper));
      color: var(--accent);
      opacity: 0;
      transform: translateY(-8px) scaleY(.35);
      transform-origin: top;
    }

.factory-ui .synthesis-output b,
.factory-ui .synthesis-output span {
      display: block;
      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      text-transform: uppercase;
    }

.factory-ui .synthesis-output b { font-size: 20px; line-height: 1; }
.factory-ui .synthesis-output span { margin-top: 4px; color: var(--muted); font-size: 4.8px; font-weight: 900; letter-spacing: .04em; }

.factory-ui .synthesis-receipt {
      right: 72px;
      top: 101px;
      width: 10px;
      height: 10px;
      border: 1px solid var(--accent);
      background: var(--paper);
      transform: rotate(45deg) scale(.2);
    }

.factory-ui .synthesis-receipt::before {
      content: "";
      position: absolute;
      inset: 2px;
      background: var(--accent);
    }

.factory-ui .synthesis-guardian {
      right: 8px;
      top: 67px;
      width: 18px;
      height: 18px;
      border: 1px solid #b45f3f;
      border-radius: 50%;
      color: #b45f3f;
      transform: scale(.2) rotate(-70deg);
    }

.factory-ui .synthesis-guardian::before {
      content: "";
      position: absolute;
      inset: 3px;
      border: 1px dotted currentColor;
      border-radius: 50%;
    }

.factory-ui .synthesis-guardian::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .synthesis-bank-result {
      position: absolute;
      right: 10px;
      bottom: 5px;
      margin: 0;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      opacity: 0;
    }

.factory-ui .synthesis-lens .context-gauge {
      z-index: 11;
      left: 112px;
      top: 326px;
      width: 176px;
    }

.factory-ui .synthesis-lens.settled .synthesis-task-bank,
.factory-ui .synthesis-lens.settled .synthesis-task,
.factory-ui .synthesis-lens.settled .synthesis-output,
.factory-ui .synthesis-lens.settled .synthesis-bank-result {
      opacity: 1;
      transform: none;
    }

.factory-ui .synthesis-lens.settled .synthesis-input-stack i { opacity: .38; }

.factory-ui .synthesis-lens.settled .synthesis-agent {
      opacity: .28;
      transform: translateX(var(--synthesis-run)) rotate(400deg) scale(.62);
    }

.factory-ui .synthesis-lens.settled .synthesis-receipt {
      opacity: .8;
      transform: rotate(45deg) scale(.74);
    }

.factory-ui .synthesis-lens.settled .synthesis-guardian {
      opacity: .74;
      transform: scale(.82) rotate(45deg);
    }

/* Task 10: the two synthesis receipts fan into five independently guarded report publications. */
.factory-ui .report-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .report-lens .window-copy {
      max-width: none;
      white-space: nowrap;
    }

.factory-ui .report-task-bank {
      position: absolute;
      z-index: 8;
      left: 0;
      top: 2px;
      width: 404px;
      height: 314px;
      padding: 12px 10px 19px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .report-bank-label {
      display: flex;
      justify-content: space-between;
      gap: 8px;
      margin: 0 0 7px;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .report-bank-label span { color: var(--accent); letter-spacing: .1em; }

.factory-ui .report-task-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 6px;
    }

.factory-ui .report-task {
      position: relative;
      height: 78px;
      padding: 7px 7px;
      border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line));
      border-left: 2px solid var(--accent);
      background: color-mix(in srgb, var(--accent) 4%, var(--paper));
      color: var(--accent);
      opacity: 0;
      overflow: hidden;
      transform: translateX(-12px) scaleX(.92);
      transform-origin: left center;
      --report-run: 91px;
    }

.factory-ui .report-task-5 {
      grid-column: 1 / -1;
      width: calc(50% - 3px);
      justify-self: center;
    }

.factory-ui .report-task header {
      display: flex;
      justify-content: space-between;
      gap: 6px;
      color: var(--ink);
      font: 900 6.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .035em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .report-task header b { color: var(--accent); }

.factory-ui .report-task header em {
      color: var(--muted);
      font-style: normal;
    }

.factory-ui .report-source {
      position: absolute;
      left: 7px;
      top: 26px;
      color: var(--muted);
      font: 800 5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
    }

.factory-ui .report-track {
      position: absolute;
      left: 29px;
      right: 48px;
      top: 52px;
      border-top: 1px dotted color-mix(in srgb, var(--accent) 52%, var(--line));
    }

.factory-ui .report-agent,
.factory-ui .report-receipt,
.factory-ui .report-guardian,
.factory-ui .report-artifact {
      position: absolute;
      z-index: 3;
      opacity: 0;
      transform-origin: center;
    }

.factory-ui .report-agent {
      left: 26px;
      top: 44px;
      width: 16px;
      height: 16px;
      border: 1px dotted currentColor;
      border-radius: 50%;
      background: var(--paper);
    }

.factory-ui .report-agent::before {
      content: "";
      position: absolute;
      inset: 4px;
      border: 1px solid currentColor;
      background: color-mix(in srgb, currentColor 13%, var(--paper));
      transform: rotate(45deg);
    }

.factory-ui .report-agent::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 3px;
      height: 3px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .report-artifact {
      right: 28px;
      top: 28px;
      display: grid;
      align-content: center;
      gap: 4px;
      width: 28px;
      height: 36px;
      padding: 7px 5px;
      border: 1px solid var(--accent);
      border-top: 2px solid var(--accent);
      background: var(--paper);
      transform: translateY(-7px) scaleY(.35);
      transform-origin: top;
    }

.factory-ui .report-artifact i {
      display: block;
      border-top: 1px solid color-mix(in srgb, var(--accent) 50%, var(--line));
    }

.factory-ui .report-receipt {
      right: 21px;
      bottom: 7px;
      width: 8px;
      height: 8px;
      border: 1px solid var(--accent);
      background: var(--paper);
      transform: rotate(45deg) scale(.2);
    }

.factory-ui .report-receipt::before {
      content: "";
      position: absolute;
      inset: 2px;
      background: var(--accent);
    }

.factory-ui .report-guardian {
      right: 4px;
      top: 44px;
      width: 16px;
      height: 16px;
      border: 1px solid #b45f3f;
      border-radius: 50%;
      color: #b45f3f;
      transform: scale(.2) rotate(-70deg);
    }

.factory-ui .report-guardian::before {
      content: "";
      position: absolute;
      inset: 3px;
      border: 1px dotted currentColor;
      border-radius: 50%;
    }

.factory-ui .report-guardian::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 3px;
      height: 3px;
      border-radius: 50%;
      background: currentColor;
      transform: translate(-50%,-50%);
    }

.factory-ui .report-intake-routes {
      position: absolute;
      z-index: 9;
      inset: 0;
      width: 460px;
      height: 360px;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .report-intake-route,
.factory-ui .report-outbound-route {
      fill: none;
      stroke: color-mix(in srgb, var(--accent) 72%, var(--line));
      stroke-width: 1.1;
      stroke-dasharray: 3 5;
      vector-effect: non-scaling-stroke;
      opacity: 0;
      stroke-dashoffset: 220;
    }

.factory-ui .report-intake-node,
.factory-ui .report-outbound-node {
      fill: var(--paper);
      stroke: var(--accent);
      stroke-width: 1.5;
      opacity: 0;
      transform-box: fill-box;
      transform-origin: center;
    }

.factory-ui .report-bank-result {
      position: absolute;
      right: 10px;
      bottom: 5px;
      margin: 0;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      opacity: 0;
    }

.factory-ui .report-lens .context-gauge {
      z-index: 11;
      left: 112px;
      top: 326px;
      width: 176px;
    }

.factory-ui .report-lens.settled .report-task-bank,
.factory-ui .report-lens.settled .report-task,
.factory-ui .report-lens.settled .report-artifact,
.factory-ui .report-lens.settled .report-bank-result {
      opacity: 1;
      transform: none;
    }

.factory-ui .report-lens.settled .report-agent {
      opacity: .28;
      transform: translateX(var(--report-run)) rotate(400deg) scale(.62);
    }

.factory-ui .report-lens.settled .report-receipt {
      opacity: .8;
      transform: rotate(45deg) scale(.74);
    }

.factory-ui .report-lens.settled .report-guardian {
      opacity: .74;
      transform: scale(.82) rotate(45deg);
    }

.factory-ui .report-lens.settled .report-intake-route,
.factory-ui .report-lens.settled .report-outbound-route,
.factory-ui .report-lens.settled .report-intake-node,
.factory-ui .report-lens.settled .report-outbound-node { opacity: .78; }

/* Task 11: one bounded work agent owns the final publication obligation. */
.factory-ui .publish-lens h2 {
      max-width: none;
      font-size: 30px;
      white-space: nowrap;
    }

.factory-ui .publish-lens .window-copy { white-space: nowrap; }

.factory-ui .publish-lens .sidewalk {
      border-top-color: transparent;
      border-bottom-color: transparent;
    }

.factory-ui .publish-lens .agent-traveler {
      position: absolute;
      z-index: 9;
      left: -57px;
      top: 212px;
      width: 58px;
      height: 58px;
      color: var(--accent);
      opacity: 0;
      transform: translateX(0) translateY(0) scale(.18);
    }

.factory-ui .publish-lens .agent-body {
      position: absolute;
      inset: 0;
      transform-origin: center;
    }

.factory-ui .publish-lens .agent-halo,
.factory-ui .publish-lens .agent-orbit,
.factory-ui .publish-lens .agent-core,
.factory-ui .publish-lens .agent-cell {
      position: absolute;
      left: 50%;
      top: 50%;
      transform-origin: center;
    }

.factory-ui .publish-lens .agent-halo {
      width: 54px;
      height: 54px;
      margin: -27px;
      border: 1px solid currentColor;
      border-radius: 50%;
      opacity: .28;
    }

.factory-ui .publish-lens .agent-orbit {
      width: 40px;
      height: 40px;
      margin: -20px;
      border: 1px dashed currentColor;
      border-radius: 50%;
    }

.factory-ui .publish-lens .agent-core {
      width: 24px;
      height: 24px;
      margin: -12px;
      border: 2px solid currentColor;
      background: var(--paper);
      box-shadow: inset 0 0 0 5px color-mix(in srgb, currentColor 74%, transparent);
      clip-path: polygon(50% 0,100% 50%,50% 100%,0 50%);
    }

.factory-ui .publish-lens .agent-cell {
      width: 5px;
      height: 5px;
      margin: -2.5px;
      background: currentColor;
      transform: rotate(45deg);
    }

.factory-ui .publish-lens .agent-cell.c1 { transform: translate(-13px,10px) rotate(45deg); }
.factory-ui .publish-lens .agent-cell.c2 { transform: translate(11px,-11px) rotate(45deg); }
.factory-ui .publish-lens .agent-cell.c3 { transform: translate(9px,12px) rotate(45deg); }

.factory-ui .publish-lens .agent-name {
      position: absolute;
      left: 50%;
      top: 63px;
      width: 100px;
      transform: translateX(-50%);
      color: var(--ink);
      font: 800 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      text-align: center;
      white-space: nowrap;
    }

.factory-ui .publish-bound {
      position: absolute;
      z-index: 7;
      padding: 4px 6px;
      border: 1px solid currentColor;
      background: var(--paper);
      color: var(--accent);
      font: 900 7px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .09em;
      text-align: center;
      text-transform: uppercase;
      white-space: nowrap;
      opacity: 0;
    }

.factory-ui .publish-bound::after {
      content: "";
      position: absolute;
      left: 50%;
      height: 18px;
      border-left: 1px solid currentColor;
    }

.factory-ui .publish-set-bound { left: 45px; top: 156px; width: 62px; }
.factory-ui .publish-set-bound::after { top: 100%; }
.factory-ui .publish-receipt-bound { left: 283px; top: 339px; }
.factory-ui .publish-receipt-bound::after { bottom: 100%; }

.factory-ui .publish-tool {
      position: absolute;
      z-index: 8;
      left: 123px;
      top: -8px;
      width: 218px;
      height: 119px;
      padding: 8px 9px;
      border-top: 1px solid var(--accent);
      border-bottom: 1px solid var(--line);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      pointer-events: none;
    }

.factory-ui .publish-tool-label {
      margin: 0 0 8px;
      color: var(--ink);
      font: 800 6.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      white-space: nowrap;
    }

.factory-ui .publish-file-list {
      display: grid;
      grid-template-columns: repeat(5, 1fr);
      gap: 4px;
    }

.factory-ui .publish-file {
      display: grid;
      min-width: 0;
      height: 51px;
      padding: 5px 3px;
      align-content: space-between;
      border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--line));
      background: color-mix(in srgb, var(--accent) 4%, var(--paper));
      opacity: 0;
      transform: translateY(-7px) scaleY(.4);
      transform-origin: top;
    }

.factory-ui .publish-file b,
.factory-ui .publish-file i {
      display: block;
      overflow: hidden;
      font: 900 5.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .02em;
      text-overflow: clip;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .publish-file i { color: var(--muted); font-size: 4.5px; font-style: normal; }

.factory-ui .publish-tool-result {
      margin: 7px 0 0;
      color: var(--muted);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .08em;
      text-align: right;
      text-transform: uppercase;
      opacity: 0;
    }

.factory-ui .publish-receipt-flight {
      position: absolute;
      z-index: 7;
      inset: 0;
      width: 100%;
      height: 100%;
      overflow: visible;
      pointer-events: none;
    }

.factory-ui .publish-receipt-flight path,
.factory-ui .publish-set-link,
.factory-ui .notification-call-link,
.factory-ui .publish-to-notification-link,
.factory-ui .message-human-link,
.factory-ui .message-receipt-link {
      fill: none;
      stroke: var(--accent);
      stroke-width: 1;
      stroke-dasharray: 2 4;
      vector-effect: non-scaling-stroke;
      opacity: 0;
    }

.factory-ui .message-human-link {
      stroke: #b45f3f;
      stroke-width: 1.2;
    }

.factory-ui .notification-call-link,
.factory-ui .publish-to-notification-link {
      stroke: var(--accent);
      stroke-width: 1.1;
    }

.factory-ui .message-receipt-link {
      stroke: var(--accent);
      stroke-width: 1.1;
    }

.factory-ui .publish-receipt-token {
      position: absolute;
      z-index: 10;
      left: 306px;
      top: 83px;
      width: 18px;
      height: 18px;
      border: 1px dashed var(--accent);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      pointer-events: none;
    }

.factory-ui .publish-receipt-token::before {
      content: "";
      position: absolute;
      inset: 5px;
      background: currentColor;
    }

.factory-ui .publish-receipt-token span {
      position: absolute;
      left: 18px;
      top: -1px;
      width: 110px;
      color: var(--accent);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      transform: rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .publish-agent-ack,
.factory-ui .message-receipt-ack {
      position: absolute;
      inset: -6px;
      border: 1px solid var(--accent);
      border-radius: 50%;
      opacity: 0;
    }

.factory-ui .message-receipt-ack {
      inset: -10px;
      border-color: #b45f3f;
      border-style: dashed;
    }

.factory-ui .review-notification-tool {
      position: absolute;
      z-index: 13;
      left: 315px;
      top: 121px;
      width: 132px;
      min-height: 57px;
      padding: 7px 8px 6px;
      border-top: 1px solid #b45f3f;
      border-bottom: 1px solid color-mix(in srgb, #b45f3f 55%, var(--line));
      background: var(--paper);
      opacity: 0;
      transform: translateY(7px) scale(.88);
      transform-origin: center bottom;
      pointer-events: none;
    }

.factory-ui .review-notification-tool p {
      display: grid;
      gap: 3px;
      margin: 0;
      color: #91432d;
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .025em;
      line-height: 1.15;
      white-space: nowrap;
    }

.factory-ui .review-notification-tool p span {
      color: var(--accent);
      letter-spacing: .025em;
    }

.factory-ui .review-notification-tool p .mcp-tool-name { color: #91432d; }

.factory-ui .review-notification-tool b {
      display: block;
      margin-top: 7px;
      color: var(--muted);
      font: 900 5.5px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .07em;
      text-transform: uppercase;
      white-space: nowrap;
    }

.factory-ui .message-receipt-token {
      position: absolute;
      z-index: 15;
      left: 345px;
      top: 285px;
      width: 18px;
      height: 18px;
      border: 1px dashed var(--accent);
      background: var(--paper);
      color: var(--accent);
      opacity: 0;
      transform: rotate(45deg) scale(.3);
      pointer-events: none;
    }

.factory-ui .message-receipt-token::before {
      content: "";
      position: absolute;
      inset: 5px;
      background: currentColor;
    }

.factory-ui .message-receipt-token span {
      position: absolute;
      left: 18px;
      top: -1px;
      width: 130px;
      color: var(--accent);
      font: 900 6px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .06em;
      text-transform: uppercase;
      transform: rotate(-45deg);
      transform-origin: left center;
      white-space: nowrap;
    }

.factory-ui .human-review-gate {
      position: absolute;
      z-index: 14;
      right: -215px;
      top: 190px;
      display: grid;
      width: 118px;
      min-height: 61px;
      padding: 7px 8px 6px 12px;
      border: 1px solid color-mix(in srgb, #b45f3f 70%, var(--line));
      border-left: 3px solid #b45f3f;
      background: var(--paper);
      color: var(--ink);
      box-shadow: 0 0 0 transparent;
      opacity: 0;
      transform: translateY(7px) scale(.88);
      transform-origin: right bottom;
      pointer-events: none;
    }

.factory-ui .human-review-gate span,
.factory-ui .human-review-gate strong,
.factory-ui .human-review-gate b,
.factory-ui .human-review-gate em {
      display: block;
      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
      font-style: normal;
      line-height: 1.25;
      text-transform: uppercase;
    }

.factory-ui .human-review-gate span { color: #91432d; font-size: 5.5px; font-weight: 900; letter-spacing: .12em; }
.factory-ui .human-review-gate strong { margin-top: 2px; color: var(--accent); font-size: 8px; letter-spacing: .07em; }
.factory-ui .human-review-gate b { margin-top: 5px; color: var(--ink); font-size: 6px; letter-spacing: .05em; }
.factory-ui .human-review-gate em { margin-top: 1px; color: var(--muted); font-size: 5.5px; font-weight: 900; letter-spacing: .05em; }

.factory-ui .publish-set-node { left: 171px; right: auto; top: 112px; }
.factory-ui .publish-task-receipt-node { right: -28px; top: 87px; }
.factory-ui .publish-route-report-node { right: -28px; top: 321px; }
.factory-ui .publish-lens .context-gauge { top: 338px; }

.factory-ui .publish-lens.settled .publish-tool,
.factory-ui .publish-lens.settled .publish-file,
.factory-ui .publish-lens.settled .publish-tool-result,
.factory-ui .publish-lens.settled .publish-bound,
.factory-ui .publish-lens.settled .human-review-gate,
.factory-ui .publish-lens.settled .review-notification-tool { opacity: 1; transform: none; }

.factory-ui .obligation-window.settled {
      opacity: 1;
      background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 4%, transparent), transparent 42%);
    }

.factory-ui .obligation-window.settled .context-gauge::before { transform: scaleX(1); }

.factory-ui .obligation-window.settled .agent-traveler,
.factory-ui .obligation-window.settled .validation-agent { opacity: 0; }

.factory-ui .obligation-window.settled .work-agent-anchor {
      opacity: .68;
      transform: scale(1);
    }

.factory-ui .obligation-window.settled .proof-receipt-link,
.factory-ui .obligation-window.settled .route-report-link,
.factory-ui .obligation-window.settled .notification-call-link,
.factory-ui .obligation-window.settled .publish-to-notification-link,
.factory-ui .obligation-window.settled .message-human-link,
.factory-ui .obligation-window.settled .message-receipt-link { opacity: .8; }

.factory-ui .obligation-window.settled .artifact-node {
      opacity: 1;
      transform: scale(1);
    }

.factory-ui .first-lens.settled .ingredient,
.factory-ui .first-lens.settled .index-tool-call,
.factory-ui .first-lens.settled .index-tree-node {
      opacity: 1;
      transform: none;
    }

.factory-ui .first-lens.settled .index-tree-edge {
      stroke: var(--accent);
      stroke-dashoffset: 0;
    }

.factory-ui .first-lens.settled .index-artifact-link { opacity: .8; }

.factory-ui .source-lens.settled .si-artifact-link { opacity: .8; }

.factory-ui .pack-lens.settled .pack-artifact-link { opacity: .8; }

.factory-ui .runner-lens.settled .runner-artifact-link { opacity: .8; }

.factory-ui .source-lens.settled .source-bound,
.factory-ui .source-lens.settled .source-intelligence-tool,
.factory-ui .source-lens.settled .source-intel-item {
      opacity: 1;
      transform: none;
    }

.factory-ui .source-lens.settled .source-receipt-bound { transform: translateX(-90px); }

.factory-ui .source-lens.settled .source-receipt-bound::after {
      left: 50%;
      width: 0;
      border-bottom-color: transparent;
    }

.factory-ui .pack-lens.settled .pack-bound,
.factory-ui .pack-lens.settled .inspection-pack-tool,
.factory-ui .pack-lens.settled .inspection-pack {
      opacity: 1;
      transform: none;
    }

.factory-ui .pack-lens.settled .runner-file-slot {
      opacity: .55;
      transform: scaleX(1);
    }

.factory-ui .pack-lens.settled .pack-kb-count { --kb-count: var(--pack-kb); opacity: 1; filter: none; }

.factory-ui .pack-lens.settled .pack-receipt-bound { transform: translateX(-90px); }

.factory-ui .pack-lens.settled .pack-receipt-bound::after {
      left: 50%;
      width: 0;
      border-bottom-color: transparent;
    }

.factory-ui .runner-lens.settled .runner-bound,
.factory-ui .runner-lens.settled .runner-composition-tool,
.factory-ui .runner-lens.settled .runner-file-packet,
.factory-ui .runner-lens.settled .runner-server,
.factory-ui .runner-lens.settled .runner-output {
      opacity: 1;
      transform: none;
    }

.factory-ui .runner-lens.settled .runner-file-packet { opacity: .42; }

.factory-ui .runner-lens.settled .runner-tool-result { opacity: 1; }

.factory-ui .runner-lens.settled .runner-receipt-bound { transform: translateX(-90px); }

.factory-ui .runner-lens.settled .runner-receipt-bound::after {
      left: 50%;
      width: 0;
      border-bottom-color: transparent;
    }

.factory-ui .execution-lens.settled .execution-burst,
.factory-ui .execution-lens.settled .execution-project,
.factory-ui .execution-lens.settled .execution-tool-result {
      opacity: 1;
      transform: none;
    }

.factory-ui .execution-lens.settled .execution-task-agent {
      opacity: .28;
      transform: translateX(var(--task-run)) rotate(430deg) scale(.58);
    }

.factory-ui .execution-lens.settled .execution-task-guardian {
      opacity: .7;
      transform: scale(.82) rotate(45deg);
    }

.factory-ui .execution-lens.settled .execution-task-receipt { opacity: 0; }

.factory-ui .execution-lens.settled .execution-project-context::before { transform: scaleX(1); }

.factory-ui .execution-lens.settled .execution-flow-routes path { opacity: .58; }

.factory-ui .context-gauge {
      position: absolute;
      left: 112px;
      top: 302px;
      width: 176px;
      height: 3px;
      background: var(--line);
    }

.factory-ui .context-gauge::before {
      content: "";
      display: block;
      width: var(--budget-fill, 56%);
      height: 100%;
      background: var(--accent);
      transform-origin: left;
      transform: scaleX(0);
    }

.factory-ui .context-gauge span { position: absolute; left: 0; top: 9px; width: 100%; color: var(--muted); font: 800 8px ui-monospace, monospace; }

.factory-ui .context-gauge .context-model { top: 21px; font-size: 7px; letter-spacing: .035em; text-transform: uppercase; }

.factory-ui .route-line,
.factory-ui .fan-line,
.factory-ui .evidence-line,
.factory-ui .receipt-line {
      position: absolute;
      height: 1px;
      background: var(--line);
      transform-origin: left center;
      opacity: .35;
    }

.factory-ui .active .route-line,
.factory-ui .active .fan-line,
.factory-ui .active .evidence-line,
.factory-ui .active .receipt-line { background: var(--accent); opacity: .8; }

.factory-ui .route-node,
.factory-ui .source,
.factory-ui .receipt {
      position: absolute;
      display: grid;
      place-items: center;
      min-width: 54px;
      min-height: 24px;
      padding: 5px 7px;
      border: 1px solid var(--line);
      background: var(--paper);
      color: var(--muted);
      font: 800 8px ui-monospace, monospace;
      text-align: center;
      opacity: .3;
    }

.factory-ui .active .route-node,
.factory-ui .active .source,
.factory-ui .active .receipt { border-color: var(--accent); color: var(--accent); opacity: 1; }

.factory-ui .route-node.ledger { left: 25px; top: 82px; }

.factory-ui .route-node.setup { left: 145px; top: 40px; }

.factory-ui .route-node.worker { left: 257px; top: 82px; }

.factory-ui .route-node.guardian { left: 145px; top: 142px; }

.factory-ui .route-line.r1 { left: 78px; top: 95px; width: 80px; transform: rotate(-19deg); }

.factory-ui .route-line.r2 { left: 198px; top: 57px; width: 77px; transform: rotate(24deg); }

.factory-ui .route-line.r3 { left: 198px; top: 158px; width: 79px; transform: rotate(-25deg); }

.factory-ui .route-line.r4 { left: 78px; top: 99px; width: 87px; transform: rotate(37deg); }

.factory-ui .fan-origin { left: 31px; top: 214px; }

.factory-ui .fan-worker { width: 34px; height: 34px; }

.factory-ui .fan-worker::after { inset: 10px; box-shadow: inset 0 0 0 4px currentColor; }

.factory-ui .fan-worker::before { inset: 3px; }

.factory-ui .fan-worker .agent-tag { top: 38px; font-size: 7px; }

.factory-ui .fan-1 { left: 118px; top: 42px; }

.factory-ui .fan-2 { left: 212px; top: 70px; }

.factory-ui .fan-3 { left: 302px; top: 114px; }

.factory-ui .fan-4 { left: 302px; top: 234px; }

.factory-ui .fan-5 { left: 212px; top: 276px; }

.factory-ui .fan-6 { left: 118px; top: 304px; }

.factory-ui .fan-line.f1 { left: 65px; top: 231px; width: 194px; transform: rotate(-55deg); }

.factory-ui .fan-line.f2 { left: 65px; top: 231px; width: 205px; transform: rotate(-38deg); }

.factory-ui .fan-line.f3 { left: 65px; top: 231px; width: 264px; transform: rotate(-20deg); }

.factory-ui .fan-line.f4 { left: 65px; top: 231px; width: 262px; transform: rotate(4deg); }

.factory-ui .fan-line.f5 { left: 65px; top: 231px; width: 208px; transform: rotate(20deg); }

.factory-ui .fan-line.f6 { left: 65px; top: 231px; width: 187px; transform: rotate(34deg); }

.factory-ui .active .fan-worker:nth-of-type(1) { transition-delay: .15s; }

.factory-ui .active .fan-worker:nth-of-type(2) { transition-delay: .3s; }

.factory-ui .active .fan-worker:nth-of-type(3) { transition-delay: .45s; }

.factory-ui .active .fan-worker:nth-of-type(4) { transition-delay: .6s; }

.factory-ui .active .fan-worker:nth-of-type(5) { transition-delay: .75s; }

.factory-ui .active .fan-worker:nth-of-type(6) { transition-delay: .9s; }

.factory-ui .lane {
      position: absolute;
      left: 20px;
      right: 20px;
      height: 39px;
      border-top: 1px solid var(--line);
    }

.factory-ui .lane::after {
      content: "";
      position: absolute;
      top: -4px;
      left: 0;
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: var(--green);
      opacity: 0;
    }

.factory-ui .lane.l1 { top: 72px; }

.factory-ui .lane.l2 { top: 126px; }

.factory-ui .lane.l3 { top: 180px; }

.factory-ui .lane.l4 { top: 234px; }

.factory-ui .lane.held { border-color: var(--orange); }

.factory-ui .lane.held::before {
      content: "HELD · authority required";
      position: absolute;
      top: -17px;
      right: 0;
      color: var(--orange);
      font: 800 8px ui-monospace, monospace;
    }

.factory-ui .human-question {
      position: absolute;
      right: 24px;
      top: 276px;
      width: 224px;
      padding: 12px 13px;
      border-left: 2px solid var(--gold);
      background: var(--paper);
      opacity: 0;
      transform: translateY(12px);
    }

.factory-ui .active .human-question { opacity: 1; transform: translateY(0); transition: .6s ease 1s; }

.factory-ui .human-question strong { display: block; color: var(--gold); font-size: 8px; letter-spacing: .1em; text-transform: uppercase; }

.factory-ui .human-question span { display: block; margin-top: 6px; font: 500 10px Georgia, serif; }

.factory-ui .curiosity-agent { left: 170px; top: 205px; }

.factory-ui .source.s1 { left: 18px; top: 52px; }

.factory-ui .source.s2 { left: 145px; top: 28px; }

.factory-ui .source.s3 { right: 28px; top: 62px; }

.factory-ui .source.s4 { right: 10px; top: 150px; }

.factory-ui .evidence-line.e1 { left: 67px; top: 77px; width: 170px; transform: rotate(42deg); }

.factory-ui .evidence-line.e2 { left: 185px; top: 53px; width: 171px; transform: rotate(82deg); }

.factory-ui .evidence-line.e3 { left: 219px; top: 206px; width: 185px; transform: rotate(-47deg); }

.factory-ui .evidence-line.e4 { left: 219px; top: 218px; width: 186px; transform: rotate(-17deg); }

.factory-ui .fact-chip {
      position: absolute;
      padding: 5px 7px;
      border: 1px solid var(--green);
      background: var(--paper);
      color: var(--green);
      font: 800 8px ui-monospace, monospace;
      opacity: 0;
    }

.factory-ui .fact-chip.c1 { left: 80px; top: 156px; }

.factory-ui .receipt.r1 { left: 15px; top: 66px; }

.factory-ui .receipt.r2 { left: 126px; top: 31px; }

.factory-ui .receipt.r3 { right: 76px; top: 67px; }

.factory-ui .receipt.r4 { right: 20px; top: 160px; }

.factory-ui .receipt.r5 { right: 92px; top: 270px; }

.factory-ui .receipt.r6 { left: 82px; top: 283px; }

.factory-ui .closure-agent { left: 178px; top: 192px; }

.factory-ui .closure-ring {
      position: absolute;
      left: 117px;
      top: 132px;
      width: 170px;
      height: 170px;
      border: 1px dashed var(--violet);
      border-radius: 50%;
      opacity: .25;
    }

.factory-ui .fulfilled {
      position: absolute;
      left: 89px;
      top: 318px;
      width: 222px;
      padding-top: 9px;
      border-top: 2px solid var(--violet);
      color: var(--violet);
      font: 800 9px ui-monospace, monospace;
      text-align: center;
      opacity: 0;
    }

.factory-ui .active .fulfilled { opacity: 1; transition: opacity .5s ease 1.3s; }

.factory-ui .tour-bar {
      display: grid;
      grid-template-columns: auto minmax(0,1fr) auto;
      align-items: center;
      gap: 22px;
    }

.factory-ui .tour-controls {
      display: grid;
      grid-template-columns: repeat(3, minmax(72px, auto));
      gap: 5px 7px;
    }

.factory-ui .tour-controls button {
      min-width: 72px;
      padding: 0 12px;
      border: 1px solid var(--ink);
      border-radius: 0;
      background: transparent;
      font-size: 9px;
      font-weight: 800;
      letter-spacing: .09em;
      text-transform: uppercase;
      cursor: pointer;
    }

.factory-ui .tour-controls button:not(.tour-help) {
      grid-row: 2;
      height: 27px;
      padding: 0 12px;
}

.factory-ui .tour-controls .primary { color: var(--paper); background: var(--ink); }

.factory-ui .tour-controls .tour-help {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      grid-column: 1 / -1;
      grid-row: 1;
      justify-self: end;
      min-width: auto;
      min-height: 30px;
      padding-inline: 10px;
      border-color: var(--ink);
      color: var(--ink);
      background: var(--paper);
}

.factory-ui .tour-controls .tour-help:hover { color: var(--ink); background: color-mix(in srgb, var(--ink) 7%, var(--paper)); }

.factory-ui .tour-controls .tour-help-icon {
      display: inline-grid;
      width: 15px;
      height: 15px;
      flex: 0 0 15px;
      place-items: center;
      border-radius: 50%;
      background: var(--ink);
      color: var(--paper);
      font: 800 9px/1 Georgia, serif;
      letter-spacing: 0;
      text-transform: none;
}

.factory-ui .tour-controls button:focus-visible { outline: 3px solid color-mix(in srgb, var(--violet) 35%, transparent); outline-offset: 2px; }

.factory-ui .tour-status { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 18px; }

.factory-ui .tour-count { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

.factory-ui .tour-progress { height: 2px; background: var(--line); }

.factory-ui .tour-progress div { width: 16.66%; height: 100%; background: var(--ink); transition: width .8s ease; }

.factory-ui .tour-caption { max-width: 470px; color: var(--muted); font-size: 10px; line-height: 1.45; text-align: right; }

body.bounded-tour-hint-open { overflow: hidden; }

.bounded-tour-hint {
      --paper-2: #f2f3ef;
      --violet: #75658c;
      color: var(--ink);
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
}

.bounded-tour-hint[hidden] { display: none; }

.bounded-tour-hint-backdrop {
      position: fixed;
      z-index: 100;
      inset: 0;
      background: color-mix(in srgb, var(--paper) 78%, transparent);
      -webkit-backdrop-filter: grayscale(.85) saturate(.25) blur(1px);
      backdrop-filter: grayscale(.85) saturate(.25) blur(1px);
}

.bounded-tour-hint-card {
      position: fixed;
      z-index: 101;
      left: 50%;
      top: clamp(176px, 28vh, 286px);
      width: min(480px, calc(100vw - 32px));
      padding: 28px 28px 26px;
      border: 1px solid var(--ink);
      background: var(--paper-2);
      box-shadow: 0 18px 54px color-mix(in srgb, var(--ink) 18%, transparent);
      transform: translateX(-50%);
}

.bounded-tour-hint-eyebrow {
      margin: 0 0 12px;
      color: var(--violet);
      font-size: 9px;
      font-weight: 900;
      letter-spacing: .13em;
      text-transform: uppercase;
}

.bounded-tour-hint-card h2 {
      max-width: none;
      margin: 0;
      color: var(--ink);
      font-family: Georgia, "Times New Roman", serif;
      font-size: clamp(25px, 3vw, 34px);
      font-weight: 400;
      line-height: 1.08;
      letter-spacing: -.025em;
}

.bounded-tour-hint-card > p:not(.bounded-tour-hint-eyebrow) {
      max-width: 42ch;
      margin: 17px 0 0;
      color: var(--muted);
      font-size: 13px;
      line-height: 1.55;
}

.bounded-tour-hint-card > p + p:not(.bounded-tour-hint-eyebrow) { margin-top: 10px; }

.bounded-tour-hint-actions {
      display: flex;
      gap: 9px;
      margin-top: 23px;
}

.bounded-tour-hint-actions button {
      min-width: 108px;
      padding: 10px 15px;
      border: 1px solid var(--ink);
      border-radius: 0;
      background: transparent;
      color: inherit;
      font-family: inherit;
      font-size: 9px;
      font-weight: 800;
      letter-spacing: .09em;
      text-transform: uppercase;
      cursor: pointer;
}

.bounded-tour-hint-actions .primary {
      color: var(--paper);
      background: var(--ink);
}

.bounded-tour-hint-actions button:focus-visible {
      outline: 3px solid color-mix(in srgb, var(--violet) 38%, transparent);
      outline-offset: 3px;
}

body.bounded-tour-coach-open { overflow: hidden; }

.bounded-tour-coach {
      --coach-paper: #f2f3ef;
      --coach-ink: #19211d;
      --coach-muted: #68716b;
      --coach-violet: #75658c;
      color: var(--coach-ink);
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
}

.bounded-tour-coach[hidden] { display: none; }

.bounded-tour-coach::before {
      content: "";
      position: fixed;
      z-index: 109;
      inset: 0;
      background: transparent;
}

.bounded-tour-coach-focus {
      position: fixed;
      z-index: 110;
      left: var(--coach-focus-left, 50%);
      top: var(--coach-focus-top, 50%);
      width: var(--coach-focus-width, 44px);
      height: var(--coach-focus-height, 32px);
      border: 2px solid var(--coach-ink);
      background: transparent;
      box-shadow: 0 0 0 9999px color-mix(in srgb, var(--paper) 82%, transparent), 0 0 0 5px color-mix(in srgb, var(--coach-ink) 16%, transparent);
      pointer-events: none;
      transition: left .28s ease, top .28s ease, width .28s ease, height .28s ease;
}

.bounded-tour-coach-focus.bounded-tour-coach-focus-tracking {
      transition: none;
}

.bounded-tour-coach-focus::after {
      content: attr(data-step);
      position: absolute;
      top: -17px;
      left: -17px;
      display: grid;
      width: 30px;
      height: 30px;
      place-items: center;
      border-radius: 50%;
      color: var(--paper);
      background: var(--coach-ink);
      font: 900 8px ui-monospace, SFMono-Regular, Menlo, monospace;
      letter-spacing: .04em;
}

.bounded-tour-coach-card {
      position: fixed;
      z-index: 111;
      left: 50%;
      bottom: 28px;
      width: min(430px, calc(100vw - 32px));
      padding: 22px 24px 20px;
      border: 1px solid var(--coach-ink);
      background: var(--coach-paper);
      box-shadow: 0 16px 46px color-mix(in srgb, var(--coach-ink) 20%, transparent);
      transform: translateX(-50%);
}

.bounded-tour-coach-card.bounded-tour-coach-card-top {
      top: 28px;
      bottom: auto;
}

.bounded-tour-coach-eyebrow {
      margin: 0 0 9px;
      color: var(--coach-violet);
      font-size: 9px;
      font-weight: 900;
      letter-spacing: .13em;
      text-transform: uppercase;
}

.bounded-tour-coach-card h2 {
      margin: 0;
      color: var(--coach-ink);
      font-family: Georgia, "Times New Roman", serif;
      font-size: 27px;
      font-weight: 400;
      line-height: 1.08;
      letter-spacing: -.02em;
}

.bounded-tour-coach-card > p:not(.bounded-tour-coach-eyebrow) {
      max-width: 42ch;
      margin: 12px 0 0;
      color: var(--coach-muted);
      font-size: 13px;
      line-height: 1.5;
}

.bounded-tour-coach-actions {
      display: flex;
      gap: 9px;
      margin-top: 18px;
}

.bounded-tour-coach-actions button {
      min-width: 104px;
      padding: 9px 14px;
      border: 1px solid var(--coach-ink);
      border-radius: 0;
      color: inherit;
      background: transparent;
      font-family: inherit;
      font-size: 9px;
      font-weight: 800;
      letter-spacing: .09em;
      text-transform: uppercase;
      cursor: pointer;
}

.bounded-tour-coach-actions .primary {
      color: var(--paper);
      background: var(--coach-ink);
}

.bounded-tour-coach-actions button:focus-visible {
      outline: 3px solid color-mix(in srgb, var(--coach-violet) 38%, transparent);
      outline-offset: 3px;
}

@media (max-width: 900px) {
.factory-ui .masthead { grid-template-columns: 1fr; }

.factory-ui .intro { max-width: 700px; }

.factory-ui .strip { padding-inline: 100px; }

.factory-ui .tour-bar { grid-template-columns: 1fr; }

.factory-ui .tour-caption { max-width: none; text-align: left; }
}

@media (max-width: 560px) {
.factory-ui .app { padding-inline: 12px; }

.factory-ui .strip { padding-inline: 30px; }

.factory-ui .obligation-window { flex-basis: 390px; padding-inline: 24px; }

.factory-ui .scene { left: 15px; right: 15px; }

.factory-ui .tour-status { grid-template-columns: 1fr; gap: 8px; }

.factory-ui .tour-controls { flex-wrap: wrap; }

.bounded-tour-hint-card {
      left: 16px;
      right: 16px;
      top: 110px;
      width: auto;
      padding: 23px 20px 20px;
      transform: none;
}

.bounded-tour-hint-actions { align-items: stretch; flex-direction: column; }

.bounded-tour-hint-actions button { width: 100%; }

.bounded-tour-coach-card,
.bounded-tour-coach-card.bounded-tour-coach-card-top {
      left: 16px;
      right: 16px;
      top: auto;
      bottom: 16px;
      width: auto;
      padding: 20px;
      transform: none;
}

.bounded-tour-coach-card.bounded-tour-coach-card-top {
      top: 16px;
      bottom: auto;
}

.bounded-tour-coach-actions { align-items: stretch; }

.bounded-tour-coach-actions button { flex: 1; min-width: 0; }
}

/* Bounded Autonomy page integration */
body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero > div {
  min-width: 0;
}
body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero .eyebrow {
  color: #d85e49;
}
body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero {
  padding: 30px 0 60px;
}
body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero h1 {
  font-size: calc(clamp(54px, 7vw, 84px) - 2px);
}
body[data-topic="bounded-autonomy"] .bounded-factory-model {
  min-width: 0;
  min-height: 0;
  width: 500px;
  align-self: end;
  justify-self: end;
  margin-top: 0;
  transform: translateY(24px);
}
body[data-topic="bounded-autonomy"] .bounded-factory-model .factory-map {
  margin-inline: auto;
  padding: 0;
  padding-bottom: 0;
  border-left: 0;
  transform: none;
}
body[data-topic="bounded-autonomy"] .bounded-factory-model [data-factory-graph] {
  transform: translateX(10.39%);
}
body[data-topic="bounded-autonomy"] .bounded-factory-model .factory-task-rail {
  width: auto;
  margin: 9px 10.39% 0 2.73%;
  left: 10.39%;
  justify-content: center;
  text-align: center;
}
body[data-topic="bounded-autonomy"] .bounded-factory-model .factory-phase-label,
body[data-topic="bounded-autonomy"] .bounded-factory-model .factory-phase-rule {
  display: none;
}
body[data-topic="bounded-autonomy"] .bounded-tour-dock {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  grid-template-rows: 30px 27px;
  row-gap: 5px;
  column-gap: 12px;
  justify-content: end;
  align-items: center;
  min-height: 31px;
  margin-top: 8px;
  padding-left: 13.12%;
  padding-bottom: 0;
}
body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-status {
  display: contents;
}
body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-progress {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
  width: 100%;
  max-width: 100%;
}
body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-controls {
  grid-column: 3;
  grid-row: 1 / 3;
}
body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-count {
  position: static;
  grid-column: 2;
  grid-row: 2;
  transform: none;
  white-space: nowrap;
}
body[data-topic="bounded-autonomy"] .bounded-autonomy-stage { width: 100%; padding: 6px 0 8px; border-top: 1px solid var(--line); }
body[data-topic="bounded-autonomy"] .bounded-factory .app { position: relative; min-height: 0; padding: 0; grid-template-rows: auto auto; gap: 4px; }
body[data-topic="bounded-autonomy"] .bounded-factory .tour-bar { height: 0; }
body[data-topic="bounded-autonomy"] .bounded-factory .masthead { grid-template-columns: 1fr; }
body[data-topic="bounded-autonomy"] .bounded-factory .masthead h1 { max-width: 760px; }
body[data-topic="bounded-autonomy"] .bounded-factory .viewport { min-height: 480px; border-top: 0; border-bottom: 0; }
body[data-topic="bounded-autonomy"] .bounded-factory .obligation-window { min-height: 480px; padding-top: 10px; }
body[data-topic="bounded-autonomy"] .bounded-factory .scene { bottom: 12px; }
body[data-topic="bounded-autonomy"] .bounded-factory .viewport::before { display: none; }
body[data-topic="bounded-autonomy"] .bounded-factory .strip { padding: 0 220px 0 16px; }
@media (min-width: 1900px) {
  body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero {
    grid-template-columns: minmax(0, 1fr) 940px;
    gap: 56px;
  }
  body[data-topic="bounded-autonomy"] .bounded-factory-model {
    width: 940px;
  }
}
@media (max-width: 900px) {
  body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero {
    padding: 30px 0 34px;
  }
  body[data-topic="bounded-autonomy"] .bounded-autonomy-shell .tab-hero h1 {
    font-size: calc(clamp(50px, 14vw, 64px) - 2px);
  }
}
@media (max-width: 980px) {
  body[data-topic="bounded-autonomy"] .bounded-factory-model { width: 100%; transform: none; }
  body[data-topic="bounded-autonomy"] .bounded-factory .strip { padding-right: 100px; }
}
@media (max-width: 560px) {
  .factory-ui .index-tool-label {
    font-size: 5.6px;
    letter-spacing: 0;
  }
  body[data-topic="bounded-autonomy"] .bounded-tour-dock {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-rows: 30px 27px;
    column-gap: 10px;
    row-gap: 5px;
    padding-left: 0;
  }
  body[data-topic="bounded-autonomy"] .bounded-autonomy-stage { padding-top: 6px; }
  body[data-topic="bounded-autonomy"] .bounded-factory .viewport { min-height: 480px; }
  body[data-topic="bounded-autonomy"] .bounded-factory .strip { padding-right: 30px; }
  body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-controls {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-column: 2;
    grid-row: 1 / 3;
    width: min(244px, 62vw);
  }
  body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-progress {
    grid-column: 1;
    grid-row: 2;
    width: 100%;
  }
  body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-count {
    grid-column: 1;
    grid-row: 1;
    align-self: end;
    justify-self: start;
  }
  body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-controls button:not(.tour-help) {
    min-width: 0;
    padding-inline: 7px;
  }
  body[data-topic="bounded-autonomy"] .bounded-tour-dock .tour-controls .tour-help {
    grid-column: 1 / -1;
    grid-row: 1;
    justify-self: center;
  }
}
