:root{color-scheme:dark;font-family:Helvetica,Arial,sans-serif;background:#050505;color:#f5f5f2;--pad:clamp(22px,4vw,64px)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:#050505}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid #ecebcf;outline-offset:5px}[hidden]{display:none!important}
.masthead{position:fixed;z-index:4;left:var(--pad);top:clamp(65px,9.5vh,100px);pointer-events:none}.masthead h1{margin:0;font-size:clamp(34px,4.1vw,68px);line-height:.94;letter-spacing:-.065em;font-weight:400}.masthead h1>span{display:block}.masthead h1>span+span{margin-left:-.9em}.masthead sup{display:inline-block;font-size:.36em;line-height:1;vertical-align:top;letter-spacing:-.035em;margin:5px 0 0 8px}
.view-tools{position:fixed;right:var(--pad);top:25px;z-index:5;display:flex;gap:22px;align-items:center;font:10px/1.2 monospace;text-transform:uppercase;letter-spacing:.02em}.view-tools a,.view-tools button{min-height:44px;display:flex;align-items:center;text-decoration:none;background:none;border:0;color:#9e9e98;padding:0}.view-tools a:hover,.view-tools button:hover{color:#fff}.view-tools button[aria-pressed=true]{color:#fff}
main{height:100%;width:100%}.viewport{position:fixed;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:center;perspective:2000px;perspective-origin:10% 10%;touch-action:none;cursor:grab;outline:none}.viewport:active{cursor:grabbing}.viewport:focus-visible:after{content:'';position:fixed;inset:8px;border:1px solid #b5b5a577;pointer-events:none}.planes{position:relative;width:0;height:0;transform:translateY(100px);transform-style:preserve-3d;pointer-events:none}
.plane{position:absolute;width:var(--card-width,560px);height:calc(var(--card-width,560px)*.62);left:calc(var(--card-width,560px)*-.5);top:calc(var(--card-width,560px)*-.31);transform-style:preserve-3d;will-change:transform;pointer-events:none;backface-visibility:hidden}
.plane-hit{display:block;border:0;padding:0;width:100%;height:100%;background:#111;pointer-events:auto;cursor:pointer;box-shadow:0 0 0 1px #ffffff15;overflow:hidden;outline:none}.plane img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}.plane-hit:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 0 1px #fff3;opacity:0;transition:opacity .25s;pointer-events:none}.plane-hit:hover:after{opacity:1}
.plane-label{position:absolute;left:0;right:0;top:-25px;display:flex;gap:14px;align-items:baseline;color:#eeeee8;font:10px/1.4 monospace;letter-spacing:.015em;white-space:nowrap;text-shadow:0 1px 5px #000}.plane-label .plane-name{opacity:.65}
.gallery-footer{position:fixed;z-index:5;bottom:max(25px,env(safe-area-inset-bottom));left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;gap:25px;align-items:end;pointer-events:none}.project-index{display:flex;gap:4px;pointer-events:auto}.project-index button{border:0;background:transparent;color:#888884;font:10px monospace;min-width:44px;min-height:44px;padding:12px;position:relative}.project-index button:after{content:'';position:absolute;width:3px;height:3px;border-radius:50%;bottom:2px;left:calc(50% - 1.5px);background:#eeeecc;opacity:0}.project-index button[aria-current=true]{color:#fff}.project-index button[aria-current=true]:after{opacity:1}.current-project{display:flex;flex-direction:column;gap:9px;align-items:end;padding-bottom:7px;font:10px/1.4 monospace}#current-name{text-transform:uppercase;letter-spacing:.04em}.interaction-hint{color:#959590;font-size:9px;letter-spacing:.025em}.load-status{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);font:11px monospace;color:#aaa}
dialog{padding:0;border:1px solid #ffffff25;border-radius:8px;background:#111;color:#eee;width:min(1150px,calc(100vw - 48px));max-height:calc(100dvh - 48px);overflow:auto;box-shadow:0 25px 120px #0009}dialog::backdrop{background:#000b;backdrop-filter:blur(16px)}.preview-head{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 26px}.eyebrow{font:9px/1.4 monospace;letter-spacing:.04em;color:#92928c;margin:0 0 9px}.preview-head h2{font-weight:400;font-size:25px;letter-spacing:-.04em;margin:0}.preview-head p:last-child{font-size:12px;color:#aaa;margin:7px 0 0}.preview-actions{display:flex;align-items:center;gap:24px}#visit{font-size:12px;white-space:nowrap;text-decoration:none;min-height:44px;display:flex;align-items:center;border-bottom:1px solid #555}#close-preview{width:44px;min-width:44px;height:44px;border:1px solid #ffffff30;background:none;color:#ddd;border-radius:50%;font-size:22px}#close-preview:hover{background:#fff1}#preview-image{display:block;width:100%;max-height:calc(100dvh - 190px);object-fit:contain;background:#080808}
.index-mode{overflow:auto}.index-mode main{height:auto;min-height:100%}.index-mode .viewport{display:none}.index-mode .gallery-footer{position:relative;left:auto;right:auto;bottom:auto;margin:20px var(--pad) 32px}.index-mode .masthead{position:absolute}.index-grid{padding:250px var(--pad) 50px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:54px 30px}.index-card{display:block;background:none;border:0;padding:0;text-align:left;color:#eee}.index-card img{display:block;width:100%;aspect-ratio:1600/992;object-fit:contain;background:#111}.index-card span{display:block;font:11px monospace;margin-top:15px}.index-card small{color:#92928c;margin-right:20px}
.masthead{left:calc(var(--pad) + 32px)}.view-tools{top:16px;padding:0 14px;background:#0a0a0ae8;border:1px solid #ffffff19;border-radius:3px;backdrop-filter:blur(10px)}.project-index{max-width:58vw;overflow-x:auto;scrollbar-width:none;background:#050505d9;border:1px solid #ffffff12;border-radius:3px;padding:0 3px}.project-index button{flex-shrink:0}
@media(min-width:1700px){.planes{transform:translateY(110px)}}
@media(max-width:800px){.masthead{top:88px;left:calc(var(--pad) + 20px)}.masthead h1{font-size:clamp(32px,5.3vw,48px)}.view-tools{top:12px}.viewport{perspective:1400px;perspective-origin:5% 15%}.planes{transform:translateY(72px)}.gallery-footer{gap:10px}.current-project{font-size:9px}.interaction-hint{font-size:8px;max-width:145px;text-align:right}.index-grid{padding-top:235px;grid-template-columns:1fr;gap:35px}.preview-head{padding:18px;gap:14px}.preview-head h2{font-size:21px}.preview-actions{gap:12px}.eyebrow{font-size:8px;max-width:175px}#visit{font-size:11px}}
@media(max-width:400px){.masthead h1{font-size:30px}.gallery-footer{left:14px;right:18px}.project-index{gap:0}.project-index button{min-width:44px;padding:9px}.current-project{max-width:90px}.preview-head{align-items:flex-start;padding:14px}.preview-actions{gap:10px}.preview-head p:last-child{font-size:11px;max-width:150px}.preview-head .eyebrow{display:none}dialog{width:calc(100vw - 24px)}.view-tools{gap:18px}}
@media(max-width:480px){.preview-head{flex-direction:column;align-items:stretch}.preview-actions{justify-content:space-between;margin-top:4px}.preview-head p:last-child{max-width:none}#visit{border-bottom:0}.preview-head h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Depth shading stays on a composited opacity layer during touch travel. */
.plane-hit{position:relative}.plane-shade{position:absolute;inset:0;background:#000;pointer-events:none;will-change:opacity}
