.assumption-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:24px}.assumption-grid article{border:1px solid var(--line);background:#fff;padding:18px}.assumption-grid b{font:800 .78rem ui-monospace,monospace}.assumption-grid p{color:var(--muted);margin:8px 0 0}@media(max-width:900px){.assumption-grid{grid-template-columns:1fr}}
.sim-controls{display:grid;grid-template-columns:140px 160px auto 1fr auto;gap:12px;align-items:end}.table-wrap{overflow:auto;margin-top:18px}.data-table{width:100%;border-collapse:collapse;font-size:.82rem}.data-table th,.data-table td{text-align:left;padding:10px;border-bottom:1px solid var(--line);white-space:nowrap}.data-table th{font:800 .72rem ui-monospace,monospace;color:var(--muted)}.eda-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.eda-summary article{background:var(--ink);color:white;padding:18px}.eda-summary b{display:block;font-size:1.7rem;color:var(--lime)}.eda-summary span{font-size:.8rem}.eda-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:28px}.eda-panel h3{font-size:1rem}.bar-row{display:grid;grid-template-columns:minmax(100px,1fr) 2fr 55px;gap:10px;align-items:center;margin:8px 0;font-size:.78rem}.bar-track{height:12px;background:#e8ece5}.bar-fill{height:100%;background:var(--green)}.bar-row output{text-align:right;font-family:ui-monospace,monospace}@media(max-width:900px){.sim-controls,.eda-summary,.eda-grid{grid-template-columns:1fr}.bar-row{grid-template-columns:110px 1fr 45px}}
.segment-note{color:var(--muted);max-width:900px}.segment-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.segment-summary article{border-top:3px solid var(--ink);padding:13px 4px;display:grid;grid-template-columns:12px 1fr;gap:3px 9px}.segment-summary i,.segment-legend i{width:10px;height:10px;border-radius:50%;display:inline-block}.segment-summary b{font-size:.82rem}.segment-summary strong,.segment-summary span{grid-column:2}.segment-summary strong{font-size:1.25rem}.segment-summary span{font:500 .72rem ui-monospace,monospace;color:var(--muted)}.latent-wrap{width:100%;overflow:hidden}.latent-wrap svg{display:block;width:100%;height:auto;min-height:420px}.plot-frame{fill:#fbfcf8;stroke:var(--line)}.cut-line{stroke:#78847c;stroke-dasharray:6 6}.tick{stroke:var(--ink)}.tick-label,.axis-label,.centroid text{fill:var(--ink);font-family:"Noto Sans Thai",system-ui,sans-serif}.tick-label{font-size:12px}.axis-label{font-size:14px;font-weight:700}.student-point{opacity:.34}.student-point:hover{opacity:1;r:6px}.centroid>circle:nth-child(2){fill:none;stroke:var(--ink);stroke-width:3}.centroid text{font-size:12px;font-weight:800;paint-order:stroke;stroke:var(--card);stroke-width:4px}.segment-legend{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;font-size:.78rem}.segment-legend span{display:flex;align-items:center;gap:6px}@media(max-width:900px){.segment-summary{grid-template-columns:repeat(2,1fr)}.latent-wrap svg{min-width:680px}.latent-wrap{overflow:auto}}@media(max-width:560px){.segment-summary{grid-template-columns:1fr}}
.calculation-method{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:34px;padding-top:30px;border-top:1px solid var(--line)}.calculation-method article{border:1px solid var(--line);padding:22px;background:#fff}.calculation-method h3{margin:0 0 12px}.calculation-method p{color:var(--muted)}.calculation-method .course-method{grid-column:1/-1}.formula{background:#eef0e9;border-left:4px solid var(--green);padding:14px;margin:12px 0}.formula b{display:block;font-size:.8rem;margin-bottom:7px}.formula code{display:block;white-space:normal;overflow-wrap:anywhere}.method-table{width:100%;border-collapse:collapse;font-size:.8rem}.method-table th,.method-table td{padding:9px 7px;text-align:left;border-bottom:1px solid var(--line)}.method-table th{font:800 .7rem ui-monospace,monospace;color:var(--muted)}@media(max-width:900px){.calculation-method{grid-template-columns:1fr}.calculation-method .course-method{grid-column:auto}}
.cluster-comparison{margin-top:38px;padding-top:32px;border-top:1px solid var(--line)}.cluster-heading{display:flex;justify-content:space-between;align-items:end;gap:20px}.cluster-heading h3{font-size:1.45rem;margin:0}.cluster-comparison>p{color:var(--muted);max-width:920px}.cluster-radius ellipse{fill:none;stroke-width:2;stroke-dasharray:7 5;opacity:.85}.cluster-radius>circle{stroke:var(--ink);stroke-width:3}.cluster-radius text{fill:var(--ink);font-size:12px;font-weight:800;paint-order:stroke;stroke:var(--card);stroke-width:4px}
.advanced-eda{margin-top:40px;padding-top:32px;border-top:1px solid var(--line)}.advanced-eda>p{color:var(--muted)}.advanced-eda>section{margin-top:28px}.advanced-eda h3 small{font-weight:400;color:var(--muted)}.advanced-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:28px}.heatmap-wrap{overflow:auto}.heatmap{border-collapse:separate;border-spacing:3px;font-size:.68rem;min-width:760px}.heatmap th{padding:6px;text-align:center;color:var(--muted);max-width:82px}.heatmap tbody th{text-align:right}.heatmap td{padding:12px 7px;text-align:center;font-family:ui-monospace,monospace;background:color-mix(in srgb,var(--cell-color) calc(var(--corr)*70%),#f3f4ef);color:var(--ink)}.corr-pos{--cell-color:#82c99b}.corr-neg{--cell-color:#e99a9a}.test-pass,.test-weak,.test-fail{font:800 .7rem ui-monospace,monospace;text-transform:uppercase}.test-pass{color:#267047}.test-weak{color:#9a641d}.test-fail{color:var(--danger)}.best-k{background:#f0f7d7;font-weight:800}@media(max-width:900px){.advanced-grid{grid-template-columns:1fr}.cluster-heading{align-items:stretch;flex-direction:column}.cluster-heading .secondary{width:100%}}
.method-catalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:22px 0}.method-catalog article{border-top:3px solid var(--ink);padding:12px 4px}.method-catalog b,.method-catalog span{display:block}.method-catalog span{font-size:.75rem;color:var(--muted);margin-top:4px}.recommend-controls{display:grid;grid-template-columns:180px minmax(220px,1fr) auto;gap:14px;align-items:end;margin:24px 0}.sql-details{margin-top:22px}.sql-details summary{cursor:pointer;font-weight:800}.sql-details pre{max-height:360px;min-height:0;white-space:pre-wrap}@media(max-width:900px){.method-catalog,.recommend-controls{grid-template-columns:1fr}.recommend-controls .primary{width:100%}}
.evaluation-policy{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:22px 0}.evaluation-policy code{background:#eef0e9;padding:9px 12px;border-radius:5px}.evaluation-policy span{font-weight:800;color:var(--green)}#evaluationResults{margin:24px 0}.formula p{margin-bottom:0;color:var(--muted);font-size:.8rem}
.feature-inspector{border:1px solid var(--line);padding:22px;margin:28px 0;background:#fff}.feature-inspector h3{margin:0}.feature-excluded{font:800 .68rem ui-monospace,monospace;color:var(--danger)}.feature-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.feature-cards>section{background:#eef0e9;padding:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.feature-cards>section>b{grid-column:1/-1}.feature-cards span{display:grid}.feature-cards small{color:var(--muted)}.feature-cards .audit-only{background:#f5ece9}.interest-rank{display:grid;grid-template-columns:35px 1fr auto;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.policy-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px}.policy-grid div{padding:10px;background:#eef0e9}.policy-grid b,.policy-grid span{display:block}.policy-grid span{font-size:.76rem;color:var(--muted)}.policy-grid .excluded-policy{background:#f5ece9}@media(max-width:900px){.feature-cards,.policy-grid{grid-template-columns:1fr}.feature-cards>section{grid-template-columns:1fr}}
.custom-profile{border:1px solid var(--line);padding:18px;margin:22px 0;background:#f7f8f2}.custom-profile summary{font-weight:800;cursor:pointer}.custom-profile>p{color:var(--muted)}.custom-controls{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;gap:10px;align-items:end}@media(max-width:900px){.custom-controls{grid-template-columns:1fr}.custom-controls .secondary{width:100%}}
.custom-controls.full{grid-template-columns:repeat(4,minmax(120px,1fr));margin-bottom:14px}#knnNeighbors{margin-top:18px}#knnNeighbors h4{margin-bottom:6px}@media(max-width:900px){.custom-controls.full{grid-template-columns:1fr}}
.feature-ablation{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}.feature-ablation>p{color:var(--muted)}
.ablation-table tbody th[scope="rowgroup"]{font-size:1.05rem;text-align:center;vertical-align:middle;background:#eef0e9;border-right:3px solid var(--green)}.ablation-table .group-start>*{border-top:2px solid var(--ink)}
.ablation-table caption{text-align:left;color:var(--muted);font-size:.75rem;padding:0 0 8px}.best-value{font-weight:900;color:var(--green);text-decoration:underline;text-decoration-color:var(--lime);text-decoration-thickness:3px;text-underline-offset:3px}
.timing-explainer{margin:24px 0;border:1px solid var(--line);background:#f7f7f0;border-radius:10px;overflow:hidden}.timing-explainer>summary{cursor:pointer;padding:17px 20px;font-weight:800;background:#eef1e8;border-bottom:1px solid var(--line)}.timing-intro{padding:4px 20px 0;color:var(--muted);display:grid;grid-template-columns:1.25fr .75fr;gap:24px}.timing-intro code,.speed-grid code{font-family:ui-monospace,monospace}.speed-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px 20px 20px}.speed-grid article{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--green);padding:16px;min-width:0}.speed-grid article>div{display:flex;justify-content:space-between;gap:10px;align-items:center}.speed-grid article>code{display:block;margin:12px 0;padding:8px 10px;background:#eef1e8;border-radius:5px;overflow:auto;font-size:.78rem}.speed-grid article p{font-size:.86rem;margin:8px 0;color:var(--muted)}.speed-grid article small{font:700 .71rem ui-monospace,monospace;color:#557161}.speed-tag{white-space:nowrap;border-radius:99px;padding:3px 8px;font-size:.66rem;font-weight:800;text-transform:uppercase}.speed-tag.fast{background:var(--lime)}.speed-tag.medium{background:#e4eadf}.speed-tag.slow{background:#f4d5cf;color:#7d2727}.timing-caveat{margin:0;padding:16px 20px 20px;border-top:1px dashed var(--line);font-size:.8rem;color:var(--muted)}@media(max-width:760px){.timing-intro,.speed-grid{grid-template-columns:1fr}}
