/* MEIDNet Prism documentation: the reading design (type, header, headings, tables, callouts) shared with the landing
   page, and the components drawn by prism-docs.js. Fonts: SIL Open Font License, see assets/fonts/. */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:500 800;font-display:swap;src:url(fonts/plusjakartasans-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibmplexmono-normal-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:400 700;font-display:swap;src:url(fonts/stixtwotext-italic-latin.woff2) format('woff2')}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:400 700;font-display:swap;src:url(fonts/stixtwotext-italic-greek.woff2) format('woff2');unicode-range:U+0370-03FF}

/* ── colours: the landing page's palette ── */
:root{--display:'Plus Jakarta Sans',system-ui,'Segoe UI',sans-serif;--md-code-font:'IBM Plex Mono';--mono:'IBM Plex Mono',ui-monospace,monospace;
  --c-data:#2a78d6;--c-model:#eb6834;--c-family:#1baf7a;--c-rules:#eda100;--c-targets:#e87ba4;--c-search:#008300;--c-candidates:#4a3aa7;--p1:#4f46e5;--p2:#9333ea}
[data-md-color-primary=custom]{--md-primary-fg-color:#4f46e5;--md-primary-fg-color--light:#6366f1;--md-primary-fg-color--dark:#4338ca;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}
[data-md-color-accent=custom]{--md-accent-fg-color:#9333ea;--md-accent-fg-color--transparent:#9333ea1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}
[data-md-color-scheme=default]{--h-head:#a3243b;--h-sub:#0b6fa4;--md-typeset-a-color:#4f46e5;--hdr:#fff;--bg:#f6f7f5;--card:#fff;--ink:#0b0b0b;--muted:#52514e;--faint:#898781;--line:#e4e3dc;--tint:#f7f7fb}
[data-md-color-scheme=slate]{--h-head:#f2849a;--h-sub:#62b8e8;--md-default-bg-color:#111417;--md-code-bg-color:#1b1f24;--md-typeset-a-color:#a5b4fc;--md-accent-fg-color:#c084fc;
  --hdr:#161a1f;--bg:#111417;--card:#1b1f24;--ink:#fff;--muted:#c3c2b7;--faint:#898781;--line:#2c3036;--tint:#181c22}

/* ── header: light and calm, as on the landing page ── */
.md-header{background:var(--hdr);color:var(--md-default-fg-color);box-shadow:none;border-bottom:1px solid var(--line)}
.md-header__topic:first-child{font-family:var(--display);font-weight:800;letter-spacing:-.01em}
.md-header__button.md-logo img{height:1.5rem}
.md-tabs{background:var(--hdr);color:var(--md-default-fg-color--light);border-bottom:1px solid var(--line)}
.md-tabs__link{opacity:1;font:600 .7rem/1 var(--display);margin-top:.6rem;padding:.35rem .6rem;border-radius:999px;transition:background .15s,color .15s}
.md-tabs__item{padding:0 .1rem}
.md-tabs__link:hover{background:color-mix(in oklab,var(--p1) 9%,transparent);color:var(--md-default-fg-color)}
.md-tabs__item--active .md-tabs__link{background:var(--p1);color:#fff}
[data-md-color-scheme=slate] .md-tabs__item--active .md-tabs__link{background:#4f46e5}
.md-search__form{background:var(--md-code-bg-color);border:1px solid var(--line);border-radius:10px}
.md-search__form:hover{background:var(--md-code-bg-color)}
.md-search__input{color:var(--md-default-fg-color)}.md-search__input::placeholder{color:var(--md-default-fg-color--light)}
.md-search__icon[for=__search]{color:var(--md-default-fg-color--light)}
.md-source{color:var(--md-default-fg-color--light)}

/* ── reading ── */
.md-typeset{font-size:.84rem;line-height:1.75}
/* headings in the colours of Cell Press: maroon for headings, dark sky blue for subheadings */
.md-typeset h1,.md-typeset h2,.md-typeset h3,.md-typeset h4{font-family:var(--display)}
.md-typeset h1,.md-typeset h2{color:var(--h-head)}.md-typeset h3,.md-typeset h4,.md-typeset h5,.md-typeset h6{color:var(--h-sub)}
.md-typeset h1{font-weight:800;font-size:1.95rem;line-height:1.15;letter-spacing:-.024em;margin:0 0 .55em}
.md-typeset h1 .headerlink{display:none}
.md-typeset h1::after{content:"";display:block;width:3.4rem;height:4px;border-radius:2px;margin-top:.5em;background:linear-gradient(90deg,var(--h-head),var(--h-sub))}
.md-typeset h1+p{font-size:1.08em;line-height:1.7;color:var(--md-default-fg-color--light)}
.md-typeset h2{position:relative;font-weight:800;font-size:1.3rem;line-height:1.3;letter-spacing:-.014em;margin:2.2em 0 .7em;padding-left:.8rem}
.md-typeset h2::before{content:"";position:absolute;left:0;top:.18em;bottom:.18em;width:4px;border-radius:2px;background:var(--h-head)}
.md-typeset h3{font-weight:750;font-size:1.02rem;margin:1.7em 0 .5em}
.md-typeset strong{color:var(--md-default-fg-color)}
.md-typeset hr{border-bottom:1px solid var(--line)}
.md-typeset .headerlink{color:var(--md-default-fg-color--lighter)}
.md-nav{font-size:.72rem}.md-nav__title{font-family:var(--display);font-weight:800}
.md-nav__link--active{font-weight:700}

/* tables */
.md-typeset table:not([class]){border:1px solid var(--line);border-radius:12px;box-shadow:none;font-size:.78rem;overflow:hidden}
.md-typeset table:not([class]) th{background:color-mix(in oklab,var(--p1) 7%,var(--md-default-bg-color));font-family:var(--display);font-weight:700;color:var(--md-default-fg-color);border-bottom:1px solid var(--line)}
.md-typeset table:not([class]) td{border-top:1px solid var(--line)}
.md-typeset table:not([class]) tr:hover td{background:color-mix(in oklab,var(--p1) 4%,transparent)}
/* code */
.md-typeset pre>code{border-radius:12px}.md-typeset code{border-radius:6px}
.md-typeset pre{border-radius:12px}

/* callouts: Key idea · Try it · In MEIDNet (plus Material's own types, rounded) */
:root{--md-admonition-icon--key:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-4 12.7V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.3A7 7 0 0 0 12 2m-3 18a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9z"/></svg>');
  --md-admonition-icon--try:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8 5.1v13.8a1 1 0 0 0 1.5.9l10.8-6.9a1 1 0 0 0 0-1.7L9.5 4.2A1 1 0 0 0 8 5.1"/></svg>');
  --md-admonition-icon--meidnet:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2.5 21.5 20h-19z"/></svg>')}
.md-typeset .admonition,.md-typeset details{border-radius:12px;border-width:1px;box-shadow:none;font-size:.8rem}
.md-typeset .admonition-title,.md-typeset summary{font-family:var(--display);font-weight:700}
.md-typeset .admonition.key,.md-typeset details.key{border-color:#4f46e5}
.md-typeset .key>.admonition-title,.md-typeset .key>summary{background-color:rgba(79,70,229,.1)}
.md-typeset .key>.admonition-title::before,.md-typeset .key>summary::before{background-color:#4f46e5;-webkit-mask-image:var(--md-admonition-icon--key);mask-image:var(--md-admonition-icon--key)}
.md-typeset .admonition.try,.md-typeset details.try{border-color:#1baf7a}
.md-typeset .try>.admonition-title,.md-typeset .try>summary{background-color:rgba(27,175,122,.1)}
.md-typeset .try>.admonition-title::before,.md-typeset .try>summary::before{background-color:#1baf7a;-webkit-mask-image:var(--md-admonition-icon--try);mask-image:var(--md-admonition-icon--try)}
.md-typeset .admonition.meidnet,.md-typeset details.meidnet{border-color:#9333ea}
.md-typeset .meidnet>.admonition-title,.md-typeset .meidnet>summary{background-color:rgba(147,51,234,.09)}
.md-typeset .meidnet>.admonition-title::before,.md-typeset .meidnet>summary::before{background-color:#9333ea;-webkit-mask-image:var(--md-admonition-icon--meidnet);mask-image:var(--md-admonition-icon--meidnet)}

/* cards */
.md-typeset .grid.cards>ul>li{border-radius:14px;transition:transform .15s,box-shadow .15s;border-top:4px solid var(--p1)}
.md-typeset .grid.cards>ul>li:hover{transform:translateY(-2px);box-shadow:0 12px 28px -18px rgba(30,27,75,.5)}
.md-typeset .grid.cards>ul>li:nth-child(7n+1){border-top-color:var(--c-data)}.md-typeset .grid.cards>ul>li:nth-child(7n+2){border-top-color:var(--c-model)}
.md-typeset .grid.cards>ul>li:nth-child(7n+3){border-top-color:var(--c-family)}.md-typeset .grid.cards>ul>li:nth-child(7n+4){border-top-color:var(--c-rules)}
.md-typeset .grid.cards>ul>li:nth-child(7n+5){border-top-color:var(--c-targets)}.md-typeset .grid.cards>ul>li:nth-child(7n+6){border-top-color:var(--c-search)}
.md-typeset .grid.cards>ul>li:nth-child(7n){border-top-color:var(--c-candidates)}

/* ── the opening of a page ── */
.phero{position:relative;padding:1.2em 1.4em 1.3em;margin:0 0 1.6em;border:1px solid var(--line);border-radius:18px;overflow:hidden;
  background:radial-gradient(60% 90% at 88% 20%,rgba(99,102,241,.13),transparent 70%),radial-gradient(40% 70% at 70% 100%,rgba(20,184,166,.11),transparent 70%),var(--card)}
.md-typeset .phero h1{margin-bottom:.35em}
.md-typeset .phero p{max-width:40rem;margin:.4em 0}
.md-typeset .phero .pbtns{display:flex;flex-wrap:wrap;gap:8px;margin-top:.9em}
.md-typeset .pbtns a{display:inline-flex;align-items:center;gap:6px;border-radius:11px;padding:.45em .95em;font:700 .74rem/1.2 var(--display);text-decoration:none;border:1px solid var(--line);background:var(--card);color:var(--md-default-fg-color)}
.md-typeset .pbtns a.primary{background:var(--p1);border-color:var(--p1);color:#fff}.md-typeset .pbtns a:hover{box-shadow:0 6px 16px -10px rgba(0,0,0,.5)}
.md-typeset .pbtns>p{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.md-typeset .lead{font-size:1.06em;color:var(--md-default-fg-color--light)}

/* ── workflow ── */
.pflow{display:flex;align-items:stretch;margin:1.2em 0 1.6em;padding:4px 2px 6px}
.md-typeset .pf-b{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;padding:.6em .2em .65em;
  border:2px solid var(--c);border-radius:14px;background:color-mix(in oklab,var(--c) 7%,var(--md-default-bg-color));color:var(--md-default-fg-color);text-decoration:none;transition:transform .15s,box-shadow .15s}
.md-typeset .pf-b:hover{transform:translateY(-2px);box-shadow:0 10px 22px -14px var(--c);color:var(--md-default-fg-color)}
.pf-b svg{width:20px;height:20px;fill:none;stroke:var(--c);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.pf-b b{font:800 .64rem/1.15 var(--display);letter-spacing:-.01em;color:color-mix(in oklab,var(--c) 78%,var(--md-default-fg-color))}
.pf-sub,.pf-live{font-size:.54rem;line-height:1.3;hyphens:auto;color:var(--md-default-fg-color--light)}
.pf-live strong{display:block;font:800 .7rem/1.25 var(--display);white-space:nowrap;color:var(--md-default-fg-color)}
.pf-arrow{flex:0 0 12px;align-self:center;position:relative;height:2px;background:var(--md-default-fg-color--lighter)}
.pf-arrow::after{content:"";position:absolute;right:-1px;top:-4px;border:5px solid transparent;border-left:6px solid var(--md-default-fg-color--lighter);border-right:0}
@media(max-width:760px){.pflow{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pf-arrow{display:none}}

/* ── a chapter of the tour ── */
.md-typeset .pscene{margin:1.4em 0 1.8em;border:1px solid var(--line);border-top:4px solid var(--c);border-radius:14px;overflow:hidden;background:var(--card)}
.ps-stage{position:relative;aspect-ratio:16/9;background:radial-gradient(60% 70% at 72% 40%,rgba(99,102,241,.08),transparent 70%),radial-gradient(50% 60% at 20% 80%,rgba(20,184,166,.07),transparent 70%),var(--bg)}
.ps-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.md-typeset .pscene figcaption{max-width:none;margin:0;padding:.6em .9em .75em;text-align:left;font-size:.74rem;line-height:1.55;color:var(--md-default-fg-color)}
.ps-play{float:left;margin:.05em .6em 0 0;width:1.7rem;height:1.7rem;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--md-default-fg-color);cursor:pointer;font-size:.6rem}
.ps-play:hover{border-color:var(--c)}
.md-typeset .ps-open{font-weight:700;white-space:nowrap;text-decoration:none}

/* ── a crystal to turn ── */
.pcrystal{position:relative;float:right;width:min(250px,42%);aspect-ratio:1;margin:.2em 0 1em 1.4em;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  background:radial-gradient(70% 70% at 60% 35%,rgba(99,102,241,.1),transparent 70%),var(--bg)}
.pcrystal canvas{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:pan-y}
.pc-cap{position:absolute;left:0;right:0;bottom:6px;text-align:center;font:500 .58rem/1 var(--md-code-font),monospace;color:var(--md-default-fg-color--light);pointer-events:none}
@media(max-width:700px){.pcrystal{float:none;width:100%;max-width:320px;margin:1em auto}}

/* ── modalities ── */
.pmodal{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px;margin:1em 0 1.4em}
.pm-card{display:flex;flex-direction:column;gap:2px;padding:.75em .8em .8em;border:1px solid var(--line);border-radius:14px;background:var(--card);font-size:.66rem;line-height:1.4}
.pm-card svg{width:38px;height:38px;margin-bottom:.3em}
.pm-card b{font:800 .76rem/1.25 var(--display);color:var(--md-default-fg-color)}
.pm-data{color:var(--md-default-fg-color--light)}.pm-net{color:var(--md-default-fg-color)}
.pm-st{align-self:flex-start;margin-top:.45em;border-radius:999px;padding:.1em .6em;font-weight:700;font-size:.6rem;border:1px solid}
.pm-card.sup{border-top:4px solid #1baf7a}.pm-card.sup .pm-st{color:#0f8a5f;border-color:#1baf7a;background:rgba(27,175,122,.08)}
.pm-card.part{border-top:4px solid #eda100}.pm-card.part .pm-st{color:#9a6700;border-color:#eda100;background:rgba(237,161,0,.08)}
.pm-card.plan{border-top:4px dashed #9a9993;opacity:.88}.pm-card.plan .pm-st{color:var(--md-default-fg-color--light);border-style:dashed}
[data-md-color-scheme=slate] .pm-card.sup .pm-st{color:#4ade80}[data-md-color-scheme=slate] .pm-card.part .pm-st{color:#fbbf24}
.pm-card .g-b{fill:none;stroke:var(--md-default-fg-color--light);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.pm-card .g-a{fill:#4f46e5}.pm-card .g-l{fill:none;stroke:#4f46e5;stroke-width:1.9;stroke-linejoin:round}
.pm-card .g-t{font:800 11px var(--display);fill:#4f46e5}
.pm-card.plan .g-a,.pm-card.plan .g-t{fill:#9a9993}.pm-card.plan .g-l{stroke:#9a9993}

/* ── the architecture ── */
.md-typeset .pdiagram{margin:1.2em 0 1.6em;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.pdiagram svg{width:100%;height:auto;display:block}
.pdiagram rect{stroke-width:2}.pdiagram .in.c{fill:rgba(27,175,122,.1);stroke:#1baf7a}.pdiagram .in.p{fill:rgba(232,123,164,.12);stroke:#e87ba4}
.pdiagram .enc{fill:rgba(235,104,52,.1);stroke:#eb6834}.pdiagram .dec{fill:rgba(74,58,167,.09);stroke:#4a3aa7}
.pdiagram text{font-family:var(--display);text-anchor:middle;fill:var(--md-default-fg-color)}
.pdiagram .t1{font-size:15px;font-weight:800}.pdiagram .t2{font-size:12px;font-weight:500;fill:var(--md-default-fg-color--light)}.pdiagram .t2.l{text-anchor:start}
.pdiagram .ar{stroke:var(--md-default-fg-color--light);stroke-width:1.8;fill:none}.pdiagram .ar.dash{stroke-dasharray:5 4}.pdiagram .hd{fill:var(--md-default-fg-color--light)}
.pdiagram .nce{stroke:#4f46e5;stroke-width:2.6;stroke-dasharray:6 4;fill:none}
.pdiagram .zc{fill:#1baf7a}.pdiagram .zp{fill:#e87ba4}.pdiagram .zj{fill:url(#pd-z)}
.pdiagram .zt{font:italic 700 17px 'STIX Two Text',serif;fill:#fff}

/* ── numbered steps on a line ── */
.md-typeset .psteps>ol{counter-reset:ps;list-style:none;margin:1em 0 1.4em;padding:0}
.md-typeset .psteps>ol>li{counter-increment:ps;position:relative;margin:0;padding:0 0 1.05em 2.7em}
.md-typeset .psteps>ol>li::before{content:counter(ps);position:absolute;left:0;top:.05em;width:1.75em;height:1.75em;border-radius:50%;
  background:linear-gradient(135deg,#4f46e5,#9333ea);color:#fff;font:800 .74rem/1.75em var(--display);text-align:center;box-shadow:0 4px 10px -6px #4f46e5}
.md-typeset .psteps>ol>li::after{content:"";position:absolute;left:.86em;top:2em;bottom:.15em;width:2px;background:var(--line)}
.md-typeset .psteps>ol>li:last-child::after{display:none}
.md-typeset .psteps>ol>li>p:first-child{margin-top:0}

/* ── the live tour (the landing page's player, on the documentation's home) ── */
.tour3d{margin:4px 0 30px;border:1px solid var(--line);border-top:4px solid var(--t3c,var(--c-family));border-radius:16px;background:var(--card);padding:16px 16px 14px;transition:border-color .3s}
.md-typeset .tour3d h2{margin:0 0 2px}.tour3d .sec-sub{margin:0}
.t3-strip{list-style:none;margin:12px 0 10px;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.t3-strip button{position:relative;width:100%;border:2px solid var(--bc);background:var(--card);color:color-mix(in oklab,var(--bc) 78%,var(--ink));border-radius:999px;padding:8px 4px;font:700 14.5px/1 var(--display);cursor:pointer;overflow:hidden}
.t3-strip button.on{background:var(--bc);color:#fff}.t3-strip button:hover{box-shadow:0 4px 14px -8px var(--bc)}
.t3-strip button i{position:absolute;left:0;bottom:0;height:3px;width:0;background:rgba(255,255,255,.9)}
.t3-stage{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:radial-gradient(60% 70% at 72% 40%,rgba(99,102,241,.08),transparent 70%),radial-gradient(50% 60% at 20% 80%,rgba(20,184,166,.07),transparent 70%),var(--bg)}
.t3-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.t3-cap{font-size:16.5px;line-height:1.5;margin:12px 2px 12px;min-height:3em}
.t3-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.t3-b{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:8px 12px;font:600 14px/1 system-ui,sans-serif;cursor:pointer}
.t3-b:hover{box-shadow:0 4px 14px -8px rgba(0,0,0,.5)}.t3-b.primary{background:var(--p1);border-color:var(--p1);color:#fff;min-width:100px}
.t3-prog{flex:1 1 160px;height:8px;border-radius:4px;background:var(--line);cursor:pointer;overflow:hidden}
.t3-prog i{display:block;height:100%;width:0;background:var(--t3c,var(--p1))}
.t3-time{font:500 13px/1 var(--mono);color:var(--muted)}.t3-open{font-weight:700;text-decoration:none;margin-left:auto}
@media(max-width:700px){.tour3d{padding:12px 10px}.t3-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.t3-strip button{font-size:13px;padding:7px 2px}.t3-cap{font-size:15.5px}.t3-open{margin-left:0;width:100%}}
.md-typeset ol.t3-strip:not([hidden]){display:grid;margin-left:0}.md-typeset .t3-strip li{margin:0;list-style:none}.md-typeset .t3-cap{margin:12px 2px}
