:root{color-scheme:light;--paper:#f4f3ee;--ink:#272a2a;--muted:#686e66;--line:#d1d5ca;--accent:#9a482f;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif;--mono:'Courier New',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.6 var(--sans);-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-underline-offset:5px}button,input,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}button:disabled{opacity:.45;cursor:default}button,a,input,summary{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent)}::selection{background:#dbc9b8;color:#262c27}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}h1,h2,h3{font-family:var(--serif)}.wrap{width:min(1200px,calc(100% - 100px));margin-inline:auto}.mono,.eyebrow{font:10px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.07em}.eyebrow{color:var(--muted)}.skip{position:fixed;top:-100px;left:12px;padding:12px 20px;background:var(--ink);color:var(--paper);z-index:100}.skip:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);margin:-1px;white-space:nowrap}.header{height:87px;display:flex;align-items:center;justify-content:space-between;gap:25px;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:16px;text-decoration:none;font-size:12px;min-height:44px}.identity-mark{font:italic 33px/.8 var(--serif);letter-spacing:-4px;position:relative;width:34px;height:31px;border-bottom:1px solid var(--ink)}.identity-mark>span{position:relative;top:5px}.handle{font-family:var(--mono);font-size:10px;color:var(--muted);margin-left:12px}.header nav{display:flex;gap:32px;align-items:center}.header nav a{display:flex;align-items:center;gap:6px;min-height:44px;font-size:11px;text-decoration:none}.header nav a:hover{color:var(--accent)}.intro{padding-block:41px 34px;display:flex;justify-content:space-between;gap:35px;align-items:flex-end}.intro .eyebrow{font-size:9px;margin-bottom:13px}.intro h1{font-size:clamp(42px,4.5vw,65px);line-height:1.12;letter-spacing:-.05em}.intro h1 em{color:#636c62;font-weight:400}.intro-note{font-size:12px;line-height:1.85;padding-bottom:4px;color:var(--muted)}.study{border-top:1px solid var(--ink)}.study-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;height:55px;border-bottom:1px solid var(--line)}.study-heading h2{display:flex;align-items:center;gap:30px;font-family:var(--sans);font-size:11px}.study-heading .mono{font-size:8px}.study-name{color:#4f574e}.study-spec{color:var(--muted)}.viewport{height:446px;position:relative;isolation:isolate;overflow:hidden}.viewport canvas,.fallback{width:100%;height:100%;display:block}.viewport canvas{touch-action:pan-y}.experiment-menu{position:absolute;left:0;top:41px;width:235px;z-index:3;pointer-events:none}.experiment-menu>*{pointer-events:auto}.menu-caption{font-size:8px;color:var(--muted);margin-bottom:14px}.mode-buttons{display:flex;flex-direction:column;gap:5px}.mode{width:100%;display:flex;align-items:center;gap:13px;padding:14px 10px 14px 0;min-height:62px;border-bottom:1px solid transparent;text-align:left}.mode-number{font:10px var(--mono);color:#878e80;align-self:flex-start;margin-top:3px}.mode strong{display:block;font-weight:400;font-size:12px;line-height:1.35}.mode-description{display:block;color:var(--muted);font:9px/1.5 var(--mono);margin-top:5px;letter-spacing:-.1px}.mode-arrow{margin-left:auto;font-size:18px;opacity:0}.mode[aria-pressed=true]{border-color:#bdc5b6}.mode[aria-pressed=true] .mode-number,.mode[aria-pressed=true] strong{color:var(--accent)}.mode[aria-pressed=true] .mode-arrow{opacity:1;color:var(--accent)}.mode:hover{background:#e9ebe3}.experiment-observation{font:italic 21px/1.4 var(--serif);margin:28px 0 0 26px;color:#525e50;max-width:193px;letter-spacing:-.02em}.scene-tools{position:absolute;right:10px;top:8px;display:flex;gap:1px;align-items:center;z-index:3}.scene-tools button{width:44px;min-height:44px;font-size:21px}.scene-tools button:hover{color:var(--accent)}.scene-tools .mono{font-size:8px;color:var(--muted)}.scene-stamp{position:absolute;right:16px;bottom:22px;text-align:right;font-size:7px;line-height:1.8;color:#6a7665;pointer-events:none}.target-handle{position:absolute;width:48px;height:48px;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;border:1px solid #9a482f38;border-radius:50%;touch-action:none;cursor:grab;background:#9a482f03}.target-handle:hover,.target-handle:focus-visible{border-color:var(--accent);background:#9a482f0d}.target-handle:active{cursor:grabbing}.target-handle:disabled{cursor:default;opacity:1;border-color:transparent}.target-tooltip{position:absolute;bottom:-23px;left:50%;transform:translateX(-50%);white-space:nowrap;font:9px var(--mono);color:var(--accent);background:#f4f3eee8;padding:3px 6px;pointer-events:none}.target-handle:disabled .target-tooltip{display:none}.instrument{min-height:69px;border-block:1px solid var(--line);display:flex;align-items:center;gap:26px;padding-block:8px}.parameter{display:flex;align-items:center;gap:20px;flex:1;max-width:570px}.parameter label{font:10px var(--mono);white-space:nowrap;min-width:113px}.parameter label span{font-style:italic;font-family:var(--serif);font-size:13px;padding-left:4px}.parameter output{font:10px var(--mono);white-space:nowrap;min-width:70px;font-variant-numeric:tabular-nums;color:var(--muted)}input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;min-height:44px;cursor:pointer;margin:0;width:100%;min-width:40px}input[type=range]::-webkit-slider-runnable-track{background:#b4bcb0;height:1px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;border:2px solid var(--paper);outline:1px solid #626f60;background:#5d6a5b;margin-top:-5px}input[type=range]::-moz-range-track{background:#b4bcb0;height:1px}input[type=range]::-moz-range-thumb{width:10px;height:10px;border-radius:50%;border:2px solid var(--paper);outline:1px solid #626f60;background:#5d6a5b}.transport{display:flex;gap:10px;align-items:center;margin-left:auto}.transport button{min-height:44px;min-width:60px;font:10px var(--mono);display:flex;align-items:center;justify-content:center;gap:12px}.transport .play{border:1px solid #aeb7a5;padding-inline:14px;min-width:86px}.transport .play:hover{background:#e3e7db}.transport #reset:hover{color:var(--accent)}.overlays{display:flex;gap:17px;border-left:1px solid var(--line);padding-left:22px}.overlays button{font:9px var(--mono);min-height:44px;white-space:nowrap;display:flex;align-items:center;gap:6px}.overlays button:before{content:'';width:6px;height:6px;border:1px solid #8e9887;display:block}.overlays button[aria-pressed=true]:before{background:var(--accent);border-color:var(--accent)}.readout{display:flex;gap:33px;align-items:center;padding-block:16px;border-bottom:1px solid var(--line)}.readout>div{display:flex;align-items:center;gap:13px}.readout .mono{font-size:7px;color:var(--muted)}.readout output{font:11px var(--mono);font-variant-numeric:tabular-nums;min-width:73px}.readout>div:nth-child(2) output{min-width:10px}.solver-state{margin-left:auto;color:#506748!important}.solver-state:before{content:'';display:inline-block;width:4px;height:4px;margin-right:7px;background:currentColor;border-radius:50%;vertical-align:middle}.solver-state[data-warning=true]{color:var(--accent)!important}.method-link{font-size:10px;text-decoration:none;min-height:44px;display:flex;align-items:center;gap:18px;margin-block:-14px}.method-link:hover{text-decoration:underline}.caption{padding-top:13px;display:flex;align-items:baseline;justify-content:space-between;gap:15px;color:var(--muted)}.caption p{font-size:10px}.caption-label{font:9px var(--mono);margin-right:13px;color:var(--ink)}.caption>.mono{font-size:7px;white-space:nowrap}.no-js{font-size:12px;border-top:1px solid var(--line);padding:18px 0;color:var(--muted)}.work{padding-block:65px 40px}.section-heading{display:flex;align-items:baseline;gap:45px;margin-bottom:29px}.section-heading .eyebrow{font-size:8px;min-width:147px}.section-heading h2{font-size:34px;letter-spacing:-.04em;line-height:1.2}.section-heading h2 em{color:#646f60}.works{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px}.work-item{border-top:1px solid #a8b29e;padding-block:22px 4px}.work-index{font-size:7px;color:var(--muted);letter-spacing:.03em}.work-item h3{font-size:29px;line-height:1.2;letter-spacing:-.025em;margin:15px 0 12px}.work-item p{font-size:12px;color:var(--muted);line-height:1.8}.work-item>div{display:flex;gap:24px;margin-top:18px}.work-item a{display:inline-flex;align-items:center;min-height:44px;font-size:10px;text-decoration:none}.work-item a:hover{color:var(--accent);text-decoration:underline}.all-work{display:flex;align-items:center;justify-content:flex-end;gap:20px;min-height:44px;font-size:10px;text-decoration:none;margin-top:10px}.all-work:hover{color:var(--accent)}.contact{display:flex;align-items:center;justify-content:space-between;gap:40px;border-top:1px solid var(--ink);padding-block:34px 40px}.contact .eyebrow{font-size:8px;margin-bottom:12px}.contact h2{font-size:36px;letter-spacing:-.04em}.contact p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8;margin-top:10px}.contact-links{min-width:240px}.contact-links>a{display:flex;align-items:center;justify-content:space-between;min-height:54px;font:21px var(--serif);border-bottom:1px solid #a1ad95;text-decoration:none}.contact-links>a:hover{color:var(--accent)}.contact-links>div{display:flex;gap:25px;margin-top:14px}.contact-links>div>a{display:flex;align-items:center;min-height:44px;font-size:10px;text-decoration:none}.footer{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:80px;padding-block:12px}.footer .mono{font-size:8px;color:var(--muted)}.footer button{font:9px var(--mono);min-height:44px;text-decoration:underline;text-underline-offset:5px}.footer button:hover{color:var(--accent)}dialog{width:min(570px,calc(100% - 30px));max-height:calc(100dvh - 34px);background:var(--paper);color:var(--ink);border:1px solid #9fa996;padding:39px 36px 33px;box-shadow:0 20px 100px #242f2430}dialog::backdrop{background:#18211a77;backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:12px;top:10px;min-width:44px;min-height:44px;font-size:25px}.dialog-close:hover{color:var(--accent)}dialog .eyebrow{font-size:8px;max-width:85%}dialog h2{font-size:43px;line-height:1.1;letter-spacing:-.04em;margin:19px 0 24px}dialog h2 em{color:#66735f}dialog p:not(.eyebrow){font-size:13px;line-height:1.8;color:#555f51;margin-bottom:15px}.equation{background:#e8ebe1;border-block:1px solid #d4dbcc;font:17px/1.6 var(--serif);padding:15px 20px;margin:19px 0;overflow-x:auto;white-space:nowrap}details{margin-top:24px;border-block:1px solid var(--line);padding:4px 0}summary{font-size:11px;min-height:44px;display:list-item;padding-block:14px;cursor:pointer}details p:first-of-type{margin-top:12px}.damping-label{font:10px var(--mono);display:flex;justify-content:space-between;align-items:center;margin-top:20px}.references{margin-top:24px}.references .eyebrow{margin-bottom:7px}.references a{display:flex;align-items:center;min-height:44px;font-size:11px}.viewport.is-dragging .target-tooltip{display:none}
@media(min-width:1500px){.viewport{height:485px}.intro{padding-block:46px 41px}.intro h1{font-size:68px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.intro h1{font-size:52px}.intro-note{font-size:11px}.study-heading h2{gap:20px}.study-spec{font-size:7px!important}.experiment-menu{width:215px;top:33px}.mode{gap:9px}.mode-description{font-size:8px}.mode strong{font-size:11px}.experiment-observation{font-size:20px;margin-top:25px}.viewport{height:416px}.instrument{gap:14px}.parameter{gap:15px}.parameter label{font-size:9px;min-width:107px}.parameter output{font-size:9px;min-width:66px}.overlays{gap:14px;padding-left:14px}.overlays button{font-size:8px}.readout{gap:20px}.readout>div{gap:10px}.readout output{font-size:10px;min-width:60px}.method-link{font-size:9px;gap:10px}.caption p{font-size:9px}.caption>.mono{font-size:6px}.works{gap:25px}.work-item h3{font-size:27px}}
@media(max-width:850px){.wrap{width:calc(100% - 44px)}.header{height:75px}.intro{padding-block:31px 29px;gap:25px}.intro .eyebrow{font-size:8px}.intro h1{font-size:44px}.intro-note{font-size:10px}.study-spec{display:none}.study-heading{height:47px}.viewport{height:365px}.experiment-menu{width:192px;top:23px}.menu-caption{font-size:7px;margin-bottom:9px}.mode{gap:8px;padding-block:12px}.mode-description{font-size:7px}.mode strong{font-size:10px}.mode-number{font-size:8px}.mode-arrow{font-size:16px}.experiment-observation{font-size:18px;max-width:150px;margin-top:24px;margin-left:19px}.scene-stamp{font-size:6px;right:10px;bottom:16px}.instrument{flex-wrap:wrap;padding-block:6px;gap:4px 14px}.parameter{max-width:none;flex-basis:60%}.overlays{padding-left:0;border:0;margin-left:auto}.transport{gap:7px}.readout{gap:17px;padding-block:13px;flex-wrap:wrap}.readout>div{gap:9px}.readout .mono{font-size:6px}.readout output{font-size:10px}.readout .conditioning{display:none}.method-link{font-size:9px}.caption{gap:10px}.caption>.mono{font-size:6px}.work{padding-block:45px 29px}.section-heading{gap:25px;margin-bottom:24px}.section-heading .eyebrow{font-size:7px;min-width:115px}.section-heading h2{font-size:29px}.works{gap:20px}.work-index{font-size:6px}.work-item h3{font-size:24px}.work-item p{font-size:11px}.work-item>div{gap:17px}.work-item a{font-size:9px}.contact h2{font-size:33px}.contact-links{min-width:220px}.contact-links>a{font-size:20px}}
@media(max-width:650px){.wrap{width:calc(100% - 32px)}.header{height:70px;gap:15px}.identity{gap:11px;font-size:11px}.identity-mark{font-size:28px;width:29px;height:27px}.identity .handle{display:block;margin:3px 0 0;font-size:8px}.header nav{gap:19px}.header nav a{font-size:10px}.intro{display:block;padding-block:27px 26px}.intro .eyebrow{font-size:7px;letter-spacing:.045em;margin-bottom:12px}.intro h1{font-size:clamp(36px,7.7vw,49px);letter-spacing:-.055em}.intro-note{font-size:11px;margin-top:15px;line-height:1.65;padding:0}.intro-note br{display:none}.study-heading{height:45px}.study-heading h2{gap:15px;justify-content:space-between;width:100%;font-size:10px}.study-heading .mono{font-size:7px;letter-spacing:.025em}.study-name{font-size:9px}.viewport{height:418px;overflow:visible;padding-top:75px}.viewport canvas,.fallback{height:343px;position:absolute;top:75px;left:0}.experiment-menu{top:0;left:0;width:100%;height:75px;padding-top:7px}.menu-caption,.mode-description,.mode-arrow,.experiment-observation{display:none}.mode-buttons{flex-direction:row;gap:9px}.mode{display:block;min-height:57px;padding:7px 4px 9px 0;flex:1;border-bottom-color:var(--line)}.mode-number{display:block;font-size:8px;margin:0 0 4px}.mode strong{font-size:10px;white-space:nowrap}.mode[aria-pressed=true]{border-bottom:2px solid var(--accent)}.scene-tools{top:79px;right:0;gap:0}.scene-tools button{font-size:20px;width:44px}.scene-tools .mono{font-size:7px}.scene-stamp{font-size:6px;bottom:14px;right:3px}.target-handle{z-index:2}.target-tooltip{font-size:8px;bottom:-20px}.instrument{padding-block:10px 5px;gap:0 10px}.parameter{width:100%;flex-basis:100%;gap:13px;min-height:45px}.parameter label{min-width:100px;font-size:9px}.parameter output{min-width:62px;font-size:9px;text-align:right}.transport{margin-left:0;gap:8px}.transport .play{font-size:9px;min-width:75px;min-height:44px;padding-inline:10px}.transport button{font-size:9px;min-width:54px;gap:8px}.overlays{gap:16px;margin-left:auto}.overlays button{font-size:8px}.readout{gap:10px 18px;padding-block:14px 10px}.readout>div{gap:9px}.readout .mono{font-size:7px}.readout output{font-size:10px;min-width:66px}.readout>div:nth-child(2) output{min-width:8px}.solver-state{margin-left:0;min-height:27px;display:flex;align-items:center;flex:1}.method-link{font-size:9px;min-height:44px;margin-block:-7px;gap:16px}.caption{display:block;padding-top:11px}.caption p{font-size:9px;line-height:1.7}.caption-label{font-size:8px;margin-right:8px}.caption>.mono{display:block;font-size:6px;margin-top:4px;letter-spacing:.06em}.work{padding-block:40px 28px}.section-heading{display:block;margin-bottom:20px}.section-heading .eyebrow{font-size:7px;margin-bottom:9px}.section-heading h2{font-size:30px}.works{grid-template-columns:1fr;gap:23px}.work-item{padding-block:18px 0;display:grid;grid-template-columns:1fr auto;gap:0 18px}.work-index{font-size:7px;grid-column:1 / -1}.work-item h3{font-size:28px;margin-block:12px 8px}.work-item p{font-size:11px;grid-column:1;line-height:1.7}.work-item p br{display:none}.work-item>div{grid-column:1 / -1;margin-top:9px;gap:25px}.work-item a{font-size:10px}.all-work{font-size:9px;margin-top:15px;min-height:44px}.contact{display:block;padding-block:27px}.contact .eyebrow{font-size:7px}.contact h2{font-size:33px}.contact p:not(.eyebrow){font-size:11px}.contact-links{min-width:0;margin-top:18px}.contact-links>a{font-size:21px;min-height:55px}.contact-links>div{margin-top:7px}.contact-links>div>a{font-size:10px}.footer{min-height:75px;gap:8px 20px;flex-wrap:wrap;padding-bottom:max(17px,env(safe-area-inset-bottom))}.footer .mono{font-size:7px}.footer-note{order:3;flex-basis:100%;font-size:6px!important}.footer button{margin-left:auto;font-size:8px}.no-js{font-size:11px}dialog{padding:35px 23px 25px}dialog h2{font-size:38px}.equation{font-size:16px;padding:12px 13px}dialog p:not(.eyebrow){font-size:12px}.references a{font-size:10px}}
@media(max-width:370px){.header nav{gap:13px}.header nav a{font-size:9px}.identity{font-size:10px}.identity-mark{font-size:25px;width:26px}.intro h1{font-size:34px}.intro .eyebrow{font-size:6px}.intro-note{font-size:10px}.study-name{font-size:8px}.study-heading .mono{font-size:6px}.viewport{height:391px}.viewport canvas,.fallback{height:316px}.mode strong{font-size:9px}.parameter label{min-width:91px;font-size:8px}.parameter{gap:10px}.overlays{gap:10px}.overlays button{font-size:7px}.readout{gap:10px 14px}.readout .mono{font-size:6px}.readout>div{gap:7px}.readout output{font-size:9px;min-width:56px}.section-heading h2{font-size:28px}.work-item h3{font-size:26px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}html[data-motion=off]{scroll-behavior:auto}
@media print{body{background:#fff;color:#111}.wrap{width:100%}.header nav,.experiment-menu,.instrument,.scene-tools,.target-handle,.scene-stamp,.readout,.method-link,.footer button,dialog{display:none!important}.intro{padding-block:20px}.intro h1{font-size:35pt}.viewport{height:270px;break-inside:avoid}.viewport canvas,.fallback{position:static;height:270px}.viewport{padding:0}.work{padding-block:25px}.works{display:block}.work-item{break-inside:avoid;padding-block:10px}.work-item>div{margin-top:0}.contact{padding-block:20px}.contact-links{margin-top:0}.caption{padding-bottom:10px}.footer{min-height:40px}}

/* Captions remain subordinate without requiring a magnifying glass. */
.intro .eyebrow{font-size:10px}.study-heading .mono{font-size:9px}.menu-caption{font-size:9px}.readout .mono{font-size:8px}.work-index{font-size:9px}.scene-stamp{font-size:8px}.caption>.mono{font-size:8px}.section-heading .eyebrow,.contact .eyebrow{font-size:9px}.footer .mono{font-size:9px}@media(max-width:850px){.intro .eyebrow{font-size:8px}.work-index{font-size:8px}.scene-stamp{font-size:7px}.caption>.mono{font-size:7px}.study-heading .mono{font-size:8px}}@media(max-width:650px){.readout .mono{font-size:8px}.work-index{font-size:8px}.intro-note{font-size:12px}.intro .eyebrow{font-size:8px}.scene-stamp{font-size:7px}.caption>.mono{font-size:7px}.section-heading .eyebrow,.contact .eyebrow{font-size:8px}.study-heading .mono{font-size:7px}.footer .mono{font-size:8px}.footer-note{font-size:7px!important}}@media(max-width:370px){.intro .eyebrow{font-size:7px}.readout .mono{font-size:7px}.intro-note{font-size:11px}}
