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

/* Page shell and gallery styles apply only to the existing WGCNA project. */
.wgcna-workflow-page { padding-block:36px 40px; }
.wgcna-workflow-page > .breadcrumb { font-size:.85rem; margin:0 0 -8px; }
.wgcna-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 #wgcna.bio-gallery-card, .projects-portfolio #wgcna .portfolio-preview { background:var(--neutral); border-color:var(--lavender); }
.projects-portfolio #wgcna .portfolio-card-copy h2 { color:var(--plum); }
.projects-portfolio #wgcna .portfolio-card-copy p { color:#6d6479; }
.projects-portfolio #wgcna .bio-preview-steps li { color:var(--plum); background:#e8e4ee; }
.projects-portfolio #wgcna .portfolio-link { color:var(--violet); }

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