:root{color-scheme:light;--paper:#fff;--ink:#202523;--muted:#66716b;--line:#dfe4e0;--soft:#f5f7f4;--accent:#285c43}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}#renderer{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:0}main{position:relative;z-index:1;max-width:1600px;margin:auto;padding:16px 28px 56px;pointer-events:none}main>*{pointer-events:auto}.project-nav{display:flex;gap:22px;font-size:12px;background:#fff;padding-bottom:15px}a{color:var(--accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}header{display:flex;justify-content:space-between;gap:16px;align-items:baseline;padding:0 0 14px;background:#fff}h1{font-size:20px;font-weight:600;line-height:1.3;margin:0;letter-spacing:-.3px}h1 span{font-weight:450;margin-left:10px}h2{font-size:15px;font-weight:550;line-height:1.4;margin:0}.parameter-summary{color:var(--muted);font-size:12px;margin:0;white-space:nowrap;font-variant-numeric:tabular-nums}.stage{display:grid;grid-template-columns:repeat(var(--columns,2),minmax(0,1fr));gap:20px}.stage.single{max-width:720px;margin:auto;grid-template-columns:1fr}.stimulus{margin:0;min-width:0;pointer-events:none}.stimulus figcaption{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff;padding:0 0 8px;font-size:13px}.stimulus figcaption a{pointer-events:auto;text-decoration:none}.stimulus .descriptor{color:var(--muted);font-size:11px;text-align:right}.image-slot{width:100%;aspect-ratio:1;position:relative;background:transparent;pointer-events:none}.image-slot.not-ready{background:var(--soft)}.image-slot.not-ready:after{content:"Loading image…";display:grid;place-items:center;position:absolute;inset:0;color:var(--muted);font-size:12px}.image-slot.failed:after{content:"Image unavailable";color:#8b3028}.panel-note{display:flex;justify-content:space-between;gap:10px;background:white;padding:6px 0 0;min-height:24px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.exposure-state{font-size:10px;letter-spacing:.02em}.empty{display:grid;min-height:320px;place-items:center;background:var(--soft);text-align:center;color:var(--muted);padding:30px}.load-status{font-size:12px;color:var(--muted);background:#fff;margin:10px 0}.load-status:empty{display:none}.load-status.error{color:#913c30}.playback{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:16px 0 22px;background:#fff}.playback input[type=range]{flex:1;min-width:150px;accent-color:var(--accent)}output{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.check{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}button,select{font:inherit;background:#fff;border:1px solid var(--line);border-radius:5px;color:var(--ink);padding:7px 11px}button{cursor:pointer}button:hover{background:var(--soft)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;min-width:88px}button.primary:hover{background:#214d38}button:focus-visible,select:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.configuration{padding-top:20px;border-top:1px solid var(--line);background:#fff}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.muted{color:var(--muted);font-size:12px}.control-line{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.control-line>label{display:flex;gap:9px;align-items:center;color:var(--muted);font-size:12px}.segmented{display:flex;gap:0;border:1px solid var(--line);border-radius:5px;margin:0;padding:0;overflow:hidden}.segmented label{position:relative;cursor:pointer}.segmented input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.segmented span{display:block;padding:7px 12px;font-size:12px}.segmented input:checked+span{background:var(--ink);color:white}.segmented input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-3px}.parameters{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:20px}.parameters label{display:flex;flex-direction:column;gap:5px;font-size:12px}.parameters label small{color:var(--muted);font-size:10px;min-height:15px}.parameters label:nth-last-child(-n+2){justify-content:flex-end}.parameters select{width:100%}.choice-row{display:flex;gap:14px;flex-wrap:wrap}.choice-row label{display:flex;gap:6px;align-items:center;font-size:12px}.custom-conditions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.custom-item{display:flex;align-items:center;border:1px solid var(--line);border-radius:5px;padding-left:10px;font-size:12px}.custom-item button{border:0;margin-left:10px;font-size:15px;padding:4px 8px}.source-heading{margin-top:22px}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions button{font-size:11px;padding:5px 9px}.source-picker{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:10px}.source-choice{position:relative;border:1px solid var(--line);border-radius:4px;overflow:hidden;cursor:pointer;min-width:0}.source-choice input{position:absolute;top:8px;left:8px;margin:0;width:16px;height:16px;z-index:1}.source-choice img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--soft)}.source-choice span{display:block;padding:7px 8px;font-size:11px;line-height:1.35;background:#fff}.source-choice strong{display:block;font-size:10px;font-weight:450;color:var(--muted)}.source-choice:has(input:checked){border:2px solid var(--accent)}.source-choice:has(input:checked) img{margin-top:-1px}.source-choice:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.source-choice.filtered{opacity:.45}.support{background:#fff;border-top:1px solid var(--line);padding-top:16px;margin-top:24px;font-size:12px}.support summary{cursor:pointer;color:var(--muted)}.support-note{color:var(--muted);max-width:1000px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;margin:14px 0;font-size:12px}th,td{text-align:left;vertical-align:top;padding:10px;border-bottom:1px solid var(--line)}th{font-weight:550;white-space:nowrap}td{overflow-wrap:anywhere}td a{white-space:nowrap}td small{display:block;color:var(--muted)}.method-content{max-width:1000px;font-size:13px;line-height:1.6}.formula{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;overflow-wrap:anywhere;background:var(--soft);padding:14px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}[hidden]{display:none!important}
@media(min-width:1400px){.stage{gap:28px}main{padding-left:40px;padding-right:40px}}
@media(max-width:1000px){.source-picker{grid-template-columns:repeat(5,minmax(0,1fr))}header{display:block}.parameter-summary{margin-top:7px;white-space:normal}.parameters{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){main{padding:14px 14px 40px}.project-nav{gap:14px;font-size:11px}h1{font-size:18px}h1 span{margin-left:7px}.stage{grid-template-columns:1fr;gap:20px}.stimulus figcaption{font-size:12px}.playback{gap:9px}.playback input[type=range]{min-width:120px}.playback output{font-size:11px}.playback .check{font-size:11px}.control-line{gap:12px}.segmented span{padding:7px 9px}.parameters{gap:10px}.source-picker{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.source-choice span{font-size:10px;padding:6px}.section-heading{align-items:flex-start}.actions{gap:4px}.actions button{padding:4px 7px}.source-heading{flex-wrap:wrap}.support{font-size:11px}}
@media(max-width:380px){.source-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.parameters{grid-template-columns:repeat(2,minmax(0,1fr))}.playback input[type=range]{order:3;flex-basis:100%}.playback output{margin-left:auto}.control-line>label{flex:1}.control-line select{max-width:180px}h1{font-size:16px}}

.measured-conditions button{font-size:11px;padding:5px 8px;margin:0 6px 6px 0}

.playback-jump{display:none;font-size:11px;white-space:nowrap}.floating-playback #playback-anchor{min-height:84px}.floating-playback .playback{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:5;width:100%;max-width:1600px;padding:13px 28px;border-top:1px solid var(--line);box-shadow:0 -3px 14px #fff}.floating-playback .playback-jump{display:inline}.floating-playback main{padding-bottom:110px}#configuration,#display{scroll-margin-top:16px}@media(max-width:650px){.floating-playback .playback{padding:10px 14px;gap:8px}.floating-playback .playback input[type=range]{min-width:90px}.floating-playback .playback-jump{font-size:10px}}

.parameters input[type=range]{width:100%;height:14px;margin:3px 0 0;accent-color:var(--accent)}.parameters label:has(input[type=range]){position:relative}.parameters label:not(:has(input[type=range])){padding-bottom:17px}

.image-slot .source-master{display:block;width:100%;height:100%;object-fit:contain}

/* Display scaling never changes the calibrated 512 px stimulus buffer. */
.stage{grid-template-columns:repeat(var(--columns,2),minmax(0,1fr))}
.stage.single{grid-template-columns:1fr}
.fit-window .project-nav{padding-bottom:8px}
.fit-window header{padding-bottom:10px}
.fit-window #display{position:relative}
.fit-window .stage,.fit-window .stage.single{max-width:none;margin:0;width:100%;height:var(--fit-height,auto);grid-template-columns:repeat(var(--fit-columns,1),var(--fit-side,1fr));gap:var(--fit-gap,14px);justify-content:center;align-content:center}
.fit-window .stimulus{position:relative;width:var(--fit-side,100%)}
.fit-window .stimulus figcaption{height:38px;display:block;padding:0 0 4px;font-size:11px;line-height:16px;overflow:hidden}
.fit-window .stimulus figcaption a,.fit-window .stimulus .descriptor{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.fit-window .stimulus .descriptor{font-size:10px;line-height:14px}
.fit-window .panel-note{position:absolute;bottom:3px;left:3px;right:3px;min-height:0;padding:1px 3px;font-size:9px;line-height:12px;background:#ffffffe6;overflow:hidden;white-space:nowrap}
.fit-window .panel-note:not(:has(span:not(:empty))){display:none}
.fit-window .panel-note>span{overflow:hidden;text-overflow:ellipsis}
.fit-window .playback{padding:10px 0;gap:8px}
.fit-window .playback-jump{display:inline}
.fit-window .load-status{position:absolute;bottom:0;left:0;right:0;margin:0;padding:3px;background:#fffffff0}
.fit-window .stage.dense .stimulus figcaption{position:absolute;top:0;left:0;right:0;height:12px;padding:0 2px;background:#ffffffe6;font-size:8px;line-height:12px;z-index:2}
.fit-window .stage.dense .descriptor,.fit-window .stage.dense .panel-note{display:none}
.fit-window .stage.dense .stimulus figcaption a{line-height:12px}
@media(max-width:650px){.fit-window .parameter-summary{font-size:10px;margin-top:3px}.fit-window .project-nav{font-size:10px}.fit-window .playback button{font-size:11px;padding:5px 8px;min-width:0}.fit-window .playback input[type=range]{min-width:85px}.fit-window .playback-jump{font-size:10px}}

/* Classic is selected independently of natural backgrounds. The tile is a UI icon. */
.classic-preview{display:block;width:100%;aspect-ratio:1;background:repeating-linear-gradient(90deg,#ddd 0,#ddd 7%,#727272 14%,#ddd 21%)}
.classic-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:14px}
.classic-controls label{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted)}
.classic-controls p{font-size:11px;color:var(--muted);margin:0}
@media(max-width:650px){.classic-controls{gap:8px}.classic-controls label{flex-wrap:wrap}.classic-controls select{max-width:100%}}

/* Presentation layout: scientific pixels and calibration remain unchanged. */
body{font-size:17px}main{max-width:1500px;padding:18px 28px 56px}.project-nav,.fit-window .project-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px;padding:0}.project-nav a{font-size:18px;font-weight:550;padding:9px 13px;min-height:44px;text-decoration:none;border-radius:7px;background:#fff}.project-nav a:hover{background:var(--soft)}.project-nav [aria-current]{background:var(--accent);color:#fff}header,.fit-window header{display:block;padding-bottom:20px}h1{font-size:23px}.principle{font-size:21px;line-height:1.35;margin:5px 0 0}.principle strong{color:var(--accent)}button,select{font-size:17px;min-height:44px;padding:8px 12px}.fit-window .stimulus figcaption{height:48px;font-size:17px;line-height:1.4;padding-bottom:8px}.stimulus .descriptor,.fit-window .stimulus .descriptor,.panel-note,.fit-window .panel-note{display:none}.fit-window .playback,.playback{gap:12px;padding:12px 0}.playback output,.playback .check{font-size:16px}.fit-window .playback button{font-size:17px;min-height:44px}.playback-jump,.fit-window .playback-jump{display:none}.parameters{grid-template-columns:repeat(6,minmax(0,1fr));gap:18px}.parameters label{font-size:16px}.parameters label small{font-size:14px}.section-heading h2{font-size:23px}.muted{font-size:16px}.actions button{font-size:16px}.source-picker{grid-template-columns:repeat(auto-fill,minmax(125px,1fr))}.source-choice span{font-size:15px}.source-choice strong{font-size:14px}.support,.support summary,.control-line>label,.segmented span{font-size:16px}.support .parameter-summary{font-size:16px;white-space:normal}.classic-controls label,.classic-controls p{font-size:16px}.load-status{font-size:16px}#configuration{margin-top:22px}.scheme-tabs{display:flex;background:#fff}
@media(max-width:700px){main{padding:12px 14px 36px}.project-nav a{font-size:16px;padding:8px 10px}.parameters{grid-template-columns:repeat(2,minmax(0,1fr))}h1{font-size:22px}.principle{font-size:19px}.source-picker{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.fit-window .playback output{font-size:16px}}

.scheme-tabs{gap:6px;margin:0 0 18px;flex-wrap:wrap}.scheme-tabs a{font-size:16px;font-weight:500;padding:8px 12px;min-height:40px;background:#f4f6f2;color:#285b43;border:1px solid #dce3dd;text-decoration:none;border-radius:6px}.scheme-tabs [aria-current]{background:#e2ece5;color:#204c37;border-color:#9aafa1}

/* Balanced source columns; selected cards grow vertically without hidden items. */
.display-column{min-width:0;display:flex;flex-direction:column;gap:20px;align-self:start}
.column-title{font-size:19px;line-height:1.3;font-weight:600;min-height:25px;background:white;margin:0}
.display-column .stimulus{width:100%}.display-column .stimulus figcaption{height:30px}
.fit-window .stage{align-content:start;align-items:start;height:auto!important}.fit-window .stimulus{width:100%}
.source-picker{display:grid;grid-template-columns:1fr 1fr;gap:24px}.source-family{min-width:0}.source-family-heading{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px}.source-family-heading h3{font-size:19px;margin:0 auto 0 0}.source-family-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(115px,1fr));gap:10px}
@media(max-width:700px){.source-picker{grid-template-columns:1fr}.column-title{font-size:18px}.source-family-heading button{font-size:15px}}

.earlier-column video{width:100%;aspect-ratio:1;display:block;object-fit:contain;background:#eee;pointer-events:auto}.historical-parameters{font-size:15px;line-height:1.3;margin:8px 0 0;background:#fff}.earlier-column{pointer-events:auto}
