/* Shared five-cube hub */
.selector{position:fixed;inset:0;z-index:8;pointer-events:none;opacity:0;transition:opacity .8s}.sequence-done .selector{opacity:1}
.selector-heading{position:absolute;top:8%;left:50%;transform:translateX(-50%);text-align:center;width:min(92vw,640px);text-shadow:0 2px 18px rgba(45,49,90,.48)}
.selector-heading span{font-size:10px;letter-spacing:.34em;font-weight:800;color:#fff1bc}.selector-heading h2{font-size:clamp(24px,3vw,42px);margin-top:9px}.selector-heading p{font-size:12px;margin-top:7px;color:rgba(255,255,255,.8)}
.project-list{position:absolute;inset:0}.project-hit{position:absolute;pointer-events:none;width:clamp(82px,9vw,132px);height:clamp(108px,14vh,170px);transform:translate(-50%,-50%);border:0;background:transparent;color:#fff;cursor:pointer;border-radius:46%;outline:0}.sequence-done .project-hit{pointer-events:auto}.project-hit::before{content:"";position:absolute;inset:15%;border:1px solid transparent;border-radius:50%;transition:border-color .2s,box-shadow .2s}.project-hit:hover::before,.project-hit:focus-visible::before{border-color:rgba(255,255,255,.7);box-shadow:0 0 24px rgba(255,255,255,.32)}.project-hit span{position:absolute;left:50%;bottom:-5px;transform:translate(-50%,8px);white-space:nowrap;padding:5px 11px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(39,46,82,.32);backdrop-filter:blur(8px);font-size:10px;font-weight:700;letter-spacing:.04em;opacity:.72;transition:.2s}.project-hit:hover span,.project-hit:focus-visible span{opacity:1;transform:translate(-50%,0);background:rgba(39,46,82,.56)}

.preview-tether{--tether-color:#fff;position:fixed;inset:0;width:100vw;height:100vh;z-index:14;overflow:visible;pointer-events:none;opacity:0;transition:opacity .18s ease}.preview-tether.is-open{opacity:.86}.preview-tether path{fill:none;vector-effect:non-scaling-stroke}.preview-tether-base{stroke:var(--tether-color);stroke-width:1.35;filter:drop-shadow(0 0 5px var(--tether-color));opacity:.64}.preview-tether-flow{stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:2 18;filter:drop-shadow(0 0 7px var(--tether-color));animation:tetherFlow 1.15s linear infinite}@keyframes tetherFlow{to{stroke-dashoffset:-40}}
.hologram{--project:#8de5b4;position:fixed;z-index:15;left:50%;bottom:4%;width:min(720px,68vw);min-height:210px;display:grid;grid-template-columns:1.45fr 1fr;gap:0;transform:translate(-50%,16px) perspective(900px) rotateX(8deg) scale(.94);opacity:0;visibility:hidden;pointer-events:none;border:1px solid color-mix(in srgb,var(--project),white 52%);border-radius:6px;background:linear-gradient(115deg,rgba(19,33,61,.8),rgba(63,53,103,.64));box-shadow:0 0 0 1px rgba(255,255,255,.12) inset,0 0 36px color-mix(in srgb,var(--project),transparent 55%),0 28px 80px rgba(21,27,62,.28);backdrop-filter:blur(16px);overflow:hidden;transition:opacity .28s,transform .35s cubic-bezier(.22,1,.36,1),visibility .28s}
.hologram::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 4px,rgba(255,255,255,.025) 5px);pointer-events:none}.hologram.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0) perspective(900px) rotateX(0) scale(1)}
.preview-frame{position:relative;min-height:210px;overflow:hidden;background:linear-gradient(145deg,color-mix(in srgb,var(--project),#21305a 64%),#18213a)}.preview-frame::after{content:"";position:absolute;inset:0;box-shadow:inset -30px 0 45px rgba(17,24,49,.3);pointer-events:none}.preview-frame img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;animation:previewPan 8s ease-in-out infinite alternate}@keyframes previewPan{from{object-position:50% 25%}to{object-position:50% 75%}}
.preview-placeholder{height:100%;min-height:210px;display:grid;place-items:center;position:relative;font-family:"Gowun Batang",serif;font-size:48px;color:#fff;text-shadow:0 0 28px var(--project)}.preview-orbit{position:absolute;width:140px;height:140px;border:1px solid color-mix(in srgb,var(--project),white 35%);border-radius:50%;box-shadow:0 0 34px var(--project);animation:orbit 7s linear infinite}.preview-orbit::before,.preview-orbit::after{content:"";position:absolute;inset:22px;border:1px solid rgba(255,255,255,.34);border-radius:50%;transform:rotate(58deg)}.preview-orbit::after{transform:rotate(-58deg)}@keyframes orbit{to{transform:rotate(360deg)}}
.preview-copy{padding:24px 28px 48px;display:flex;flex-direction:column;justify-content:center}.preview-number{font-size:9px;letter-spacing:.25em;color:var(--project);font-weight:800}.preview-copy h3{font-size:26px;margin:6px 0 8px}.preview-copy>p:not(.preview-number){font-size:12px;line-height:1.65;color:rgba(255,255,255,.76)}.preview-enter{position:absolute;right:22px;bottom:18px;z-index:3;border:1px solid color-mix(in srgb,var(--project),white 30%);border-radius:999px;background:color-mix(in srgb,var(--project),transparent 75%);color:#fff;padding:9px 15px;font-weight:700;font-size:11px;cursor:pointer}.preview-enter[disabled]{opacity:.58;cursor:not-allowed}.preview-enter span{margin-left:8px}.hologram-close{position:absolute;z-index:3;right:10px;top:9px;border:0;background:transparent;color:rgba(255,255,255,.8);font-size:24px;cursor:pointer}

@media(max-width:760px){
  .preview-tether{display:none}
  .selector-heading{top:10%}.selector-heading p{display:none}
  .hologram{top:auto;bottom:max(13%,calc(env(safe-area-inset-bottom) + 22px));width:min(540px,calc(100vw - 28px));min-height:0;grid-template-columns:112px 1fr;transform:translate(-50%,16px) scale(.96)}.hologram.is-open{transform:translate(-50%,0) scale(1)}
  .preview-frame,.preview-placeholder{min-height:170px}.preview-placeholder{font-size:32px}.preview-orbit{width:92px;height:92px}.preview-copy{padding:20px 18px}.preview-copy h3{font-size:21px;margin:4px 0 5px}.preview-copy>p:not(.preview-number){font-size:11px;line-height:1.55}.preview-enter{margin-top:10px;padding:7px 12px}
}
@media(prefers-reduced-motion:reduce){
  .preview-tether-flow{animation:none}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
}
