
:root{
  --bg:#030303;
  --ink:#e0d8cd;
  --muted:rgba(224,216,205,.58);
  --line:rgba(224,216,205,.24);
  --serif:Georgia,"Times New Roman",serif;
  --sans:Arial,Helvetica,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg)}
body{overflow:hidden;color:var(--ink);font-family:var(--sans)}
button,a{-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit}
.app{position:relative;width:100%;height:100svh;min-height:640px;overflow:hidden;background:var(--bg)}
.room-screen,.void-screen,.detail-panel,.transition-layer{position:absolute;inset:0}
.room-screen{z-index:1;overflow:hidden;background:#020202}
.room-shell{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden}
.camera{
  position:relative;
  width:min(100vw,150vh);
  aspect-ratio:3/2;
  transform-origin:50% 50%;
  transition:transform 1.2s cubic-bezier(.72,0,.14,1),filter 1s ease;
  will-change:transform,filter
}
.room-image{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.topbar{position:absolute;z-index:10;top:0;left:0;width:100%;display:flex;justify-content:space-between;padding:28px 36px;pointer-events:none}
.brand{pointer-events:auto;color:var(--ink);text-decoration:none;display:flex;gap:13px;align-items:baseline}
.brand span{font:400 30px/1 var(--serif);letter-spacing:.05em}
.brand small,.topbar-note{font-size:8px;letter-spacing:.23em;text-transform:uppercase;color:var(--muted)}
.topbar-note{padding-top:8px}
.room-caption{position:absolute;z-index:10;left:36px;bottom:32px}
.room-caption small{font-size:8px;letter-spacing:.23em;color:var(--muted)}
.room-caption p{margin:10px 0 0;font:14px/1.55 var(--serif);color:rgba(224,216,205,.74)}
.hotspot{
  position:absolute;z-index:5;border:0;background:transparent;padding:0;cursor:pointer;
  border-radius:4px;outline:none
}
.hotspot::after{
  content:"";position:absolute;inset:0;border:1px solid transparent;
  box-shadow:inset 0 0 35px transparent;transition:.25s
}
.hotspot:hover::after,.hotspot:focus-visible::after{
  border-color:rgba(224,216,205,.36);
  box-shadow:inset 0 0 42px rgba(224,216,205,.08)
}
.hs-left-main{left:7.2%;top:14.1%;width:20.3%;height:37.3%}
.hs-left-top{left:27.6%;top:28.1%;width:5.4%;height:15.1%}
.hs-left-bottom{left:26.4%;top:42.3%;width:4.9%;height:11.2%}
.hs-right-main{left:59.2%;top:27.1%;width:18.8%;height:25.4%}
.hs-portrait{left:80.8%;top:19.4%;width:11.6%;height:34.8%;border-radius:45%}
.hs-diary{left:65.2%;top:64.6%;width:20.2%;height:18%;transform:rotate(-4deg);border-radius:45%}
.hs-rift{
  left:41.4%;top:2.5%;width:16.9%;height:82.4%;
  clip-path:polygon(42% 0,65% 5%,53% 15%,70% 22%,56% 31%,76% 43%,55% 52%,72% 63%,53% 73%,67% 86%,48% 100%,33% 86%,43% 73%,27% 62%,42% 51%,23% 41%,41% 30%,29% 20%,44% 13%,33% 5%)
}
.cursor-label{
  position:fixed;z-index:20;left:0;top:0;padding:8px 11px;min-width:110px;
  border:1px solid rgba(224,216,205,.14);background:rgba(5,5,5,.76);
  color:rgba(236,229,218,.86);font:12px/1 var(--serif);pointer-events:none;
  opacity:0;transform:translate(15px,15px);transition:opacity .15s;backdrop-filter:blur(7px)
}
.cursor-label.show{opacity:1}
.detail-panel{
  z-index:30;padding:88px 7vw 54px;
  background:linear-gradient(90deg,rgba(3,3,3,.99) 0%,rgba(3,3,3,.95) 38%,rgba(3,3,3,.62) 58%,transparent 82%);
  opacity:0;visibility:hidden;pointer-events:none;transition:.55s
}
.detail-panel.open{opacity:1;visibility:visible;pointer-events:auto}
.back-button{
  position:absolute;top:30px;left:36px;border:0;background:none;padding:8px 0;cursor:pointer;
  font-size:8px;letter-spacing:.19em;text-transform:uppercase;color:var(--muted)
}
.detail-copy{position:absolute;left:7vw;bottom:7vh;width:min(520px,42vw)}
.detail-copy>small,.detail-meta{font-size:8px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.detail-copy h1{margin:18px 0 16px;font:400 clamp(48px,5.8vw,92px)/.92 var(--serif);letter-spacing:-.045em}
.detail-line{width:70px;height:1px;margin:25px 0;background:var(--line)}
.detail-copy p{margin:0;max-width:470px;font:16px/1.66 var(--serif);color:rgba(224,216,205,.74)}
.detail-copy blockquote{margin:24px 0 0;padding-left:18px;border-left:1px solid var(--line);font:italic 18px/1.5 var(--serif);color:rgba(236,228,217,.86)}
.detail-link{display:inline-block;margin-top:26px;padding-bottom:7px;border-bottom:1px solid var(--line);font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);text-decoration:none}
.void-screen{
  z-index:40;overflow:hidden;background:
  radial-gradient(circle at 70% 28%,rgba(65,55,49,.12),transparent 18%),
  radial-gradient(circle at 31% 75%,rgba(50,43,39,.11),transparent 17%),#010101;
  opacity:0;visibility:hidden;pointer-events:none;transition:opacity 1s,visibility 1s
}
.void-screen.open{opacity:1;visibility:visible;pointer-events:auto}
.void-noise{position:absolute;inset:-10%;opacity:.065;pointer-events:none;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='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");animation:grain .28s steps(2) infinite}
@keyframes grain{0%{transform:translate(0)}25%{transform:translate(-2%,1%)}50%{transform:translate(1%,-2%)}75%{transform:translate(2%,2%)}100%{transform:translate(-1%,-1%)}}
.void-header{position:absolute;z-index:4;top:0;left:0;width:100%;display:flex;justify-content:space-between;padding:30px 36px}
.void-header button{border:0;background:none;padding:8px 0;cursor:pointer;font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.void-header span{padding-top:8px;font-size:8px;letter-spacing:.22em;color:rgba(224,216,205,.28)}
.void-intro{position:absolute;z-index:2;top:18%;left:8%}
.void-intro small{font-size:8px;letter-spacing:.24em;color:rgba(224,216,205,.34)}
.void-intro h2{margin:10px 0 14px;font:400 clamp(62px,8vw,122px)/.85 var(--serif);letter-spacing:-.04em}
.void-intro p{margin:0;font:14px/1.65 var(--serif);color:rgba(224,216,205,.42)}
.void-object{position:absolute;z-index:3;border:0;background:none;padding:0;cursor:pointer;animation:float 7.5s ease-in-out infinite}
.void-object em{display:block;margin-top:10px;font:12px/1 var(--serif);font-style:normal;color:rgba(224,216,205,.62);opacity:0;transition:.25s}
.void-object:hover em{opacity:1}
.void-a{top:18%;right:17%;width:clamp(120px,12vw,205px)}
.void-b{bottom:10%;left:35%;width:clamp(95px,9vw,150px);animation-delay:-2.7s}
.void-c{right:31%;bottom:27%;width:125px;animation-delay:-4.3s}
.void-art{display:block;width:100%;aspect-ratio:4/5;border:8px solid #171310;background-image:url("assets/room.jpeg");background-repeat:no-repeat;box-shadow:0 24px 85px #000}
.crop-left{background-size:500%;background-position:14% 36%}
.crop-right{background-size:520%;background-position:70% 38%}
.void-book{display:block;width:116px;height:76px;margin:auto;border:1px solid #44382f;border-radius:2px 7px 7px 2px;background:linear-gradient(105deg,rgba(255,255,255,.055),transparent 28%),#1c1512;box-shadow:0 28px 70px #000;transform:rotate(-15deg)}
@keyframes float{0%,100%{transform:translateY(-5px) rotate(-.3deg)}50%{transform:translateY(14px) rotate(.6deg)}}
.void-modal{
  position:absolute;z-index:12;inset:0;display:grid;place-content:center;padding:70px;
  background:rgba(1,1,1,.95);opacity:0;visibility:hidden;pointer-events:none;transition:.45s
}
.void-modal.open{opacity:1;visibility:visible;pointer-events:auto}
.void-modal-close{position:absolute;top:30px;right:36px;border:0;background:none;padding:8px 0;cursor:pointer;font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.void-modal-copy{width:min(620px,80vw)}
.void-modal-copy small{font-size:8px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.void-modal-copy h3{margin:18px 0 20px;font:400 clamp(48px,6vw,86px)/.92 var(--serif)}
.void-modal-copy p{margin:0;font:17px/1.65 var(--serif);color:rgba(224,216,205,.7)}
.transition-layer{z-index:60;background:#000;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .65s,visibility .65s}
.transition-layer.show{opacity:1;visibility:visible}
@media(max-width:760px){
  .app{min-height:620px}
  .topbar,.void-header{padding:20px}
  .topbar-note,.void-header span,.room-caption,.cursor-label{display:none}
  .brand span{font-size:26px}
  .hotspot::after{display:none}
  .detail-panel{padding:78px 22px 30px;background:rgba(3,3,3,.94)}
  .back-button{top:20px;left:20px}
  .detail-copy{left:22px;right:22px;bottom:6vh;width:auto}
  .detail-copy h1{font-size:50px}
  .detail-copy p{font-size:15px}
  .void-intro{left:22px;top:17%}
  .void-intro p{display:none}
  .void-a{top:21%;right:8%;width:105px}
  .void-b{bottom:13%;left:9%;width:92px}
  .void-c{right:14%;bottom:31%;width:105px}
  .void-modal{padding:62px 22px 30px}
  .void-modal-close{top:20px;right:20px}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
