/* PySpark's technical visuals stay code-native, exact, and legible in both themes. */
.ps-lab{margin:clamp(1.25rem,3vw,2rem) 0 2rem;padding:clamp(1rem,3vw,1.5rem);border:1px solid var(--border-strong);border-left:4px solid var(--tape-orange);background:var(--paper-1);color:var(--ink-1);overflow:hidden}
.ps-lab__head{display:flex;align-items:center;gap:.8rem;margin-bottom:.8rem}
.ps-lab__head p{margin:0 0 .15rem;color:var(--text-accent);font:600 .68rem/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}
.ps-lab__head h2{margin:0;font:650 clamp(1.15rem,2vw,1.4rem)/1.25 var(--font-display);letter-spacing:-.02em}
.ps-lab__mark{display:grid;place-items:center;flex:0 0 2.55rem;width:2.55rem;height:2.55rem;background:var(--paper-2);color:var(--text-accent);border-radius:50%}
.ps-lab__mark svg{width:1.65rem;height:1.65rem;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ps-lab__intro,.ps-lab__truth,.ps-lab__output>p{font:.86rem/1.7 var(--font-body)}
.ps-lab__intro{margin:.5rem 0;color:var(--ink-2)}
.ps-lab__truth{margin:.75rem 0 1rem;padding:.7rem .8rem;background:var(--paper-2);color:var(--ink-3)}
.ps-lab__controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:.8rem 1rem;margin:0 0 1rem;padding:0;border:0}
.ps-lab__control{display:grid;gap:.45rem;min-width:0;color:var(--ink-2);font:600 .76rem/1.4 var(--font-body)}
.ps-lab__control span{display:flex;justify-content:space-between;gap:.5rem}
.ps-lab output{color:var(--text-accent);font-family:var(--font-mono)}
.ps-lab input[type="range"]{width:100%;min-height:28px;accent-color:var(--tape-orange);cursor:pointer}
.ps-choice{grid-column:1/-1;display:flex;gap:.65rem 1.15rem;flex-wrap:wrap;margin:0;padding:.7rem .8rem;border:1px solid var(--border-soft)}
.ps-choice legend{padding:0 .35rem;color:var(--ink-3);font:600 .7rem/1.4 var(--font-mono)}
.ps-choice label{display:inline-flex;align-items:center;gap:.45rem;min-height:32px;color:var(--ink-2);font:.78rem/1.4 var(--font-body);cursor:pointer}
.ps-choice input{accent-color:var(--tape-orange)}
.ps-lab__output{display:grid;gap:1rem;padding-top:1rem;border-top:1px solid var(--border-soft)}
.ps-lab__output h3{margin:0 0 .7rem;font:600 .78rem/1.4 var(--font-body);color:var(--ink-2)}
.ps-lab__output>p{margin:0;color:var(--ink-3)}
.ps-bars{display:flex;align-items:flex-end;gap:clamp(.25rem,1.4vw,.75rem);height:10rem;padding:.7rem .4rem 0;border-bottom:1px solid var(--border-strong);overflow-x:auto}
.ps-bar{display:grid;grid-template-rows:1fr auto auto;align-items:end;justify-items:center;gap:.2rem;min-width:2.3rem;height:100%;flex:1;color:var(--ink-3);font:.63rem/1.2 var(--font-mono)}
.ps-bar i{display:block;width:min(100%,3rem);height:var(--ps-bar);min-height:.35rem;background:var(--tape-orange);border-radius:3px 3px 0 0}
.ps-bar b{font-weight:650;color:var(--ink-2)}
.ps-bar small{font:inherit}
.ps-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0;background:var(--border-soft);border:1px solid var(--border-soft)}
.ps-facts div{display:grid;gap:.3rem;padding:.7rem;background:var(--paper-1);min-width:0}
.ps-facts dt{color:var(--ink-3);font:.64rem/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.04em}
.ps-facts dd{margin:0;color:var(--ink-1);font:650 .82rem/1.35 var(--font-body);overflow-wrap:anywhere}
.ps-lineage{display:grid;grid-template-columns:repeat(5,minmax(6.5rem,1fr));gap:.55rem;margin:0!important;padding:.4rem 0 .8rem!important;list-style:none!important;overflow-x:auto}
.ps-lineage li{position:relative;display:grid;align-content:start;gap:.3rem;min-height:7rem;padding:.65rem;border:1px solid var(--border-soft);background:var(--paper-2)}
.ps-lineage li:not(:last-child)::after{content:"";position:absolute;top:50%;right:-.56rem;width:.56rem;border-top:1px solid var(--text-accent)}
.ps-lineage li[data-boundary="true"]{border-bottom:3px solid var(--tape-orange)}
.ps-lineage li[data-action="true"]{background:var(--ink-1);color:var(--paper-1)}
.ps-lineage span{font:.62rem var(--font-mono);color:var(--text-accent)}
.ps-lineage li[data-action="true"] span{color:var(--paper-1)}
.ps-lineage strong{font:650 .76rem/1.3 var(--font-body)}
.ps-lineage small{font:.65rem/1.45 var(--font-body);color:var(--ink-3)}
.ps-lineage li[data-action="true"] small{color:var(--paper-3)}
.ps-compare{display:grid;grid-template-columns:1fr 1fr;gap:1rem;min-width:0}
.ps-compare .ps-bars{height:8rem}
.ps-table-wrap{overflow-x:auto;border:1px solid var(--border-soft)}
.ps-table-wrap table{width:100%;min-width:47rem;border-collapse:collapse;font:.72rem/1.5 var(--font-body)}
.ps-table-wrap caption{text-align:left;padding:.65rem;color:var(--ink-3);font:.67rem/1.4 var(--font-mono)}
.ps-table-wrap :is(th,td){padding:.55rem .65rem;border-top:1px solid var(--border-soft);text-align:left}
.ps-table-wrap thead th{color:var(--ink-3);font-weight:600;background:var(--paper-2)}
.ps-table-wrap tbody tr[data-state="operator-specific"] td:last-child{color:var(--text-accent);font-weight:650}
.ps-plan{display:grid;grid-template-columns:minmax(0,1fr) 3.75rem minmax(0,1fr);align-items:center;gap:.75rem}
.ps-plan>div{display:grid;gap:.35rem;min-height:5.5rem;align-content:center;padding:.8rem;border:1px solid var(--border-soft);background:var(--paper-2)}
.ps-plan>div[data-changed="true"]{border-color:var(--tape-orange)}
.ps-plan span,.ps-pipeline span{color:var(--ink-3);font:.63rem/1.4 var(--font-mono);text-transform:uppercase}
.ps-plan strong,.ps-pipeline strong{font:650 .8rem/1.45 var(--font-body);overflow-wrap:anywhere}
.ps-plan svg{width:100%;fill:none;stroke:var(--text-accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ps-pipeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--border-soft);border:1px solid var(--border-soft)}
.ps-pipeline>div{display:grid;align-content:start;gap:.45rem;padding:.8rem;background:var(--paper-1)}
.ps-pipeline[data-leaked="true"]{border-color:var(--tape-orange)}
.ps-lab__status{min-height:1.4rem;margin:.65rem 0 0;color:var(--text-accent);font:.68rem/1.5 var(--font-mono)}
.ps-lab__reset{min-height:44px;margin-top:.25rem;padding:.55rem .8rem;border:1px solid var(--border-strong);background:transparent;color:var(--ink-2);font:600 .72rem var(--font-body);cursor:pointer}
.ps-lab :is(input,button):focus-visible{outline:2px solid var(--text-accent);outline-offset:3px}
.ps-lab :is(.ps-bars,.ps-lineage,.ps-table-wrap):focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
@media(max-width:620px){.ps-facts,.ps-pipeline{grid-template-columns:1fr}.ps-compare{grid-template-columns:1fr}.ps-plan{grid-template-columns:1fr}.ps-plan svg{width:3rem;justify-self:center;transform:rotate(90deg)}.ps-bars{height:8rem}.ps-choice{display:grid}}
@media(prefers-reduced-motion:reduce){.ps-lab *{scroll-behavior:auto!important;transition:none!important}}
