:root{--ink:#0b0706;--paper:#f1e4cc;--paper-dim:#c9b89b;--sign:#e6b43a;--card:#160e0ae6;--line:#f1e4cc2e;--head:"Avenir Next Condensed", "Arial Narrow", "Roboto Condensed", "Helvetica Neue", system-ui, sans-serif;--body:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--paper);margin:0;overflow:hidden}body{font:16px/1.5 var(--body);-webkit-font-smoothing:antialiased}button,a{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--sign);outline-offset:3px}#app{width:100%;height:100vh;height:100lvh;position:fixed;top:0;left:0}#app canvas{touch-action:none;width:100%;height:100%;display:block}body.hovering #app canvas{cursor:pointer}#fallback{object-fit:cover;width:100%;height:100%;position:fixed;top:0;bottom:0;left:0;right:0}#loader{background:var(--ink);z-index:30;place-content:center;justify-items:center;gap:22px;transition:opacity .9s,visibility .9s;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}#loader.done{opacity:0;visibility:hidden}.loader-title{font:800 clamp(22px, 4.2vw, 40px)/1.05 var(--head);letter-spacing:.02em;text-transform:uppercase;text-align:center;color:#1b120b;background:var(--sign);box-shadow:0 0 0 4px #1b120b, 0 0 0 5px var(--sign);margin:0;padding:.6em .9em}.loader-bar{background:var(--line);width:min(260px,60vw);height:3px;overflow:hidden}.loader-bar span{background:var(--sign);width:0;height:100%;transition:width .25s;display:block}.loader-hint{color:var(--paper-dim);margin:0;font-size:14px;font-style:italic}#tooltip,#bubble{pointer-events:none;z-index:15;white-space:nowrap;font:700 13px/1 var(--head);letter-spacing:.08em;text-transform:uppercase;background:var(--card);color:var(--paper);border:1px solid var(--line);border-radius:2px;padding:8px 11px;position:fixed;top:0;left:0}#bubble{text-transform:none;letter-spacing:.02em;font:italic 15px/1.2 var(--body);transition:opacity .3s;transform:translate(-50%,-100%)}#bubble.fade{opacity:0}#caption{z-index:14;pointer-events:none;white-space:nowrap;font:800 15px/1 var(--head);letter-spacing:.1em;text-transform:uppercase;color:var(--sign);background:var(--card);opacity:0;border:1px solid #e6b43a73;padding:9px 13px;transition:opacity .6s;position:fixed;top:0;left:0}#caption.show{opacity:1}#panel{z-index:20;background:var(--card);border:1px solid var(--line);width:340px;max-width:calc(100vw - 48px);padding:26px 26px 24px;animation:.45s cubic-bezier(.2,.8,.2,1) panel-in;position:fixed;top:50%;right:24px;transform:translateY(-50%);box-shadow:0 20px 60px #00000080}#panel[hidden]{display:none}@keyframes panel-in{0%{opacity:0;transform:translate(24px,-50%)}}#panel h2{font:800 26px/1.05 var(--head);text-transform:uppercase;letter-spacing:.02em;color:var(--sign);margin:0 32px 10px 0}.panel-text{color:var(--paper-dim);margin:0 0 22px}.panel-actions{flex-wrap:wrap;gap:10px;display:flex}.panel-actions a,.panel-actions button{cursor:pointer;font:700 14px/1 var(--head);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--sign);padding:10px 16px;text-decoration:none;display:inline-block}.panel-visit{background:var(--sign);color:#1b120b!important}.panel-play{color:var(--sign);background:0 0}.panel-actions [hidden]{display:none!important}.panel-close{cursor:pointer;width:36px;height:36px;color:var(--paper-dim);background:0 0;border:0;font-size:26px;line-height:1;position:absolute;top:10px;right:10px}#menu-toggle,#gyro-toggle{z-index:25;cursor:pointer;background:var(--card);border:1px solid var(--line);font:700 13px/1 var(--head);letter-spacing:.1em;text-transform:uppercase;padding:10px 14px;position:fixed;top:16px;left:16px}#gyro-toggle{left:auto;right:16px}#gyro-toggle[aria-pressed=true]{color:var(--sign);border-color:var(--sign)}#projects{z-index:24;background:var(--card);border-right:1px solid var(--line);width:min(340px,86vw);padding:72px 28px 28px;transition:transform .45s cubic-bezier(.2,.8,.2,1);position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-102%)}#projects.open,body.no-webgl #projects{transform:none}#projects h1{font:800 20px/1.1 var(--head);text-transform:uppercase;color:var(--sign);margin:0 0 18px}#projects ul{margin:0 0 28px;padding:0;list-style:none}#projects li a{border-bottom:1px solid var(--line);font:700 17px/1.2 var(--head);letter-spacing:.03em;text-transform:uppercase;padding:11px 0;text-decoration:none;display:block}#projects li a:hover{color:var(--sign)}#projects li a:focus-visible{color:var(--sign)}#projects li a:after{content:" ↗";color:var(--paper-dim);font-weight:400}#projects footer{gap:18px;font-size:14px;display:flex}#projects footer a{color:var(--paper-dim)}body.no-webgl #menu-toggle,body.no-webgl #loader{display:none}@media (max-width:700px),(max-aspect-ratio:4/5){#panel{width:auto;max-width:none;max-height:46vh;padding:22px 20px calc(20px + var(--safe-b));border-width:1px 0 0;animation-name:sheet-in;top:auto;bottom:0;left:0;right:0;overflow-y:auto;transform:none}@keyframes sheet-in{0%{opacity:0;transform:translateY(40px)}}#panel h2{font-size:22px}}@media (prefers-reduced-motion:reduce){#panel,#projects,#loader{transition:none!important;animation:none!important}}
