/* ===========================================================================
   Per-slide layouts
   =========================================================================== */

/* ---- COVER (1) & CLOSE (9) ----------------------------------------------- */
.cover{ justify-content:space-between; }
.cover .cover-top{ display:flex; justify-content:space-between; align-items:flex-start; }
.cover .spectrum{ display:flex; gap:8px; }
.cover .spectrum span{ width:46px; height:14px; border-radius:3px; }
.cover-main{ display:flex; flex-direction:column; gap:30px; }
.cover-kicker{
  font-family:"IBM Plex Mono", monospace; font-size:var(--type-eyebrow);
  letter-spacing:.26em; text-transform:uppercase; color:var(--ink-soft);
}
.cover h1{
  font-size:var(--type-display); font-weight:700; line-height:.98;
  letter-spacing:-.028em; margin:0; max-width:17ch;
}
.cover .cover-sub{ font-size:var(--type-subtitle); color:var(--ink-soft); margin:0; font-weight:400; max-width:30ch; }
.cover .cover-foot{ display:flex; gap:46px; align-items:flex-end; justify-content:space-between; }
.cover .meta-grid{ display:flex; gap:46px; }
.cover .meta-grid div{ display:flex; flex-direction:column; gap:6px; }
.cover .meta-grid .mk{
  font-family:"IBM Plex Mono", monospace; font-size:var(--type-micro);
  letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint);
}
.cover .meta-grid .mv{ font-size:var(--type-small); color:var(--ink); font-weight:500; }
.legend-chips{ display:flex; gap:10px; flex-wrap:wrap; }
.legend-chips .lc{ display:flex; align-items:center; gap:9px; font-family:"IBM Plex Mono",monospace; font-size:var(--type-micro); color:var(--ink-soft); }
.legend-chips .sw{ width:13px; height:13px; border-radius:3px; border:1px solid rgba(0,0,0,.12); }

/* ---- two-column body ----------------------------------------------------- */
.cols2{ display:grid; grid-template-columns:1fr 1fr; gap:54px; flex:1; align-content:center; }
.panel{ display:flex; flex-direction:column; gap:20px; }
.panel-head{ display:flex; align-items:center; gap:14px; }
.panel-head .ph-tag{
  font-family:"IBM Plex Mono", monospace; font-size:var(--type-micro);
  letter-spacing:.14em; text-transform:uppercase; padding:6px 12px; border-radius:6px; font-weight:500;
}
.panel-head h3{ font-size:var(--type-subtitle); font-weight:600; margin:0; letter-spacing:-.012em; }
.tick-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:16px; }
.tick-list li{ display:flex; gap:15px; font-size:var(--type-body); line-height:1.32; color:var(--ink); }
.tick-list li::before{
  content:""; flex:0 0 auto; margin-top:.55em; width:9px; height:9px; border-radius:2px;
  background:var(--mk, var(--ink)); transform:rotate(45deg);
}
.tick-list.muted li{ color:var(--ink-soft); }
.tick-list.muted li::before{ background:var(--ink-faint); }

/* metric band (exec summary) */
.metric-band{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; border-top:1px solid var(--hair-strong); }
.metric-band .mb{ padding:26px 30px 4px; border-right:1px solid var(--hair); display:flex; flex-direction:column; gap:8px; }
.metric-band .mb:last-child{ border-right:none; }
.metric-band .mb-fig{ font-size:54px; font-weight:700; letter-spacing:-.02em; line-height:1; color:var(--accent,var(--blue-line)); }
.metric-band .mb-lab{ font-size:var(--type-small); color:var(--ink-soft); }

/* ---- module grid (scope, 8 cards) --------------------------------------- */
.mod-grid{ display:grid; grid-template-columns:repeat(4,1fr); grid-template-rows:1fr 1fr; gap:22px; flex:1; }
.mod{
  background:var(--bg-panel); border:1px solid var(--hair); border-left:4px solid var(--cat-line);
  border-radius:11px; padding:26px 24px; display:flex; flex-direction:column; gap:13px;
}
.mod .m-top{ display:flex; align-items:baseline; justify-content:space-between; }
.mod .m-num{ font-family:"IBM Plex Mono",monospace; font-size:var(--type-small); color:var(--cat-line); font-weight:600; }
.mod .m-ic{ width:13px; height:13px; border-radius:3px; background:var(--cat-fill); border:1.5px solid var(--cat-line); }
.mod h4{ font-size:27px; font-weight:600; margin:0; line-height:1.1; letter-spacing:-.01em; }
.mod p{ font-size:var(--type-small); color:var(--ink-soft); margin:0; line-height:1.32; margin-top:auto; }
.mod.cat-blue{ --cat-fill:var(--blue-fill); --cat-line:var(--blue-line); }
.mod.cat-green{ --cat-fill:var(--green-fill); --cat-line:var(--green-line); }
.mod.cat-amber{ --cat-fill:var(--amber-fill); --cat-line:var(--amber-line); }
.mod.cat-violet{ --cat-fill:var(--violet-fill); --cat-line:var(--violet-line); }
.mod.cat-terra{ --cat-fill:var(--terra-fill); --cat-line:var(--terra-line); }
.mod.cat-neutral{ --cat-fill:var(--neutral-fill); --cat-line:var(--neutral-line); }

/* ---- deep dive 3-col ----------------------------------------------------- */
.cols3{ display:grid; grid-template-columns:repeat(3,1fr); gap:46px; flex:1; align-content:center; }
.dd-col{ display:flex; flex-direction:column; gap:18px; }
.dd-head{ display:flex; align-items:center; gap:13px; padding-bottom:15px; border-bottom:2px solid var(--cat-line); }
.dd-badge{
  flex:0 0 auto; width:42px; height:42px; border-radius:8px; display:flex; align-items:center; justify-content:center;
  font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:24px;
  background:var(--cat-fill); color:var(--cat-ink); border:1px solid var(--cat-line);
}
.dd-head h3{ font-size:26px; font-weight:600; margin:0; line-height:1.1; letter-spacing:-.01em; }
.dd-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:13px; }
.dd-list li{ font-size:var(--type-small); line-height:1.34; color:var(--ink); padding-left:18px; position:relative; }
.dd-list li::before{ content:"›"; position:absolute; left:0; color:var(--cat-line); font-family:"IBM Plex Mono",monospace; }
.cat-blue{ --cat-fill:var(--blue-fill); --cat-line:var(--blue-line); --cat-ink:var(--blue-ink); }
.cat-green{ --cat-fill:var(--green-fill); --cat-line:var(--green-line); --cat-ink:var(--green-ink); }
.cat-amber{ --cat-fill:var(--amber-fill); --cat-line:var(--amber-line); --cat-ink:var(--amber-ink); }
.cat-violet{ --cat-fill:var(--violet-fill); --cat-line:var(--violet-line); --cat-ink:var(--violet-ink); }
.cat-terra{ --cat-fill:var(--terra-fill); --cat-line:var(--terra-line); --cat-ink:var(--terra-ink); }
.cat-neutral{ --cat-fill:var(--neutral-fill); --cat-line:var(--neutral-line); --cat-ink:var(--neutral-ink); }

/* MR step chain (slide 6) */
.mr-chain{ display:flex; align-items:stretch; gap:0; }
.mr-step{
  flex:1 1 0; min-width:0; background:var(--amber-fill); border:1px solid var(--amber-line);
  border-radius:9px; padding:17px 16px; display:flex; flex-direction:column; justify-content:center;
}
.mr-step .ms-t{ font-size:var(--type-small); font-weight:600; color:var(--amber-ink); line-height:1.16; }
.mr-arrow{ flex:0 0 30px; align-self:center; color:var(--amber-line); display:flex; align-items:center; justify-content:center; font-size:26px; }

.dd-foot{ display:flex; gap:22px; border-top:1px solid var(--hair-strong); padding-top:22px; }
.dd-foot .ddf{ flex:1; display:flex; flex-direction:column; gap:8px; }
.dd-foot .ddf .fh{ display:flex; align-items:center; gap:10px; font-size:var(--type-body); font-weight:600; }
.dd-foot .ddf .fl{ width:34px; height:34px; border-radius:7px; display:flex; align-items:center; justify-content:center; font-family:"IBM Plex Mono",monospace; font-size:24px; font-weight:600; }
.dd-foot .ddf p{ margin:0; font-size:var(--type-small); color:var(--ink-soft); line-height:1.3; }

/* ---- metrics table (slide 7) -------------------------------------------- */
.mtable{ width:100%; border-collapse:collapse; flex:1; }
.mtable th{ text-align:left; font-family:"IBM Plex Mono",monospace; font-size:var(--type-micro); letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); font-weight:500; padding:0 24px 18px; border-bottom:2px solid var(--hair-strong); }
.mtable td{ padding:22px 24px; border-bottom:1px solid var(--hair); font-size:var(--type-lead); vertical-align:middle; }
.mtable .m-name{ font-weight:600; }
.mtable .m-before{ color:var(--ink-soft); font-family:"IBM Plex Mono",monospace; font-size:var(--type-body); }
.mtable .m-after{ font-family:"IBM Plex Mono",monospace; font-weight:600; color:var(--green-ink); white-space:nowrap; }
.mtable .m-after .pill{ background:var(--green-fill); border:1px solid var(--green-line); border-radius:6px; padding:6px 13px; display:inline-block; white-space:nowrap; }
.mtable td.arrowcell{ width:60px; color:var(--ink-faint); text-align:center; }
.strip-note{ display:flex; gap:14px; align-items:center; padding-top:22px; font-size:var(--type-small); color:var(--ink-soft); }

/* ---- tech req grid (slide 8) -------------------------------------------- */
.req-grid{ display:grid; grid-template-columns:repeat(3,1fr); grid-template-rows:1fr 1fr; gap:24px; flex:1; }
.req{ background:var(--bg-panel); border:1px solid var(--hair); border-radius:11px; padding:26px 26px; display:flex; flex-direction:column; gap:14px; }
.req .r-h{ display:flex; align-items:center; gap:12px; }
.req .r-n{ font-family:"IBM Plex Mono",monospace; font-size:var(--type-micro); color:var(--ink-faint); }
.req h4{ font-size:24px; font-weight:600; margin:0; letter-spacing:-.01em; }
.req ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.req li{ font-size:var(--type-small); color:var(--ink-soft); line-height:1.3; padding-left:16px; position:relative; }
.req li::before{ content:""; position:absolute; left:0; top:.6em; width:6px; height:6px; border-radius:50%; background:var(--accent2,var(--blue-line)); }

/* close slide */
.close{ justify-content:space-between; }
.close .thanks{ font-size:var(--type-display); font-weight:700; letter-spacing:-.028em; margin:0; }
.close .close-foot{ display:flex; justify-content:space-between; align-items:flex-end; gap:40px; }
.close .ref-grid{ display:flex; gap:46px; }
.close .ref-grid div{ display:flex; flex-direction:column; gap:6px; }
.close .ref-grid .rk{ font-family:"IBM Plex Mono",monospace; font-size:var(--type-micro); letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); }
.close .ref-grid .rv{ font-size:var(--type-small); color:var(--ink); white-space:nowrap; }
