:root{--lab-ink:#151515;--lab-muted:#555;--lab-rule:#c6c6c6;--lab-faint:#eeeeee;--lab-font:"Times New Roman",SimSun,"Songti SC",serif}
body.virtual-lab{background:#fff;color:var(--lab-ink);font-family:var(--lab-font);font-size:18px;line-height:1.7;margin:0}
.virtual-lab .lab-shell{max-width:1380px;padding:26px 32px 50px;margin:auto;box-sizing:border-box}
.virtual-lab .site-nav{max-width:1380px;margin:auto;box-sizing:border-box;font-family:var(--lab-font)}
.lab-heading{position:relative;margin-bottom:24px}.lab-heading h1{font-size:38px;line-height:1.3;margin:0 0 8px;font-weight:700}.lab-heading p{margin:0;color:#444}.lab-nav{display:flex;gap:26px;margin-top:17px;border-bottom:1px solid #aaa;padding-bottom:8px}.virtual-lab a{color:#222;text-decoration-thickness:1px;text-underline-offset:4px}.lab-nav a{text-decoration:none}.lab-nav a:hover{text-decoration:underline}
.workbench{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(295px,1fr);gap:20px;align-items:stretch}.instrument,.parameters{border:1px solid var(--lab-rule);padding:20px;min-width:0}.instrument{display:flex;flex-direction:column;justify-content:center}.parameters h2{margin:0 0 20px}.virtual-lab h2{font-size:25px;line-height:1.4;font-weight:700;margin:26px 0 16px}.virtual-lab h3{font-size:21px}.virtual-lab p{margin-top:8px;margin-bottom:12px}.parameters>label{display:flex;justify-content:space-between;gap:12px;margin-top:14px}.parameters>label:first-of-type{margin-top:0}.parameters output{font-variant-numeric:tabular-nums;font-size:22px;min-width:50px;text-align:right}.parameters .range-ends{display:flex;justify-content:space-between;font-size:14px;color:var(--lab-muted);margin:0 0 18px}.parameters input[type=range]{width:100%;accent-color:#181818;display:block;margin:14px 0 4px;min-height:18px}.virtual-lab input,.virtual-lab button,.virtual-lab select{font-family:var(--lab-font);font-size:17px;color:var(--lab-ink);box-sizing:border-box}.virtual-lab input[type=number]{width:92px;text-align:right;padding:6px 8px;border:1px solid #888;background:#fff}.field-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:16px 0 7px}.virtual-lab button,.virtual-lab select{border:1px solid #777;background:#fff;border-radius:2px;padding:7px 18px;min-height:38px;cursor:pointer}.virtual-lab button:hover{background:#f1f1f1}.virtual-lab button:disabled{color:#888;border-color:#ccc;cursor:default;background:#fff}.virtual-lab button:focus-visible,.virtual-lab input:focus-visible,.virtual-lab select:focus-visible,.virtual-lab a:focus-visible{outline:2px solid #444;outline-offset:4px}.virtual-lab button.text-button{border:none;padding:0;min-height:0;text-decoration:underline;text-underline-offset:3px;font-size:15px}.virtual-lab .wide{width:100%;margin-top:10px}.virtual-lab .help{font-size:15px;color:var(--lab-muted);line-height:1.65}.parameters .checkbox{font-size:16px;justify-content:flex-start;align-items:center;margin-top:15px}.checkbox input{accent-color:#111}#status{font-size:15px;min-height:2.6em;color:#444;margin-bottom:0}#pendulum{display:block;width:100%;height:auto;min-height:250px;max-height:390px}.playback{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin:5px 0 10px}.playback output{font-variant-numeric:tabular-nums;display:inline-block;min-width:5ch}.caption,figcaption{font-size:16px;text-align:center;line-height:1.65;margin:12px 0 0}.timer-section{margin:26px 0;border-top:1px solid #aaa;border-bottom:1px solid #aaa;padding:0 0 12px;display:grid;grid-template-columns:1fr auto;gap:8px 30px}.timer-section h2{margin-top:20px}.timer-section p{font-size:16px}.timer-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.timer-controls output{font-size:25px;min-width:110px;text-align:center;font-variant-numeric:tabular-nums}#timer-status{grid-column:1/-1;margin:0;color:#555;font-size:15px}.analysis-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}.analysis-grid figure{margin:0;min-width:0}.analysis-grid svg{width:100%;height:auto;display:block;overflow:visible}.summary{display:flex;justify-content:center;gap:10px 24px;flex-wrap:wrap;font-size:16px;margin:14px 0}.table-scroll{overflow-x:auto}.virtual-lab table{border-collapse:collapse;width:100%;font-size:16px;white-space:nowrap}.virtual-lab table caption{caption-side:top;text-align:center;font-size:17px;margin:0 0 10px}.virtual-lab th,.virtual-lab td{padding:8px 10px;text-align:right;border-bottom:1px solid #ddd}.virtual-lab th{font-weight:400;border-top:1px solid #555;border-bottom:1px solid #888}.virtual-lab th:first-child,.virtual-lab td:first-child{text-align:left}.record-panel{min-width:0}.record-panel .table-scroll{max-height:305px;min-height:175px}.record-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.record-actions button{font-size:15px;padding:5px 10px}.lower-analysis{border-top:1px solid #ddd;margin-top:24px;padding-top:20px}.fit-filter{display:flex;align-items:center;gap:16px;margin-bottom:6px}.fit-filter select{padding:5px 12px}.lower-analysis p{font-size:16px}.observation-section,.evidence-section{border-top:1px solid #aaa;padding-top:5px;margin-top:30px}.observation-section table{max-width:850px;margin:auto}.equation{overflow-x:auto;padding:6px 0}.evidence-section{max-width:1050px}.evidence-section li{margin-bottom:10px}.virtual-lab .site-footer{font-family:var(--lab-font)}.virtual-lab svg text{font-family:var(--lab-font);fill:#222}#references ol{padding-left:1.5em}.lab-shell section{scroll-margin-top:24px}
@media(max-width:900px){.virtual-lab .lab-shell{padding:22px 20px}.workbench{grid-template-columns:1.4fr 1fr;gap:14px}.instrument,.parameters{padding:16px}.parameters h2{margin-top:0}.analysis-grid{grid-template-columns:1fr}.timer-section{grid-template-columns:1fr}.timer-controls{justify-content:flex-start}.lab-heading h1{font-size:32px}.playback{gap:10px}.virtual-lab button{padding:7px 12px}}
@media(max-width:650px){body.virtual-lab{font-size:17px}.virtual-lab .lab-shell{padding:18px 15px 32px}.workbench{grid-template-columns:1fr}.parameters{padding:18px}.lab-heading h1{font-size:29px}.lab-heading p{font-size:17px}.lab-nav{gap:22px;font-size:16px}.virtual-lab h2{font-size:23px}.virtual-lab .site-nav{padding:12px 15px;gap:12px;font-size:15px}.virtual-lab .site-nav a{white-space:nowrap}.timer-controls{gap:9px}.timer-controls output{width:100%;text-align:left}.virtual-lab th,.virtual-lab td{padding:7px 9px}#pendulum{min-height:200px}.summary{font-size:15px;justify-content:flex-start}.analysis-grid{gap:24px}.caption,figcaption{font-size:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{.site-nav,.lab-nav,.playback,.parameters input,.timer-controls button,.record-actions{display:none}.virtual-lab .lab-shell{padding:0}.workbench,.analysis-grid{display:block}figure,.instrument,table{break-inside:avoid}.virtual-lab{font-size:12pt}}

.summary .metric{text-align:center}.summary .metric-label,.summary .metric-value{display:block}.summary .metric-label{color:#555;font-size:14px}.summary .metric-value{font-size:19px;font-variant-numeric:tabular-nums}.record-panel td button{padding:2px 7px;min-height:28px;font-size:14px}

@media(max-width:650px){.analysis-grid svg text{font-size:21px}.analysis-grid svg{margin-bottom:8px}}

.virtual-lab .table-title{text-align:center;font-size:17px;margin:0 0 10px}.parameters h2{margin-top:0}.parameters label>span{min-width:0}
.fit-filter{min-height:42px}
#string{width:100%;height:auto;display:block;max-height:430px}.measurement-section{border-bottom:1px solid #aaa;padding-bottom:24px}.marker-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}.marker-grid label{display:block}.marker-grid input{width:100%;display:block;accent-color:#222;min-height:28px}.marker-grid output{float:right;font-variant-numeric:tabular-nums}.record-actions label{display:flex;gap:10px;align-items:center}.record-panel .table-scroll{max-height:400px}.lab-nav{flex-wrap:wrap}.observation-section .checkbox{display:flex;gap:10px;margin-top:20px}.analysis-grid>div{min-width:0}.parameters input[type=number]{width:95px}.fit-filter select{min-width:0;max-width:100%}@media(max-width:650px){.marker-grid{grid-template-columns:1fr;gap:14px}.analysis-grid svg text{font-size:17px}.lab-nav{gap:12px 20px}.fit-filter{flex-wrap:wrap}.record-actions label{flex-wrap:wrap}}

#summary .metric{min-width:115px}#summary .metric-value{white-space:nowrap}@media(max-width:650px){#string{min-height:260px}#summary{justify-content:center;gap:12px 20px}#summary .metric-value{font-size:19px}}
