/* Entry-page styling. Zensical retains navigation, fonts, and theme controls. */
:root {
  --factory-surface: #f4f6fc;
  --factory-border: #c6cfe4;
  --factory-label-bg: #e5ecfa;
  --factory-label-ink: #293e73;
}
[data-md-color-scheme="slate"] {
  --factory-surface: #191e2c;
  --factory-border: #404c68;
  --factory-label-bg: #293650;
  --factory-label-ink: #c7d8ff;
}
.md-typeset .factory-intro {
  max-width: 29rem;
  font-size: clamp(1.25rem, 3vw, 1.8rem);
  font-weight: 650;
  line-height: 1.3;
  letter-spacing: -.025em;
}
.md-typeset .factory-home h1 { margin-bottom: 1rem; }
.md-typeset .factory-project,
.md-typeset .factory-hero {
  padding: clamp(1rem, 3vw, 1.6rem);
  border: 1px solid var(--factory-border);
  border-radius: .65rem;
  background: var(--factory-surface);
  margin: 1.2rem 0 1.8rem;
}
.md-typeset .factory-project { border-top: 3px solid var(--md-accent-fg-color); }
.md-typeset .factory-project h2,
.md-typeset .factory-project h3 { margin-top: 0; font-size: 1.3rem; line-height: 1.35; }
.md-typeset .factory-lead { margin-top: 0; font-size: 1.15rem; font-weight: 650; line-height: 1.45; }
.md-typeset .factory-status {
  color: var(--factory-label-ink);
  font-size: .72rem;
  font-weight: 600;
  line-height: 1.6;
}
.md-typeset .factory-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.2rem; }
.md-typeset .factory-actions p { display: contents; }
.md-typeset .factory-actions .md-button {
  padding: .5rem .85rem;
  font-size: .75rem;
  line-height: 1.5;
  text-align: center;
}
.md-typeset .factory-label {
  display: inline-block;
  padding: .15rem .45rem;
  border-radius: .25rem;
  background: var(--factory-label-bg);
  color: var(--factory-label-ink);
  font-size: .65rem;
  font-weight: 600;
}
.md-typeset .grid.cards.factory-stages { grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); }
.md-typeset .grid.cards.factory-stages > ul > li { border-color: var(--factory-border); border-radius: .5rem; }
.md-typeset .grid.cards.factory-stages > ul > li > p:first-child { font-size: .95rem; }
.md-typeset .grid.cards.factory-planned > ul > li { border-style: dashed; }
.factory-actions a:focus-visible, .factory-stages a:focus-visible {
  outline: 2px solid var(--md-accent-fg-color);
  outline-offset: 3px;
}
@media (max-width: 600px) {
  .md-typeset .factory-actions { flex-direction: column; align-items: stretch; }
  .md-typeset .factory-project h2,
  .md-typeset .factory-project h3 { font-size: 1.1rem; }
}

/* Detailed project architecture uses HTML text, local SVG masks, and CSS flow. */
.md-typeset figure.factory-map {
  display: block;
  width: 100%;
  margin: 1.4rem 0;
  text-align: left;
  --map-blue: #1559a1; --map-blue-bg: #edf6ff; --map-blue-line: #8bbbea;
  --map-green: #16714e; --map-green-bg: #edf8f1; --map-green-line: #8bc8a2;
  --map-purple: #6941a5; --map-purple-bg: #f3effb; --map-purple-line: #b8a2e1;
  --map-orange: #8c500c; --map-orange-bg: #fff6e9; --map-orange-line: #d4a364;
  --map-card: #ffffff;
  --map-text: #17263c;
  --map-muted: #46566c;
}
[data-md-color-scheme="slate"] .md-typeset figure.factory-map {
  --map-blue: #a2ceff; --map-blue-bg: #172b40; --map-blue-line: #426d97;
  --map-green: #8cd9b2; --map-green-bg: #172f27; --map-green-line: #457c62;
  --map-purple: #c9b3f7; --map-purple-bg: #29223b; --map-purple-line: #77639b;
  --map-orange: #f1c187; --map-orange-bg: #35291c; --map-orange-line: #967342;
  --map-card: #131c29;
  --map-text: #e6edf7;
  --map-muted: #bdc9da;
}
.factory-map-icon { display: block; flex: 0 0 1.6rem; width: 1.6rem; height: 1.6rem; background: currentColor; mask: var(--map-icon) center / contain no-repeat; }
.md-typeset .factory-map-operator {
  display: flex; align-items: center; justify-content: center; gap: .65rem;
  width: fit-content; max-width: 100%; margin: 0 auto 1.5rem;
  padding: .65rem 1rem; border: 1px solid var(--map-blue-line); border-radius: .45rem;
  background: var(--map-blue-bg); color: var(--map-blue);
}
.factory-map-operator strong, .factory-map-operator span { display: block; }
.factory-map-operator strong { font-size: .85rem; color: var(--map-text); }
.factory-map-operator div > span { font-size: .65rem; color: var(--map-muted); margin-top: .15rem; }
.factory-map-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.1rem; }
.factory-map-stage {
  position: relative; display: flex; flex-direction: column; gap: .65rem;
  padding: .7rem; border: 1px solid var(--map-line); border-radius: .5rem;
  background: var(--map-bg); color: var(--map-ink);
}
.factory-map-simulation { --map-ink: var(--map-blue); --map-bg: var(--map-blue-bg); --map-line: var(--map-blue-line); }
.factory-map-services { --map-ink: var(--map-green); --map-bg: var(--map-green-bg); --map-line: var(--map-green-line); }
.factory-map-analysis { --map-ink: var(--map-purple); --map-bg: var(--map-purple-bg); --map-line: var(--map-purple-line); }
.factory-map-research { --map-ink: var(--map-orange); --map-bg: var(--map-orange-bg); --map-line: var(--map-orange-line); border-style: dashed; }
.md-typeset .factory-map-stage h3 { margin: 0 0 .4rem; font-size: .88rem; line-height: 1.4; font-weight: 700; color: var(--map-text); }
.factory-map-stage header { min-height: 3.5rem; }
.factory-map-state { display: inline-block; font-size: .6rem; font-weight: 650; border: 1px solid var(--map-line); border-radius: .2rem; padding: .1rem .35rem; }
.factory-map-card {
  display: flex; flex: 1; align-items: flex-start; gap: .6rem; padding: .8rem .6rem;
  min-width: 0; border: 1px solid var(--map-line); border-radius: .4rem; background: var(--map-card);
}
.factory-map-card strong { display: block; font-size: .76rem; font-weight: 650; line-height: 1.45; color: var(--map-text); }
.factory-map-card div > span { display: block; font-size: .67rem; line-height: 1.6; color: var(--map-muted); margin-top: .3rem; }
.factory-map-card-planned { border-style: dashed; }
.factory-map-stage:not(:last-child)::after {
  content: "→"; position: absolute; top: 50%; right: -1rem; z-index: 1;
  color: var(--map-blue); font-size: 1.1rem; font-weight: 700; line-height: 1;
}
.factory-map-stage.factory-map-analysis::after { content: "⇢"; color: var(--map-orange); }
.factory-map-feedback {
  display: flex; align-items: center; justify-content: center; gap: .6rem;
  margin: 1rem 0; padding: .6rem; border: 1px dashed var(--map-orange-line);
  border-radius: .4rem; color: var(--map-orange); font-size: .7rem; text-align: center;
}
.factory-map-feedback strong { display: inline-block; margin-left: .4rem; font-size: .65rem; }
.factory-map-facts { display: flex; justify-content: space-around; gap: .5rem; padding: .65rem; border-radius: .4rem; background: var(--map-blue-bg); color: var(--map-blue); font-size: .65rem; font-weight: 650; }
.md-typeset .factory-map figcaption { margin-top: .8rem; font-size: .65rem; line-height: 1.6; color: var(--md-default-fg-color--light); text-align: center; }
@media (max-width: 1000px) {
  .factory-map-grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .factory-map-stage header { min-height: auto; }
  .factory-map-stage:not(:last-child)::after { content: "↓"; top: auto; bottom: -1.3rem; left: 50%; right: auto; }
  .factory-map-stage.factory-map-analysis::after { content: "⇣"; }
  .factory-map-facts { flex-direction: column; text-align: center; }
  .factory-map-card { padding: .7rem; }
}
.factory-map-icon-person { --map-icon: url("../icons/factory-map/person.svg"); }
.factory-map-icon-people { --map-icon: url("../icons/factory-map/people.svg"); }
.factory-map-icon-database { --map-icon: url("../icons/factory-map/database.svg"); }
.factory-map-icon-clock { --map-icon: url("../icons/factory-map/clock.svg"); }
.factory-map-icon-server { --map-icon: url("../icons/factory-map/server.svg"); }
.factory-map-icon-stream { --map-icon: url("../icons/factory-map/stream.svg"); }
.factory-map-icon-workflow { --map-icon: url("../icons/factory-map/workflow.svg"); }
.factory-map-icon-search { --map-icon: url("../icons/factory-map/search.svg"); }
.factory-map-icon-table { --map-icon: url("../icons/factory-map/table.svg"); }
.factory-map-icon-models { --map-icon: url("../icons/factory-map/models.svg"); }
.factory-map-icon-flask { --map-icon: url("../icons/factory-map/flask.svg"); }
.factory-map-icon-feedback { --map-icon: url("../icons/factory-map/feedback.svg"); }
.md-typeset .factory-home > p { max-width: 44rem; }

/* Lab discovery: substantial features on the homepage, compact catalogue entries. */
.lab-home, .lab-catalogue {
  --lab-blue: #205ba7; --lab-green: #16714e; --lab-purple: #6941a5; --lab-amber: #87501a;
  --lab-blue-bg: #edf6ff; --lab-green-bg: #edf8f1; --lab-purple-bg: #f3effb; --lab-amber-bg: #fff6e9;
  --lab-blue-line: #8bbbea; --lab-green-line: #8bc8a2; --lab-purple-line: #b8a2e1; --lab-amber-line: #d4a364;
  --lab-ink: #1d2c43; --lab-muted: #4e6077; --lab-card: #fff;
}
[data-md-color-scheme="slate"] .lab-home,
[data-md-color-scheme="slate"] .lab-catalogue {
  --lab-blue: #a6ccff; --lab-green: #8cd9b2; --lab-purple: #c9b3f7; --lab-amber: #efc28b;
  --lab-blue-bg: #172b40; --lab-green-bg: #172f27; --lab-purple-bg: #29223b; --lab-amber-bg: #35291c;
  --lab-blue-line: #426d97; --lab-green-line: #457c62; --lab-purple-line: #77639b; --lab-amber-line: #967342;
  --lab-ink: #e6edf7; --lab-muted: #bbc7d9; --lab-card: #171e2b;
}
.lab-features { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.4rem; margin: 1.8rem 0; }
.lab-project-feature {
  --lab-accent: var(--lab-blue);
  display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: center;
  gap: 1.5rem; padding: 1.5rem; border: 1px solid var(--factory-border);
  border-top: 3px solid var(--lab-accent); border-radius: .65rem; background: var(--factory-surface);
}
.lab-project-sophy { --lab-accent: var(--lab-amber); }
.lab-project-info, .lab-preview-slot { min-width: 0; }
.lab-project-kicker { margin-bottom: .75rem; font-size: .65rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; color: var(--lab-accent, var(--lab-blue)); }
.md-typeset .lab-project-info h2 { margin: 0 0 .9rem; font-size: clamp(1.2rem, 2.1vw, 1.6rem); line-height: 1.25; font-weight: 700; letter-spacing: -.025em; color: var(--lab-ink); }
.md-typeset .lab-project-info > p { margin: .8rem 0; font-size: .8rem; line-height: 1.8; }
.md-typeset .lab-project-info .factory-status { font-size: .67rem; line-height: 1.7; color: var(--factory-label-ink); }
.lab-project-feature .factory-actions { margin-top: 1rem; }
.lab-preview-link { display: block; border-radius: .5rem; color: var(--lab-ink); }
.md-typeset a.lab-preview-link, .md-typeset a.lab-preview-link:hover { text-decoration: none; }
.lab-preview-link:hover { outline: 1px solid var(--lab-accent); outline-offset: .4rem; }
.lab-preview-link:focus-visible, .lab-home-footer a:focus-visible {
  outline: 3px solid var(--lab-accent, var(--lab-blue)); outline-offset: .4rem;
}
.md-typeset figure.lab-preview { display: block; width: 100%; margin: 0; text-align: left; }
.lab-preview-kicker { display: block; margin-bottom: .8rem; font-size: .65rem; font-weight: 650; color: var(--lab-muted); }
.md-typeset .lab-preview ol.lab-preview-flow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.4fr); gap: 1.3rem; margin: 0; padding: 0; list-style: none; }
.md-typeset .lab-preview-sophy ol.lab-preview-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.md-typeset .lab-preview-flow > li.lab-preview-step {
  position: relative; min-width: 0; margin: 0; padding: .7rem .55rem;
  border: 1px solid var(--preview-line); border-radius: .4rem; background: var(--preview-bg);
}
.lab-preview-simulation { --preview-accent: var(--lab-blue); --preview-bg: var(--lab-blue-bg); --preview-line: var(--lab-blue-line); }
.lab-preview-processing { --preview-accent: var(--lab-green); --preview-bg: var(--lab-green-bg); --preview-line: var(--lab-green-line); }
.lab-preview-lakehouse, .lab-preview-reasoning { --preview-accent: var(--lab-purple); --preview-bg: var(--lab-purple-bg); --preview-line: var(--lab-purple-line); }
.lab-preview-future, .lab-preview-actions { --preview-accent: var(--lab-amber); --preview-bg: var(--lab-amber-bg); --preview-line: var(--lab-amber-line); }
.md-typeset .lab-preview-flow > li.lab-preview-future { border-style: dashed; }
.lab-preview .factory-map-icon, .lab-preview .sophy-icon { width: 1.4rem; height: 1.4rem; margin-bottom: .6rem; color: var(--preview-accent); }
.lab-preview-step strong { display: block; font-size: .75rem; font-weight: 700; line-height: 1.5; color: var(--lab-ink); word-break: normal; overflow-wrap: normal; }
.lab-preview-detail { display: block; margin-top: .45rem; font-size: .65rem; line-height: 1.6; color: var(--lab-muted); }
.lab-preview-planned { color: var(--lab-amber); font-weight: 700; }
.lab-preview-arrow { position: absolute; right: -1.2rem; top: 50%; transform: translateY(-50%); width: 1.1rem; height: 1.1rem; fill: none; stroke: var(--preview-accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.lab-preview-arrow-planned { stroke: var(--lab-amber); }
.lab-preview-arrow-planned line { stroke-dasharray: 3 3; }
.md-typeset .lab-preview figcaption { max-width: none; margin: .8rem 0 0; font-size: .65rem; line-height: 1.7; font-style: normal; text-align: left; color: var(--lab-muted); }
.lab-home-footer { padding-top: .1rem; font-size: .72rem; color: var(--md-default-fg-color--light); }
.lab-catalogue { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.md-typeset .lab-catalogue .factory-project { margin: 0; padding: 1.2rem; border-top-color: var(--lab-accent, var(--lab-blue)); }
.md-typeset .lab-catalogue h2 { font-size: 1.15rem; }
.md-typeset .lab-catalogue p { max-width: 46rem; margin: .65rem 0; font-size: .75rem; }
.md-typeset .lab-catalogue .factory-status { font-size: .65rem; }
.lab-catalogue .factory-actions { margin-top: .8rem; }
@media (max-width: 1099px) {
  .lab-project-feature { grid-template-columns: minmax(0, 1fr); }
  .lab-project-info > p { max-width: 40rem; }
}
@media (max-width: 639px) {
  .lab-project-feature { padding: 1.1rem; gap: 1.2rem; }
  .md-typeset .lab-preview ol.lab-preview-flow, .md-typeset .lab-preview-sophy ol.lab-preview-flow { grid-template-columns: minmax(0, 1fr); }
  .md-typeset .lab-preview-flow > li.lab-preview-step { padding: .7rem .75rem .7rem 2.9rem; }
  .lab-preview .factory-map-icon, .lab-preview .sophy-icon { position: absolute; left: .75rem; top: .75rem; margin: 0; }
  .lab-preview-step strong { font-size: .8rem; }
  .lab-preview-detail { margin-top: .2rem; }
  .lab-preview-arrow { top: auto; right: auto; left: 50%; bottom: -1.2rem; transform: translateX(-50%) rotate(90deg); }
  .md-typeset .lab-catalogue .factory-project { padding: 1rem; }
}
