/* Portfolio component only: no changes to host navigation or global layout. */
.microarray-workflow-module{--mw-ink:var(--plum,#4e2d5c);--mw-muted:#6d6479;--mw-paper:#fafafb;--mw-line:#d7d4df;--mw-input:#507b72;--mw-prepare:#6d5893;--mw-network:#496f86;--mw-group:#777548;--mw-follow:#96694a;--mw-export:#956078;color:var(--mw-ink);font-family:inherit;line-height:1.75;padding-block:36px 40px}
.microarray-workflow-module *,.microarray-workflow-module *::before,.microarray-workflow-module *::after{box-sizing:border-box}
.microarray-workflow-module .mw-meta{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:17px}
.microarray-workflow-module .mw-meta span:last-child{font-size:.8rem;color:var(--mw-muted)}
.microarray-workflow-module .mw-eyebrow{font-family:inherit;font-weight:600;font-size:.75rem;line-height:1.5;text-transform:uppercase;letter-spacing:.13em;margin:0;color:var(--mw-ink)}
.microarray-workflow-module h1{max-width:900px;font:400 clamp(2rem,4.2vw,3.25rem)/1.15 var(--heading-font,Georgia,serif);letter-spacing:-.035em;margin:0 0 23px}
.microarray-workflow-module .mw-contribution{max-width:800px;font-size:1.02rem;line-height:1.8;color:var(--mw-muted);margin:0}
.microarray-workflow-module .mw-instruction{font-size:.83rem;margin:20px 0 30px}
.microarray-workflow-module .mw-route{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:13px}
.microarray-workflow-module .mw-step{--mw-stage:var(--mw-input);position:relative;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:17px 13px 13px;border:1px solid var(--mw-line);border-radius:8px;background:var(--mw-paper);font:inherit;color:var(--mw-ink);text-align:left;cursor:pointer}
.microarray-workflow-module .mw-step[data-step="1"]{--mw-stage:var(--mw-prepare)}
.microarray-workflow-module .mw-step[data-step="2"]{--mw-stage:var(--mw-network)}
.microarray-workflow-module .mw-step[data-step="3"]{--mw-stage:var(--mw-group)}
.microarray-workflow-module .mw-step[data-step="4"]{--mw-stage:var(--mw-follow)}
.microarray-workflow-module .mw-step[data-step="5"]{--mw-stage:var(--mw-export)}
.microarray-workflow-module .mw-step[aria-pressed="true"]{border-color:var(--mw-stage);box-shadow:inset 0 -3px var(--mw-stage)}
.microarray-workflow-module .mw-step:hover{border-color:var(--mw-stage)}
.microarray-workflow-module .mw-step:not(:last-child)::after{content:'›';position:absolute;right:-12px;top:90px;color:var(--mw-muted);font-size:1rem}
.microarray-workflow-module .mw-number{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;font-size:.75rem;background:var(--mw-stage);color:#fff}
.microarray-workflow-module .mw-step strong{font-size:1rem;font-weight:600}
.microarray-workflow-module .mw-operation{font-size:.77rem;line-height:1.65;color:var(--mw-muted);min-height:50px}
.microarray-workflow-module .mw-mini{width:100%;height:48px;display:block;margin-top:auto;padding-top:9px;border-top:1px solid var(--mw-line)}
.microarray-workflow-module .mw-mini svg{display:block;width:100%;height:38px}
.microarray-workflow-module .mw-artifact{font-size:.73rem;line-height:1.5;color:var(--mw-stage)}
.microarray-workflow-module .mw-example{background:var(--mw-paper);border-top:1px solid var(--mw-line);border-radius:0 0 8px 8px;margin-top:32px;padding:26px 28px 20px}
.microarray-workflow-module .mw-example-head{display:flex;justify-content:space-between;gap:16px;align-items:baseline;margin-bottom:27px}
.microarray-workflow-module .mw-example-head span{font-size:.78rem;color:var(--mw-muted)}
.microarray-workflow-module .mw-inspector{display:grid;grid-template-columns:235px minmax(0,1fr);gap:40px;align-items:start;min-height:310px}
.microarray-workflow-module .mw-copy h3{font:400 1.6rem/1.25 var(--heading-font,Georgia,serif);margin:0 0 14px;color:var(--mw-ink)}
.microarray-workflow-module .mw-copy p{font-size:.85rem;line-height:1.75;color:var(--mw-muted);margin:0 0 17px}
.microarray-workflow-module .mw-objects{display:grid;gap:5px;margin:0}
.microarray-workflow-module .mw-objects dt{font-size:.75rem;color:var(--mw-muted)}
.microarray-workflow-module .mw-objects dd{font-size:.83rem;line-height:1.5;margin:0 0 9px}
.microarray-workflow-module .mw-tool{display:block;margin-top:16px;font:.75rem/1.7 ui-monospace,Consolas,monospace;overflow-wrap:anywhere}
.microarray-workflow-module .mw-display{min-width:0;min-height:280px;padding-top:3px}
.microarray-workflow-module .mw-enter{animation:mw-enter .24s ease both}
@keyframes mw-enter{from{opacity:.45;transform:translateY(5px)}to{opacity:1;transform:none}}
.microarray-workflow-module .mw-bottom{display:flex;justify-content:space-between;gap:20px;padding-top:14px;margin-top:17px;border-top:1px solid var(--mw-line);font-size:.75rem;line-height:1.7;color:var(--mw-muted)}
.microarray-workflow-module .mw-bottom span:last-child{flex-shrink:0}
.microarray-workflow-module .mw-hit{border:0;border-radius:0;padding:0;background:transparent;font:inherit;color:inherit;cursor:pointer}
.microarray-workflow-module .mw-hit:hover{outline:1px solid var(--mw-line);outline-offset:3px}
.microarray-workflow-module .mw-step:focus-visible,.microarray-workflow-module .mw-hit:focus-visible,.microarray-workflow-module summary:focus-visible{outline:3px solid var(--mw-network);outline-offset:4px}
.microarray-workflow-module .mw-matrix{display:grid;grid-template-columns:92px repeat(6,minmax(0,1fr));gap:5px;align-items:center}
.microarray-workflow-module .mw-sample{font-size:.73rem;text-align:center;color:var(--mw-muted);padding-bottom:5px}
.microarray-workflow-module .mw-gene{font-size:.8rem;overflow-wrap:anywhere}
.microarray-workflow-module .mw-cell{height:34px;min-width:0;background:var(--mw-fill);border-radius:2px;transition:background-color .4s}
.microarray-workflow-module .mw-caption{font-size:.74rem;line-height:1.6;color:var(--mw-muted);margin:14px 0 0}
.microarray-workflow-module .mw-legend{display:flex;justify-content:flex-end;align-items:center;gap:8px;font-size:.73rem;color:var(--mw-muted);margin-top:14px}
.microarray-workflow-module .mw-legend-strip{display:flex;width:85px;height:8px}
.microarray-workflow-module .mw-legend-strip i{flex:1}
.microarray-workflow-module .mw-bar-row{display:block;width:100%;text-align:left;margin-bottom:18px;padding:4px 0;font-size:.85rem}
.microarray-workflow-module .mw-bar-label{display:flex;justify-content:space-between;gap:15px;margin-bottom:7px}
.microarray-workflow-module .mw-bar-label small{font-size:.73rem;color:var(--mw-muted)}
.microarray-workflow-module .mw-track{display:block;height:12px;background:#ebe8f0;border-radius:3px}
.microarray-workflow-module .mw-bar{display:block;height:100%;background:var(--mw-prepare);border-radius:3px;transition:width .4s}
.microarray-workflow-module .mw-axis{display:flex;justify-content:space-between;color:var(--mw-muted);font-size:.73rem;margin-top:8px;border-top:1px solid var(--mw-line);padding-top:6px}
.microarray-workflow-module .mw-network{display:block;width:100%;height:290px;overflow:visible}
.microarray-workflow-module .mw-edge{stroke:var(--mw-network);opacity:.35;transition:opacity .15s}
.microarray-workflow-module .mw-edge.is-active{opacity:1}
.microarray-workflow-module .mw-node circle{fill:var(--mw-paper);stroke:var(--mw-network);stroke-width:2}
.microarray-workflow-module .mw-node text{fill:var(--mw-ink);font-size:13px;font-family:inherit}
.microarray-workflow-module .mw-node.is-active circle{fill:var(--mw-network)}
.microarray-workflow-module .mw-node.is-active text{font-weight:600}
.microarray-workflow-module .mw-edge-hit{stroke:transparent;stroke-width:16;cursor:pointer}
.microarray-workflow-module .mw-node:hover{outline:none}
.microarray-workflow-module .mw-node:focus-visible circle,.microarray-workflow-module .mw-edge-hit:focus-visible{stroke:var(--mw-prepare);stroke-width:4}
.microarray-workflow-module .mw-links{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:9px}
.microarray-workflow-module .mw-links button{font-size:.72rem;line-height:1.6;color:var(--mw-network);padding:4px}
.microarray-workflow-module .mw-assoc{display:grid;grid-template-columns:94px repeat(3,minmax(0,1fr));gap:5px;align-items:center}
.microarray-workflow-module .mw-assoc-cell{height:47px;border-radius:2px;background:var(--mw-fill);position:relative}
.microarray-workflow-module .mw-assoc-cell::after{content:var(--mw-sign);position:absolute;inset:0;display:grid;place-items:center;font-size:.95rem;color:var(--mw-text)}
.microarray-workflow-module .mw-controls{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:17px}
.microarray-workflow-module .mw-control{font:inherit;font-size:.76rem;border:1px solid var(--mw-line);border-radius:999px;padding:6px 13px;background:transparent;color:var(--mw-ink);cursor:pointer;min-height:36px}
.microarray-workflow-module .mw-control[aria-pressed="true"]{background:var(--mw-ink);color:var(--mw-paper);border-color:var(--mw-ink)}
.microarray-workflow-module .mw-scatter{display:block;width:100%;height:280px}
.microarray-workflow-module .mw-scatter text{font-family:inherit;font-size:12px;fill:var(--mw-muted)}
.microarray-workflow-module .mw-scatter .mw-tick{stroke:var(--mw-line);stroke-width:1}
.microarray-workflow-module .mw-point{fill:var(--mw-follow);fill-opacity:.75;stroke:var(--mw-paper);stroke-width:1.5}
.microarray-workflow-module .mw-point:hover,.microarray-workflow-module .mw-point:focus-visible{fill:var(--mw-ink);stroke:var(--mw-ink);outline:none}
.microarray-workflow-module .mw-point-ring{fill:transparent;stroke:transparent}
.microarray-workflow-module .mw-export-row{display:flex;justify-content:space-between;align-items:baseline;gap:15px;width:100%;padding:14px 3px;text-align:left;border-bottom:1px solid var(--mw-line);font-size:.86rem}
.microarray-workflow-module .mw-export-row span:last-child{font-size:.73rem;color:var(--mw-muted)}
.microarray-workflow-module .mw-methods{font-size:.85rem;margin-top:20px;color:var(--mw-muted)}
.microarray-workflow-module .mw-methods summary{min-height:44px;padding:12px 0;color:var(--mw-ink);cursor:pointer}
.microarray-workflow-module .mw-methods p{max-width:880px;margin:10px 0 17px;line-height:1.8}
.microarray-workflow-module .mw-methods strong{color:var(--mw-ink);font-weight:600}
.microarray-workflow-module .mw-tooltip{position:fixed;z-index:1000;max-width:min(360px,calc(100vw - 24px));width:max-content;white-space:pre-line;overflow-wrap:anywhere;font-size:.8rem;line-height:1.65;border-radius:8px;padding:13px 16px;background:var(--mw-ink);color:var(--mw-paper);pointer-events:auto;box-shadow:0 8px 24px #4e2d5c18}
.microarray-workflow-module .mw-tooltip[aria-hidden="true"]{display:none}
.microarray-workflow-module .mw-announcement{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}
.microarray-workflow-module .mw-noscript{font-size:.85rem;margin-top:20px}
@media(max-width:1050px){.microarray-workflow-module .mw-route{grid-template-columns:repeat(3,minmax(0,1fr))}.microarray-workflow-module .mw-step:nth-child(3)::after{display:none}.microarray-workflow-module .mw-inspector{grid-template-columns:195px minmax(0,1fr);gap:27px}}
@media(max-width:760px){.microarray-workflow-module .mw-inspector{grid-template-columns:minmax(0,1fr);gap:20px}.microarray-workflow-module .mw-objects{display:none}.microarray-workflow-module .mw-tool{margin-top:8px}.microarray-workflow-module .mw-copy p{margin-bottom:10px}.microarray-workflow-module .mw-bottom{flex-wrap:wrap;gap:7px}.microarray-workflow-module .mw-step{padding:13px 10px}.microarray-workflow-module .mw-operation{min-height:48px}.microarray-workflow-module .mw-step strong{font-size:.9rem}}
@media(max-width:500px){.microarray-workflow-module{padding-top:28px}.microarray-workflow-module h1{font-size:clamp(1.85rem,7vw,2.6rem)}.microarray-workflow-module .mw-route{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.microarray-workflow-module .mw-step::after{display:none}.microarray-workflow-module .mw-operation{min-height:0}.microarray-workflow-module .mw-example{padding:21px 14px 17px;margin-top:24px}.microarray-workflow-module .mw-example-head{flex-wrap:wrap;gap:7px;margin-bottom:24px}.microarray-workflow-module .mw-matrix{grid-template-columns:72px repeat(6,minmax(0,1fr));gap:3px}.microarray-workflow-module .mw-gene{font-size:.74rem}.microarray-workflow-module .mw-sample{font-size:.68rem}.microarray-workflow-module .mw-cell{height:40px}.microarray-workflow-module .mw-assoc{grid-template-columns:75px repeat(3,minmax(0,1fr));gap:3px}.microarray-workflow-module .mw-methods{font-size:.81rem}.microarray-workflow-module .mw-contribution{font-size:.95rem}.microarray-workflow-module .mw-artifact{font-size:.7rem}.microarray-workflow-module .mw-scatter{height:240px}.microarray-workflow-module .mw-export-row{font-size:.8rem}}
@media(pointer:coarse){.microarray-workflow-module .mw-links button{min-height:44px}.microarray-workflow-module .mw-cell{min-height:44px}}
@media(prefers-reduced-motion:reduce){.microarray-workflow-module .mw-enter{animation:none}.microarray-workflow-module .mw-cell,.microarray-workflow-module .mw-bar,.microarray-workflow-module .mw-edge{transition:none}}

.microarray-workflow-module .mw-layer-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:22px}
.microarray-workflow-module .mw-layer-controls > span{font-size:.78rem;color:var(--mw-muted);margin-right:4px}
.microarray-workflow-module .mw-example-head .mw-layer-label{color:var(--mw-ink);font-weight:600}
.microarray-workflow-module .mw-matrix{grid-template-columns:88px repeat(var(--mw-columns),minmax(0,1fr))}
.microarray-workflow-module .mw-sample{font-size:.72rem;padding:5px 0;min-height:36px}
.microarray-workflow-module .mw-matrix button.mw-gene{text-align:left;min-height:36px}
.microarray-workflow-module .mw-map-head{display:grid;grid-template-columns:105px 1fr;gap:30px;font-size:.75rem;color:var(--mw-muted);padding-bottom:10px;border-bottom:1px solid var(--mw-line)}
.microarray-workflow-module .mw-map-row{display:grid;grid-template-columns:80px 25px minmax(0,1fr);gap:15px;width:100%;min-height:46px;align-items:center;text-align:left;border-bottom:1px solid var(--mw-line);font-size:.84rem}
.microarray-workflow-module .mw-map-row > span:last-child{overflow-wrap:anywhere}
.microarray-workflow-module .mw-collapse-label,.microarray-workflow-module .mw-process-label{font-size:.8rem;color:var(--mw-muted);margin-bottom:15px}
.microarray-workflow-module .mw-average-label{font-size:.78rem;color:var(--mw-group);font-weight:600;border-top:1px solid var(--mw-line);padding-top:6px}
.microarray-workflow-module .mw-collapse-matrix > .mw-average-label ~ .mw-cell{outline:1px solid var(--mw-group);outline-offset:1px}
.microarray-workflow-module .mw-feature-matrix .mw-gene{font-size:.76rem}
.microarray-workflow-module .mw-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.microarray-workflow-module .mw-profile-panel{min-width:0}
.microarray-workflow-module .mw-profile-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:.83rem}
.microarray-workflow-module .mw-profile-head strong{font-weight:600}
.microarray-workflow-module .mw-profile-select-label{max-width:100%;min-width:0}
.microarray-workflow-module .mw-profile-head select{font:inherit;font-size:.76rem;color:var(--mw-ink);background:var(--mw-paper);border:1px solid var(--mw-line);border-radius:5px;padding:7px;max-width:100%;min-height:36px}
.microarray-workflow-module .mw-profile-chart{display:block;width:100%;height:auto}
.microarray-workflow-module .mw-profile-chart text{font:15px ui-sans-serif,Arial,sans-serif;fill:var(--mw-muted)}
.microarray-workflow-module .mw-profile-guide{stroke:var(--mw-line);stroke-width:1;opacity:.55}
.microarray-workflow-module .mw-profile-anchor{stroke:var(--mw-muted);stroke-width:1}
.microarray-workflow-module .mw-profile-dot{stroke:var(--mw-paper);stroke-width:1.5;fill:var(--mw-prepare)}
.microarray-workflow-module .mw-profile-dot.mw-group-b{fill:var(--mw-network)}
.microarray-workflow-module .mw-profile-mark:hover,.microarray-workflow-module .mw-profile-mark:focus-visible{outline:none}
.microarray-workflow-module .mw-profile-mark:hover .mw-profile-dot,.microarray-workflow-module .mw-profile-mark:focus-visible .mw-profile-dot{stroke:var(--mw-ink);stroke-width:2.5}
.microarray-workflow-module .mw-profile-unit{font-size:.72rem;color:var(--mw-muted);margin:2px 0 0}
.microarray-workflow-module .mw-control:focus-visible,.microarray-workflow-module select:focus-visible{outline:3px solid var(--mw-network);outline-offset:3px}
@media(max-width:1050px){.microarray-workflow-module .mw-profile-grid{grid-template-columns:minmax(0,1fr);gap:26px}}
@media(max-width:760px){.microarray-workflow-module .mw-tooltip{position:static;width:auto;max-width:none;margin:16px 0 0;box-shadow:none}}
@media(max-width:500px){.microarray-workflow-module .mw-matrix{grid-template-columns:65px repeat(var(--mw-columns),minmax(0,1fr));gap:3px}.microarray-workflow-module .mw-sample{font-size:.68rem}.microarray-workflow-module .mw-feature-matrix .mw-gene{font-size:.74rem}.microarray-workflow-module .mw-profile-chart text{font-size:14px}.microarray-workflow-module .mw-map-row{grid-template-columns:58px 16px minmax(0,1fr);gap:12px}.microarray-workflow-module .mw-map-head{grid-template-columns:86px 1fr;gap:0}}

/* Site-owned shell and gallery styles apply only to the existing Microarray project. */
.microarray-workflow-page { padding-block:36px 40px; }
.microarray-workflow-page > .breadcrumb { font-size:.85rem; margin:0 0 -8px; }
.microarray-workflow-page > .bio-page-links { display:flex; justify-content:space-between; flex-wrap:wrap; gap:18px; padding-top:30px; margin-top:20px; border-top:1px solid var(--lavender); font-size:.85rem; }
.projects-portfolio #microarray-analysis.bio-gallery-card, .projects-portfolio #microarray-analysis .portfolio-preview { background:var(--neutral); border-color:var(--lavender); }
.projects-portfolio #microarray-analysis .portfolio-card-copy h2 { color:var(--plum); }
.projects-portfolio #microarray-analysis .portfolio-card-copy p { color:#6d6479; }
.projects-portfolio #microarray-analysis .bio-preview-steps li { color:var(--plum); background:#e8e4ee; }
.projects-portfolio #microarray-analysis .portfolio-link { color:var(--violet); }
.microarray-workflow-module .mw-profile-chart text { font-family:inherit; }

/* Unified text-only workflow cards. Miniatures stay in the DOM for the existing controller. */
.microarray-workflow-module .mw-route { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:22px; align-items:stretch; }
.microarray-workflow-module .mw-step { position:relative; display:flex; flex-direction:column; flex-wrap:nowrap; align-items:flex-start; gap:12px; min-height:216px; margin-top:0; padding:17px 14px 14px; }
.microarray-workflow-module .mw-step strong { font-size:1rem; font-weight:600; }
.microarray-workflow-module .mw-operation { font-size:.78rem; line-height:1.65; min-height:52px; }
.microarray-workflow-module .mw-mini, .microarray-workflow-module .mw-arrow, .microarray-workflow-module .mw-mobile-handoff { display:none; }
.microarray-workflow-module .mw-artifact { display:block; width:100%; border-top:1px solid var(--mw-line); margin-top:auto; padding-top:11px; font-size:.75rem; line-height:1.5; }
.microarray-workflow-module .mw-step[aria-pressed="true"] { box-shadow:inset 0 -3px var(--mw-stage); }
.microarray-workflow-module .mw-step:not([data-step="5"])::after { content:'→'; display:block; position:absolute; right:-22px; width:22px; top:50%; transform:translateY(-50%); text-align:center; font-size:1.1rem; color:var(--mw-muted); }
.microarray-workflow-module .mw-step[data-step="5"]::after { display:none; }
.microarray-workflow-module .mw-boundary { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:22px; margin-bottom:10px; font-size:.78rem; color:var(--mw-muted); }
.microarray-workflow-module .mw-boundary span { padding-bottom:9px; border-bottom:1px solid var(--mw-line); }
.microarray-workflow-module .mw-boundary span:first-child { grid-column:span 4; }
.microarray-workflow-module .mw-boundary span:last-child { grid-column:span 2; }
@media(max-width:1050px) and (min-width:761px) {
 .microarray-workflow-module .mw-route { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .microarray-workflow-module .mw-boundary { display:flex; flex-wrap:wrap; gap:8px 24px; }
 .microarray-workflow-module .mw-boundary span { flex:1 1 auto; }
 .microarray-workflow-module .mw-step[data-step="2"]::after { display:none; }
}
@media(max-width:760px) {
 .microarray-workflow-module .mw-boundary { display:flex; flex-wrap:wrap; gap:4px 18px; margin-bottom:12px; padding-bottom:9px; border-bottom:1px solid var(--mw-line); }
 .microarray-workflow-module .mw-boundary span { border:0; padding:0; }
 .microarray-workflow-module .mw-route { grid-template-columns:minmax(0,1fr); gap:8px; }
 .microarray-workflow-module .mw-step { min-height:0; flex-direction:row; flex-wrap:wrap; align-items:center; gap:6px 12px; padding:13px 14px; }
 .microarray-workflow-module .mw-operation { display:block; width:100%; min-height:0; padding-left:42px; font-size:.78rem; }
 .microarray-workflow-module .mw-artifact { margin-top:6px; padding-top:8px; }
 .microarray-workflow-module .mw-step:not([data-step="5"])::after { display:none; }
}
