/* RIVET course journey — figure-led curriculum (replaces the iPad). Dark course pages. */
.cjour__bar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 18px; margin:clamp(18px,2.4vw,28px) 0 clamp(16px,2vw,22px); }
.cjour__count{ font-family:'IBM Plex Mono',monospace; font-size:.74rem; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.72); }
.cjour__acts{ display:flex; flex-wrap:wrap; gap:8px 16px; align-items:center; }
.cjour__btn{ font:500 .84rem 'IBM Plex Sans',sans-serif; color:#fff; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.16); border-radius:8px; padding:7px 12px; cursor:pointer; }
.cjour__btn:hover{ background:rgba(255,255,255,.12); }
.cjour__btn:focus-visible,.cjour__s summary:focus-visible,.cjour__mod summary:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; }
.cjour__free{ font-size:.86rem; color:#4CF3FE; text-decoration:none; }
.cjour__free:hover{ color:#fff; }
/* session stage */
.cjour{ display:grid; grid-template-columns:minmax(0,1fr); gap:14px; }
.cstage__rail{ display:grid; grid-template-columns:repeat(auto-fit,minmax(92px,1fr)); gap:6px; }
.cstage__tab{ position:relative; overflow:hidden; display:grid; gap:2px; text-align:left; padding:10px 12px 12px; border-radius:10px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); color:rgba(255,255,255,.62); cursor:pointer; font:inherit; transition:background .25s,border-color .25s,color .25s; }
.cstage__tab:hover{ background:rgba(255,255,255,.08); color:#fff; }
.cstage__tab:focus-visible,.cstage__arw:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; }
.cstage__tab.is-on{ background:#0A0A0C; border-color:rgba(76,243,254,.55); color:#fff; }
.cstage__tab.is-done .cstage__tn{ color:#4CF3FE; }
.cstage__tn{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.1em; color:rgba(255,255,255,.5); }
.cstage__tab.is-on .cstage__tn{ color:#4CF3FE; }
.cstage__tl{ font-size:.82rem; font-weight:500; line-height:1.25; min-width:0; overflow-wrap:break-word; hyphens:auto; }
.cstage__tab{ grid-template-columns:minmax(0,1fr); }
.cstage__fill{ position:absolute; left:0; bottom:0; height:2px; width:0; background:#4CF3FE; }
.cstage__tab.is-run .cstage__fill{ width:100%; transition:width var(--dur,9000ms) linear; }
.cstage__panel{ border-radius:12px; background:#0A0A0C; border:1px solid #1A1A22; padding:clamp(16px,2.4vw,28px); }
.cstage__panel.is-in .cstage__grid{ animation:cstIn .45s cubic-bezier(.16,1,.3,1); }
@keyframes cstIn{ from{ opacity:0; transform:translateX(18px); } to{ opacity:1; transform:none; } }
.cstage__head{ display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:12px 20px; margin-bottom:clamp(14px,2vw,22px); }
.cstage__meta{ display:block; font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
.cstage__t{ margin:6px 0 0; font-size:clamp(1.25rem,2.2vw,1.6rem); line-height:1.2; letter-spacing:-.01em; color:#fff; }
.cstage__nav{ display:flex; align-items:center; gap:10px; }
.cstage__arw{ width:40px; height:40px; border-radius:999px; border:1px solid rgba(255,255,255,.18); background:rgba(255,255,255,.04); color:#fff; font-size:1rem; cursor:pointer; }
.cstage__arw:hover{ background:rgba(255,255,255,.12); }
.cstage__pos{ font-family:'IBM Plex Mono',monospace; font-size:.74rem; letter-spacing:.1em; color:rgba(255,255,255,.6); min-width:58px; text-align:center; }
.cstage__grid{ display:grid; grid-template-columns:minmax(0,4fr) minmax(0,7fr); gap:clamp(18px,3vw,36px); align-items:start; }
.cstage__fig{ margin:0; }
.cstage__fig .cstage__static svg{ display:block; width:100%; height:auto; max-height:460px; margin:0 auto; }
.cstage__cap{ margin:12px 0 0; font-family:'IBM Plex Mono',monospace; font-size:.74rem; line-height:1.5; color:#D1D1D9; text-wrap:pretty; }
.cstage__cap b{ color:#4CF3FE; font-weight:600; }
.cstage__note{ display:block; margin-top:6px; font-family:'IBM Plex Sans',sans-serif; font-size:.9rem; color:#fff; }
.cstage__mods{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; }
.cstage__mod{ border-radius:12px; border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.03); padding:14px 16px; }
.cstage__mk2{ display:flex; align-items:center; gap:8px; font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.1em; text-transform:uppercase; color:#c9b6ff; }
.cstage__draft,.cstage__slot{ padding:1px 6px; border-radius:999px; border:1px solid rgba(255,138,71,.6); color:#FF8A47; font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; }
.cstage__slot{ display:inline-block; margin:10px 0 0; }
.cstage__mn{ margin:6px 0 0; font-weight:600; font-size:1rem; color:#fff; }
.cstage__obj{ margin:6px 0 0; font-size:.9rem; line-height:1.5; color:rgba(255,255,255,.8); text-wrap:pretty; }
.cstage__mod ol{ margin:10px 0 0; padding-left:18px; display:grid; gap:5px; font-size:.86rem; line-height:1.45; color:rgba(255,255,255,.72); }
.cstage__out{ margin-top:14px; display:grid; gap:6px; font-size:.9rem; color:rgba(255,255,255,.8); }
.cstage__out p{ margin:0; }
.cstage__out b{ color:#fff; }
.cstage__task b{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:#c9b6ff; font-weight:600; }
.cstage__sys{ color:#4CF3FE; text-decoration:none; font-size:.88rem; }
.cstage__sys:hover{ color:#fff; }
.cjour__note{ margin:12px 0 0; font-size:.8rem; color:rgba(255,255,255,.5); }
/* review mode: show every template for filling */
[data-tpl]:not(.vquote){ display:none !important; }
html.is-review [data-tpl]:not(.vquote){ display:revert-layer !important; }
html.is-review .tplgrid[data-tpl]{ display:grid !important; }
html.is-review figure.tplcro[data-tpl]{ display:grid !important; }
html.is-review .vquote[data-tpl]{ display:block !important; }
html.is-review [data-tpl]{ opacity:1 !important; outline:1px dashed rgba(255,138,71,.75); outline-offset:4px; }
html.is-review [data-tpl-sec]{ display:block !important; }
[data-tpl-sec]{ display:none; }
@media (max-width:900px){
  .cstage__rail{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:4px; }
  .cstage__tab{ flex:0 0 auto; min-width:116px; scroll-snap-align:start; }
  .cstage__grid{ grid-template-columns:minmax(0,1fr); }
  .cstage__fig .cstage__static svg{ max-height:300px; }
  .crelay{ grid-auto-flow:column; grid-auto-columns:minmax(64px,1fr); overflow-x:auto; padding-bottom:6px; }
  .crelay li{ flex-direction:column; align-items:flex-start; gap:6px; font-size:.74rem; padding:0 8px 0 0; }
  .crelay li:not(:last-child)::after{ left:14px; top:5px; width:calc(100% - 14px); height:0; border-left:0; border-top:2px dashed #4A4A68; }
  .crelay li.is-done::after{ border-top-style:solid; border-color:#4CF3FE; }
}
@media (prefers-reduced-motion:reduce){ .cstage__panel.is-in .cstage__grid{ animation:none; } .cstage__tab.is-run .cstage__fill{ transition:none; } }
/* lit states on the lifted 8-model figure */
.cstage__fig .an{ transition:opacity .25s cubic-bezier(.16,1,.3,1); }
.cstage__fig[data-lit] .an{ opacity:.38; }
.cstage__fig[data-lit] .an.is-lit,.cstage__fig[data-lit] .an.is-core{ opacity:1; }
.cstage__fig .an.is-lit .arch-box{ stroke:#4CF3FE; stroke-width:1.5; }
.cstage__fig .an.is-lit .an__rail,.cstage__fig .an.is-lit .an__ret{ opacity:1; stroke:#4CF3FE; }
.cstage__fig .an.is-feed{ opacity:.85 !important; }
.cstage__fig .an.is-feed .an__rail{ opacity:.9; }
.cstage__fig .an__job,.cstage__fig .arch-hint{ display:none; }
/* generated relay figure */
.crelay{ list-style:none; margin:0; padding:0; display:grid; gap:0; }
.crelay li{ cursor:pointer; position:relative; display:flex; align-items:center; gap:12px; padding:7px 0 7px 2px; color:rgba(255,255,255,.55); font-size:.88rem; transition:color .25s; }
.crelay li::before{ content:""; width:12px; height:12px; flex:none; border-radius:999px; border:2px solid #4A4A68; background:#0A0A0C; z-index:1; transition:border-color .25s, background .25s; }
.crelay li:not(:last-child)::after{ content:""; position:absolute; left:7px; top:24px; height:calc(100% - 10px); border-left:2px dashed #4A4A68; }
.crelay li i{ font-style:normal; font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.08em; color:#4A4A68; min-width:22px; }
.crelay li.is-done{ color:rgba(255,255,255,.8); }
.crelay li.is-done::before{ border-color:#4CF3FE; background:#4CF3FE; }
.crelay li.is-done::after{ border-left-style:solid; border-color:#4CF3FE; }
.crelay li.is-lit{ color:#fff; font-weight:600; }
.crelay li.is-lit::before{ border-color:#4CF3FE; background:#0A0A0C; box-shadow:0 0 0 4px rgba(76,243,254,.18); }
.crelay li.is-cred::before{ border-color:#FF00D4; }
.crelay li.is-cred.is-lit::before{ background:#FF00D4; box-shadow:0 0 0 4px rgba(255,0,212,.2); }
/* ---- Figure: 8-Model GTM Architecture (inline SVG) ---- */
.archsvg{ display:block; width:100%; height:auto; }
.archsvg .arch-box{ fill:#0A0A0C; stroke:#1A1A22; stroke-width:1; transition:stroke .25s; }
.archsvg .an:hover .arch-box,.archsvg .an:focus-within .arch-box{ stroke:rgba(76,243,254,.55); }
.archsvg .arch-core{ fill:#0A0A0C; stroke:#FF00D4; stroke-width:1.5; }
.archsvg .arch-mono{ font:600 10.5px "IBM Plex Mono",monospace; letter-spacing:.09em; fill:#4CF3FE; }
.archsvg .arch-name{ font:600 15px "IBM Plex Sans",sans-serif; fill:#FFFFFF; }
.archsvg .arch-sec{ font:600 11px "IBM Plex Mono",monospace; letter-spacing:.18em; fill:#4A4A68; }
.archsvg .arch-core-m{ font:600 10.5px "IBM Plex Mono",monospace; letter-spacing:.14em; fill:#FF00D4; }
.archsvg .arch-core-t{ font:700 17px "IBM Plex Sans",sans-serif; fill:#FFFFFF; }
.archsvg .arch-job{ font:400 12.5px "IBM Plex Mono",monospace; fill:#D1D1D9; }
.archsvg .arch-hint{ fill:#4A4A68; }
.archsvg .an__rail{ fill:none; stroke:#4CF3FE; stroke-width:1.6; opacity:.4; transition:opacity .25s; }
.archsvg .an__ret{ fill:none; stroke:#4A4A68; stroke-width:1.4; stroke-dasharray:4 5; opacity:.35; transition:opacity .25s, stroke .25s; }
.archsvg .an:hover .an__rail,.archsvg .an:focus-within .an__rail{ opacity:1; }
.archsvg .an:hover .an__ret,.archsvg .an:focus-within .an__ret{ stroke:#4CF3FE; opacity:1; }
.archsvg .an__job{ opacity:0; transition:opacity .2s; pointer-events:none; }
.archsvg .an:hover .an__job,.archsvg .an:focus-within .an__job{ opacity:1; }

/* design-system figures in the stage (v3) */
.cstage__ds[hidden],.cstage__static[hidden]{ display:none !important; }
.cstage__grid.has-ds{ grid-template-columns:minmax(0,1fr); }
.cstage__grid.has-ds .cstage__fig{ max-width:980px; width:100%; margin:0 auto; }
.cdsfig{ display:grid; grid-template-columns:minmax(0,1fr); gap:16px; align-items:start; }
.cdsfig--n2,.cdsfig--n4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.cdsfig--n8{ grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px 12px; }
.cdsfig__it{ display:flex; flex-direction:column; align-items:stretch; gap:8px; min-width:0; }
.cdsfig__it > *:not(svg){ width:100%; max-width:100%; }
.cdsfig__it > svg{ align-self:center; max-width:100%; }
.cdsfig--marks .cdsfig__it{ align-items:center; }
.cdsfig--marks .cdsfig__it > *:not(svg):not(.cdsfig__cap){ max-width:132px; }
.cdsfig__cap{ font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; color:#D1D1D9; text-align:center; }
.cstage__tn{ display:flex; align-items:center; gap:6px; }
.cstage__mk{ display:inline-flex; flex:none; }
@media (max-width:900px){ .cdsfig--n8{ grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media (max-width:560px){ .cdsfig--n2,.cdsfig--n4{ grid-template-columns:minmax(0,1fr); } }

/* figure bar: one figure per module, variants as chips (v4) */
.cfig__bar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; margin:0 0 16px; }
.cfig__bar[hidden]{ display:none; }
.cfig__mods,.cfig__views{ display:flex; flex-wrap:wrap; gap:6px; }
.cfig__m,.cfig__v{ font:inherit; cursor:pointer; display:inline-flex; align-items:center; gap:8px; min-height:34px; padding:6px 13px; border-radius:999px; border:1px solid #1A1A22; background:transparent; color:#D1D1D9; font-size:.8rem; line-height:1.2; transition:background .2s cubic-bezier(.16,1,.3,1), color .2s cubic-bezier(.16,1,.3,1), border-color .2s cubic-bezier(.16,1,.3,1); }
.cfig__m b{ font-family:'IBM Plex Mono',monospace; font-weight:600; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
.cfig__m:hover,.cfig__v:hover{ color:#fff; border-color:#4A4A68; }
.cfig__m.is-on,.cfig__v.is-on{ color:#fff; border-color:#4CF3FE; background:rgba(76,243,254,.08); }
.cfig__m:focus-visible,.cfig__v:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; }
.cfig__t{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
.cstage__ds{ min-height:clamp(200px,30vw,420px); display:grid; align-items:center; }
.cstage__mod{ transition:border-color .2s cubic-bezier(.16,1,.3,1), background .2s cubic-bezier(.16,1,.3,1); }
.cstage__mod.is-fig{ border-color:rgba(76,243,254,.38); background:rgba(76,243,254,.04); }
.cdsfig--n3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.cdsfig--n5{ grid-template-columns:repeat(5,minmax(0,1fr)); gap:16px 10px; }
@media (max-width:560px){ .cfig__bar{ flex-direction:column; align-items:flex-start; } .cfig__m,.cfig__v{ min-height:44px; } .cdsfig--n5{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
/* compositions v5 — staged scenes built from design-system elements (see curriculum.js) */
.cstage__grid.has-ds{ grid-template-columns:minmax(0,1fr) !important; gap:16px !important; }
.cstage__grid.has-ds .cstage__fig{ max-width:none !important; margin:0 !important; }
.cstage__ds{ min-height:0 !important; display:block !important; }
.cstage__ds[hidden]{ display:none !important; }
.cstage__head{ margin-bottom:14px !important; }
.cfig__bar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 14px; margin:0 0 12px !important; }
.cfig__t{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
.cstage__cap{ margin-top:10px !important; }
.cstage__grid.has-ds .cstage__body{ display:flex; flex-direction:column; gap:12px; }
.cstage__grid.has-ds .cstage__mods{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.cstage__grid.has-ds .cstage__mod{ margin:0 !important; cursor:pointer; }
.cstage__grid.has-ds .cstage__out{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:6px 18px; }
.cstage__grid.has-ds .cstage__out p{ margin:0; }
.cstage__ds{ width:100%; position:relative; }
.c3d{ position:relative; perspective:1800px; perspective-origin:50% 0%; }
.c3d__stack{ position:relative; }
.c3d__fit{ position:relative; width:100%; height:100%; overflow:hidden; }
.c3d__inner{ position:absolute; left:0; top:0; width:100%; transform-origin:50% 0; }
.c3d__card{ position:relative; min-width:0; overflow:hidden; display:flex; flex-direction:column; gap:8px; padding:12px 16px 14px; border-radius:14px; background:#0A0A0C; border:1px solid #1A1A22; box-shadow:0 28px 56px -34px rgba(0,0,0,.95); transform-origin:50% 0%; transition:transform .6s cubic-bezier(.16,1,.3,1), opacity .4s cubic-bezier(.16,1,.3,1), border-color .25s ease; backface-visibility:hidden; }
.c3d__card.is-front{ border-color:rgba(76,243,254,.38); }
.c3d__card:not(.is-front){ position:absolute; inset:0; }
.c3d__card:not(.is-front){ cursor:pointer; }
.c3d__card:not(.is-front):hover{ border-color:#4A4A68; }
.c3d__card:not(.is-front) .c3d__body{ pointer-events:none; }
.c3d__tab{ font-family:'IBM Plex Mono',monospace; font-size:.68rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:#D1D1D9; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.c3d__card.is-front .c3d__tab{ color:#4CF3FE; }
.c3d__body{ min-width:0; flex:1 1 auto; position:relative; }
.c3d--orbit{ height:clamp(280px,34vw,380px); }
.c3d__ring{ position:absolute; left:10%; right:10%; top:22%; height:60%; border:1px dashed rgba(76,243,254,.3); border-radius:50%; }
.c3d__orb{ position:absolute; display:flex; flex-direction:column; align-items:center; gap:6px; padding:6px; border:0; border-radius:12px; background:none; color:#D1D1D9; font:inherit; cursor:pointer; transition:left .6s cubic-bezier(.16,1,.3,1), top .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1), opacity .4s ease; }
.c3d__orb span{ font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; white-space:nowrap; }
.c3d__orb.is-front{ filter:drop-shadow(0 14px 22px rgba(76,243,254,.28)); }
.c3d__orb.is-front span{ color:#fff; }
.c3d__orb:focus-visible,.c3d__step:focus-visible,.cstage__mod:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; }
.c3d--ladder{ display:flex; align-items:flex-end; justify-content:center; gap:clamp(8px,1.6vw,20px); padding:8px 4% 6px; }
.c3d__step{ flex:1 1 0; max-width:150px; display:flex; flex-direction:column; align-items:center; gap:8px; padding:0; border:0; background:none; color:#D1D1D9; font:inherit; cursor:pointer; }
.c3d__mark{ display:block; width:min(100%,92px); }
.c3d__block{ display:block; width:100%; border-radius:10px 10px 4px 4px; border:1px dashed #4A4A68; background:transparent; transition:background .3s ease, border-color .3s ease, box-shadow .3s ease; }
.c3d__step.is-lit .c3d__block{ border-style:solid; border-color:rgba(76,243,254,.3); background:linear-gradient(180deg,rgba(76,243,254,.16),rgba(76,243,254,.02)); }
.c3d__step.is-on .c3d__block{ border-color:#4CF3FE; box-shadow:0 0 0 1px rgba(76,243,254,.35), 0 18px 40px -20px rgba(76,243,254,.55); }
.c3d__lab{ font-family:'IBM Plex Mono',monospace; font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; text-align:center; }
.c3d__step.is-on .c3d__lab{ color:#fff; }
.c3d--hero{ padding-bottom:26px; }
.c3d__hero{ position:relative; z-index:1; width:min(100%,940px); margin:0 auto; }
.c3d--hero > .c3d__fit,.c3d--grid > .c3d__fit{ z-index:1; }
.c3d__plinth{ position:absolute; left:14%; right:14%; bottom:0; height:40px; border-radius:50%; background:radial-gradient(closest-side, rgba(76,243,254,.2), transparent); }
@media (max-width:720px){
  .cstage__grid.has-ds .cstage__mods{ grid-template-columns:minmax(0,1fr); }
  .c3d__orb span{ font-size:.58rem; }
  .c3d--ladder{ gap:6px; }
}
@media (prefers-reduced-motion:reduce){ .c3d__card,.c3d__orb,.c3d__block{ transition:none; } }

/* orbit: only the mark recedes; its label keeps full contrast */
.c3d__orbm{ display:block; font-style:normal; transition:opacity .4s ease; }
.c3d__orb span{ color:#D1D1D9; }
/* v6 — stage polish. The stage sits on the page ground as glass, like the schedule. The figures sit on a light plate:
   the design system's light mode as a bounded island, so every approved figure reads in its own tone, deck cards stay opaque
   and the figure's knock-outs match their ground exactly. */
body .cstage__panel{ background:rgba(255,255,255,.035) !important; border:1px solid rgba(255,255,255,.14) !important; border-radius:20px !important; padding:clamp(18px,2.4vw,28px) !important; }
body .cstage__rail{ display:grid !important; grid-template-columns:none !important; grid-auto-flow:column; grid-auto-columns:auto; gap:0 !important; margin-bottom:16px; }
body .cstage__tab .cstage__tl{ overflow-wrap:normal !important; word-break:normal !important; hyphens:manual !important; }
@media (max-width:900px){ body .cstage__rail{ display:flex !important; overflow-x:auto; } body .cstage__tab{ flex:0 0 auto; min-width:116px; } }
body .cstage__tab{ overflow:visible !important; background:none !important; border:0 !important; border-bottom:2px solid rgba(255,255,255,.14) !important; border-radius:0 !important; padding:10px 8px 14px !important; gap:4px !important; color:#D1D1D9 !important; box-shadow:none !important; }
body .cstage__tab:hover{ color:#fff !important; border-bottom-color:rgba(255,255,255,.32) !important; }
body .cstage__tab.is-done{ border-bottom-color:rgba(76,243,254,.3) !important; }
body .cstage__tab.is-on{ border-bottom-color:rgba(76,243,254,.45) !important; }
body .cstage__tab .cstage__tn{ font-size:.66rem !important; color:#D1D1D9 !important; }
body .cstage__tab.is-on .cstage__tn{ color:#4CF3FE !important; }
body .cstage__tab .cstage__tl{ font-size:.84rem !important; font-weight:500; line-height:1.3; }
body .cstage__tab.is-on .cstage__tl{ color:#fff; font-weight:600; }
body .cstage__fill{ bottom:-2px !important; height:2px !important; background:#4CF3FE !important; }
body .cstage__head{ align-items:flex-end !important; }
body .cstage__meta{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
body .cstage__t{ margin:6px 0 0 !important; font-size:clamp(1.25rem,1.05rem + .8vw,1.6rem) !important; line-height:1.25; }
body .cstage__arw{ width:38px; height:38px; border-radius:999px !important; border:1px solid rgba(255,255,255,.2) !important; background:transparent !important; color:#fff !important; }
body .cstage__arw:hover{ border-color:#4CF3FE !important; }
body .cstage__pos{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:#D1D1D9; }
body .cfig__t{ color:#4CF3FE !important; }
body .cfig__v{ border:1px solid rgba(255,255,255,.2) !important; color:#D1D1D9 !important; background:transparent !important; }
body .cfig__v:hover{ color:#fff !important; border-color:rgba(255,255,255,.4) !important; }
body .cfig__v.is-on{ color:#fff !important; border-color:#4CF3FE !important; background:rgba(76,243,254,.12) !important; }
body .cstage__cap{ color:#D1D1D9 !important; } body .cstage__cap b{ color:#4CF3FE !important; }
body .cstage__grid.has-ds .cstage__ds{ background:transparent !important; }
body .cstage__ds .c3d__card{ background:#FFFFFF !important; border:0 !important; box-shadow:0 1px 2px rgba(0,0,0,.06), 0 14px 34px -18px rgba(20,8,70,.45) !important; }
body .cstage__ds .c3d__card.is-front{ box-shadow:0 0 0 1.5px rgba(59,6,212,.4), 0 18px 40px -18px rgba(20,8,70,.5) !important; }
body .cstage__ds .c3d__card:not(.is-front):hover{ box-shadow:0 0 0 1px rgba(59,6,212,.3), 0 14px 34px -18px rgba(20,8,70,.45) !important; }
body .cstage__ds .c3d__tab{ color:#4A4A68 !important; }
body .cstage__ds .c3d__card.is-front .c3d__tab{ color:#3B06D4 !important; }
body .cstage__ds .cdsfig__cap{ color:#4A4A68 !important; }
body .cstage__ds .c3d__plinth{ background:radial-gradient(closest-side, rgba(59,6,212,.12), transparent) !important; }
body .cstage__ds .c3d__ring{ border-color:rgba(59,6,212,.28) !important; }
body .cstage__ds .c3d__orb span{ color:#4A4A68 !important; }
body .cstage__ds .c3d__orb.is-front span{ color:#000 !important; }
body .cstage__ds .c3d__orb.is-front{ filter:drop-shadow(0 12px 18px rgba(59,6,212,.22)) !important; }
body .cstage__ds .c3d__block{ border-color:#D1D1D9 !important; }
body .cstage__ds .c3d__step.is-lit .c3d__block{ border-color:rgba(59,6,212,.3) !important; background:linear-gradient(180deg,rgba(59,6,212,.12),rgba(59,6,212,.02)) !important; }
body .cstage__ds .c3d__step.is-on .c3d__block{ border-color:#3B06D4 !important; box-shadow:0 0 0 1px rgba(59,6,212,.3), 0 16px 34px -18px rgba(59,6,212,.45) !important; }
body .cstage__ds .c3d__lab{ color:#4A4A68 !important; } body .cstage__ds .c3d__step.is-on .c3d__lab{ color:#000 !important; }
body .cstage__grid.has-ds .cstage__mods{ gap:14px !important; }
body .cstage__mod{ background:rgba(255,255,255,.04) !important; border:1px solid rgba(255,255,255,.12) !important; border-radius:14px !important; padding:18px 18px 16px !important; }
body .cstage__mod.is-fig{ border-color:rgba(76,243,254,.5) !important; background:rgba(76,243,254,.06) !important; }
body .cstage__mk2{ font-family:'IBM Plex Mono',monospace; font-size:.66rem !important; letter-spacing:.1em; text-transform:uppercase; color:#4CF3FE !important; }
body .cstage__mn{ margin:6px 0 0 !important; font-size:1.05rem !important; font-weight:600; }
body .cstage__obj{ margin:6px 0 0 !important; font-size:.92rem !important; line-height:1.55 !important; }
body .cstage__mod ol{ margin:12px 0 0 !important; padding:12px 0 0 18px !important; border-top:1px solid rgba(255,255,255,.1); display:flex; flex-direction:column; gap:6px; font-size:.86rem; line-height:1.45; }
body .cstage__out{ padding-top:14px; border-top:1px solid rgba(255,255,255,.12); }
body .cstage__sys{ color:#4CF3FE !important; }
/* v7 — session art (assets/curriculum-art.js): compositions on the dark stage, no plate */
.cstage__art[hidden]{ display:none !important; }
.cstage__art{ position:relative; }
.cv{ position:relative; padding:4px 0 2px; }
.cv-tilt{ max-width:880px; margin:0 auto; perspective:1400px; }
.cv-tilt{ container-type:inline-size; }
.cv-tilt svg{ display:block; width:100%; height:auto; overflow:visible; transform:rotateX(34deg); transform-origin:50% 0; margin-bottom:calc(-9% * 1); }
.cv-base{ fill:rgba(255,255,255,.16); stroke:rgba(255,255,255,.3); stroke-width:1; vector-effect:non-scaling-stroke; }
.cv-lit{ fill:#4CF3FE; stroke:#4CF3FE; stroke-width:1.4; vector-effect:non-scaling-stroke; filter:drop-shadow(0 0 6px rgba(76,243,254,.45)); }
.cv-lit--g{ filter:none; }
.cv-dim{ opacity:.42; filter:none; }
.cv-run{ stroke:#FF00D4; stroke-width:3.2; vector-effect:non-scaling-stroke; stroke-linecap:round; stroke-dasharray:90 910; stroke-dashoffset:1000; animation:cvRun 2.8s cubic-bezier(.16,1,.3,1) .2s 1 forwards; }
@keyframes cvRun{ to{ stroke-dashoffset:0; } }
.cv-hinge{ fill:#FF00D4; }
.cv-node{ fill:rgba(76,243,254,.16); stroke:#4CF3FE; stroke-width:2.5; }
.cv-core{ fill:#4CF3FE; }
.cv-spoke{ stroke:#4CF3FE; stroke-width:3; stroke-linecap:round; }
.cv-arr{ stroke:#4CF3FE; stroke-width:2.5; fill:none; }
.cv-trk{ stroke:rgba(255,255,255,.45); stroke-width:2; }
.cv-lead{ stroke:rgba(255,0,212,.55); stroke-width:1.5; stroke-dasharray:4 5; }
.cv-spine{ stroke:#4CF3FE; stroke-width:3; stroke-dasharray:10 8; }
.cv-tick{ stroke:rgba(76,243,254,.5); stroke-width:2; }
.cv-wall{ fill:none; stroke:#4CF3FE; stroke-width:8; stroke-linecap:round; }
.cv-t{ font:600 22px 'IBM Plex Sans',sans-serif; fill:#fff; }
.cv-s{ font:500 19px 'IBM Plex Sans',sans-serif; fill:#D1D1D9; }
.cv-x{ font-family:'IBM Plex Mono',monospace; font-weight:600; fill:#4CF3FE; }
.cv-flat{ max-width:660px; margin:0 auto; } .cv-flat svg{ display:block; width:100%; height:auto; overflow:visible; } .cv-flat .cv-t{ font-size:17px; }
.cv-stack{ position:relative; height:clamp(280px,34vw,400px); perspective:1500px; }
.cv-stack__in{ position:absolute; inset:0; transform-style:preserve-3d; transform:rotateX(60deg) rotateZ(-8deg); transform-origin:50% 55%; }
.cv-layer{ position:absolute; left:32%; right:2%; top:22%; transform:translateZ(calc(var(--z) * 66px)); transform-style:preserve-3d; }
.cv-layer svg{ display:block; width:100%; height:auto; overflow:visible; }
.cv-ll{ position:absolute; right:calc(100% + 14px); top:30%; display:flex; flex-direction:column; align-items:flex-end; gap:2px; width:150px; max-width:150px; text-align:right; white-space:normal; transform:rotateZ(8deg) rotateX(-60deg); transform-origin:right center; }
.cv-ll b{ font-family:'IBM Plex Mono',monospace; font-size:1.1rem; font-weight:700; }
.cv-ll span{ font-size:.82rem; color:#D1D1D9; }
.cv-steps{ position:relative; display:flex; align-items:flex-end; gap:clamp(10px,1.6vw,18px); height:clamp(240px,28vw,320px); padding:58px 4% 0; }
.cv-st{ position:relative; flex:1 1 0; height:var(--h); display:flex; flex-direction:column; align-items:center; gap:6px; padding:16px 6px 0; border-radius:10px 10px 4px 4px; border:1px solid rgba(76,243,254,.5); background:linear-gradient(180deg,rgba(76,243,254,.24),rgba(76,243,254,.04)); }
.cv-st__top{ position:absolute; left:8px; right:-12px; top:-13px; height:13px; background:rgba(76,243,254,.4); transform:skewX(-42deg); transform-origin:bottom left; border-radius:4px 4px 0 0; }
.cv-st b{ font-size:.92rem; font-weight:600; text-align:center; }
.cv-st:last-child{ border-color:#4CF3FE; box-shadow:0 18px 40px -20px rgba(76,243,254,.6); }
.cv-tiles .cv-st em{ font-style:normal; font-size:clamp(1.6rem,1.2rem + 1.4vw,2.2rem); font-weight:700; line-height:1; color:#fff; }
.cv-tiles .cv-st b{ font-size:.8rem; font-weight:500; }
.cv-tiles .cv-st:last-child{ border-color:#FF00D4; background:linear-gradient(180deg,rgba(255,0,212,.24),rgba(255,0,212,.04)); box-shadow:0 18px 40px -20px rgba(255,0,212,.6); }
.cv-tiles .cv-st:last-child .cv-st__top{ background:rgba(255,0,212,.45); }
.cv-steps__loop{ position:absolute; left:4%; right:4%; top:8px; height:calc(100% - 8px); overflow:visible; pointer-events:none; }
.cv-steps__loop path{ fill:none; stroke:#FF00D4; stroke-width:2; stroke-dasharray:6 6; }
.cv-steps__lab{ position:absolute; top:0; left:50%; transform:translateX(-50%); font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:#FF00D4; white-space:nowrap; }
.cv-marks{ display:flex; flex-wrap:wrap; justify-content:center; gap:22px 30px; padding:14px 0; }
.cv-m{ display:flex; flex-direction:column; align-items:center; gap:10px; }
.cv-m b{ font-size:.86rem; font-weight:600; }
.cv-m.is-dim .cv-mm{ opacity:.55; }
.cv-mm{ display:block; font-style:normal; }
.cv-kernel{ display:flex; flex-direction:column; align-items:center; gap:0; padding:10px 0; }
.cv-krow{ display:flex; flex-wrap:wrap; justify-content:center; gap:18px 34px; }
.cv-core2{ position:relative; margin:30px 0; padding:10px 22px; border-radius:999px; border:1.5px solid #4CF3FE; box-shadow:0 0 0 7px rgba(76,243,254,.07); font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:#fff; }
.cv-core2::before,.cv-core2::after{ content:""; position:absolute; left:50%; width:1.5px; height:24px; }
.cv-core2::before{ bottom:100%; background:#4CF3FE; } .cv-core2::after{ top:100%; background:rgba(255,255,255,.35); }
.cv-moat{ position:relative; width:min(100%,320px); margin:6px auto; aspect-ratio:1; }
.cv-moat svg{ position:absolute; inset:0; width:100%; height:100%; }
.cv-moat .cv-mm{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); }
.cv-ladder{ display:flex; align-items:flex-end; justify-content:center; gap:clamp(8px,1.6vw,18px); padding:8px 2% 0; }
.cv-rung{ flex:1 1 0; max-width:140px; display:flex; flex-direction:column; align-items:center; gap:8px; }
.cv-lv{ display:block; width:min(100%,84px); font-style:normal; }
.cv-rung__b{ display:block; width:100%; border-radius:10px 10px 4px 4px; border:1px dashed rgba(255,255,255,.3); }
.cv-rung.is-lit .cv-rung__b{ border:1px solid rgba(76,243,254,.4); background:linear-gradient(180deg,rgba(76,243,254,.2),rgba(76,243,254,.03)); }
.cv-rung.is-on .cv-rung__b{ border-color:#4CF3FE; box-shadow:0 0 0 1px rgba(76,243,254,.35), 0 18px 40px -20px rgba(76,243,254,.6); }
.cv-rung b{ font-family:'IBM Plex Mono',monospace; font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; font-weight:500; text-align:center; }
@media (max-width:720px){ .cv-steps{ height:220px; padding-top:48px; } .cv-st b{ font-size:.74rem; } .cv-stack{ height:240px; } .cv-ll span{ display:none; } }
@media (prefers-reduced-motion:reduce){ .cv-run{ animation:none; stroke-dashoffset:0; } }
/* v8 — motion that teaches the order, played once when a session opens; new compositions */
@keyframes cvFade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes cvRise{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:none; } }
@keyframes cvPop{ from{ opacity:0; transform:scale(.3); } to{ opacity:1; transform:none; } }
@keyframes cvDraw{ from{ stroke-dashoffset:1; } to{ stroke-dashoffset:0; } }
@keyframes cvScan{ from{ transform:translateX(-100%); } to{ transform:translateX(100%); } }
@keyframes cvGrow{ from{ transform:scaleX(0); } to{ transform:none; } }
.cv .cv-a{ animation:cvFade .7s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 130ms); }
.cv .cv-rise{ animation:cvRise .6s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 110ms); }
.cv .cv-pop{ transform-box:fill-box; transform-origin:center; animation:cvPop .55s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 110ms + 180ms); }
.cv .cv-draw{ stroke-dasharray:1; stroke-dashoffset:1; animation:cvDraw .75s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 120ms); }
.cv-layer.cv-rise{ animation-name:cvFade; }
.cv-moat__m{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); display:block; }
.cv-moat .cv-mm{ position:static; transform:none; }
.cv .cv-moat__m.cv-pop{ animation-name:cvFade; }
.cv-score{ display:flex; flex-direction:column; gap:10px; }
.cv-ai{ position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center; gap:10px; margin:0 4%; padding:10px 18px; border-radius:999px; border:1.5px solid #4CF3FE; background:rgba(76,243,254,.08); }
.cv-ai b{ font-family:'IBM Plex Mono',monospace; font-size:1rem; font-weight:700; letter-spacing:.06em; color:#4CF3FE; }
.cv-ai span:not(.cv-ai__scan){ font-size:.9rem; color:#fff; }
.cv-ai__scan{ position:absolute; inset:0; background:linear-gradient(90deg,transparent,rgba(76,243,254,.38),transparent); transform:translateX(-100%); animation:cvScan 1.8s cubic-bezier(.16,1,.3,1) .25s 1 both; pointer-events:none; }
.cv-score .cv-steps{ padding-top:22px; height:clamp(210px,25vw,280px); }
.cv-record{ display:flex; align-items:center; justify-content:center; gap:10px; margin:6px 0 0; font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.06em; color:#D1D1D9; text-align:center; }
.cv-record span{ flex:none; width:7px; height:14px; border-radius:2px; background:#FF00D4; }
.cv-prov{ display:grid; grid-template-columns:repeat(auto-fit,minmax(112px,1fr)); gap:12px; padding:4px 0; }
.cv-pv{ display:flex; flex-direction:column; align-items:center; gap:7px; padding:16px 10px 14px; border-radius:16px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.04); text-align:center; }
.cv-pv__logo{ display:grid; place-items:center; width:56px; height:56px; border-radius:14px; background:#fff; box-shadow:0 10px 24px -14px rgba(0,0,0,.7); }
.cv-pv__logo img{ width:32px; height:32px; object-fit:contain; display:block; }
.cv-pv__logo b{ font-size:1.3rem; color:#000; }
.cv-pv__n{ font-size:.92rem; font-weight:600; color:#fff; }
.cv-pv__p{ font-style:normal; font-family:'IBM Plex Mono',monospace; font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; color:#FF00D4; margin-top:-4px; }
.cv-pv .cv-lv{ width:62px; }
.cv-pv__l{ font-family:'IBM Plex Mono',monospace; font-size:.62rem; letter-spacing:.06em; text-transform:uppercase; color:#D1D1D9; }
.cv-cmp{ position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:16px; align-items:center; padding:22px 0 4px; }
.cv-cmp .cv-record{ grid-column:1 / -1; }
.cv-cmp__tag{ position:absolute; top:0; left:0; font-family:'IBM Plex Mono',monospace; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:#F5C24B; }
.cv-run2{ display:flex; flex-direction:column; gap:12px; padding:18px; border-radius:16px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.04); }
.cv-run2.is-after{ border-color:rgba(76,243,254,.45); }
.cv-run2 > b{ font-size:.92rem; font-weight:600; color:#fff; }
.cv-bar{ display:grid; grid-template-columns:34px minmax(0,1fr); gap:10px; align-items:center; }
.cv-bar span{ font-family:'IBM Plex Mono',monospace; font-size:.8rem; font-weight:600; color:#D1D1D9; }
.cv-bar i{ display:block; height:14px; width:var(--w); border-radius:999px; background:rgba(76,243,254,.5); transform-origin:left; animation:cvGrow .8s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 120ms); }
.cv-bar.is-moved i{ background:#FF00D4; box-shadow:0 0 0 3px rgba(255,0,212,.18); }
.cv-cmp__arrow{ font-size:1.6rem; color:#4CF3FE; }
.cstage__out:empty{ display:none; }
@media (max-width:720px){ .cv-cmp{ grid-template-columns:minmax(0,1fr); } .cv-cmp__arrow{ justify-self:center; transform:rotate(90deg); } .cv-prov{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (prefers-reduced-motion:reduce){ .cv *{ animation:none !important; } .cv .cv-draw{ stroke-dashoffset:0; } .cv-ai__scan{ display:none; } }

/* v9 labels: SVG text scales with the figure, so on narrow screens the labels move to HTML chips at a real size */
.cv-chips{ display:none; }
@media (max-width:720px){
  .cv-tilt text, .cv-flat text{ display:none; }
  .cv-chips{ list-style:none; display:flex; flex-wrap:wrap; justify-content:center; gap:6px; margin:12px 0 0; padding:0; }
  .cv-chips li{ font-size:12.5px; line-height:1.3; padding:5px 10px; border-radius:999px; border:1px solid rgba(255,255,255,.22); color:#D1D1D9; }
  .cv-chips li.is-lit{ border-color:#4CF3FE; color:#fff; background:rgba(76,243,254,.1); }
}

/* v6 one card: every session is the same size — one frame for the scene, one block for the words */
.cstage__head > div:first-child{ flex:1 1 0; min-width:0; }
body .cstage__t{ min-height:var(--cst-t,0); }
body .cstage__grid.has-ds .cstage__art{ height:var(--cst-stage,auto); display:flex; flex-direction:column; justify-content:center; overflow:hidden; }
body .cstage__art > .cv{ flex:none; width:100%; transform-origin:50% 50%; }
body .cstage__grid.has-ds .cstage__mods{ min-height:var(--cst-mods,0); }
body .cstage__grid.has-ds .cstage__out{ min-height:var(--cst-out,0); align-content:flex-start; }
/* the smaller scenes grow into the frame */
.cv-ladder .cv-lv{ width:min(100%,100px); }
.cv-rung{ max-width:160px; }
.cv-prov{ gap:14px; }
.cv-pv{ gap:9px; padding:22px 12px 20px; }
.cv-pv__logo{ width:68px; height:68px; border-radius:16px; }
.cv-pv__logo img{ width:40px; height:40px; }
.cv-pv__n{ font-size:1rem; }
.cv-pv .cv-lv{ width:80px; }
.cv-run2{ gap:16px; padding:22px; }
.cv-bar i{ height:18px; }
.cv-marks--grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:30px 16px; max-width:760px; margin:0 auto; justify-items:center; }
@media (max-width:720px){
  .cv-prov{ grid-template-columns:minmax(0,1fr); gap:8px; }
  .cv-pv{ flex-direction:row; align-items:center; gap:12px; padding:10px 14px; text-align:left; }
  .cv-pv__logo{ flex:none; width:44px; height:44px; border-radius:12px; } .cv-pv__logo img{ width:26px; height:26px; }
  .cv-pv__n{ flex:1 1 auto; } .cv-pv__p{ margin:0; } .cv-pv .cv-lv{ flex:none; width:56px; } .cv-pv__l{ display:none; }
  .cv-marks--grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 12px; }
}

/* split: agents do · you review · only you */
.cv-split{ position:relative; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; padding:18px 18px 54px; }
.cv-sp{ border-radius:12px; padding:16px 16px 14px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); min-height:150px; }
.cv-sp b{ display:block; font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.6); margin-bottom:10px; }
.cv-sp.is-mid b{ color:#4CF3FE } .cv-sp.is-you{ background:rgba(255,0,212,.06); border-color:rgba(255,0,212,.35) } .cv-sp.is-you b{ color:#FF00D4 }
.cv-sp ul{ list-style:none; margin:0; padding:0; display:grid; gap:7px } .cv-sp li{ font-size:.86rem; line-height:1.35; color:#fff; padding-left:14px; position:relative } .cv-sp li::before{ content:''; position:absolute; left:0; top:.52em; width:6px; height:6px; border-radius:50%; background:currentColor; opacity:.55 }
.cv-split__line{ position:absolute; left:18px; right:18px; bottom:40px; height:10px; width:auto } .cv-split__line path{ stroke:rgba(255,255,255,.35); stroke-width:1.2; fill:none } .cv-split__line circle{ fill:#FF00D4 }
.cv-split .cv-record{ position:absolute; left:18px; right:18px; bottom:10px; margin:0 }
@media (max-width:640px){ .cv-split{ grid-template-columns:1fr; padding-bottom:62px } .cv-sp{ min-height:0 } }

.cstage__leave b{ color:#FF00D4 }
.cstage__tab[data-kind="ws"] .cstage__tn::after{ content:"workshop"; margin-left:6px; font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; opacity:.6 }

/* v6 polish: the session type on the rail, modules that lead with what you can do, one deliverable line */
.cstage__tab{ grid-template-rows:auto 1fr auto; }
.cstage__ty{ align-self:end; justify-self:start; margin-top:8px; padding:3px 7px; border-radius:999px; border:1px solid currentColor; font-family:'IBM Plex Mono',monospace; font-size:.6rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; line-height:1; white-space:nowrap; }
.cstage__ty[data-kind="live"]{ color:#4CF3FE; }
.cstage__ty[data-kind="workshop"]{ color:#c9b6ff; }
.cstage__mods{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:12px; align-items:stretch; }
.cstage__mod{ display:flex; flex-direction:column; gap:10px; padding:16px 18px; }
.cstage__mk2{ gap:10px; }
.cstage__ml{ display:grid; place-items:center; width:22px; height:22px; border-radius:6px; border:1px solid rgba(201,182,255,.55); font-style:normal; font-size:.72rem; color:#fff; }
.cstage__mn{ margin:0; font-size:1.05rem; line-height:1.3; }
.cstage__ob{ margin-top:auto; padding-top:12px; border-top:1px solid rgba(255,255,255,.1); }
.cstage__obk{ display:block; font-family:'IBM Plex Mono',monospace; font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; color:#4CF3FE; }
.cstage__obj{ margin:6px 0 0; font-size:.95rem; line-height:1.5; color:rgba(255,255,255,.9); }
.cstage__out{ margin-top:12px; gap:8px; }
.cstage__out .cstage__leave{ margin:0; padding:12px 16px; border-radius:12px; border:1px solid rgba(76,243,254,.4); color:#fff; }
.cstage__out .cstage__leave b{ display:block; margin-bottom:4px; color:#4CF3FE; }
.cstage__out .cstage__leave{ flex:1 1 280px; }
.cstage__out .cstage__task:not(.cstage__leave){ flex:1 1 220px; }
.cstage__mod:has(ol) .cstage__ob, .cstage__mod:has(.cstage__slot) .cstage__ob{ margin-top:0; }

/* v7 — terminal stage (frame:'terminal', AIWS) + one size and one border for every card on both course pages */
body .cstage__rail{ display:grid !important; grid-auto-flow:column; grid-auto-columns:minmax(124px,1fr); gap:6px !important; overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none; }
body .cstage__rail::-webkit-scrollbar{ display:none; }
@media (max-width:640px){ body .cstage__rail{ grid-auto-columns:140px; } }
body .cstage__tab{ min-width:0 !important; height:100%; align-content:start; }
body .cstage__mod{ border:1px solid rgba(255,255,255,.14) !important; border-radius:14px !important; background:rgba(255,255,255,.03) !important; padding:16px 18px !important; }
body .cstage__mod.is-fig{ border-color:rgba(76,243,254,.4) !important; }
body .cstage__grid.has-ds .cstage__mods{ align-items:stretch; }
.cterm{ position:relative; border:1px solid rgba(255,255,255,.14); border-radius:14px; background:#050508; overflow:hidden; }
.cterm__bar{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; padding:9px 12px 9px 16px; border-bottom:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03); }
.cterm__dots{ display:flex; gap:6px; }
.cterm__dots i{ width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,.2); }
.cterm__ttl{ font:500 .74rem/1.2 'IBM Plex Mono',monospace; letter-spacing:.04em; color:rgba(255,255,255,.66); }
body .cterm__ttl b, body .cterm__run b{ color:#fff !important; font-weight:600; }
.cterm__llm{ margin-left:auto; display:flex; align-items:center; gap:2px; }
.cterm__run{ margin-right:6px; font:500 .72rem/1.2 'IBM Plex Mono',monospace; color:rgba(255,255,255,.66); white-space:nowrap; }
.cterm__p{ width:30px; height:30px; display:grid; place-items:center; padding:0; border-radius:8px; border:1px solid transparent; background:none; cursor:pointer; transition:background .2s cubic-bezier(.16,1,.3,1), border-color .2s cubic-bezier(.16,1,.3,1); }
.cterm__p img{ width:16px; height:16px; object-fit:contain; filter:grayscale(1) brightness(1.8); opacity:.5; transition:opacity .2s, filter .2s; }
.cterm__p:hover img{ opacity:.9; }
.cterm__p[aria-pressed="true"]{ border-color:rgba(255,255,255,.14); background:rgba(255,255,255,.07); }
.cterm__p[aria-pressed="true"] img{ filter:none; opacity:1; }
.cterm__p:focus-visible{ outline:2px solid #3B06D4; outline-offset:1px; }
.cterm__cmd{ display:flex; align-items:baseline; gap:10px; min-height:3.1em; padding:14px 18px 6px; font:500 clamp(.86rem,.8rem + .25vw,.98rem)/1.5 'IBM Plex Mono',monospace; color:#fff; }
.cterm__ps{ flex:none; color:#4CF3FE; font-weight:700; }
.cterm__cur{ display:none; width:.55em; height:1.1em; background:#4CF3FE; align-self:center; }
.cterm.is-typing .cterm__cur{ display:inline-block; }
.cterm .cstage__art, .cterm .cstage__ds, .cterm .cstage__static{ margin:4px 18px 0; transition:opacity .35s cubic-bezier(.16,1,.3,1); }
body .cterm .cstage__cap{ margin:0 !important; padding:12px 18px 4px; transition:opacity .35s cubic-bezier(.16,1,.3,1); }
body .cterm .cstage__cap::before{ content:"✓ "; color:#00D982; font-weight:700; }
.cterm__note{ margin:0; padding:2px 18px 14px; font:500 .74rem/1.5 'IBM Plex Mono',monospace; color:rgba(255,255,255,.62) !important; }
.cterm.is-typing .cstage__art, .cterm.is-typing .cstage__cap{ opacity:0; }
@media (prefers-reduced-motion:reduce){ .cterm .cstage__art, .cterm .cstage__cap{ transition:none; } }
@media (max-width:640px){ .cterm__run{ display:none; } }

/* v8 — AIWS session compositions (cw-*, assets/curriculum-art.js): autonomy · workspace · anatomy · evidence · ceiling · relay2 · board · day.
   Brand colours only: cyan #4CF3FE, violet #3B06D4, magenta #FF00D4, lilac #c9b6ff, white. Text never sits on magenta or cyan fills. */
.cw{ position:relative; display:flex; flex-direction:column; gap:14px; color:#fff; font-family:'IBM Plex Sans',sans-serif; text-align:left; }
.cw-k{ font:600 .7rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:#4CF3FE; }
.cw-note{ margin:0; font:500 .76rem/1.5 'IBM Plex Mono',monospace; color:rgba(255,255,255,.74); text-wrap:pretty; }
.cw-tagx{ position:absolute; top:0; right:0; z-index:3; font:600 .72rem/1 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.7); border:1px solid rgba(255,255,255,.22); border-radius:999px; padding:5px 9px; background:#0A0A0C; }
.cw .cv-lv{ width:var(--lvs,30px) !important; flex:none; }
.cw-lg{ display:inline-grid; place-items:center; width:22px; height:22px; border-radius:6px; background:#fff; flex:none; }
.cw-lg img{ width:14px; height:14px; object-fit:contain; display:block; }
.cw-strip{ display:flex; align-items:center; gap:14px; }
.cw-strip svg{ display:block; width:min(220px,38%); height:auto; overflow:visible; }
.cw-strip span{ font:600 .7rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.78); }
@keyframes cwUp{ from{ transform:scaleY(0); } to{ transform:none; } }
@keyframes cwScan{ from{ top:-30%; } to{ top:100%; } }
/* autonomy */
.cw-leg{ display:flex; flex-wrap:wrap; gap:8px 22px; font:500 .76rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.82); }
.cw-leg span{ display:inline-flex; align-items:center; gap:8px; }
.cw-sw{ display:inline-block; width:14px; height:14px; border-radius:4px; }
.cw-sw--ai{ background:#4CF3FE; }
.cw-sw--ok{ background:repeating-linear-gradient(-45deg,#FF00D4 0 3px,transparent 3px 6px); box-shadow:inset 0 0 0 1px rgba(255,0,212,.6); }
.cw-sw--cu{ background:#fff; border-radius:50%; }
.cw-cols{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:clamp(10px,1.6vw,20px); }
.cw-trk{ position:relative; height:clamp(150px,17vw,200px); border-radius:12px; overflow:hidden; background:repeating-linear-gradient(-45deg,rgba(255,0,212,.36) 0 7px,rgba(255,255,255,.02) 7px 15px); }
.cw-fill{ position:absolute; left:0; right:0; bottom:0; height:var(--ai); border-radius:12px; background:linear-gradient(180deg,var(--lc),color-mix(in oklab,var(--lc) 28%,transparent)); transform-origin:bottom; }
.cv .cw-fill{ animation:cwUp .9s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 120ms + 160ms); }
.cw-cu{ position:absolute; top:9px; left:calc(50% - 7px); width:14px; height:14px; border-radius:50%; background:#fff; box-shadow:0 0 0 4px rgba(255,255,255,.16); z-index:2; }
.cw-meta{ display:flex; flex-direction:column; gap:4px; margin-top:12px; --lvs:34px; }
.cw-meta b{ margin-top:4px; font-size:1rem; font-weight:650; letter-spacing:-.01em; }
.cw-meta span{ font:500 .74rem/1.45 'IBM Plex Mono',monospace; color:rgba(255,255,255,.8); }
.cw-meta small{ display:flex; gap:7px; align-items:baseline; font:500 .74rem/1.45 'IBM Plex Mono',monospace; color:rgba(255,255,255,.72); }
.cw-meta small i{ flex:none; width:7px; height:7px; border-radius:50%; background:#FF00D4; transform:translateY(-1px); }
/* workspace */
.cw-win{ border:1px solid rgba(255,255,255,.14); border-radius:14px; background:#08080B; overflow:hidden; }
.cw-wbar{ display:flex; align-items:center; gap:12px; padding:9px 14px; border-bottom:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03); font:500 .74rem/1.2 'IBM Plex Mono',monospace; color:rgba(255,255,255,.74); }
.cw-wbar b{ color:#fff; font-weight:600; }
.cw-dots{ display:flex; gap:6px; } .cw-dots i{ width:9px; height:9px; border-radius:50%; background:rgba(255,255,255,.22); }
.cw-on{ margin-left:auto; display:inline-flex; align-items:center; gap:7px; padding:3px 9px 3px 3px; border-radius:999px; border:1px solid rgba(255,255,255,.18); color:#fff; }
.cw-wbody{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); }
.cw-kn{ display:flex; flex-direction:column; gap:8px; padding:14px; border-right:1px solid rgba(255,255,255,.1); }
.cw-file{ display:grid; grid-template-columns:auto minmax(0,1fr); column-gap:10px; align-items:center; padding:8px 10px; border-radius:10px; border:1px solid rgba(76,243,254,.3); background:rgba(76,243,254,.05); }
.cw-fi{ grid-row:span 2; width:20px; height:24px; border-radius:4px; border:1.5px solid #4CF3FE; background:linear-gradient(#4CF3FE,#4CF3FE) 4px 8px/10px 1.5px no-repeat, linear-gradient(#4CF3FE,#4CF3FE) 4px 13px/8px 1.5px no-repeat; }
.cw-file b{ font-size:.86rem; font-weight:600; } .cw-file span{ font:500 .72rem/1.35 'IBM Plex Mono',monospace; color:rgba(255,255,255,.74); }
.cw-agent{ display:flex; align-items:center; gap:10px; margin-top:auto; padding-top:6px; font-size:.82rem; font-weight:600; --lvs:30px; }
.cw-agent small, .cw-by small{ display:block; font:500 .72rem/1.35 'IBM Plex Mono',monospace; color:rgba(255,255,255,.68); }
.cw-chat{ position:relative; display:flex; flex-direction:column; gap:10px; padding:16px; }
.cw-chat .cw-tagx{ top:12px; right:12px; }
.cw-q{ align-self:flex-end; margin:22px 0 0; padding:9px 12px; border-radius:12px 12px 4px 12px; background:rgba(255,255,255,.08); font-size:.9rem; }
.cw-ans{ padding:12px 14px; border-radius:12px; border:1px solid rgba(255,255,255,.16); }
.cw-ans p{ margin:6px 0 0; font-size:.9rem; line-height:1.45; }
.cw-ans--before{ border-style:dashed; } .cw-ans--before p{ color:rgba(255,255,255,.74); }
.cw-ans--before em{ display:inline-block; margin-top:6px; font:600 .72rem/1 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; font-style:normal; color:#fff; padding:3px 7px; border-radius:6px; border:1px dashed #FF00D4; }
.cw-ans--after{ border-color:rgba(76,243,254,.55); background:rgba(76,243,254,.06); }
.cw-st{ font:600 .72rem/1 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.66); } .cw-ans--after .cw-st{ color:#4CF3FE; }
.cw-src{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; } .cw-src i{ font:500 .72rem/1 'IBM Plex Mono',monospace; font-style:normal; padding:4px 7px; border-radius:6px; background:rgba(76,243,254,.14); color:#fff; }
.cw-same{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 18px; }
.cw-same ul{ display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; list-style:none; }
.cw-same li{ display:inline-flex; align-items:center; gap:8px; padding:5px 10px 5px 5px; border-radius:10px; border:1px solid rgba(255,255,255,.14); font-size:.82rem; font-weight:600; }
.cw-same li span{ font:500 .7rem/1 'IBM Plex Mono',monospace; color:#4CF3FE; font-weight:500; }
/* anatomy */
.cw-anat{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:16px; align-items:stretch; }
.cw-acard{ display:flex; flex-direction:column; gap:12px; padding:16px; border-radius:14px; border:1px solid rgba(76,243,254,.42); background:rgba(76,243,254,.04); }
.cw-ahd{ display:flex; gap:12px; align-items:flex-start; --lvs:46px; }
.cw-ahd b{ display:block; font-size:1.05rem; } .cw-ahd small{ display:block; margin-top:3px; font-size:.82rem; line-height:1.4; color:rgba(255,255,255,.78); }
.cw-ahd em{ display:inline-block; margin-top:6px; font:600 .72rem/1 'IBM Plex Mono',monospace; letter-spacing:.1em; text-transform:uppercase; font-style:normal; color:#4CF3FE; }
.cw-parts{ list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.cw-parts li{ display:grid; grid-template-columns:112px minmax(0,1fr); gap:10px; align-items:baseline; padding:9px 12px; border-radius:10px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); }
.cw-parts li span{ font:600 .72rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.7); }
.cw-parts li b{ font-size:.88rem; font-weight:500; }
.cw-parts li.is-run{ border-color:rgba(76,243,254,.45); }
.cw-parts li.is-floor{ border-color:rgba(255,0,212,.6); background:rgba(255,0,212,.07); }
.cw-parts li.is-floor span{ color:#fff; } .cw-parts li.is-floor span::before{ content:""; display:inline-block; width:8px; height:8px; border-radius:50%; background:#FF00D4; margin-right:7px; }
.cw-sc{ display:flex; flex-direction:column; gap:10px; }
.cw-scg{ position:relative; flex:1; display:grid; grid-template-rows:repeat(5,minmax(0,1fr)); gap:6px; border-radius:12px; overflow:hidden; }
.cw-scc{ display:flex; align-items:center; gap:12px; padding:8px 12px; border-radius:10px; border:1px solid rgba(76,243,254,.42); background:linear-gradient(90deg,rgba(76,243,254,.16),rgba(76,243,254,.02)); }
.cw-scc em{ width:22px; font:700 1.3rem/1 'IBM Plex Sans',sans-serif; font-style:normal; color:#4CF3FE; } .cw-scc b{ font-size:.88rem; font-weight:600; }
.cw-scan{ position:absolute; left:0; right:0; height:30%; top:-30%; background:linear-gradient(180deg,transparent,rgba(76,243,254,.22),transparent); pointer-events:none; }
.cv .cw-scan{ animation:cwScan 2.4s cubic-bezier(.16,1,.3,1) .9s 1 both; }
/* evidence */
.cw-ev{ display:grid; grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr); gap:10px; align-items:stretch; padding-top:30px; }
.cw-call, .cw-rec{ display:flex; flex-direction:column; gap:8px; padding:14px; border-radius:14px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.03); }
.cw-rec{ border-color:rgba(76,243,254,.42); }
.cw-chd{ display:flex; align-items:center; gap:8px; padding-bottom:8px; border-bottom:1px solid rgba(255,255,255,.1); }
.cw-chd b{ font-size:.9rem; } .cw-chd span{ margin-left:auto; font:500 .72rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.68); }
.cw-rec-dot{ width:9px; height:9px; border-radius:50%; background:#FF00D4; }
.cw-turn{ margin:0; display:grid; grid-template-columns:50px minmax(0,1fr); gap:8px; font-size:.84rem; line-height:1.45; }
.cw-who{ font:600 .72rem/1.6 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.66); }
.cw-turn mark{ background:rgba(76,243,254,.14); color:#fff; border-bottom:1.5px solid #4CF3FE; padding:0 2px; border-radius:2px; }
.cw-ev sup{ font:700 .8rem/1 'IBM Plex Mono',monospace; color:#4CF3FE; margin-left:3px; }
.cw-arw{ align-self:center; width:34px; height:20px; } .cw-arw path{ fill:none; stroke:#4CF3FE; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.cw-fld{ display:grid; grid-template-columns:24px minmax(0,1fr) auto; gap:10px; align-items:center; padding:7px 10px; border-radius:10px; background:rgba(76,243,254,.06); border:1px solid rgba(76,243,254,.26); }
.cw-fld em{ font-style:normal; font-weight:700; font-size:1.05rem; color:#4CF3FE; }
.cw-fld small{ display:block; font:600 .72rem/1.2 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.66); }
.cw-fld b{ display:block; font-size:.84rem; font-weight:600; }
.cw-fld.is-gap{ background:none; border:1px dashed rgba(255,0,212,.65); } .cw-fld.is-gap em{ color:#fff; }
.cw-fld.is-gap i{ font:600 .74rem/1.1 'IBM Plex Mono',monospace; font-style:normal; letter-spacing:.06em; text-transform:uppercase; color:#fff; }
.cw-by{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; margin-top:auto; padding-top:8px; border-top:1px solid rgba(255,255,255,.1); font-size:.8rem; font-weight:600; --lvs:26px; }
/* ceiling */
.cw-groups{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr)); gap:16px; }
.cw-grp{ display:flex; flex-direction:column; gap:10px; padding:14px; border-radius:14px; border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.025); }
.cw-bars{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; align-items:start; }
.cw-bar2{ display:flex; flex-direction:column; gap:6px; --lvs:28px; }
.cw-btrk{ position:relative; height:clamp(110px,12vw,150px); border-radius:10px; background:rgba(255,255,255,.035); border:1px dashed rgba(255,255,255,.16); }
.cw-bfill{ position:absolute; left:0; right:0; bottom:0; height:var(--h); border-radius:9px; background:linear-gradient(180deg,#4CF3FE,rgba(76,243,254,.12)); transform-origin:bottom; }
.cv .cw-bfill{ animation:cwUp .9s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 90ms + 160ms); }
.cw-bar2.is-send .cw-bfill{ background:linear-gradient(180deg,color-mix(in oklab,#4CF3FE 38%,#3B06D4),rgba(59,6,212,.14)); }
.cw-send{ position:absolute; left:3px; right:3px; top:8px; padding:6px 2px; text-align:center; border-radius:7px; border:1.5px solid #FF00D4; background:#0A0A0C; font:700 .8rem/1.1 'IBM Plex Mono',monospace; letter-spacing:.04em; text-transform:uppercase; color:#fff; }
.cw-bar2 b{ font-size:.74rem; line-height:1.25; font-weight:600; overflow-wrap:anywhere; }
.cw-bar2 small{ font:500 .72rem/1.25 'IBM Plex Mono',monospace; color:rgba(255,255,255,.7); }
.cw-axis{ display:flex; align-items:center; gap:10px; font:500 .72rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.72); }
.cw-axis i{ flex:1; height:2px; border-radius:2px; background:linear-gradient(90deg,#4CF3FE,#FF00D4); }
/* relay */
.cw-acc{ display:flex; align-items:center; gap:8px; }
.cw-tok{ display:grid; place-items:center; width:26px; height:26px; border-radius:50%; border:1.5px solid #4CF3FE; background:rgba(76,243,254,.1); font:700 .72rem/1 'IBM Plex Mono',monospace; color:#fff; }
.cw-relay{ container-type:inline-size; }
.cw-chain{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:minmax(0,1fr); gap:16px; }
@container (min-width:740px){ .cw-chain{ grid-template-columns:repeat(7,minmax(0,1fr)); gap:14px; } }
.cw-link{ position:relative; display:flex; flex-direction:column; gap:8px; padding:12px; border-radius:12px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.03); --lvs:28px; }
.cw-link + .cw-link::before{ content:""; position:absolute; left:26px; top:-15px; width:2px; height:12px; background:#4CF3FE; }
.cw-link + .cw-link::after{ content:""; position:absolute; left:22px; top:-6px; border:5px solid transparent; border-top:6px solid #4CF3FE; }
@container (min-width:740px){ .cw-link + .cw-link::before{ left:-13px; top:26px; width:11px; height:2px; } .cw-link + .cw-link::after{ left:-5px; top:22px; border:5px solid transparent; border-left:6px solid #4CF3FE; } }
.cw-n{ font:600 .74rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.62); }
.cw-lhd{ display:flex; flex-direction:column; gap:6px; } .cw-lhd b{ font-size:.82rem; line-height:1.25; }
.cw-io{ margin:0; display:flex; flex-direction:column; gap:3px; }
.cw-io small{ font:700 .76rem/1 'IBM Plex Mono',monospace; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.6); }
.cw-io span{ font-size:.76rem; line-height:1.35; color:#fff; text-decoration:underline dashed rgba(76,243,254,.6); text-underline-offset:3px; }
.cw-io.is-out span{ color:#4CF3FE; text-decoration:none; }
.cw-link.is-you{ border-color:#FF00D4; background:rgba(255,0,212,.07); }
.cw-youmk{ display:block; width:28px; height:28px; border-radius:50%; border:2px solid #FF00D4; background:radial-gradient(circle,#FF00D4 0 4px,transparent 5px); }
/* board */
.cw-tbl{ border:1px solid rgba(255,255,255,.14); border-radius:14px; overflow:hidden; }
.cw-thd, .cw-tr{ display:grid; grid-template-columns:minmax(0,2.3fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1fr); gap:10px; align-items:center; padding:10px 14px; }
.cw-thd{ font:600 .72rem/1.2 'IBM Plex Mono',monospace; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.66); background:rgba(255,255,255,.04); }
.cw-tr{ border-top:1px solid rgba(255,255,255,.08); font-size:.86rem; }
.cw-tr.is-agent{ background:rgba(76,243,254,.04); }
.cw-who2{ display:flex; align-items:center; gap:10px; min-width:0; --lvs:26px; } .cw-who2 b{ display:block; font-weight:600; }
.cw-who2 small{ display:block; font:500 .72rem/1.25 'IBM Plex Mono',monospace; color:rgba(255,255,255,.66); }
.cw-ini{ display:grid; place-items:center; flex:none; width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.12); font:600 .7rem/1 'IBM Plex Mono',monospace; }
.cw-num{ font:600 .9rem/1 'IBM Plex Mono',monospace; }
.cw-pips{ display:flex; gap:3px; } .cw-pips i{ width:12px; height:6px; border-radius:2px; background:rgba(255,255,255,.16); } .cw-pips i.on{ background:#4CF3FE; }
.cw-flag{ display:inline-flex; align-items:center; gap:8px; justify-self:start; padding:4px 10px; border-radius:999px; border:1px solid rgba(255,0,212,.6); font:600 .8rem/1 'IBM Plex Mono',monospace; }
.cw-flag i{ width:8px; height:8px; border-radius:50%; background:#FF00D4; }
.cw-flag.is-zero{ border-color:rgba(255,255,255,.18); color:rgba(255,255,255,.62); } .cw-flag.is-zero i{ background:rgba(255,255,255,.24); }
/* day */
.cw-day{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; align-items:center; }
.cw-day svg{ display:block; width:100%; max-width:360px; height:auto; margin:0 auto; overflow:visible; }
.cw-ring{ fill:none; stroke:rgba(255,255,255,.08); stroke-width:18; }
.cw-runarc{ fill:none; stroke:#4CF3FE; stroke-width:18; }
.cw-night{ fill:none; stroke:#c9b6ff; stroke-width:18; }
.cw-tk{ stroke:rgba(255,255,255,.34); stroke-width:1.5; }
.cw-hl{ font:500 13px 'IBM Plex Mono',monospace; fill:rgba(255,255,255,.72); }
.cw-tch{ fill:#FF00D4; stroke:#0A0A0C; stroke-width:4; }
.cw-ctr{ font:600 16px 'IBM Plex Sans',sans-serif; fill:#fff; }
.cw-dside{ display:flex; flex-direction:column; gap:12px; }
.cw-count{ display:flex; align-items:baseline; gap:12px; } .cw-count b{ font-size:2.4rem; font-weight:700; letter-spacing:-.02em; line-height:1; }
.cw-count span{ font:500 .76rem/1.35 'IBM Plex Mono',monospace; color:rgba(255,255,255,.76); }
.cw-tl{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; }
.cw-tl li{ display:grid; grid-template-columns:auto 70px minmax(0,1fr); gap:10px; align-items:center; padding:8px 12px; border-radius:10px; border:1px solid rgba(255,255,255,.12); font-size:.86rem; }
.cw-tl li i{ width:10px; height:10px; border-radius:50%; background:#FF00D4; }
.cw-tl li time{ font:600 .7rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.74); }
.cw-tl li.is-agents{ border-style:dashed; } .cw-tl li.is-agents i{ background:#4CF3FE; }
.cw-tl li.is-night{ border-style:dashed; } .cw-tl li.is-night i{ background:#c9b6ff; }
@media (max-width:720px){
  .cw-wbody, .cw-anat, .cw-day{ grid-template-columns:minmax(0,1fr); }
  .cw-kn{ border-right:0; border-bottom:1px solid rgba(255,255,255,.1); }
  .cw-ev{ grid-template-columns:minmax(0,1fr); } .cw-arw{ justify-self:center; transform:rotate(90deg); }
  .cw-meta span{ display:none; }
  .cw-thd, .cw-tr{ grid-template-columns:minmax(0,1.8fr) minmax(0,.8fr) minmax(0,1fr) minmax(0,.9fr); padding:9px 10px; }
}
@media (prefers-reduced-motion:reduce){ .cv .cw-fill, .cv .cw-bfill, .cv .cw-scan{ animation:none !important; } }

/* v9 — rail carries number and type only; the session name lives once, in the stage heading */
body .cstage__tab .cstage__tn:empty{ display:none !important; }
body .cstage__tab .cstage__tl{ font:600 .9rem/1.2 'IBM Plex Sans',sans-serif !important; letter-spacing:-.005em; }
body .cstage__rail{ grid-auto-columns:minmax(104px,1fr) !important; }
/* the customer rides the line between the agent's share and your approvals, level to level */
@keyframes cwCust{ from{ top:calc(100% - 7px); opacity:0; } 18%{ opacity:1; } to{ top:var(--cu); opacity:1; } }
.cw-auto .cw-cu{ top:var(--cu); }
.cv .cw-auto .cw-cu{ animation:cwCust 1.1s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i,0) * 140ms + 260ms); }
@media (prefers-reduced-motion:reduce){ .cv .cw-auto .cw-cu{ animation:none !important; } }

/* v10 — numbered modules, lessons that open on click, module notes */
body .cstage__ml{ width:auto; min-width:22px; padding:0 4px; font-family:'IBM Plex Mono',monospace; }
.cstage__ls{ list-style:none; margin:2px 0 0; padding:0; counter-reset:ls; }
.cstage__ls > li{ counter-increment:ls; border-top:1px solid rgba(255,255,255,.08); }
.cstage__ls summary{ list-style:none; display:flex; align-items:baseline; gap:10px; padding:9px 0; cursor:pointer; font-size:.94rem; line-height:1.4; color:#fff; }
.cstage__ls summary::-webkit-details-marker{ display:none; }
.cstage__ls summary::before{ content:counter(ls, decimal-leading-zero); flex:none; font:600 .72rem/1 'IBM Plex Mono',monospace; color:#4CF3FE; }
.cstage__ls summary::after{ content:"+"; margin-left:auto; flex:none; font:500 1rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.6); transition:transform .3s cubic-bezier(.16,1,.3,1); }
.cstage__ls summary:hover::after{ color:#fff; }
.cstage__ls details[open] summary::after{ transform:rotate(45deg); color:#4CF3FE; }
.cstage__ls summary:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; border-radius:4px; }
.cstage__ls details p{ margin:0 0 10px 28px; font-size:.9rem; line-height:1.55; color:rgba(255,255,255,.82); }
.cstage__mnote{ margin:auto 0 0; padding-top:10px; border-top:1px solid rgba(255,255,255,.1); font-size:.86rem; line-height:1.5; color:rgba(255,255,255,.8); }
.cstage__mnote b{ display:block; margin-bottom:3px; font:600 .72rem/1.2 'IBM Plex Mono',monospace; letter-spacing:.1em; text-transform:uppercase; color:#4CF3FE; }
@media (prefers-reduced-motion:reduce){ .cstage__ls summary::after{ transition:none; } }

/* v10.1 — a workshop's single module spans the card; its lessons run in two columns */
body .cstage__mods > .cstage__mod:only-child{ grid-column:1 / -1; }
body .cstage__mods > .cstage__mod:only-child .cstage__ls{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:24px; align-items:start; }
@media (max-width:720px){ body .cstage__mods > .cstage__mod:only-child .cstage__ls{ grid-template-columns:minmax(0,1fr); } }
body .cstage__grid.has-ds .cstage__cap{ min-height:var(--cst-cap,0); }
body.gtm-dark .cstage__mod .cstage__mnote b, body .cstage__mod .cstage__mnote b{ color:#4CF3FE !important; }

/* v10.2 — a module's design-system figure holds the session's frame */
body .cstage__grid.has-ds .cstage__ds.is-mod:not([hidden]){ height:var(--cst-stage,auto); display:flex !important; flex-direction:column; justify-content:center; overflow:hidden; }
body .cstage__ds.is-mod > *{ flex:none; width:100%; transform-origin:50% 50%; }

/* v10.3 — the honest record's three states: complete (solid) · partial (dashed cyan) · missing (dashed magenta) */
.cw-fld.is-part{ background:none; border:1px dashed rgba(76,243,254,.6); }
.cw-fld .cw-part{ display:block; margin-top:3px; font:600 .72rem/1.15 'IBM Plex Mono',monospace; font-style:normal; letter-spacing:.06em; text-transform:uppercase; color:#fff; }

/* v10.4 — rooms under a module name, notes that fold, ceiling bars by count */
.cw-bars{ grid-template-columns:repeat(var(--nb,5),minmax(0,1fr)); }
.cstage__rooms{ display:block; margin-top:-4px; font:600 .72rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
.cstage__more{ margin-top:8px; border-top:1px solid rgba(255,255,255,.08); }
.cstage__more summary{ list-style:none; display:flex; align-items:center; gap:8px; padding-top:8px; cursor:pointer; font:600 .72rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.78); }
.cstage__more summary::-webkit-details-marker{ display:none; }
.cstage__more summary::after{ content:"+"; margin-left:auto; flex:none; font:500 1rem/1 'IBM Plex Mono',monospace; color:rgba(255,255,255,.6); transition:transform .3s cubic-bezier(.16,1,.3,1); }
.cstage__more summary:hover{ color:#fff; }
.cstage__more[open] summary::after{ transform:rotate(45deg); color:#4CF3FE; }
.cstage__more summary:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; border-radius:4px; }
.cstage__more p{ margin:8px 0 0; }
@media (prefers-reduced-motion:reduce){ .cstage__more summary::after{ transition:none; } }

/* v10.5 — a task with per-track versions folds them under "By track" */
.cstage__task > p{ margin:0; }
.cstage__task .cstage__more p{ margin:6px 0 0; font-size:.9rem; line-height:1.5; }
.cstage__task .cstage__more b{ font-weight:600; }

/* v10.6 — side arrows outside the card (the site's round chevron), workshop task card */
.cstage-host{ position:relative; }
body .cstage__arw{ position:absolute; top:var(--cst-arw,50%); transform:translateY(-50%); z-index:3; width:44px !important; height:44px !important; padding:0; display:grid; place-items:center; cursor:pointer; border-radius:50% !important; color:#fff !important; background:rgba(10,10,12,.8) !important; border:1px solid rgba(255,255,255,.22) !important; -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); transition:background .2s, color .2s, border-color .2s; }
body .cstage__arw:hover{ background:#fff !important; color:#000 !important; border-color:#fff !important; }
body .cstage__arw--prev{ left:-22px; } body .cstage__arw--next{ right:-22px; }
@media (max-width:720px){ body .cstage__arw{ width:38px !important; height:38px !important; } body .cstage__arw--prev{ left:-10px; } body .cstage__arw--next{ right:-10px; } }
.cstage__tcard{ display:flex; flex-direction:column; gap:10px; padding:16px 18px; border-radius:14px; border:1px solid rgba(76,243,254,.35); background:rgba(76,243,254,.05); }
.cstage__tck{ font:600 .72rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.1em; text-transform:uppercase; color:#4CF3FE; }
.cstage__tct{ margin:0; font-size:1rem; line-height:1.55; }
.cstage__tci{ list-style:none; margin:2px 0 0; padding:0; display:grid; gap:8px; }
.cstage__tci li{ padding-top:8px; border-top:1px solid rgba(255,255,255,.1); font-size:.9rem; line-height:1.5; }
body .cstage__tci li b{ display:block; margin-bottom:2px; font:600 .72rem/1.3 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE !important; }

/* v10.7 — a workshop: its one module full width with every lesson shown in two columns, the task card below.
   Teaching and workshop cards keep their own words height; the figure frame takes the difference, so every card is the same size. */
body .cstage__grid .cstage__mods:has(> .cstage__tcard){ grid-template-columns:minmax(0,1fr) !important; align-content:start; }
body .cstage__mods:has(> .cstage__tcard) > .cstage__mod .cstage__ls{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:28px; align-items:start; }
body .cstage__mods:has(> .cstage__tcard) .cstage__tci{ grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr)); column-gap:20px; }
@media (max-width:720px){ body .cstage__mods:has(> .cstage__tcard) > .cstage__mod .cstage__ls{ grid-template-columns:minmax(0,1fr); } }
.cstage__mod .cstage__mtask{ margin-top:10px !important; }

/* v11 — arrows sit at the end of the session rail, outside the card (the page's curnav pattern) */
.cstage__railrow{ display:flex; align-items:center; gap:14px; }
.cstage__railrow > .cstage__rail{ flex:1; min-width:0; }
.cstage__navb{ display:flex; gap:8px; flex:none; }
body .cstage__arw{ position:static !important; transform:none !important; width:40px !important; height:40px !important; display:grid; place-items:center; padding:0; border-radius:999px !important; border:1px solid rgba(255,255,255,.2) !important; background:rgba(255,255,255,.05) !important; color:#fff !important; -webkit-backdrop-filter:none; backdrop-filter:none; cursor:pointer; transition:background .2s ease, border-color .2s ease; }
body .cstage__arw:hover{ background:rgba(255,255,255,.12) !important; border-color:rgba(255,255,255,.4) !important; color:#fff !important; }
@media (max-width:720px){ .cstage__railrow{ gap:10px; } body .cstage__arw{ width:38px !important; height:38px !important; } }

/* v11.1 — the figure bar stays one line on fixed stages, so every card keeps one height */
.cstage-host.is-fixed .cfig__bar{ flex-wrap:nowrap !important; min-height:36px; }
.cstage-host.is-fixed .cfig__t{ flex:0 1 auto; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cstage-host.is-fixed .cfig__views{ display:flex; flex-wrap:nowrap; gap:6px; overflow-x:auto; scrollbar-width:none; min-width:0; flex:0 1 auto; }
.cstage-host.is-fixed .cfig__views::-webkit-scrollbar{ display:none; }
.cstage-host.is-fixed .cfig__v{ flex:none; white-space:nowrap; }

/* v11.2 — a ladder keeps its own width, so the frame can scale it up to fill */
body .cstage__ds.is-mod > .c3d--ladder{ width:max-content !important; max-width:100%; align-self:center; }

/* v12 — ip3d: the pipeline as a 3D floor; what each module teaches stands in its room, upright and readable */
.ip3{ container-type:inline-size; display:flex; flex-direction:column; gap:12px; padding-top:24px; }
.ip3-stage{ perspective:1250px; perspective-origin:50% 0%; }
.ip3-plane{ position:relative; width:100%; aspect-ratio:902/512.5; transform-origin:50% 100%; transform:rotateX(50deg); transform-style:preserve-3d; }
.ip3-plane > svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.ip3-base{ fill:rgba(255,255,255,.06); stroke:rgba(255,255,255,.5); stroke-width:1.6; }
.ip3-lit{ fill:rgba(76,243,254,.42); stroke:#4CF3FE; stroke-width:1.8; }
.ip3-div{ stroke:rgba(255,255,255,.3); stroke-width:1.2; stroke-dasharray:3 7; }
.ip3-rl{ font:600 19px/1 'IBM Plex Mono',monospace; fill:rgba(255,255,255,.62); letter-spacing:.04em; }
.ip3-rl.is-lit{ fill:#4CF3FE; }
.ip3-obj{ position:absolute; width:0; height:0; transform-style:preserve-3d; }
.ip3-in{ position:absolute; left:0; bottom:0; transform:translateX(-50%) rotateX(-50deg); transform-origin:50% 100%; }
.ip3-anim{ display:flex; flex-direction:column; align-items:center; }
.ip3-card{ width:max-content; min-width:120px; max-width:180px; padding:9px 11px; border-radius:12px; background:#FFFFFF; color:#000000; text-align:left; box-shadow:0 16px 30px -14px rgba(0,0,0,.8), 0 0 0 1px rgba(0,0,0,.05); }
.ip3-k{ display:block; font:600 .72rem/1.2 'IBM Plex Mono',monospace; letter-spacing:.06em; text-transform:uppercase; color:#3B06D4; }
.ip3-card b{ display:block; margin-top:3px; font:600 .86rem/1.25 'IBM Plex Sans',sans-serif; color:#000000; text-wrap:balance; }
.ip3-card small{ display:block; margin-top:3px; font:500 .72rem/1.35 'IBM Plex Mono',monospace; color:#4A4A68; }
.ip3-card.is-you{ box-shadow:0 0 0 2px #FF00D4, 0 16px 30px -14px rgba(0,0,0,.8); }
.ip3-card.is-note, .ip3-card.is-gap, .ip3-card.is-ghost{ background:#0A0A0C; box-shadow:0 16px 30px -14px rgba(0,0,0,.8); }
.ip3-card.is-note{ border:1px solid rgba(76,243,254,.7); } .ip3-card.is-note .ip3-k{ color:#4CF3FE; }
.ip3-card.is-gap{ border:1.5px dashed #FF00D4; } .ip3-card.is-gap .ip3-k{ color:#FF00D4; }
.ip3-card.is-ghost{ border:1.5px dashed rgba(255,255,255,.5); } .ip3-card.is-ghost .ip3-k{ color:rgba(255,255,255,.75); }
.ip3-card:is(.is-note,.is-gap,.is-ghost) b{ color:#FFFFFF; }
.ip3-card:is(.is-note,.is-gap,.is-ghost) small{ color:rgba(255,255,255,.78); }
.ip3-rows{ list-style:none; margin:7px 0 0; padding:0; display:grid; gap:3px; }
.ip3-rows li{ display:flex; align-items:center; gap:7px; padding:3px 7px; border-radius:6px; background:rgba(59,6,212,.08); font:500 .76rem/1.3 'IBM Plex Sans',sans-serif; color:#000000; }
.ip3-rows em{ min-width:12px; font:700 .72rem/1 'IBM Plex Mono',monospace; font-style:normal; color:#3B06D4; }
.ip3-rows i{ margin-left:auto; font:600 .72rem/1 'IBM Plex Mono',monospace; font-style:normal; text-transform:uppercase; color:#4A4A68; }
.ip3-rows li.is-part{ background:none; outline:1px dashed rgba(59,6,212,.55); outline-offset:-1px; }
.ip3-rows li.is-gap{ background:none; outline:1.5px dashed #FF00D4; outline-offset:-1.5px; }
.ip3-stem{ width:2px; height:var(--stem,40px); background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(76,243,254,.7)); }
.ip3-dot{ width:12px; height:12px; margin-top:-2px; border-radius:50%; background:#4CF3FE; box-shadow:0 0 0 5px rgba(76,243,254,.22); }
.ip3-ground{ display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:6px; padding:9px 12px; border-radius:12px; border:1px dashed rgba(255,255,255,.32); }
.ip3-gk{ margin-right:4px; font:600 .72rem/1 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#4CF3FE; }
.ip3-gf{ padding:6px 9px; border-radius:999px; border:1px solid rgba(255,255,255,.2); background:rgba(255,255,255,.07); font:500 .76rem/1 'IBM Plex Sans',sans-serif; color:#FFFFFF; }
@container (max-width:600px){ .ip3-card{ min-width:88px; max-width:118px; padding:7px 8px; } .ip3-card small, .ip3-rows{ display:none; } .ip3-card b{ font-size:.76rem; } .ip3-rl{ font-size:24px; } }
@media (prefers-reduced-motion:reduce){ .ip3-anim{ animation:none !important; } }

/* v12.1 — cards in lanes above the floor, wired to pins in their rooms; the floor's dead top collapses */
.ip3{ position:relative; padding-top:0; }
.ip3-cards{ position:absolute; left:0; right:0; top:0; z-index:2; }
.ip3-cards > .ip3-card{ position:absolute; left:0; top:0; }
.ip3-leads{ position:absolute; left:0; top:0; width:100%; height:100%; overflow:visible; pointer-events:none; z-index:1; }
.ip3-lead{ fill:none; stroke:rgba(255,255,255,.62); stroke-width:1.5; }
.ip3-lead:is(.is-you,.is-gap){ stroke:#FF00D4; }
.ip3-lead.is-gap{ stroke-dasharray:4 4; }
.ip3-pin{ position:absolute; width:16px; height:16px; margin:-8px 0 0 -8px; border-radius:50%; background:#4CF3FE; box-shadow:0 0 0 6px rgba(76,243,254,.25); }
.ip3-pin.is-you{ background:#FF00D4; box-shadow:0 0 0 6px rgba(255,0,212,.25); }
.ip3-stage{ position:relative; z-index:0; }

/* v13 — agents live in the figure: cover mark + level glyph; groups for walked-through and installed agents; loops that keep moving */
.ip3-card.is-agent, .ip3-card.is-group{ background:#0A0A0C; color:#FFFFFF; border:1px solid rgba(255,255,255,.24); box-shadow:0 16px 30px -14px rgba(0,0,0,.85); }
.ip3-card.is-agent{ display:flex; align-items:center; gap:10px; padding:8px 11px 8px 8px; max-width:210px; }
.ip3-card.is-agent.is-you{ box-shadow:0 0 0 2px #FF00D4, 0 16px 30px -14px rgba(0,0,0,.85); }
.ip3-card.is-agent.is-ghost{ border:1.5px dashed rgba(255,255,255,.5); }
.ip3-card:is(.is-agent,.is-group) b{ color:#FFFFFF; }
.ip3-card:is(.is-agent,.is-group) .ip3-k{ color:#4CF3FE; }
.ip3-card:is(.is-agent,.is-group) small{ color:rgba(255,255,255,.78); }
.ip3-tx{ display:block; min-width:0; }
.ip3-cv{ flex:none; display:block; width:46px; height:46px; border-radius:9px; object-fit:cover; background:rgba(255,255,255,.08); }
.ip3-cv--none{ border:1.5px dashed rgba(255,255,255,.45); background:transparent; }
.ip3-lvl{ display:flex; align-items:center; gap:6px; margin-top:4px; --lvs:20px; }
.ip3-lvl em{ font:600 .72rem/1 'IBM Plex Mono',monospace; font-style:normal; color:rgba(255,255,255,.82); }
.ip3-card.is-group{ padding:9px 11px; max-width:220px; }
.ip3-gl{ list-style:none; margin:7px 0 0; padding:0; display:grid; gap:5px; }
.ip3-gl li{ display:flex; align-items:center; gap:8px; font:500 .78rem/1.25 'IBM Plex Sans',sans-serif; color:#FFFFFF; }
.ip3-gl .ip3-cv{ width:24px; height:24px; border-radius:6px; }
.ip3-pin::after{ content:""; position:absolute; inset:0; border-radius:50%; border:2px solid currentColor; color:#4CF3FE; animation:ip3Pulse 2.4s cubic-bezier(.16,1,.3,1) infinite; animation-delay:calc(var(--i,0) * 320ms); }
.ip3-pin.is-you::after{ color:#FF00D4; }
@keyframes ip3Pulse{ 0%{ transform:scale(1); opacity:.75; } 100%{ transform:scale(2.8); opacity:0; } }
.ip3-lead{ stroke-dasharray:4 5; animation:ip3Flow 1.4s linear infinite; }
@keyframes ip3Flow{ to{ stroke-dashoffset:-18; } }
@media (prefers-reduced-motion:reduce){ .ip3-pin::after, .ip3-lead{ animation:none !important; } .ip3-sweep{ display:none; } }
@container (max-width:600px){ .ip3-card.is-agent{ max-width:150px; } .ip3-cv{ width:34px; height:34px; } .ip3-card.is-group{ max-width:150px; } .ip3-gl li span{ font-size:.72rem; } }
/* the stage at desktop: figure beside one module at a time, so a session card stays close to the schedule's size */
.cstage-host.is-fixed .cstage__panel{ container-type:inline-size; }
.cstage-host.is-fixed .cstage__mods{ display:flex !important; flex-direction:column; gap:12px; }
.cstage__msw{ display:flex; flex-wrap:wrap; gap:6px; }
.cstage__mswb{ min-height:38px; padding:0 14px; border-radius:999px; border:1px solid rgba(255,255,255,.22); background:rgba(255,255,255,.04); color:rgba(255,255,255,.82); font:600 .72rem/1 'IBM Plex Mono',monospace; letter-spacing:.06em; text-transform:uppercase; cursor:pointer; transition:background .2s, border-color .2s, color .2s; }
.cstage__mswb:hover{ border-color:rgba(255,255,255,.45); color:#FFFFFF; }
.cstage__mswb[aria-selected="true"]{ border-color:#4CF3FE; background:rgba(76,243,254,.12); color:#FFFFFF; }
.cstage__mswb:focus-visible{ outline:2px solid #3B06D4; outline-offset:2px; }
@container (min-width:940px){
  .cstage-host.is-fixed .cstage__grid, .cstage-host.is-fixed .cstage__grid.has-ds{ display:grid !important; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) !important; gap:24px !important; align-items:stretch; }
  .cstage-host.is-fixed .cstage__mods .cstage__ls{ grid-template-columns:minmax(0,1fr) !important; }
}

/* v14 — one row in room order, wires that never cross, quiet cards, short room labels */
.ip3-plane{ aspect-ratio:902/526.5 !important; }
.ip3-rl{ font:600 22px/1 'IBM Plex Mono',monospace !important; letter-spacing:.02em !important; fill:rgba(255,255,255,.55) !important; }
.ip3-rl.is-lit{ fill:#4CF3FE !important; }
.ip3-rn{ font:600 17px/1 'IBM Plex Sans',sans-serif; fill:#FFFFFF; }
.ip3-pin{ transform:rotateX(-50deg); }
.ip3-cards > .ip3-card{ box-sizing:border-box; min-width:0 !important; max-width:none !important; }
.ip3-card .ip3-tx{ min-width:0; }
.ip3-card b{ overflow-wrap:anywhere; }
.ip3-card .ip3-lvl{ display:flex !important; align-items:center; gap:6px; margin-top:5px; white-space:nowrap; }
.ip3-card .ip3-lvl em{ font:600 .72rem/1 'IBM Plex Mono',monospace !important; font-style:normal; color:rgba(255,255,255,.8) !important; }
.ip3-card.is-you .ip3-k{ color:#FF00D4 !important; }
.ip3-card.is-group .ip3-k{ color:rgba(255,255,255,.75) !important; }
.ip3-gi{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.ip3-gc{ display:block; line-height:0; }
.ip3-gc .ip3-cv{ width:32px !important; height:32px !important; border-radius:8px; }
.ip3-no{ display:none; }
.ip3.is-legend{ padding-top:0 !important; }
.ip3.is-legend .ip3-cards{ position:static; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:7px 0 0 7px; }
@container (max-width:360px){ .ip3.is-legend .ip3-cards{ grid-template-columns:minmax(0,1fr); } }
.ip3.is-legend .ip3-cards > .ip3-card{ position:relative; left:auto !important; top:auto !important; width:auto !important; }
.ip3.is-legend .ip3-no{ position:absolute; top:-7px; left:-7px; z-index:1; display:grid; place-items:center; width:22px; height:22px; border-radius:50%; background:#0A0A0C; border:1.5px solid #4CF3FE; color:#FFFFFF; font:700 .72rem/1 'IBM Plex Mono',monospace; }
.ip3.is-legend .ip3-card:is(.is-you,.is-gap) .ip3-no{ border-color:#FF00D4; }
.ip3.is-legend .ip3-pin{ width:24px; height:24px; margin:-12px 0 0 -12px; background:#0A0A0C; border:2px solid #4CF3FE; box-shadow:none; }
.ip3.is-legend .ip3-pin.is-you{ border-color:#FF00D4; }
.ip3.is-legend .ip3-pin::after{ content:attr(data-no); position:absolute; inset:0; display:grid; place-items:center; font:700 12px/1 'IBM Plex Mono',monospace; color:#FFFFFF; }

/* agent marks (RIVET Agent Library V3.1): the cover tile as a vector, icon at 47.5%, 19% corners, track colour */
.ip3-cv.ip3-mk{ display:grid; place-items:center; background:#12121A; color:var(--tc,#D1D1D9); border-radius:19%; }
.ip3-cv.ip3-mk svg{ display:block; width:47.5%; height:47.5%; }
.ip3-gc .ip3-cv.ip3-mk svg, .ip3-gl .ip3-cv.ip3-mk svg{ width:58%; height:58%; }
.ip3-cv.ip3-mk.is-ghost{ background:transparent; border:1.5px dashed rgba(255,255,255,.45); color:rgba(209,209,217,.72); }

/* v8 — sessions as pills (Academy colours: cyan tint, cyan edge, white text). One size, four across;
   a scroll row when the rail is narrow. Opt-in per page with "tabs":"pills" in cjour-data. */
.cstage__railwrap{ container:cjrail / inline-size; }
html body [data-tabs="pills"] .cstage__rail{ display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; grid-auto-flow:row !important; grid-auto-columns:auto !important; gap:8px !important; overflow:visible !important; scroll-snap-type:none !important; padding:0 !important; margin-bottom:18px !important; }
html body [data-tabs="pills"] .cstage__tab{ flex:none !important; min-width:0 !important; display:flex !important; align-items:center !important; justify-content:center !important; gap:8px !important; min-height:44px; padding:0 14px !important; border:0 !important; border-radius:999px !important; background:transparent !important; box-shadow:inset 0 0 0 1px rgba(255,255,255,.2) !important; color:#D1D1D9 !important; overflow:hidden !important; white-space:nowrap; }
html body [data-tabs="pills"] .cstage__tab:hover{ color:#fff !important; box-shadow:inset 0 0 0 1px rgba(255,255,255,.38) !important; }
html body [data-tabs="pills"] .cstage__tab.is-on{ background:rgba(76,243,254,.16) !important; box-shadow:inset 0 0 0 1px #4CF3FE !important; color:#fff !important; }
html body [data-tabs="pills"] .cstage__tab.is-on.is-run{ background:rgba(76,243,254,.05) !important; }
html body [data-tabs="pills"] .cstage__tab > :not(.cstage__fill){ position:relative; z-index:1; }
html body [data-tabs="pills"] .cstage__tab .cstage__tn{ display:inline-flex; align-items:center; color:inherit !important; }
html body [data-tabs="pills"] .cstage__tab .cstage__tn:empty{ display:none; }
html body [data-tabs="pills"] .cstage__tab .cstage__tl{ font-family:'IBM Plex Mono',monospace !important; font-size:.8rem !important; font-weight:500 !important; letter-spacing:.02em; line-height:1 !important; color:inherit !important; }
html body [data-tabs="pills"] .cstage__tab.is-on .cstage__tl{ font-weight:600 !important; }
html body [data-tabs="pills"] .cstage__rail[data-rail="type"] .cstage__sw{ display:none; }
html body [data-tabs="pills"] .cstage__tab .cstage__ty{ margin:0 !important; padding:0 !important; border:0 !important; border-radius:0 !important; background:none !important; font:500 .8rem/1 'IBM Plex Mono',monospace !important; letter-spacing:.02em !important; text-transform:none !important; color:inherit !important; align-self:center !important; justify-self:auto !important; opacity:.85; white-space:nowrap; }
html body [data-tabs="pills"] .cstage__tab .cstage__ty::before{ content:"· "; }
html body [data-tabs="pills"] .cstage__fill{ top:0 !important; bottom:0 !important; left:0 !important; height:auto !important; width:0; border-radius:inherit; background:rgba(76,243,254,.14) !important; z-index:0; }
html body [data-tabs="pills"] .cstage__tab.is-run .cstage__fill{ width:100% !important; transition:width var(--dur,9000ms) linear !important; }
html body [data-tabs="pills"] .cstage__tab.is-cert{ grid-column:1 / -1; }
@container cjrail (max-width:719px){
  html body [data-tabs="pills"] .cstage__rail{ display:flex !important; overflow-x:auto !important; scroll-snap-type:x mandatory !important; scrollbar-width:none; }
  html body [data-tabs="pills"] .cstage__rail::-webkit-scrollbar{ display:none; }
  html body [data-tabs="pills"] .cstage__tab{ flex:0 0 auto !important; scroll-snap-align:start; }
}
@media (prefers-reduced-motion:reduce){ html body [data-tabs="pills"] .cstage__tab.is-run .cstage__fill{ transition:none !important; } }
/* time back on an agent card: the figure with the agent, then the time without it */
.ip3-time{ display:block; margin-top:5px; font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.02em; line-height:1.3; color:rgba(255,255,255,.62); white-space:nowrap; }
.ip3-time b{ color:#fff; font-weight:600; }
.ip3-time--g{ white-space:normal; margin-top:8px; padding-top:7px; border-top:1px solid rgba(255,255,255,.14); }
.ip3-time--g em{ display:block; font-style:normal; color:rgba(255,255,255,.82); margin-bottom:2px; }
