/* V3.1 memory layer: the existing paper, ink, cyan and local Plex typography. */
.ml-section,.ml-time,.ml-case { scroll-margin-top:130px; }
.ml-heading { max-width:850px; }
.ml-heading>p:not(.eyebrow) { max-width:780px; }
.ml-diagram { margin:28px 0 0; }
.ml-flow { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; list-style:none; padding:0; margin:0; }
.ml-flow .ml-step { min-width:0; margin:0; position:relative; padding:22px 20px; border:1px solid var(--line); border-radius:4px; background:var(--paper); }
.ml-step:not(:last-child)::after { content:'→'; position:absolute; right:-18px; top:48%; color:var(--cyan); }
.ml-flow .ml-step-memory { background:var(--tint); border-color:var(--cyan); }
.ml-flow .ml-step-result { border-top:3px solid var(--cyan); }
.ml-label { display:block; font:500 .6875rem/1.6 var(--mono); text-transform:uppercase; letter-spacing:.04em; color:var(--cyan); }
.ml-step h3 { margin:16px 0 12px; font-size:1.125rem; line-height:1.3; letter-spacing:-.015em; }
.ml-step p { font-size:.875rem; line-height:1.65; margin:0; }
.ml-step small { display:block; margin-top:14px; color:var(--muted); font-size:.75rem; line-height:1.6; }
.ml-stack { display:grid; gap:5px; margin-top:18px; }
.ml-stack span { padding:5px 8px; border:1px solid var(--line); border-radius:2px; background:var(--paper); font-size:.75rem; }
.ml-stack span:nth-child(2) { margin-left:7px; }
.ml-stack span:nth-child(3) { margin-left:14px; }
.ml-diagram figcaption,.ml-scope { margin:16px 0 0; color:var(--muted); font-size:.8125rem; line-height:1.65; }
.ml-languages { display:grid; grid-template-columns:1fr 1fr; gap:32px; margin:30px 0; border-block:1px solid var(--line); padding:24px 0; }
.ml-languages>div+div { padding-left:32px; border-left:1px solid var(--line); }
.ml-languages h3 { font-size:1.0625rem; line-height:1.45; margin:0 0 12px; letter-spacing:0; }
.ml-languages h3 span { color:var(--cyan); }
.ml-languages p { font-size:.9375rem; margin:0 0 12px; }
.ml-languages small { display:block; color:var(--muted); font-size:.8125rem; line-height:1.6; }
.ml-time { margin:36px 0 28px; padding:28px; border:1px solid var(--line); border-radius:4px; background:var(--tint); }
.ml-time-heading { display:grid; grid-template-columns:1.3fr 1fr; gap:32px; align-items:start; }
.ml-time-heading h3 { font-size:1.5rem; line-height:1.25; margin:0; }
.ml-time-heading p { color:var(--muted); font-size:.8125rem; line-height:1.6; margin:0; }
.ml-timeline { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); list-style:none; padding:0; margin:30px 0; }
.ml-timeline li { position:relative; padding:20px 18px 0 0; border-top:2px solid var(--line); margin:0; }
.ml-timeline li::before { content:''; position:absolute; top:-6px; left:0; width:10px; height:10px; border-radius:50%; background:var(--cyan); }
.ml-timeline li:last-child { border-top-style:dashed; }
.ml-timeline time { display:block; font:500 .75rem var(--mono); color:var(--cyan); }
.ml-timeline strong { display:block; margin:8px 0; font-size:.9375rem; }
.ml-timeline p { font-size:.8125rem; line-height:1.65; margin:0; }
.ml-time-travel { min-width:0; border:0; padding:0; margin:0; }
.ml-time-travel legend { padding:0; margin-bottom:14px; font-weight:500; font-size:.9375rem; }
.ml-time-travel input { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.ml-time-travel label { display:inline-flex; align-items:center; min-height:44px; padding:10px 14px; margin:0 6px 10px 0; border:1px solid var(--line); border-radius:4px; background:var(--paper); color:var(--ink); cursor:pointer; font-size:.8125rem; font-weight:500; }
.ml-time-travel input:checked+label { color:var(--paper); background:var(--ink); border-color:var(--ink); }
.ml-time-travel input:focus-visible+label { outline:3px solid var(--cyan); outline-offset:3px; }
.ml-readout { padding:20px; margin-top:8px; border-left:3px solid var(--cyan); background:var(--paper); }
.ml-readout h4 { margin:10px 0; font-size:1.0625rem; line-height:1.4; }
.ml-readout p { font-size:.9375rem; margin:0; }
.ml-now { display:none; }
.ml-known-now:checked~.ml-readout .ml-then { display:none; }
.ml-known-now:checked~.ml-readout .ml-now { display:block; }
.ml-section .section-links { margin-top:24px; }
.ml-section .ml-scope { max-width:950px; }
.ml-sectors { border-block:1px solid var(--line); background:var(--tint); }
.ml-cases-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:14px; }
.ml-case { min-width:0; background:var(--paper); border:1px solid var(--line); border-radius:4px; }
.ml-case[open] { border-color:var(--cyan); }
.ml-case summary { display:grid; grid-template-columns:30px 1fr 16px; gap:12px; align-items:start; padding:22px 20px; list-style:none; }
.ml-case summary::-webkit-details-marker { display:none; }
.ml-case summary::after { content:'+'; color:var(--cyan); font-size:1.4rem; line-height:1; }
.ml-case[open] summary::after { content:'−'; }
.ml-case-icon { display:block; width:28px; height:28px; color:var(--cyan); margin-top:1px; }
.ml-case-title { display:block; color:var(--ink); font-weight:600; font-size:1rem; line-height:1.4; }
.ml-case-question { display:block; color:var(--text); font-size:.875rem; line-height:1.6; font-weight:400; margin-top:6px; }
.ml-case-body { margin:0 20px; padding:0 0 22px; border-top:1px solid var(--line); }
.ml-case-chain { display:flex; align-items:center; gap:7px; flex-wrap:wrap; padding:20px 0; }
.ml-case-chain span:not([aria-hidden]) { padding:4px 8px; border:1px solid var(--line); border-radius:2px; background:var(--tint); font-size:.75rem; }
.ml-case-chain [aria-hidden] { color:var(--cyan); }
.ml-case dl { display:grid; grid-template-columns:40px 1fr; gap:12px; margin:0; font-size:.875rem; }
.ml-case dt { color:var(--cyan); font:500 .75rem/1.65 var(--mono); }
.ml-case dd { margin:0; }
.ml-case-result { margin:18px 0 0; padding:14px 16px; border-left:3px solid var(--cyan); background:var(--tint); font-size:.875rem; }
.ml-case-result strong { color:var(--ink); }
.ml-case-note { margin:12px 0 0; color:var(--muted); font-size:.75rem; line-height:1.65; }
@media(max-width:1100px) {
 .ml-flow { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .ml-step:nth-child(2)::after { display:none; }
}
@media(max-width:700px) {
 .ml-flow,.ml-languages,.ml-cases-grid { grid-template-columns:minmax(0,1fr); }
 .ml-flow { gap:18px; }
 .ml-step:not(:last-child)::after { display:block; right:20px; top:auto; bottom:-23px; content:'↓'; z-index:1; }
 .ml-languages { gap:20px; }
 .ml-languages>div+div { padding:20px 0 0; border-left:0; border-top:1px solid var(--line); }
 .ml-time { padding:20px; }
 .ml-time-heading { grid-template-columns:minmax(0,1fr); gap:14px; }
 .ml-time-heading h3 { font-size:1.25rem; }
 .ml-timeline { grid-template-columns:minmax(0,1fr); margin:24px 0; }
 .ml-timeline li { border-top:0; border-left:2px solid var(--line); padding:0 0 24px 18px; }
 .ml-timeline li::before { top:4px; left:-6px; }
 .ml-timeline li:last-child { border-left-style:dashed; padding-bottom:0; }
 .ml-time-travel label { display:flex; margin-right:0; }
 .ml-readout { padding:16px; }
 .ml-case summary { grid-template-columns:24px 1fr 14px; gap:10px; padding:18px 16px; }
 .ml-case-icon { width:24px; height:24px; }
 .ml-case-body { margin-inline:16px; }
 .ml-case dl { grid-template-columns:minmax(0,1fr); gap:5px; }
 .ml-case dd+dt { margin-top:8px; }
}
@media(forced-colors:active) {
 .ml-flow .ml-step,.ml-stack span,.ml-time,.ml-readout,.ml-sectors,.ml-case,.ml-case-chain span,.ml-case-result,.ml-time-travel label { color:CanvasText; background:Canvas; border-color:CanvasText; }
 .ml-languages,.ml-languages>div+div,.ml-case-body,.ml-timeline li { border-color:CanvasText; }
 .ml-label,.ml-step small,.ml-diagram figcaption,.ml-languages small,.ml-languages h3 span,.ml-time-heading p,.ml-timeline time,.ml-case dt,.ml-case-note,.ml-scope,.ml-case-icon,.ml-case summary::after,.ml-step::after,.ml-case-chain [aria-hidden] { color:CanvasText; }
 .ml-timeline li::before { background:CanvasText; }
 .ml-time-travel input:checked+label { forced-color-adjust:none; background:Highlight; color:HighlightText; border-color:Highlight; }
 .ml-time-travel input:focus-visible+label,.ml-case summary:focus-visible { outline-color:Highlight; }
 .ml-case[open] { border-color:Highlight; }
}
@media print {
 .ml-diagram,.ml-time,.ml-case { break-inside:avoid; }
 .ml-time-travel input,.ml-time-travel label { display:none; }
 .ml-readout .ml-then,.ml-readout .ml-now { display:block!important; }
 .ml-readout .ml-now { margin-top:20px; }
 .ml-case::details-content { display:block; content-visibility:visible; }
}
