.xn-launch{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 26px;margin:0 0 30px;background:linear-gradient(105deg,#f1edff 0%,#fdf0ea 100%);border-radius:20px;color:var(--sx-ink,#29243c);text-decoration:none;transition:transform 320ms cubic-bezier(.22,1,.36,1),box-shadow 320ms cubic-bezier(.22,1,.36,1)}
.xn-launch:hover{transform:translateY(-2px);box-shadow:0 12px 32px #785bc212;text-decoration:none}
.xn-launch-copy{max-width:650px}.xn-launch-copy small{display:block;color:#8a62ce;font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:7px}.xn-launch-copy strong{display:block;font-weight:650;font-size:20px;line-height:1.5;letter-spacing:-.025em}.xn-launch-copy p{color:#716a86;font-size:13px;line-height:1.8;margin:7px 0 0!important}.xn-launch-go{display:block;color:#825cc7;font-size:12px;margin-top:12px;font-weight:600}.xn-launch-visual{flex:0 0 108px;width:108px;height:108px}.xn-launch-visual circle{transform-origin:center;transition:transform 420ms cubic-bezier(.22,1,.36,1)}.xn-launch:hover .xn-launch-visual circle:first-child{transform:scale(1.08)}
.xn-lab{--xn-ink:#302c43;--xn-muted:#7c748e;--xn-accent:#8964d8;--xn-ease:cubic-bezier(.22,1,.36,1);background:linear-gradient(140deg,#fcfaff,#f7f4ff 55%,#fff9f2);border-radius:22px;padding:24px;max-width:100%;color:var(--xn-ink);margin:22px 0 28px;box-shadow:0 8px 30px #785bc20a;overflow:hidden}
.xn-head{display:flex;justify-content:space-between;align-items:start;gap:16px;margin-bottom:22px}.xn-eyebrow{font-size:9px!important;letter-spacing:.14em;color:var(--xn-accent);font-weight:700;margin:0 0 6px!important}.xn-head h3{font-size:21px!important;line-height:1.5!important;font-weight:650!important;letter-spacing:-.035em;margin:0!important}.xn-intro{font-size:12px!important;color:var(--xn-muted);line-height:1.8!important;margin:7px 0 0!important}.xn-simulation{font-size:10px;color:#92869f;white-space:nowrap;padding-top:3px}
.xn-lab button,.xn-lab select,.xn-lab input{font:inherit;transition:background 180ms var(--xn-ease),color 180ms var(--xn-ease),transform 280ms var(--xn-ease),box-shadow 280ms var(--xn-ease)}.xn-lab button{cursor:pointer}.xn-lab :is(button,select,input):focus-visible{outline:3px solid #b99aed;outline-offset:3px}.xn-dataset-tabs{display:inline-flex;gap:3px;padding:3px;background:#eae3f7;border-radius:10px;margin-bottom:19px}.xn-dataset-tabs button{border:0;background:transparent;padding:8px 14px;border-radius:8px;font-size:12px;color:#85749d}.xn-dataset-tabs button[aria-pressed=true]{color:#7650bc;background:white;box-shadow:0 2px 8px #7650bc14}
.xn-controls{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:13px}.xn-controls label{display:flex;flex-direction:column;gap:6px;font-size:11px;color:var(--xn-muted)}.xn-controls select{width:100%;min-width:0;border:0;border-radius:9px;background:#ffffffc9;color:var(--xn-ink);padding:10px 25px 10px 10px;font-size:12px;box-shadow:0 1px 5px #6f538405}
.xn-radius{display:flex;align-items:end;gap:18px;margin:19px 0 16px}.xn-radius>label{flex:1;min-width:0;font-size:11px;color:var(--xn-muted)}.xn-radius output{float:right;color:var(--xn-accent);font-size:13px;font-weight:650;font-variant-numeric:tabular-nums}.xn-radius input{display:block;width:100%;accent-color:var(--xn-accent);margin:10px 0 0}.xn-presets{display:flex;gap:4px;padding-bottom:1px}.xn-presets button{font-size:11px;border:0;border-radius:7px;background:transparent;padding:7px 9px;color:var(--xn-muted)}.xn-presets button[aria-pressed=true]{background:#8864d615;color:#7751bc}
.xn-experiment{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(160px,1fr);gap:24px;align-items:center}.xn-spatial{min-width:0}.xn-plot{aspect-ratio:1.1;background:#fffcff;border-radius:15px;overflow:hidden}.xn-plot svg{width:100%;height:100%;display:block;overflow:hidden}.xn-halo{fill:#9877e810;stroke:#aa86e5;stroke-width:.8;stroke-dasharray:3 2;transition:r 360ms var(--xn-ease),cx 360ms var(--xn-ease),cy 360ms var(--xn-ease)}.xn-hole{fill:#fffcff;stroke:#ba9ce1;stroke-width:.65;stroke-dasharray:2 2;transition:r 360ms var(--xn-ease),cx 360ms var(--xn-ease),cy 360ms var(--xn-ease)}.xn-neighbor-lines line{stroke:#a58aca;stroke-width:.6;opacity:.35}.xn-cell{cursor:pointer;stroke:white;stroke-width:.6;transition:opacity 240ms var(--xn-ease),stroke-width 240ms var(--xn-ease)}.xn-cell:hover{stroke:#5b427c;stroke-width:1.4}.xn-cell.is-muted{opacity:.25}.xn-cell.is-center{stroke:#483151;stroke-width:1.7;opacity:1}.xn-cell-label{font:3.5px ui-monospace,SFMono-Regular,monospace;fill:#7b688d;pointer-events:none}.xn-plot-note{font-size:10px!important;color:var(--xn-muted);line-height:1.7!important;margin:9px 2px 0!important}
.xn-window{color:var(--xn-accent);font-size:11px!important;font-weight:600;margin:0 0 6px!important}.xn-neighbor-total{display:flex;align-items:baseline;gap:9px}.xn-neighbor-total strong{font-size:46px;font-weight:650;letter-spacing:-.07em;line-height:1.2;font-variant-numeric:tabular-nums}.xn-neighbor-total>span{font-size:12px;color:var(--xn-muted)}.xn-focal-type{font-size:11px!important;color:var(--xn-muted);line-height:1.7!important;margin:5px 0 22px!important;overflow-wrap:anywhere}.xn-results h4{font-size:12px!important;font-weight:600!important;margin:0 0 13px!important}.xn-composition{display:grid;gap:13px}.xn-composition-label{display:flex;justify-content:space-between;gap:6px;font-size:10px;line-height:1.5}.xn-composition-value{white-space:nowrap;color:var(--xn-muted);font-variant-numeric:tabular-nums}.xn-composition-track{height:5px;background:#8a72ba0c;border-radius:9px;margin-top:5px;overflow:hidden}.xn-composition-bar{display:block;height:100%;border-radius:9px;transition:width 320ms var(--xn-ease)}.xn-density{font-size:10px!important;color:var(--xn-muted);line-height:1.8!important;margin:17px 0 0!important}.xn-readout{font-size:12px!important;line-height:1.85!important;color:#80758d;margin:19px 0 0!important}.xn-status{font-size:12px;color:var(--xn-muted);line-height:1.8;margin-top:14px;display:flex;gap:12px;align-items:center}.xn-status[hidden]{display:none!important}.xn-retry{border:0;background:#8762cc14;padding:7px 11px;border-radius:8px;color:var(--xn-accent)}
.xn-cell-label{font-size:7px;fill:#6d5b81}.xn-lab :disabled{opacity:.55;cursor:wait}
.mm-case-reading{margin:24px 0 16px;padding:18px 0;border-top:1px solid #927ca71a}.mm-case-reading h4{font-size:13px;color:#8f67c4;margin:0 0 12px}.mm-case-reading a{display:block;color:#654280;text-decoration:none;font-size:14px;line-height:1.7}.mm-case-reading p{font-size:12px;color:#9585a4;line-height:1.85;margin:6px 0 0}.mm-case-reading a:hover{color:#a16cd1}
@media(max-width:700px){.xn-launch{padding:18px;gap:14px}.xn-launch-copy strong{font-size:17px}.xn-launch-visual{flex-basis:72px;width:72px;height:72px}.xn-lab{padding:17px;border-radius:17px}.xn-head{gap:10px;flex-wrap:wrap}.xn-head h3{font-size:19px!important}.xn-simulation{padding-top:0}.xn-controls{grid-template-columns:1fr 1fr;gap:11px}.xn-controls label:last-child{grid-column:1/-1}.xn-experiment{grid-template-columns:1fr;gap:18px}.xn-plot{aspect-ratio:1.18}.xn-results{display:grid;grid-template-columns:1fr 1.2fr;column-gap:18px}.xn-window,.xn-neighbor-total,.xn-focal-type{grid-column:1;align-self:start}.xn-results h4{grid-column:2;grid-row:1}.xn-composition{grid-column:2;grid-row:2/5;gap:9px}.xn-density{grid-column:1/-1}.xn-focal-type{margin-bottom:0!important}.xn-neighbor-total strong{font-size:39px}.xn-composition-label{font-size:9px}.xn-radius{gap:10px}.xn-presets button{padding:7px}.xn-readout{font-size:11px!important}}
@media(prefers-reduced-motion:reduce){.xn-lab *,.xn-launch,.xn-launch *{transition-duration:0ms!important;animation-duration:0ms!important}.xn-launch:hover{transform:none}}

/* Course cases remain visible beside their parent module and open in the reader. */
.cw-workspace .cw-case-entry{display:flex;align-items:center;gap:8px;margin:1px 0 8px;padding:7px 10px 7px 27px;width:100%;text-align:left;border:0;border-radius:7px;background:transparent;color:#8b68bf;font:inherit;font-size:12px;line-height:1.6;transition:background 220ms,color 220ms}
.cw-case-mark{flex:0 0 14px;color:#b59ccd}.cw-case-label{min-width:0;overflow-wrap:anywhere}
.cw-workspace .cw-case-entry:hover{background:#a47cdc0d;color:#7249a9}.cw-workspace .cw-case-entry[aria-selected=true]{background:#efe8fa;color:#7c4bb2;font-weight:600}.cw-workspace .cw-module.cw-parent-active{color:#9b773b}.cw-workspace .cw-case-entry:focus-visible{outline:2px solid #b794dd;outline-offset:2px}
.cw-collapsed .cw-case-entry{padding:7px 0;justify-content:center}.cw-collapsed .cw-case-label{display:none}.cw-collapsed .cw-case-mark{flex:0 0 auto;font-size:17px}
.xn-module-case{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 28px;padding:22px 24px;border-radius:16px;background:linear-gradient(110deg,#f1ebfc,#fff3e9);max-width:1080px;margin-inline:auto;min-width:0}
.sx-root .xn-case-eyebrow{font-size:10px;color:#9770bd;letter-spacing:.1em;margin:0 0 7px}.sx-root .xn-module-case h3{font-size:18px;line-height:1.6;color:#4c3d5e;margin:0}.sx-root .xn-module-case p:not(.xn-case-eyebrow){font-size:12px;line-height:1.8;color:#8a7a97;margin:6px 0 0}
.xn-case-actions{display:flex;flex-direction:column;gap:8px;flex:0 0 auto}.xn-case-actions button{font:inherit;font-size:12px;border:0;border-radius:9px;padding:10px 15px;background:#9972c918;color:#8154ae;cursor:pointer;white-space:nowrap;transition:background 220ms,transform 320ms cubic-bezier(.22,1,.36,1)}.xn-case-actions button:first-child{background:#9868c9;color:white;box-shadow:0 4px 12px #9868c920}.xn-case-actions button:hover{transform:translateY(-1px);background:#8860b5;color:white}
.xn-case-nav{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:21px 0 0}.xn-reading-modes{display:inline-flex;gap:4px;padding:4px;background:#ece5f3;border-radius:11px}.xn-reading-modes button{font:inherit;font-size:12px;padding:9px 17px;border:0;border-radius:8px;color:#9885a9;background:transparent;cursor:pointer;transition:color 220ms,background 280ms,box-shadow 280ms}.xn-reading-modes button[aria-pressed=true]{background:#fff;color:#8055ac;box-shadow:0 2px 7px #75528d12}.xn-reading-modes button:hover{color:#7951a0}.xn-return-course{font:inherit;font-size:12px;padding:8px 0;border:0;background:transparent;color:#9a88aa;cursor:pointer;transition:color 220ms}.xn-return-course:hover{color:#8055ac}
.xn-source-figure{margin:20px 0 24px!important}.xn-source-figure .iv-source-link{display:flex;align-items:center;justify-content:center;min-height:84px;padding:18px 24px;border-radius:12px;background:linear-gradient(110deg,#f2edf8,#fbf6ed);color:#8b64ac!important;font-size:13px;text-decoration:none!important;transition:background 280ms,transform 320ms cubic-bezier(.22,1,.36,1)}.xn-source-figure .iv-source-link:hover{background:linear-gradient(110deg,#eae1f5,#f8eddb);transform:translateY(-1px)}.xn-source-figure figcaption{font-size:11px!important;color:#a28dae!important;margin:7px 2px 0!important}
.cp-host[hidden],.cw-nav-group[hidden]{display:none!important}
@media(max-width:760px){.xn-module-case{padding:18px;gap:14px;flex-wrap:wrap}.sx-root .xn-module-case h3{font-size:16px}.xn-case-actions{flex-direction:row}.xn-case-actions button{font-size:11px;padding:9px 13px}.xn-case-nav{gap:9px}.xn-reading-modes button{padding:9px 13px}.xn-return-course{font-size:11px}.xn-source-figure .iv-source-link{padding:16px;min-height:72px}.cw-workspace .cw-case-entry{padding-left:31px}}
@media(prefers-reduced-motion:reduce){.cw-case-entry,.xn-module-case *,.xn-case-nav *,.xn-source-figure *{transition-duration:0ms!important}.xn-case-actions button:hover,.xn-source-figure .iv-source-link:hover{transform:none}}
