.ml-page{--ml-c0:#c8414b;--ml-c1:#2c7bb6;--ml-c2:#d99a00;--ml-c3:#3f7d3a;--ml-c4:#8e5ea2;--ml-c5:#e07a2e}.ml-page .hero-actions{flex-wrap:wrap;align-items:center;gap:16px;margin-top:22px;display:flex}.ml-count-all{color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.ml-parts{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.ml-parts a{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;align-items:center;gap:8px;padding:6px 14px 6px 6px;font-size:14px;font-weight:500;display:inline-flex}.ml-parts a:hover{border-color:var(--brand);text-decoration:none}.ml-parts b{background:var(--brand-soft);width:24px;height:24px;color:var(--brand);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.ml-section{scroll-margin-top:88px}.ml-section .section-head{margin-bottom:20px}.ml-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.ml-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:18px;padding:18px 20px;transition:box-shadow .2s,transform .2s;display:grid}.ml-item:hover{box-shadow:var(--shadow);text-decoration:none;transform:translateY(-2px)}.ml-n{background:var(--brand-soft);width:44px;height:44px;color:var(--brand);border-radius:50%;place-items:center;font-weight:700;display:grid}.ml-item-body{gap:2px;display:grid}.ml-item-body b{font-size:17px;font-weight:600}.ml-item-body span{color:var(--muted);font-size:14px}.ml-go{color:var(--brand);font-weight:600}.ml-story{border-left:3px solid var(--brand);background:var(--bg-soft);border-radius:0 var(--radius) var(--radius) 0;max-width:90ch;margin:0;padding:16px 18px}.ml-note{max-width:90ch;margin:-18px 0 0;font-size:13px}.ml-player{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;display:grid;overflow:hidden}.ml-stage{border-right:1px solid var(--line);align-content:start;gap:0;min-width:0;display:grid}.ml-canvas{background:var(--surface);width:100%;height:auto;display:block}.ml-cap{border-top:1px solid var(--line);background:var(--bg-soft);justify-content:space-between;align-items:baseline;gap:12px;padding:10px 16px;font-size:14px;display:flex}.ml-cap b{color:var(--ink);font-weight:600}.ml-cap span{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;font-size:13px}.ml-ctl{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 16px;display:flex}.ml-ctl .btn{min-width:40px}@media (max-width:760px),(pointer:coarse){.ml-ctl .btn{min-width:44px}}.ml-scrub{accent-color:var(--brand);flex:140px}.ml-count{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;min-width:64px;font-size:12px}.ml-speed{border:1px solid var(--line);border-radius:var(--radius);display:inline-flex;overflow:hidden}.ml-speed button{background:var(--surface);color:var(--muted);font:inherit;cursor:pointer;border:0;padding:6px 9px;font-size:12px;font-weight:600}.ml-speed button[aria-pressed=true]{background:var(--deep);color:var(--on-deep)}.ml-params{border-top:1px solid var(--line);flex-wrap:wrap;gap:14px 24px;padding:12px 16px 16px;display:flex}.ml-param{color:var(--muted);flex:180px;gap:4px;min-width:180px;font-size:13px;display:grid}.ml-param b{color:var(--ink);font-variant-numeric:tabular-nums}.ml-param input{accent-color:var(--brand)}.ml-code{color:#d8dee9;background:#12161f;flex-direction:column;min-width:0;display:flex}.ml-code-head{border-bottom:1px solid #232a38;align-items:center;gap:10px;padding:10px 14px;font-size:12px;display:flex}.ml-code-head b{color:#e6eaf2;font-family:ui-monospace,JetBrains Mono,Menlo,Consolas,monospace;font-weight:600}.ml-code-head small{color:#7d8799;margin-left:auto}.ml-dots{gap:5px;display:inline-flex}.ml-dots i{background:#3a4255;border-radius:50%;width:9px;height:9px}.ml-code ol{counter-reset:ln;flex:1;max-height:560px;margin:0;padding:8px 0;list-style:none;position:relative;overflow:auto}.ml-code li{counter-increment:ln;border-left:3px solid #0000;grid-template-columns:34px minmax(0,1fr);padding:1px 12px 1px 0;transition:background .15s;display:grid}.ml-code li:before{content:counter(ln);text-align:right;color:#5b6477;padding-right:10px;font:12px/1.7 ui-monospace,JetBrains Mono,Menlo,Consolas,monospace}.ml-code li.on{background:#e0aa7629;border-left-color:#e0aa76}.ml-code li.on:before{color:#e0aa76}.ml-code code{white-space:pre;color:#d8dee9;font:12px/1.7 ui-monospace,JetBrains Mono,Menlo,Consolas,monospace}.py-k{color:#c792ea}.py-b{color:#82aaff}.py-n{color:#f78c6c}.py-s{color:#c3e88d}.py-c{color:#6b7590;font-style:italic}.ml-explain{grid-template-columns:1fr 1fr;gap:48px;display:grid}.ml-explain h2{margin:0 0 14px;font-size:22px}.ml-how{counter-reset:st;gap:14px;margin:0;padding:0;list-style:none;display:grid}.ml-how li{counter-increment:st;color:var(--muted);grid-template-columns:32px minmax(0,1fr);gap:10px;font-size:15px;display:grid}.ml-how li:before{content:counter(st);background:var(--brand-soft);width:28px;height:28px;color:var(--brand);border-radius:50%;place-items:center;font-size:13px;font-weight:700;display:grid}.ml-why{border-left:2px solid var(--brand);padding-left:20px}.ml-why p{color:var(--muted);margin:0 0 14px}.ml-pager{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}@media (max-width:1000px){.ml-player{grid-template-columns:1fr}.ml-stage{border-right:0}.ml-code ol{max-height:360px}.ml-explain{grid-template-columns:1fr;gap:32px}}@media (max-width:600px){.ml-item{grid-template-columns:44px minmax(0,1fr)}.ml-go{display:none}.ml-code code{font-size:11px}}.ml-parts a.ml-parts-proj b{background:var(--deep);width:auto;color:var(--on-deep);border-radius:999px;padding:0 7px}.ml-item-proj .ml-n{background:var(--deep);color:var(--on-deep);font-size:14px}.mp-brief{grid-template-columns:1fr 1fr;gap:16px;display:grid}.mp-brief .ml-story{max-width:none}.mp-goal{border-left-color:var(--ml-c3)}.mp-player{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);grid-template-columns:minmax(0,1fr) 300px;display:grid;overflow:hidden}.mp-stage{border-right:1px solid var(--line);align-content:start;min-width:0;display:grid}.mp-3d{aspect-ratio:16/10;background:#e8edf3;width:100%;min-height:260px;position:relative;overflow:hidden}.mp-3d canvas{position:absolute;inset:0}.mp-nogl{text-align:center;color:var(--muted);place-items:center;margin:0;padding:24px;font-size:14px;display:grid;position:absolute;inset:0}.mp-status{border-top:1px solid var(--line);background:var(--bg-soft);justify-content:space-between;align-items:baseline;gap:12px;padding:10px 16px;font-size:14px;display:flex}.mp-status b{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.mp-status span{color:var(--ml-c3);white-space:nowrap;font-size:13px;font-weight:600}.mp-ctl{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 16px;display:flex}.mp-hint{color:var(--muted);margin-left:auto;font-size:12px}.mp-side{align-content:start;gap:14px;min-width:0;padding:16px;display:grid}.mp-side-h{margin:0;font-size:15px}.mp-metrics{grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.mp-m{border:1px solid var(--line);border-radius:calc(var(--radius) * .6);background:var(--bg-soft);min-width:0;padding:8px 10px}.mp-m dt{color:var(--muted);font-size:11px;line-height:1.3}.mp-m dd{color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:2px 0 0;font-size:16px;font-weight:700}.mp-good dd{color:var(--ml-c3)}.mp-bad dd{color:var(--ml-c0)}.mp-curve{margin:0}.mp-curve figcaption{color:var(--muted);margin-bottom:4px;font-size:12px}.mp-curve svg{border:1px solid var(--line);border-radius:calc(var(--radius) * .6);background:var(--bg-soft);width:100%;height:56px;display:block}.mp-axis{stroke:var(--line);stroke-width:1px}.mp-line{fill:none;stroke:var(--brand);stroke-width:2px;vector-effect:non-scaling-stroke}.mp-line2{fill:none;stroke:var(--ml-c5);stroke-width:2px;vector-effect:non-scaling-stroke}.mp-table{min-width:0;overflow-x:auto}.mp-table p{color:var(--muted);margin:0 0 6px;font-size:12px}.mp-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}.mp-table th,.mp-table td{border:1px solid var(--line);text-align:center;padding:4px 5px}.mp-table thead th{word-break:break-word;font-size:10px}.mp-table th{color:var(--muted);background:var(--bg-soft);font-weight:600}.mp-table td.mp-diag{background:color-mix(in srgb, var(--ml-c3) 18%, transparent);font-weight:700}.mp-table td.mp-off{background:color-mix(in srgb, var(--ml-c0) 12%, transparent)}.mp-used{font-size:14px}.mp-task{border:1px dashed var(--brand);border-radius:var(--radius);background:var(--bg-soft);padding:18px 20px}.mp-task h2{margin:0 0 10px;font-size:22px}.mp-task ol{color:var(--muted);gap:8px;margin:0;padding-left:20px;display:grid}.mp-py h2{margin:0 0 14px;font-size:22px}.mp-py .ml-code{border-radius:var(--radius);overflow:hidden}.mp-py .ml-code ol{max-height:none}@media (max-width:1000px){.mp-player{grid-template-columns:1fr}.mp-stage{border-right:0;border-bottom:1px solid var(--line)}.mp-metrics{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}@media (max-width:600px){.mp-brief{grid-template-columns:1fr}.mp-3d{aspect-ratio:4/3}.mp-hint{display:none}}.ml-data{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:12px;padding:18px 20px;display:grid}.ml-data-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.ml-data-head h2{margin:0;font-size:20px}.ml-data-none{color:var(--muted);margin:0;font-size:14px}.ml-data-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.ml-data-item{border-radius:calc(var(--radius) * .6);background:var(--bg-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.ml-data-item>div{gap:2px;min-width:0;display:grid}.ml-data-item b{font-weight:600}.ml-data-tag{background:var(--brand-soft);color:var(--brand);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:600}.ml-data-meta{color:var(--muted);overflow-wrap:anywhere;font-size:13px}.ml-data-meta code,.vs-meta code{font-size:12px}.py-run{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.py-run-sum{cursor:pointer;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;padding:16px 20px;list-style:none;display:flex}.py-run-sum::-webkit-details-marker{display:none}.py-run-sum b{font-size:18px;font-weight:600}.py-run-sum b:before{content:"▸";width:1.2em;color:var(--brand);transition:transform .15s;display:inline-block}.py-run[open] .py-run-sum b:before{transform:rotate(90deg)}.py-run-sum span{color:var(--muted);font-size:13px}.py-run-lead{color:var(--muted);margin:0 20px 12px;font-size:14px}.py-run-box{border-radius:var(--radius);background:#12161f;margin:0 20px;overflow:hidden}.py-run-code{box-sizing:border-box;resize:vertical;color:#d8dee9;tab-size:4;white-space:pre;background:#12161f;border:0;width:100%;padding:10px 14px;font:12px/1.7 ui-monospace,JetBrains Mono,Menlo,Consolas,monospace;display:block;overflow:auto}.py-run-code:focus{outline-offset:-2px;outline:2px solid #e0aa76}.py-run-ctl{flex-wrap:wrap;align-items:center;gap:8px;padding:12px 20px;display:flex}.py-run-file{border:1px dashed var(--line);border-radius:var(--radius);color:var(--ink);cursor:pointer;align-items:center;padding:6px 12px;font-size:13px;display:inline-flex;position:relative}.py-run-file:hover{border-color:var(--brand)}.py-run-file input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.py-run-file:focus-within{outline:2px solid var(--brand);outline-offset:2px}.py-run-status{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:13px}.py-run-hint{color:var(--muted);overflow-wrap:anywhere;margin:0 20px 10px;font-size:13px}.py-run-out-wrap{padding:0 20px 20px}.py-run-out-h{color:var(--muted);margin:0 0 6px;font-size:12px;font-weight:600}.py-run-out{border-radius:calc(var(--radius) * .6);background:var(--bg-soft);border:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere;min-height:64px;max-height:360px;margin:0;padding:10px 14px;font:12px/1.6 ui-monospace,Menlo,Consolas,monospace;overflow:auto}.py-run-stderr{color:var(--ml-c0)}.py-run-info{color:var(--muted);font-style:italic}.vs-list{gap:18px;margin:0;padding:0;list-style:none;display:grid}.vs-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:10px;min-width:0;padding:20px;scroll-margin-top:88px;display:grid}.vs-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.vs-head h2{margin:0 0 4px;font-size:20px}.vs-meta,.vs-desc,.vs-used,.vs-load{color:var(--muted);margin:0;font-size:14px}.vs-load code{overflow-wrap:anywhere;font-size:12px}.vs-table-wrap{overflow-x:auto}.vs-table{border-collapse:collapse;width:100%;font-size:13px}.vs-table th,.vs-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 8px}.vs-table thead th{color:var(--muted);font-size:12px;font-weight:600}.vs-table tbody th{white-space:nowrap;font-weight:500}@media (max-width:600px){.py-run-sum,.py-run-ctl{padding-left:14px;padding-right:14px}.py-run-lead,.py-run-box,.py-run-hint{margin-left:14px;margin-right:14px}.py-run-out-wrap{padding:0 14px 14px}.py-run-status{width:100%;margin-left:0}.vs-item{padding:16px}}.eg{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:14px;min-width:0;padding:18px 20px;display:grid}.eg-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px 20px;display:flex}.eg-head h2{margin:0 0 4px;font-size:20px}.eg-sub{color:var(--muted);overflow-wrap:anywhere;font-variant-numeric:tabular-nums;margin:0;font-size:13px}.eg-export{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.eg-export>span{color:var(--muted);margin-right:2px;font-size:12px;font-weight:600}@media (max-width:560px){.eg-export{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.eg-export>span{grid-column:1/-1}.eg-export>.btn{white-space:nowrap;justify-content:center;min-height:44px;padding-inline:6px}}.eg-final{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;margin:0;display:grid}.eg-m{border:1px solid var(--line);border-radius:calc(var(--radius) * .6);background:var(--bg-soft);min-width:0;padding:8px 10px}.eg-m dt{color:var(--muted);font-size:11px;line-height:1.3}.eg-m dd{color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:2px 0 0;font-size:17px;font-weight:700}.eg-live{color:var(--muted);margin:0;font-size:12px}.eg-thr{border:1px dashed var(--line);border-radius:calc(var(--radius) * .6);flex-wrap:wrap;align-items:center;gap:10px 22px;padding:10px 12px;display:flex}.eg-thr label{color:var(--muted);flex:220px;gap:4px;min-width:0;font-size:13px;display:grid}.eg-thr label b{color:var(--ink);font-variant-numeric:tabular-nums}.eg-thr input{accent-color:var(--brand);width:100%}.eg-thr dl{flex-wrap:wrap;gap:6px 16px;margin:0;display:flex}.eg-thr dt{color:var(--muted);font-size:11px}.eg-thr dd{font-variant-numeric:tabular-nums;color:var(--ink);margin:0;font-weight:700}.eg-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px;display:grid}.eg-chart{border:1px solid var(--line);border-radius:calc(var(--radius) * .6);background:var(--bg-soft);align-content:start;gap:4px;min-width:0;margin:0;padding:10px;display:grid}.eg-chart figcaption{color:var(--ink);font-size:13px;font-weight:600}.eg-chart svg{width:100%;height:auto;display:block;overflow:visible}.eg-chart svg text{fill:var(--muted);font-variant-numeric:tabular-nums;font:500 11.5px Poppins,system-ui,sans-serif}.eg-chart svg text.eg-al{fill:var(--ink);font-size:11.5px}.eg-chart svg text.eg-cv{fill:var(--ink);font-weight:700}.eg-chart svg text.eg-cv-on{fill:#fff}.eg-chart line.eg-grid{stroke:var(--line);stroke-width:.8px}.eg-axis{stroke:var(--muted);stroke-width:1px;opacity:.6}.eg-ref{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3;opacity:.8}.eg-line{fill:none;stroke-width:1.8px;stroke-linejoin:round;stroke-linecap:round}.eg-pt{opacity:.7}.eg-cell{fill:var(--surface)}.eg-dot{fill:var(--surface);stroke:var(--ink);stroke-width:2px}.eg-marker line{stroke:var(--ml-c3);stroke-width:1.2px;stroke-dasharray:4 3}.eg-chart .eg-marker text{fill:var(--ml-c3);font-weight:600}.eg-legend{color:var(--muted);flex-wrap:wrap;gap:2px 12px;margin:0;padding:0;font-size:11px;list-style:none;display:flex}.eg-legend li{align-items:center;gap:5px;display:inline-flex}.eg-legend i{border-radius:2px;width:14px;height:3px;display:inline-block}.eg-legend i.eg-dash{-webkit-mask:repeating-linear-gradient(90deg,#000 0 4px,#0000 4px 6px);mask:repeating-linear-gradient(90deg,#000 0 4px,#0000 4px 6px)}.eg-note{color:var(--muted);margin:0;font-size:11.5px}.eg-tbtn{color:var(--brand);font:inherit;cursor:pointer;background:0 0;border:0;justify-self:start;padding:2px 0;font-size:12px;font-weight:600}.eg-tbtn:hover{text-decoration:underline}.eg-table{border:1px solid var(--line);background:var(--surface);border-radius:6px;max-height:220px;overflow:auto}.eg-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:11px}.eg-table th,.eg-table td{border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;padding:3px 6px}.eg-table thead th{background:var(--bg-soft);color:var(--muted);font-weight:600;position:sticky;top:0}.eg-table tbody th{text-align:left;color:var(--muted);font-weight:500}@media (max-width:600px){.eg{padding:14px}.eg-final{grid-template-columns:repeat(2,minmax(0,1fr))}}.py-run-figs{gap:10px;margin-top:10px;display:grid}.py-run-figs img{border:1px solid var(--line);border-radius:calc(var(--radius) * .6);background:#fff;max-width:100%;height:auto;display:block}.py-run-files{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;font-size:13px;display:flex}@media (max-width:760px),(pointer:coarse){.ml-speed button{min-width:44px;min-height:44px}.eg-tbtn{min-height:44px}.ml-player input[type=range],.mp-player input[type=range]{min-height:32px}.ml-code-head small{font-size:11px}}
