@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600&display=swap');
:root{--bg:#10120f;--ink:#f5f3ec;--muted:rgba(245,243,236,.58);--line:rgba(245,243,236,.18);--accent:#d4b477}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:Inter,'Helvetica Neue',Arial,sans-serif}button,a{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer}a{text-decoration:none}.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}.grain{position:fixed;inset:0;z-index:30;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E")}#room{position:relative;width:100vw;height:100dvh;min-height:520px;overflow:hidden;background:radial-gradient(circle at 48% 43%,#292d24 0,#151813 43%,#0c0e0c 100%);isolation:isolate}.ambient{position:absolute;z-index:-1;border-radius:50%;filter:blur(85px);opacity:.16;pointer-events:none;transition:transform 3s ease}.ambient-a{width:58vw;height:58vw;left:-20vw;top:-34vw;background:#446d75;animation:ambientA 14s ease-in-out infinite alternate}.ambient-b{width:46vw;height:46vw;right:-15vw;bottom:-28vw;background:#9b6033;animation:ambientB 18s ease-in-out infinite alternate}@keyframes ambientA{to{transform:translate(12vw,9vh) scale(1.15)}}@keyframes ambientB{to{transform:translate(-10vw,-8vh) scale(.8)}}.topbar,.bottom-bar{position:absolute;z-index:20;left:clamp(18px,4vw,52px);right:clamp(18px,4vw,52px);display:flex;align-items:center;justify-content:space-between}.topbar{top:clamp(20px,4vh,42px)}.brand{font:500 13px/1 'IBM Plex Mono',monospace;letter-spacing:.08em}.brand span{color:var(--muted);font-size:11px}.top-actions{display:flex;align-items:center;gap:26px}.counter{font:12px 'IBM Plex Mono',monospace;color:var(--muted)}.counter b{color:var(--ink);font-weight:400}.counter i{font-style:normal;padding:0 7px;opacity:.45}.icon-button{width:32px;height:28px;position:relative}.icon-button span{position:absolute;right:0;width:24px;height:1px;background:var(--ink);transition:.3s}.icon-button span:first-child{top:9px}.icon-button span:last-child{top:17px;width:15px}.icon-button:hover span:last-child{width:24px}.stage{position:absolute;inset:0;touch-action:none;cursor:grab}.stage:active{cursor:grabbing}.room-line{position:absolute;z-index:1;pointer-events:none;background:var(--line)}.line-one{width:1px;height:100%;left:12%;opacity:.3}.line-two{height:1px;width:100%;top:68%;opacity:.25}.line-three{width:1px;height:36%;right:17%;top:16%;opacity:.12}.orbit{position:absolute;border:1px solid rgba(245,243,236,.11);border-radius:50%;pointer-events:none;transform:rotate(-20deg)}.orbit-one{width:min(72vw,880px);height:min(30vw,360px);left:14%;top:29%;animation:orbitOne 16s ease-in-out infinite alternate}.orbit-two{width:min(43vw,530px);height:min(20vw,240px);left:31%;top:46%;opacity:.55;animation:orbitTwo 11s ease-in-out infinite alternate}@keyframes orbitOne{to{transform:rotate(-12deg) scale(1.08) translate(2%,3%)}}@keyframes orbitTwo{to{transform:rotate(-27deg) scale(.9) translate(-3%,-4%)}}.gallery{position:absolute;inset:0;z-index:3}.photo{position:absolute;left:50%;top:50%;width:clamp(210px,29vw,520px);height:clamp(295px,43vw,670px);background:#222;overflow:hidden;will-change:transform,clip-path;user-select:none;transform-origin:center;transition:transform 1.05s cubic-bezier(.22,.8,.2,1),filter .8s,opacity .8s,clip-path 1.2s cubic-bezier(.2,.7,.2,1),box-shadow .8s}.photo:nth-child(3n+1){clip-path:polygon(3% 0,100% 4%,96% 100%,0 95%)}.photo:nth-child(3n+2){clip-path:polygon(0 5%,94% 0,100% 94%,5% 100%)}.photo:nth-child(3n){clip-path:polygon(5% 0,96% 5%,100% 96%,0 100%)}.photo::after{content:'';position:absolute;inset:0;border:1px solid rgba(255,255,255,.24);pointer-events:none}.photo img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none;filter:saturate(.92) contrast(1.03);transition:transform 1.4s cubic-bezier(.2,.7,.2,1),filter .8s}.photo.back img{filter:saturate(.68) contrast(.88)}.photo.active{box-shadow:0 34px 90px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.22)}.photo.active img{filter:saturate(1.03) contrast(1.05);transform:scale(1.035)}.photo-number{position:absolute;z-index:2;left:15px;bottom:13px;font:11px 'IBM Plex Mono',monospace;color:#fff;text-shadow:0 1px 12px #000}.photo-number::before{content:'';display:inline-block;width:22px;height:1px;background:currentColor;vertical-align:middle;margin-right:8px;opacity:.7}.focus-shade{position:absolute;z-index:6;inset:0;background:rgba(4,5,4,.42);opacity:0;pointer-events:none;transition:opacity .8s}.is-focus .focus-shade{opacity:1}.is-focus .photo.active{z-index:14;box-shadow:0 30px 100px rgba(0,0,0,.72);filter:none}.is-focus .photo:not(.active){opacity:.14;filter:blur(3px) saturate(.3);transform:translate(-50%,-50%) scale(.82)!important}.scene-mark{position:absolute;z-index:7;right:clamp(22px,8vw,120px);top:50%;display:flex;gap:5px;transform:rotate(90deg);opacity:.6}.scene-mark span{width:5px;height:5px;border:1px solid var(--accent);border-radius:50%}.guide{position:absolute;z-index:20;left:50%;bottom:clamp(74px,11vh,118px);transform:translateX(-50%);display:flex;align-items:center;gap:8px;white-space:nowrap;color:var(--muted);font:11px 'IBM Plex Mono',monospace;transition:opacity .7s}.guide.hidden{opacity:0}.guide-mark{display:inline-block;width:7px;height:7px;border:1px solid var(--accent);border-radius:50%;box-shadow:0 0 14px var(--accent);animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 3px var(--accent);transform:scale(.7)}}.bottom-bar{bottom:clamp(20px,4vh,42px);font:11px 'IBM Plex Mono',monospace}.text-button{color:var(--muted);padding:7px 0;border-bottom:1px solid transparent;transition:.25s}.text-button:hover,.text-button:focus-visible{color:var(--ink);border-color:var(--ink)}.credit{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;color:rgba(245,243,236,.32)}.menu{position:fixed;z-index:40;top:0;right:0;width:min(430px,88vw);height:100dvh;padding:clamp(30px,7vw,70px) clamp(26px,7vw,70px);background:#171a15;transform:translateX(101%);transition:transform .65s cubic-bezier(.77,0,.18,1);box-shadow:-30px 0 90px rgba(0,0,0,.35)}.menu.open{transform:translateX(0)}.menu-close{position:absolute;right:28px;top:24px;font-size:28px;font-weight:200;color:var(--muted)}.menu-label{font:11px 'IBM Plex Mono',monospace;color:var(--muted);letter-spacing:.08em;margin:0 0 70px}.menu nav{display:flex;flex-direction:column;align-items:flex-start;gap:25px}.menu nav a,.menu nav button{font-size:clamp(26px,5vw,42px);font-weight:400;letter-spacing:-.04em;text-align:left;transition:color .25s}.menu nav a:hover,.menu nav button:hover{color:var(--accent)}.menu-note{position:absolute;bottom:38px;color:var(--muted);font-size:13px;line-height:1.8}.menu-backdrop{position:fixed;z-index:35;inset:0;background:rgba(0,0,0,.48);opacity:0;pointer-events:none;transition:opacity .5s}.menu-backdrop.open{opacity:1;pointer-events:auto}.low-motion *,.low-motion *:before,.low-motion *:after{animation:none!important;transition-duration:.01ms!important}.low-motion .ambient,.low-motion .orbit{display:none}@media(max-width:700px){.brand span{display:none}.photo{width:clamp(190px,62vw,310px);height:clamp(270px,83vw,440px)}.credit{display:none}.guide{font-size:10px;bottom:80px}.bottom-bar{bottom:25px}.line-one{left:8%}.orbit-one{width:120vw;height:48vw;left:-10%;top:31%}.orbit-two{width:75vw;height:32vw;left:12%;top:48%}.scene-mark{right:16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.ambient,.orbit{display:none}}