@font-face{font-family:'Instrument Serif';src:url('assets/instrument-serif.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'Manrope';src:url('assets/manrope.ttf') format('truetype');font-style:normal;font-weight:200 800;font-display:swap}
:root{color-scheme:dark;--paper:#c5c8bd;--muted:#a4afa7;--ink:#101413;--panel:#191e1c;--line:#3b433f;--focus:#c7bea6;--ease:cubic-bezier(.16,1,.3,1);--scene-font:'Instrument Serif',Georgia,serif;font-family:'Manrope',sans-serif;font-size:16px;line-height:1.5;letter-spacing:.012em}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--paper)}
body{--safe:clamp(24px,3.2vw,100px);--bottom:clamp(28px,4vh,70px)}
::selection{background:var(--paper);color:var(--ink)}button,select,input{font:inherit}button{color:inherit;cursor:pointer;border:0;background:none;transition:background .2s,color .2s}button:disabled{cursor:wait;opacity:.45}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--focus);outline-offset:4px}button:hover{background:#ffffff12}svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}[hidden]{display:none!important}
#stage,.edge-shade,#fallback{position:fixed;inset:0}#stage{overflow:hidden;background:var(--ink)}#stage canvas,#stage img{position:absolute;inset:0;width:100%;height:100%;display:block}#stage img{object-fit:fill;pointer-events:none;transition:opacity 3s ease-in-out}.edge-shade{pointer-events:none;background:linear-gradient(180deg,#080d102b,transparent 20%,transparent 72%,#080d104d);z-index:1}
.interface{position:fixed;z-index:3;opacity:1;transition:opacity 1.1s ease}.masthead{top:var(--safe);left:var(--safe);right:var(--safe);display:flex;justify-content:space-between;align-items:center;gap:20px}.identity h1{font-size:18px;font-weight:400;letter-spacing:.01em;line-height:1.2;margin:0;text-shadow:0 2px 12px #000}.full-screen{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;border-radius:4px;font-size:14px;background:#10141385}
.world-caption{left:var(--safe);bottom:calc(var(--bottom) + 90px);max-width:60vw;pointer-events:none;text-shadow:0 2px 20px #000b}.world-caption h2{font-size:clamp(22px,1.7vw,40px);font-weight:400;letter-spacing:-.02em;line-height:1.2;margin:0}.world-caption p{display:none}

.controls{left:50%;bottom:var(--bottom);transform:translateX(-50%);display:flex;align-items:center;gap:3px;padding:5px;background:#141a18eb;border:1px solid #ffffff26;border-radius:6px}.icon-button{display:inline-flex;justify-content:center;align-items:center;width:44px;height:44px;border-radius:3px;flex:none}.control-divider{height:20px;width:1px;background:var(--line);margin:0 7px}#sceneButton{display:flex;align-items:center;gap:18px;min-height:44px;padding:0 14px;font-size:14px;border-radius:3px;min-width:110px;justify-content:space-between}#sceneButton svg{width:14px}#showControls{position:fixed;bottom:20px;left:calc(50% - 24px);z-index:4;display:none;width:48px;height:44px;align-items:center;justify-content:center;color:var(--paper);border-radius:4px;background:#10141344;opacity:.15}#showControls:hover,#showControls:focus-visible{opacity:1}
body.controls-hidden{cursor:none}.controls-hidden .interface{opacity:0;pointer-events:none}.controls-hidden #showControls{display:flex;cursor:pointer}.controls-hidden.keep-captions .world-caption{opacity:1}.notice{position:fixed;z-index:7;left:50%;bottom:calc(var(--bottom) + 76px);transform:translateX(-50%);padding:14px 20px;max-width:min(540px,85vw);background:var(--panel);border:1px solid var(--line);border-radius:4px;font-size:15px;line-height:1.5;opacity:0;pointer-events:none;transition:opacity .25s}.notice.visible{opacity:1}
dialog{width:min(620px,calc(100vw - 40px));max-height:calc(100dvh - 48px);padding:28px;border:1px solid #49524b;border-radius:8px;background:var(--panel);color:var(--paper);overflow:auto;scrollbar-color:#637069 var(--panel);scrollbar-width:thin}dialog::backdrop{background:#060b0cba}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:20px}.dialog-heading h2{margin:0;font-family:var(--scene-font);font-size:34px;font-weight:400;letter-spacing:-.015em;line-height:1.25}.dialog-heading .icon-button{margin:-8px -8px -8px 0}.scene-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 22px}.scene-gallery button{min-height:44px;padding:10px 0;position:relative;text-align:left;border-bottom:1px solid transparent;color:var(--muted)}.scene-gallery img{width:100%;aspect-ratio:1.3;object-fit:cover;display:block;border-radius:3px;margin-bottom:10px;opacity:.7;transition:opacity .2s}.scene-gallery span{font-size:14px}.scene-gallery button[aria-pressed=true]{border-color:var(--paper);color:var(--paper)}.scene-gallery button[aria-pressed=true] img,.scene-gallery button:hover img{opacity:1}.scene-gallery button[aria-pressed=true] span:after{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--paper);margin:0 0 2px 8px}.scene-select{display:none!important}
.field{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:24px;padding:10px 0;border-top:1px solid #ffffff12}label{font-size:14px;line-height:1.4}select{border:1px solid #49524b;background:#111714;color:var(--paper);padding:10px 28px 10px 12px;min-height:44px;border-radius:3px;width:100%;font-size:14px}.check-field{display:flex;justify-content:space-between;gap:24px;align-items:center;min-height:44px;margin:4px 0}.check-field input{appearance:none;width:34px;height:20px;border-radius:12px;background:#3e4943;position:relative;flex:none;cursor:pointer}.check-field input:before{content:'';position:absolute;inset:3px auto 3px 3px;width:14px;border-radius:50%;background:#c5cdc7;transition:transform .2s}.check-field input:checked{background:#c5cbb9}.check-field input:checked:before{background:#243028;transform:translateX(14px)}.settings-actions{display:flex;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #ffffff12}.settings-actions button{min-height:44px;padding:10px 14px;border:1px solid #59675e;border-radius:3px;font-size:14px}.settings-note,.shortcuts{font-size:13px;line-height:1.65;color:var(--muted);margin:20px 0 0}.shortcuts{margin-top:8px}.noscript{position:fixed;inset:0;display:grid;place-items:center;background:var(--ink)}#fallback{background:var(--ink);display:grid;place-items:center}#fallback p{font-size:clamp(24px,3vw,48px);font-weight:400;letter-spacing:-.02em;color:var(--paper)}
@media(min-width:2300px){.controls{transform:translateX(-50%) scale(1.3);transform-origin:bottom center}.identity h1{font-size:24px}.full-screen{font-size:20px}}
@media(max-width:680px){body{--safe:24px;--bottom:24px}.identity h1{font-size:16px}.full-screen{padding:10px}.full-screen span{display:none}.world-caption{max-width:85vw;bottom:164px}.controls{max-width:calc(100vw - 40px);gap:0}.control-divider{margin:0 3px}#sceneButton{gap:8px;padding:0 10px;min-width:95px}.icon-button{width:42px;height:44px}dialog{padding:22px;max-height:calc(100dvh - 32px)}.scene-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.scene-gallery img{aspect-ratio:1.9}.field{grid-template-columns:1fr;gap:8px;padding:14px 0}.notice{bottom:96px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
@media(forced-colors:active){button,select{border:1px solid ButtonText}dialog{background:Canvas;color:CanvasText}.check-field input{appearance:auto}}

/* Quiet display chrome; the mark stays after playback controls fade. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.signature{position:fixed;z-index:2;right:var(--safe);bottom:calc(var(--bottom) + 15px);pointer-events:none}
.signature img{display:block;width:clamp(100px,7.5vw,200px);height:auto;filter:brightness(0) invert(1) brightness(.64) drop-shadow(0 1px 1px #0009) drop-shadow(0 2px 3px #0006) drop-shadow(0 4px 6px #0004) drop-shadow(0 8px 12px #0003);opacity:.9}
.controls{border-radius:8px;padding:6px;background:#101713ed;gap:2px}
.world-caption{bottom:calc(var(--bottom) + 16px);max-width:26vw}
.world-caption h2{font-family:var(--scene-font);font-size:clamp(25px,1.6vw,34px);font-weight:400;line-height:1.3;letter-spacing:-.012em;text-wrap:balance}
@media(max-width:900px){.world-caption{bottom:calc(var(--bottom) + 92px);max-width:70vw}.controls{bottom:calc(var(--bottom) + 54px)}.signature{bottom:var(--bottom)}#showControls{bottom:calc(var(--bottom) + 54px)}}
@media(max-width:680px){.controls{max-width:calc(100vw - 24px);gap:0;padding:4px}.control-divider{margin:0 3px}#sceneButton{min-width:80px;padding:0 8px;gap:6px}.world-caption{bottom:calc(var(--bottom) + 124px)}.signature img{width:108px}}

.scene-group{border:0;padding:0;margin:0 0 18px;min-width:0}.scene-group legend{font-size:15px;font-weight:600;padding:0;margin:0 0 4px}.scene-group .scene-gallery{grid-template-columns:repeat(3,minmax(0,1fr));margin:0;gap:2px 16px}.scene-gallery button{padding:8px 4px}.scene-gallery span{line-height:1.4}.scene-gallery button[aria-pressed=true] span:after{display:none}
@media(max-width:680px){.scene-group .scene-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 12px}.scene-group{margin-bottom:14px}}

#environmentName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#sceneButton{min-width:0;max-width:160px}#sceneButton svg{flex:none}@media(max-width:680px){#sceneButton{flex:1;min-width:0;padding-inline:6px}.controls{width:max-content;max-width:calc(100vw - 24px)}#environmentName{max-width:112px}.control-divider{display:none}}

/* Distinct display and operator roles, with room for darker-screen reading. */
#sceneButton{font-size:15px;letter-spacing:.012em}.scene-gallery span{font-size:15px}.scene-group legend{font-size:14px;letter-spacing:.025em}.field label,.check-field label{font-size:15px}.settings-actions button{line-height:1.4}

/* Convolution shares the dark display, fonts, dock and idle behaviour. */
.cnn-explain{top:var(--safe);left:var(--safe);padding:10px 0;font-size:14px;min-height:44px;text-decoration:underline;text-underline-offset:6px}
.cnn-details{position:fixed;z-index:5;right:var(--safe);top:var(--safe);width:min(420px,calc(100vw - 48px));max-height:calc(100dvh - 170px);overflow:auto;scrollbar-color:#637069 #101918;background:#101918f5;padding:26px;color:#d1d8cf;border:1px solid #42534b;border-radius:6px;cursor:auto}
.cnn-details h2{font-family:var(--scene-font);font-size:32px;line-height:1.1;font-weight:400;margin:22px 0 18px;max-width:15ch}.cnn-details p,.cnn-details li{font-size:14px;line-height:1.7}.cnn-details ol{padding-left:20px;margin:22px 0}.cnn-details li{padding-left:5px;margin-bottom:12px}.cnn-details li strong{display:block;color:#c5d8cd}.cnn-details button{float:right;min-height:44px;padding:0 8px;font-size:14px}.cnn-details .cnn-note{font-size:12px;color:#aebdb4;margin:24px 0 0}.cnn-result{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #42534b;padding-top:18px;font-size:13px;font-variant-numeric:tabular-nums}.cnn-result strong{font-weight:500;color:#c1dacb}.cnn-scores{display:grid;grid-template-columns:50px 1fr;gap:10px;align-items:center;margin-top:18px;font-size:12px}.cnn-scores div{height:3px;background:#2c3b34}.cnn-scores i{display:block;height:3px;background:#87baa1;width:0}.cnn-details:focus-within{outline:none}
@media(max-width:680px){.cnn-details{left:24px;right:24px;top:24px;padding:20px}.cnn-details h2{font-size:28px}}

/* Inline studies keep the surrounding page in charge of the selected concept. */
.embedded :is(.signature, #caption, #previous, #next, #sceneButton, #settingsButton, .control-divider) { display: none; }
.embedded .controls { bottom: 16px; }
.embedded .cnn-explain { top: 16px; left: 16px; }
.embedded .cnn-details { inset: 12px; width: auto; max-width: 440px; max-height: calc(100dvh - 24px); }

.embedded.study-controlled #pause { display: none; }

.rover-controlled :is(.interface, .signature, #showControls, #notice) { display:none; }
.rover-controlled .edge-shade { background:linear-gradient(180deg,#080d1014,transparent 18%,transparent 82%,#080d101f); }
