:root{--bg:#05070d;--bg-raised:#0a0e18;--bg-panel:#0a0e18d1;--bg-curator:#0a0e18c7;--ink:#e9e6dd;--ink-dim:#9a968c;--ink-faint:#8b867a;--brass:#c9a35c;--brass-bright:#e8c987;--brass-tint:#8a6f3e54;--brass-border:#8a6f3e57;--hairline:#c9a35c38;--hairline-soft:#e9e6dd14;--font-display:"Fraunces", serif;--font-serif:Georgia, "Times New Roman", serif;--font-body:"Schibsted Grotesk", sans-serif;--font-mono:"IBM Plex Mono", monospace;--accent:var(--brass);--readout-min-h:5.5rem}*{box-sizing:border-box;margin:0;padding:0}:focus-visible{outline:2px solid var(--accent,#c9a35c);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}html,body,#root{overscroll-behavior:none;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55;overflow-x:hidden}::selection{background:var(--brass);color:#0a0e18}a{color:inherit;text-decoration:none}button{color:inherit;cursor:pointer;background:0 0;border:none;font-family:inherit}.grain:after{content:"";pointer-events:none;z-index:200;opacity:.02;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");position:fixed;inset:0}.hub{min-height:100%;position:relative;overflow:hidden}.hub-sky{z-index:0;background:radial-gradient(1200px 700px at 70% -10%, #3a497847, transparent 65%), radial-gradient(900px 600px at 10% 110%, #5f3e1c2e, transparent 60%), var(--bg);position:fixed;inset:0}.hub-inner{z-index:1;max-width:1180px;margin:0 auto;padding:88px 32px 120px;position:relative}.hub-kicker{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--brass);font-size:12px;animation:.8s cubic-bezier(.2,.7,.2,1) both rise}.hub-title{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.015em;max-width:14ch;margin:20px 0 18px;font-size:clamp(44px,7vw,92px);font-weight:380;line-height:1.02;animation:.8s cubic-bezier(.2,.7,.2,1) 80ms both rise}.hub-title em{color:var(--brass-bright);font-style:italic}.hub-sub{color:var(--ink-dim);max-width:52ch;font-size:17px;animation:.8s cubic-bezier(.2,.7,.2,1) .16s both rise}.hub-rule{background:linear-gradient(90deg, var(--hairline), transparent);height:1px;margin:56px 0 0}.hub-grid{background:var(--hairline-soft);border-top:1px solid var(--hairline-soft);border-bottom:1px solid var(--hairline-soft);grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:1px;display:grid}.exhibit-card{background:var(--bg);animation:rise .7s calc(.2s + var(--i) * 50ms) cubic-bezier(.2, .7, .2, 1) both;padding:30px 28px 34px;transition:background .35s;display:block;position:relative}.exhibit-card:hover{background:var(--bg-raised)}.exhibit-card:before{content:"";background:var(--card-accent,var(--brass));opacity:0;width:2px;transition:opacity .35s;position:absolute;top:0;bottom:0;left:0}.exhibit-card:hover:before{opacity:1}.exhibit-card .num{font-family:var(--font-display);color:var(--ink-faint);font-size:15px;font-style:italic}.exhibit-card .year{float:right;font-family:var(--font-mono);letter-spacing:.12em;color:var(--card-accent,var(--brass));font-size:12px}.exhibit-card h2{font-family:var(--font-display);letter-spacing:-.01em;margin:14px 0 6px;font-size:27px;font-weight:430;line-height:1.12}.exhibit-card .scientist{font-family:var(--font-mono);color:var(--ink-dim);letter-spacing:.06em;font-size:12px}.exhibit-card .hook{color:var(--ink-dim);min-height:3.2em;margin-top:14px;font-size:14px}.exhibit-card .enter{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--card-accent,var(--brass));opacity:0;margin-top:18px;font-size:12px;transition:opacity .3s,transform .3s;transform:translate(-6px)}.exhibit-card:hover .enter{opacity:1;transform:translate(0)}.hub-footer{color:var(--ink-faint);font-family:var(--font-mono);letter-spacing:.12em;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:64px;font-size:12px;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.exhibit-page{background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.exhibit-header{border-bottom:1px solid var(--brass-border);background:var(--bg-curator);-webkit-backdrop-filter:blur(12px);z-index:20;align-items:center;gap:18px;padding:10px 22px;display:flex;box-shadow:0 1px #c9a35c14}.exhibit-header .back{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);white-space:nowrap;flex-shrink:0;align-items:center;min-height:44px;padding:0 8px;font-size:12px;transition:color .25s;display:inline-flex}.exhibit-header .back:hover{color:var(--brass-bright)}.exhibit-header .head-nameplate{flex-direction:column;flex:140px;gap:1px;min-width:0;max-width:42ch;display:flex}.exhibit-header .head-title{font-family:var(--font-serif);letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;min-width:6ch;color:var(--ink);font-size:18px;font-weight:400;overflow:hidden}.exhibit-header .head-meta{font-family:var(--font-mono);color:var(--ink-faint);letter-spacing:.06em;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.exhibit-header .head-meta b{color:var(--accent);font-weight:500}.exhibit-header .spacer{flex:1 1 0;min-width:8px}.tour-btn{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);white-space:nowrap;border-radius:999px;align-items:center;min-height:44px;padding:9px 18px;font-size:12px;transition:background .25s,color .25s;display:inline-flex}.tour-btn:hover{background:var(--accent);color:#06080f}.exhibit-body{flex:1;min-height:0;position:relative}.exhibit-canvas{touch-action:none;position:absolute;inset:0}.exhibit-veil{z-index:5;pointer-events:none;background:#05070d;flex-direction:column;justify-content:center;align-items:center;gap:14px;animation:.6s ease-out .35s forwards exhibit-veil-fade;display:flex;position:absolute;inset:0}@keyframes exhibit-veil-fade{to{opacity:0;pointer-events:none}}.exhibit-veil-spinner{border:2px solid #c9a35c33;border-top-color:var(--accent,var(--brass));border-radius:50%;width:28px;height:28px;animation:.9s linear infinite exhibit-veil-spin}@keyframes exhibit-veil-spin{to{transform:rotate(360deg)}}.exhibit-veil-text{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-size:12px}.exhibit-context-lost{font-family:var(--font-mono);letter-spacing:.12em;color:var(--brass-bright);background:var(--bg-panel);border:1px solid var(--hairline);z-index:15;pointer-events:none;border-radius:8px;padding:7px 16px;font-size:12px;animation:.3s both rise;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.control-panel{background:var(--bg-curator);border:1px solid var(--brass-border);-webkit-backdrop-filter:blur(10px);z-index:10;scrollbar-width:thin;scrollbar-color:var(--brass-tint) transparent;border-radius:14px;width:280px;max-height:calc(100% - 36px);padding:16px 18px 18px;position:absolute;top:18px;right:18px;overflow-y:auto;box-shadow:inset 0 1px #c9a35c1a,0 16px 48px #0000008c}.control-panel.cp-collapsed{padding-bottom:16px}.control-panel .cp-head{font-family:var(--font-serif);letter-spacing:.06em;text-transform:uppercase;color:#c9a35cb8;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:12px;font-weight:400;display:flex}.control-panel .cp-collapse{color:var(--brass);opacity:.7;padding:2px 5px;font-size:14px;line-height:1;transition:opacity .2s}.control-panel .cp-collapse:hover{opacity:1}.control{margin-bottom:16px}.control:last-child{margin-bottom:0}.control .c-label{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.control .c-name{color:var(--ink-dim);letter-spacing:.01em;font-size:13px}.control .c-value{font-family:var(--font-mono);color:var(--accent);font-size:12px}input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:18px}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) 0%, var(--accent) var(--fill,50%), #8a6f3e33 var(--fill,50%));border-radius:2px;height:3px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--accent);background:#0d1121;border-radius:50%;width:14px;height:14px;margin-top:-5.5px;transition:transform .15s,box-shadow .15s;box-shadow:0 0 #c9a35c00}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.25);box-shadow:0 0 0 3px #c9a35c2e}input[type=range]::-moz-range-track{background:#8a6f3e33;border-radius:2px;height:3px}input[type=range]::-moz-range-progress{background:var(--accent);border-radius:2px;height:3px}input[type=range]::-moz-range-thumb{border:2px solid var(--accent);background:#0d1121;border-radius:50%;width:12px;height:12px}.toggle-row{justify-content:space-between;align-items:center;display:flex}.toggle{background:#8a6f3e38;border:1px solid #8a6f3e47;border-radius:999px;flex-shrink:0;width:38px;height:21px;transition:background .25s,border-color .25s;position:relative}.toggle.on{background:var(--accent);border-color:var(--accent)}.toggle .knob{background:var(--ink);border-radius:50%;width:13px;height:13px;transition:transform .25s cubic-bezier(.3,.9,.4,1.2);position:absolute;top:3px;left:3px}.toggle.on .knob{background:#06080f;transform:translate(17px)}.seg{flex-wrap:wrap;gap:5px;display:flex}.seg button{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-dim);background:#0a0e1880;border:1px solid #8a6f3e42;border-radius:6px;padding:5px 10px;font-size:12px;transition:all .2s}.seg button:hover{color:var(--ink);border-color:#c9a35c73}.seg button.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.action-btn{width:100%;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:#8a6f3e12;border:1px solid #c9a35c73;border-radius:8px;padding:10px 0;font-size:12px;transition:all .2s}.action-btn:hover{background:var(--accent);color:#06080f;border-color:var(--accent)}.action-btn:active{transform:scale(.98)}.readout{font-family:var(--font-mono);color:var(--ink-dim);border-top:1px solid var(--brass-border);min-height:var(--readout-min-h);flex-direction:column;gap:5px;margin-top:10px;padding-top:10px;font-size:12px;display:flex}.readout .readout-label{font-family:var(--font-serif);letter-spacing:.1em;text-transform:uppercase;color:#c9a35c99;margin-bottom:4px;font-size:12px;font-weight:400}.readout .r-row{background:#c9a35c0a;border-radius:3px;justify-content:space-between;padding:2px 4px;display:flex}.readout .r-val{color:var(--ink)}.readout .r-val.hot{color:var(--accent)}.tutorial{background:var(--bg-curator);-webkit-backdrop-filter:blur(16px);z-index:30;scrollbar-width:thin;scrollbar-color:var(--brass-tint) transparent;border:1px dashed #8a6f3e73;border-radius:16px;width:min(620px,100% - 40px);max-height:min(68dvh,520px);padding:22px 26px 18px;animation:.45s cubic-bezier(.2,.8,.2,1) both tut-in;position:absolute;bottom:26px;left:50%;overflow:visible auto;transform:translate(-50%);box-shadow:0 24px 60px #0000008c}.tutorial.tutorial-dock{width:min(400px,100% - 320px);max-width:calc(100% - 320px);animation:.45s cubic-bezier(.2,.8,.2,1) both tut-in-left;bottom:22px;left:22px;right:auto;transform:none}.tutorial:before,.tutorial:after{content:"";border-color:var(--brass);pointer-events:none;border-style:solid;width:10px;height:10px;position:absolute}.tutorial:before{border-width:2px 0 0 2px;border-radius:4px 0 0;top:-1px;left:-1px}.tutorial:after{border-width:2px 2px 0 0;border-radius:0 4px 0 0;top:-1px;right:-1px}@keyframes tut-in{0%{opacity:0;transform:translate(-50%)translateY(24px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes tut-in-left{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.tutorial .t-step{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-size:12px}.tutorial h3{font-family:var(--font-display);letter-spacing:-.01em;margin-bottom:8px;font-size:22px;font-weight:450}.tutorial .t-text{color:var(--ink-dim);min-height:3em;font-size:14.5px}.tutorial .t-text b,.tutorial .t-text strong{color:var(--ink);font-weight:600}.tutorial .t-nav{align-items:center;gap:14px;margin-top:16px;display:flex}.tutorial .t-dots{flex:1;gap:6px;display:flex}.tutorial .t-dot{background:var(--ink-faint);border-radius:50%;width:5px;height:5px;transition:all .25s}.tutorial .t-dot.done{background:var(--ink-dim)}.tutorial .t-dot.now{background:var(--accent);transform:scale(1.5)}.t-btn{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;min-height:44px;padding:8px 16px;font-size:12px;transition:all .2s;display:inline-flex}.t-btn.primary{background:var(--accent);color:#06080f}.t-btn.primary:hover{filter:brightness(1.15)}.t-btn.ghost{color:var(--ink-dim)}.t-btn.ghost:hover{color:var(--ink)}.t-close{color:var(--ink-faint);font-size:16px;transition:color .2s;position:absolute;top:12px;right:16px}.t-close:hover{color:var(--ink)}.gallery-wrap{touch-action:none;background:#04060b;position:fixed;inset:0}.gallery-wrap canvas{display:block}.gallery-list-overlay{z-index:50;position:absolute;inset:0;overflow-y:auto}.portal-fade{opacity:0;pointer-events:none;z-index:60;transition:opacity .85s ease-in;position:absolute;inset:0}.portal-fade.on{opacity:1}.portal-iris{pointer-events:none;z-index:60;background:var(--iris-color,#c9a35c);clip-path:circle(0% at var(--iris-x,50%) var(--iris-y,50%));opacity:.92;background:color-mix(in srgb, var(--iris-color,#c9a35c) 75%, #000 25%);position:absolute;inset:0}.portal-iris.on{animation:.9s cubic-bezier(.4,0,.65,1) forwards iris-open}@keyframes iris-open{0%{clip-path:circle(0% at var(--iris-x,50%) var(--iris-y,50%));opacity:0}15%{clip-path:circle(8% at var(--iris-x,50%) var(--iris-y,50%));opacity:.92}70%{clip-path:circle(75% at var(--iris-x,50%) var(--iris-y,50%));opacity:.92}to{clip-path:circle(140% at var(--iris-x,50%) var(--iris-y,50%));opacity:1}}.g-top{z-index:40;pointer-events:none;align-items:center;gap:10px;padding:14px 18px;display:flex;position:absolute;top:0;left:0;right:0}.g-top .g-title{font-family:var(--font-mono);letter-spacing:.2em;color:var(--brass);font-size:12px}.g-top .g-title-short{display:none}.g-top .g-spacer{flex:1}.g-icon-btn{color:var(--ink-dim);justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:6px 8px;line-height:0;display:inline-flex}.g-icon-btn:hover{color:var(--brass-bright)}.g-mini-btn{pointer-events:auto;font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-dim);border:1px solid var(--hairline-soft);background:var(--bg-panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;padding:6px 12px;font-size:12px;transition:color .2s,border-color .2s}.g-mini-btn:hover{color:var(--brass-bright);border-color:var(--hairline)}.crosshair{z-index:30;pointer-events:none;background:#e9e6dda6;border-radius:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;transition:transform .2s,background .2s;position:absolute;top:50%;left:50%}.crosshair.hot{background:var(--brass-bright);transform:scale(1.9)}.g-chip{background:var(--bg-panel);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);z-index:30;pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;flex-direction:column;align-items:center;gap:3px;padding:10px 22px;animation:.25s both chip-in;display:flex;position:absolute;bottom:88px;left:50%;transform:translate(-50%)}@keyframes chip-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.g-chip b{font-family:var(--font-display);font-size:17px;font-weight:460}.g-chip span{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:12px}.g-hint{font-family:var(--font-mono);letter-spacing:.12em;color:var(--ink-faint);z-index:30;pointer-events:none;white-space:nowrap;font-size:12px;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.g-card-wrap{z-index:50;pointer-events:none;background:radial-gradient(#04060b40,#04060bc7);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.g-card{text-align:center;background:var(--bg-panel);border:1px solid var(--hairline);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:auto;border-radius:20px;max-width:460px;padding:40px 44px;animation:.6s cubic-bezier(.2,.7,.2,1) both rise}.g-card h1{font-family:var(--font-display);letter-spacing:-.01em;margin:14px 0 10px;font-size:38px;font-weight:400}.g-card h1 em{color:var(--brass-bright)}.g-card p{color:var(--ink-dim);margin-bottom:24px;font-size:14.5px}.g-btn{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:var(--brass);color:#06080f;border-radius:999px;padding:13px 30px;font-size:12.5px;transition:filter .2s,transform .2s}.g-btn:hover{filter:brightness(1.15);transform:translateY(-1px)}.g-keys{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-faint);margin-top:20px;font-size:12px}.g-resume-pill{z-index:50;pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.g-btn-pill{pointer-events:auto;letter-spacing:.12em;border:1px solid var(--hairline);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--brass);background:#0a0e18b8;border-radius:999px;padding:10px 24px;font-size:12px}.linkish{color:var(--brass-bright);font-size:inherit;padding:0}.linkish:hover{text-decoration:underline}.lookpad{z-index:20;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:55%;height:70%;position:absolute;top:0;right:0}.joystick{border:1.5px solid var(--hairline);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:35;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#0a0e188c;border-radius:50%;justify-content:center;align-items:center;width:110px;height:110px;display:flex;position:absolute;bottom:26px;left:26px}.joystick-nub{pointer-events:none;-webkit-user-select:none;user-select:none;background:#c9a35cbf;border-radius:50%;width:44px;height:44px}.g-enter-btn{z-index:40;font-family:var(--font-mono);letter-spacing:.12em;background:var(--accent);color:#06080f;border-radius:999px;padding:18px 26px;font-size:14px;position:absolute;bottom:40px;right:26px;box-shadow:0 8px 30px #00000080}.minimap{z-index:40;pointer-events:none;animation:.25s both rise;position:absolute;top:64px;right:18px}.minimap-label{text-align:center;font-family:var(--font-mono);letter-spacing:.12em;color:var(--ink-faint);margin-top:4px;font-size:12px}.not-found{flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100%;display:flex}.not-found h1{font-family:var(--font-display);font-weight:400}.joystick{border:1.5px solid var(--brass-border);background:#0a0e18a6}.joystick-nub{background:#c9a35cc7;box-shadow:0 2px 8px #00000073}.g-enter-btn{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border:1px solid #c9a35c80;box-shadow:0 8px 32px #0000008c}@media (width<=760px){.control-panel{width:240px;padding:12px 14px 14px}.exhibit-header .head-meta{display:none}.tutorial.tutorial-dock{width:min(340px,100% - 260px);max-width:calc(100% - 260px)}}@media (width<=480px){.control-panel{width:auto;max-height:45dvh;top:8px;left:8px;right:8px}.exhibit-header .head-nameplate{flex:80px;min-width:0}.exhibit-header .head-title{min-width:4ch;font-size:15px}.exhibit-header .head-meta{display:none}.g-hint{white-space:normal;text-align:center;width:calc(100% - 40px);bottom:14px;left:20px;transform:none}.g-card{border-radius:14px;max-width:calc(100% - 24px);margin:0 12px;padding:26px 22px}.g-card h1{font-size:28px}.tutorial.tutorial-dock{width:auto;max-width:none;max-height:42dvh;bottom:8px;left:8px;right:8px}.exhibit-header .back{letter-spacing:.08em;font-size:12px}.g-top .g-title-full{display:none}.g-top .g-title-short{display:inline}.g-chip{white-space:normal;text-align:center;max-width:calc(100vw - 32px)}.g-chip span{letter-spacing:.1em;font-size:12px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.grain:after{animation:none!important}}
