/* Scoped companion styling; the existing site stylesheet remains unchanged. */
:root{--lab-teal:#0F6E6B;--lab-amber:#E29A2D;--lab-sand:#DFC98F;--lab-graphite:#333F4A}
body{margin:0;background:var(--paper,#F4F5F3);color:var(--ink,#101418)}
#quarto-content,#quarto-document-content{padding:0!important;margin:0!important;max-width:none!important;width:100%!important}
.lab-nav{max-width:1240px;margin:auto;min-height:70px;padding:18px 30px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}
.lab-nav nav{display:flex;gap:26px;font:12px 'IBM Plex Mono',monospace}.lab-nav a{color:var(--prussian)}
.lab-page{max-width:1240px;margin:auto;padding:0 30px}.lab-heading{padding:45px 0 30px}.lab-heading h1{font-size:clamp(36px,4.6vw,60px);margin:8px 0 14px}.heading-dot{color:var(--lab-teal)}
.lab-lede{font-size:21px;color:var(--ink-soft)}.mode-note{font:11px 'IBM Plex Mono',monospace;color:var(--ink-soft);margin-top:20px;line-height:1.6}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--lab-teal);margin-right:7px}
.lab-tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);gap:16px}.lab-tabs button{border:0;border-bottom:3px solid transparent;background:none;text-align:left;padding:16px 12px 17px;cursor:pointer;color:var(--ink-soft);font:600 17px Archivo,system-ui,sans-serif}.lab-tabs button span{display:block;font:10px 'IBM Plex Mono',monospace;letter-spacing:.08em;margin-bottom:8px}.lab-tabs button[aria-selected=true]{border-bottom-color:var(--lab-teal);color:var(--lab-teal);background:rgba(15,110,107,.035)}
.experiment-intro{display:flex;justify-content:space-between;align-items:center;gap:28px;margin:30px 0 25px}.experiment-intro h2{font-size:27px;margin:8px 0 10px}.experiment-intro p:last-child{color:var(--ink-soft);max-width:72ch;font-size:16px}.experiment-intro .mono{font-size:10px;color:var(--lab-teal)}.chapter-link{font:12px Archivo,sans-serif;white-space:nowrap;border-bottom:1px solid var(--prussian);padding:5px 0}
.experiment-grid{display:grid;grid-template-columns:290px minmax(0,1fr);gap:25px;align-items:start}.control-panel{border:1px solid var(--line);padding:24px;background:#fff}.step-label{font:10px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--lab-teal);margin-bottom:10px}.control-panel h3,.reflection-panel h3{font-size:18px;margin:0 0 18px}.control-panel label,.reflection-panel label{display:block;font:12px Archivo,system-ui,sans-serif;line-height:1.5;margin:14px 0 7px}.control-panel select{width:100%}select,textarea{border:1px solid var(--line);border-radius:3px;background:var(--paper);padding:10px;color:var(--ink);font:13px Archivo,system-ui,sans-serif;max-width:100%}.control-help{font:11px/1.65 Archivo,system-ui,sans-serif;color:var(--ink-soft);margin:12px 0 0}.control-divider{height:1px;background:var(--line);margin:25px 0}.primary-button{width:100%;border:0;background:var(--lab-teal);color:white;padding:13px 10px;margin-top:22px;font:600 13px Archivo,system-ui,sans-serif;cursor:pointer;border-radius:3px}.primary-button:hover{filter:brightness(.92)}.text-button{display:block;background:none;border:0;color:var(--prussian);font:12px Archivo,sans-serif;margin:14px auto;cursor:pointer}
.result-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:25px}.result-heading .step-label{margin:0}.result-heading span{font:11px Archivo,sans-serif;color:var(--ink-soft)}.lab-metrics{display:grid;grid-template-columns:1.25fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:13px 0 20px;padding:20px 0}.lab-metric{padding:0 18px;border-left:1px solid var(--line)}.lab-metric:first-child{border-left:0;padding-left:0}.lab-metric p{font:11px Archivo,sans-serif;color:var(--ink-soft);margin-bottom:8px}.lab-metric strong{font:600 clamp(22px,2.3vw,31px) Archivo,sans-serif;display:block;white-space:nowrap}.primary-metric strong{color:var(--lab-teal)}.lab-metric span{font:10px/1.5 Archivo,sans-serif;color:var(--ink-soft);display:block;margin-top:8px}.chart-card{border:1px solid var(--line);background:white;padding:15px 15px 12px}.chart-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px}.chart-toolbar label{font:600 13px Archivo,sans-serif}.chart-toolbar select{padding:6px 9px;font-size:11px}.chart-caption{font:10px/1.5 Archivo,sans-serif;color:var(--ink-soft);padding:0 8px}.interpretation{padding:22px 2px 0}.interpretation>p:last-child{font-size:15px;color:var(--ink-soft);line-height:1.65}.feedback{margin-top:14px;padding:12px 16px;background:rgba(223,201,143,.25);border-left:3px solid var(--lab-amber);font:13px/1.6 Archivo,sans-serif}.lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin:38px 0 50px;border-top:1px solid var(--line);padding-top:28px}details{border-bottom:1px solid var(--line);padding:16px 0}summary{font:600 15px Archivo,sans-serif;cursor:pointer}details p{font-size:14px;margin-top:15px}.check-row{display:flex;justify-content:space-between;gap:15px;padding:9px 0;border-bottom:1px dotted var(--line);font:12px/1.5 Archivo,sans-serif}.check-row:first-child{margin-top:14px}.check-row span:last-child{text-align:right;color:var(--lab-teal)}.equation{background:var(--paper-2);padding:12px;margin-top:14px}.equation strong{display:block;font:12px Archivo,sans-serif}.equation code{display:block;font:12px/1.6 'IBM Plex Mono',monospace;margin-top:8px;white-space:normal}.equation p{margin:8px 0 0;font-size:13px}.reflection-panel{padding:16px 0}.reflection-panel>p:not(.step-label):not(.control-help){font-size:15px;color:var(--ink-soft)}textarea{display:block;width:100%;resize:vertical;min-height:110px;background:white}.export-actions{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-top:14px}.export-actions button{border:1px solid var(--prussian);color:var(--prussian);background:transparent;border-radius:3px;padding:9px 12px;font:12px Archivo,sans-serif;cursor:pointer}.export-actions a{font:12px Archivo,sans-serif}.table-scroll{overflow:auto;margin-top:16px}table{width:100%;border-collapse:collapse;font:11px/1.5 Archivo,sans-serif}th,td{padding:8px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}.book-strip{display:grid;grid-template-columns:1.4fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:28px 0;gap:26px;align-items:center}.book-strip h2{font-size:22px;margin-top:10px}.book-strip a{font:600 16px Archivo,sans-serif;border-left:1px solid var(--line);padding-left:22px}.book-strip a span{display:block;font:12px Archivo,sans-serif;color:var(--ink-soft);margin-top:8px}.lab-footer{font:11px/1.8 Archivo,sans-serif;color:var(--ink-soft);padding:30px 0 45px}.lab-page #loading{padding:30px 0}button:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--lab-amber);outline-offset:3px}[hidden]{display:none!important}
@media(max-width:850px){.experiment-grid{grid-template-columns:240px minmax(0,1fr);gap:18px}.experiment-intro{display:block}.chapter-link{display:inline-block;margin-top:12px}.lab-metrics{grid-template-columns:1fr 1fr;gap:15px}.primary-metric{grid-column:1/-1}.lab-metric:nth-child(2){border:0;padding:0}.lab-metric strong{font-size:25px}.lab-page{padding:0 20px}.control-panel{padding:18px}}
@media(max-width:620px){.lab-nav{padding:16px 20px;align-items:flex-start}.lab-nav nav{gap:10px;font-size:10px;flex-wrap:wrap;justify-content:flex-end}.brand{font-size:12px}.brand span{display:block}.lab-heading{padding:30px 0 23px}.lab-lede{font-size:17px}.mode-note{font-size:9px}.lab-tabs{gap:4px}.lab-tabs button{font-size:12px;padding:12px 7px}.lab-tabs button span{font-size:8px;line-height:1.4}.experiment-intro h2{font-size:23px}.experiment-grid,.lower-grid,.book-strip{grid-template-columns:1fr}.control-panel{display:block}.control-divider{margin:18px 0}.primary-button{margin-top:16px}.result-panel{margin-top:8px}.lab-metrics{grid-template-columns:1fr 1fr}.chart-card{padding:10px 4px}.chart-toolbar{padding:0 8px}.lower-grid{gap:15px}.book-strip a{border-left:0;border-top:1px solid var(--line);padding:16px 0 0}.lab-footer{font-size:10px}}
/* Plotly uses percentage-height inner containers; reserve their real height. */
#chart{height:370px;width:100%;min-width:0;position:relative}
.check-row .stress-fail{color:var(--lab-graphite)!important;border-left:3px solid var(--lab-amber);padding-left:8px}

.problem-browser{display:flex;gap:20px;align-items:end;padding:22px 0;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:32px}.problem-browser label{display:block;font-size:.8rem;margin-bottom:7px}.problem-browser select{width:100%;min-width:0;padding:10px;font:inherit}.problem-select{flex:1;min-width:0}.problem-actions{display:flex;gap:8px}.problem-actions button{padding:10px;border:1px solid #ccc;background:transparent;cursor:pointer}.problem-actions button:disabled{opacity:.4;cursor:default}@media(max-width:760px){.problem-browser{flex-wrap:wrap}.problem-browser>div{width:100%}.problem-select{flex-basis:100%}.problem-browser select{font-size:.85rem}.problem-actions{justify-content:space-between}}
