/* A spatial module selector. Content remains ordinary, accessible links. */
.home-view{width:100%;max-width:none;margin:0;padding:0;min-height:0}
.js .home-view.is-active{display:block;animation:none}
.module-selector{--card-width:min(53vw,820px);--card-ratio:1.52;--orbit-x:0deg;--orbit-y:0deg;--glare-x:50%;--glare-y:30%;position:relative;height:calc(100svh - 190px);min-height:580px;overflow:clip;isolation:isolate}
.gallery-intro{position:absolute;left:4.6%;top:26px;z-index:5;pointer-events:none}
.gallery-intro>p{font:12px Consolas,monospace;letter-spacing:1.3px;color:#8cafac}
.gallery-intro h1{font-size:clamp(23px,2.1vw,32px);font-weight:350;letter-spacing:1px;line-height:1.7;margin-top:18px;text-shadow:0 2px 30px #021318}
.gallery-intro h1 span{color:#a6c0bf}
.gallery-pagination{position:absolute;top:22px;right:4.6%;z-index:6;display:flex;align-items:center;gap:18px;padding:7px;border:1px solid #b4e6df38;border-radius:6px;background:#06121983;backdrop-filter:blur(16px);box-shadow:0 0 24px #8cdbd70b;font:13px Consolas,monospace;color:#8dabaa}
.gallery-pagination button{width:38px;height:36px;border:1px solid #a3dacf38;border-radius:3px;font:20px 'Segoe UI',sans-serif;color:#d0e9df;transition:background .2s,border-color .2s}
.gallery-pagination button:hover{background:#bcece221;border-color:#bcece2a0}
.gallery-pagination strong{font-weight:400;color:#edf8ef}.pagination-slash{margin:0 12px;color:#6b8b90}
.portal-stage{position:absolute;inset:0;perspective:1650px;perspective-origin:53% 46%;touch-action:pan-y;cursor:grab}
.portal-stage.is-dragging{cursor:grabbing}
.portal-orbit{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--orbit-x)) rotateY(var(--orbit-y));transition:transform .65s cubic-bezier(.2,.7,.2,1)}
.portal-card{--card-x:0%;--card-y:0px;--card-z:60px;--card-ry:-7deg;--card-rx:2deg;--card-rz:-1deg;position:absolute;left:54%;top:48%;width:var(--card-width);aspect-ratio:var(--card-ratio);display:block;transform-style:preserve-3d;transform:translate(-50%,-50%) translate3d(var(--card-x),var(--card-y),var(--card-z)) rotateY(var(--card-ry)) rotateX(var(--card-rx)) rotateZ(var(--card-rz));transition:transform 1.05s cubic-bezier(.22,.78,.16,1);will-change:transform;outline:none;border-radius:27px;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
.portal-card[data-position=active]{z-index:3}
.portal-card[data-position=left]{--card-x:-95%;--card-y:-58px;--card-z:-340px;--card-ry:46deg;--card-rx:1deg;--card-rz:3deg;z-index:1}
.portal-card[data-position=right]{--card-x:96%;--card-y:76px;--card-z:-360px;--card-ry:-49deg;--card-rx:-4deg;--card-rz:3deg;z-index:1}
.orbit-ready .portal-card{transition:none;z-index:auto}
.portal-drift{height:100%;width:100%;position:relative;transform-style:preserve-3d;animation:portal-float 9s ease-in-out infinite}
.portal-card:nth-child(2) .portal-drift{animation-delay:-3s}.portal-card:nth-child(3) .portal-drift{animation-delay:-6s}
@keyframes portal-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}
.portal-drift::before{content:"";position:absolute;inset:-3px;border:1px solid #99fff479;border-radius:28px;background:linear-gradient(135deg,#d1fffaa0,#9dcbd820 30%,#6578a258 63%,#b7ffff70);transform:translate3d(6px,3px,-10px);box-shadow:0 0 32px #7bedf023,5px 5px 0 #8afcf20e}
.portal-face{position:relative;height:100%;width:100%;overflow:hidden;border-radius:25px;border:1px solid #c2fcf1a3;background:#071317;box-shadow:inset 0 0 1px 1px #eefff68f,0 30px 65px #0008,0 0 40px #68d2de0d;transition:box-shadow .45s,border-color .45s}
.portal-face::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 2px 2px 2px #f1fff5a6,inset -4px -1px 2px #93ffe659,inset 0 0 24px #c8fff319;border:1px solid #dcfff32e;z-index:5}
.portal-art{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;transform:scale(1.035);transition:transform 1.3s cubic-bezier(.2,.7,.2,1),opacity .85s;opacity:.87}
.portal-card[data-position=active]:hover .portal-art{transform:scale(1.08)}
.portal-card:not([data-position=active]) .portal-art{opacity:.52}
.portal-motion{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;pointer-events:none;transform:scale(1.035);transition:transform 1.3s cubic-bezier(.2,.7,.2,1),opacity .8s}
.portal-motion.is-ready{opacity:.95}.portal-face.has-motion .portal-art{opacity:0}
.portal-card:not([data-position=active]) .portal-motion.is-ready{opacity:.62}
.portal-card[data-position=active]:hover .portal-motion{transform:scale(1.08)}
.portal-glass{position:absolute;inset:0;background:linear-gradient(180deg,#03131b2b 0%,transparent 33%,#02111b30 49%,#020e16d9 100%);pointer-events:none}
.portal-glass::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at var(--glare-x) var(--glare-y),#cdfff822,transparent 54%),linear-gradient(120deg,transparent 30%,#dffff611 44%,transparent 54%);opacity:.7;mix-blend-mode:screen}
.portal-glass::before{content:"";position:absolute;inset:-30%;background:url('/assets/liquid-fallback.webp') center/cover;opacity:.06;mix-blend-mode:screen;transform:translate(-4%,-3%) rotate(-8deg);animation:glass-reflection 22s ease-in-out infinite alternate;pointer-events:none}
@keyframes glass-reflection{to{transform:translate(5%,4%) rotate(8deg)}}
.portal-topline{position:absolute;left:32px;right:32px;top:26px;display:flex;align-items:center;justify-content:space-between;font:12px Consolas,monospace;letter-spacing:1.8px;color:#e1f8eff2;text-shadow:0 2px 12px #000}
.portal-mark{font-size:25px;line-height:1}
.portal-copy{position:absolute;left:34px;bottom:30px;right:34px;text-shadow:0 2px 14px #001012bf}
.portal-category{font:12px Consolas,monospace;letter-spacing:2px;color:#c1ded8;margin-bottom:9px}
.portal-copy h2{font-size:clamp(28px,3.8vw,57px);font-weight:350;letter-spacing:-1.5px;line-height:1.35;color:#f3fcf3}
.portal-description{font-size:16px;line-height:1.6;color:#c0d5d0;margin-top:11px}
.portal-enter{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d0efde40;padding-top:17px;margin-top:23px;font-size:14px;color:#e6f3e8;transition:opacity .45s,transform .45s}
.portal-enter>span{font:26px 'Segoe UI',sans-serif;line-height:1}
.portal-card:not([data-position=active]) .portal-enter{opacity:0;transform:translateY(7px)}
.portal-card:focus-visible{outline:2px solid #dcffe9;outline-offset:9px}.portal-card:focus-visible .portal-face,.portal-card[data-position=active]:hover .portal-face{border-color:#edfff1;box-shadow:inset 0 0 1px 1px #fff,0 30px 65px #0008,0 0 50px #89dfe62b}
.module-menu{position:absolute;left:4.6%;bottom:77px;z-index:5;min-width:160px}
.module-menu>p{font-size:14px;color:#d3e4df;margin-bottom:17px;letter-spacing:1px}
.module-menu button{display:flex;align-items:center;gap:14px;width:100%;text-align:left;min-height:43px;padding:5px 0;color:#97b7b6;font-size:15px;transition:color .3s,transform .3s}
.module-index{font:12px Consolas,monospace;color:#769596;transition:color .3s}.module-menu-arrow{margin-left:auto;opacity:0;transform:translateX(-6px);transition:opacity .3s,transform .3s;font-size:19px}
.module-menu button[aria-pressed=true],.module-menu button:hover{color:#edfff2}.module-menu button[aria-pressed=true] .module-index{color:#d2ffef}.module-menu button[aria-pressed=true] .module-menu-arrow{opacity:1;transform:translateX(0)}
.gallery-caption{position:absolute;bottom:43px;left:54%;transform:translateX(-50%);display:flex;align-items:center;gap:17px;color:#c2d9d3;font:12px Consolas,'Microsoft YaHei',monospace;letter-spacing:1px;white-space:nowrap;z-index:5}
.gallery-progress{width:65px;height:2px;background:#b1d7d132;overflow:hidden;display:block}.gallery-progress>span{display:block;width:33.333%;height:100%;background:#c3f5df;transform:translateX(var(--progress-offset,0%));transition:transform .8s cubic-bezier(.2,.7,.2,1);box-shadow:0 0 10px #b1eed1}
.gallery-hint{position:absolute;right:4.6%;bottom:7px;color:#8eaeae;font-size:12px;letter-spacing:.4px;z-index:5}.hint-divider{padding:0 11px;color:#769391}.touch-gallery-hint{display: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}
.paused .portal-drift,.paused .portal-glass::before{animation-play-state:paused}.paused .portal-orbit{transform:none}
.module-selector.is-opening .portal-orbit{transform:scale(1.2);transition:transform .58s cubic-bezier(.4,0,.2,1)}
.module-selector.is-opening .portal-card:not([data-position=active]){opacity:0!important;transition:opacity .3s}
.module-selector.is-opening .gallery-intro,.module-selector.is-opening .gallery-pagination,.module-selector.is-opening .module-menu,.module-selector.is-opening .gallery-caption,.module-selector.is-opening .gallery-hint{opacity:0;transition:opacity .25s}
.module-selector.is-opening{pointer-events:none}
body[data-section=home] .readability-shade{background:linear-gradient(180deg,#050c1360,#050c1320 48%,#050c137d),linear-gradient(90deg,#050c1350,transparent 35%)}
@media(min-width:1800px){.module-selector{--card-width:min(51vw,960px);min-height:660px}.portal-card{top:47%}.module-menu{bottom:110px}.gallery-caption{bottom:52px}}
@media(max-height:800px) and (min-width:901px){.module-selector{height:calc(100svh - 168px);min-height:475px;--card-width:min(50vw,calc((100svh - 252px)*1.52))}.portal-card{top:48%}.gallery-intro{top:13px}.gallery-intro h1{font-size:23px;margin-top:12px}.gallery-pagination{top:10px}.module-menu{bottom:57px}.gallery-caption{bottom:32px}.portal-copy{bottom:23px;left:28px;right:28px}.portal-topline{top:21px;left:28px;right:28px}.portal-copy h2{font-size:36px}.portal-enter{margin-top:17px;padding-top:12px}.portal-description{font-size:14px}.portal-category{font-size:12px}.gallery-hint{bottom:2px}}
@media(max-width:1100px) and (min-width:701px){.module-selector{--card-width:61vw;min-height:570px}.portal-card{left:57%;top:47%}.gallery-intro h1{font-size:24px}.module-menu{bottom:61px;min-width:130px}.module-menu button{font-size:14px;gap:10px}.portal-copy{left:27px;right:27px;bottom:26px}.portal-topline{left:27px;right:27px}.gallery-caption{left:57%;bottom:42px}.gallery-hint{bottom:8px;font-size:12px}.portal-description{font-size:14px}}
@media(max-width:700px){
 .home-view{padding:0;width:100%}.module-selector{--card-width:min(78vw,390px);--card-ratio:.87;height:calc(100svh - 234px);min-height:650px}
 .gallery-intro{left:23px;top:18px}.gallery-intro>p{font-size:12px;letter-spacing:.6px}.gallery-intro h1{font-size:20px;line-height:1.55;margin-top:9px}.gallery-intro h1 br{display:none}.gallery-intro h1 span{margin-left:4px}
 .gallery-pagination{top:93px;right:24px;gap:12px;padding:5px;font-size:12px}.gallery-pagination button{width:31px;height:30px;font-size:18px}.pagination-slash{margin:0 8px}
 .portal-stage{perspective:1100px;perspective-origin:50% 44%}.portal-card{left:50%;top:48%;--card-z:0px;--card-ry:-4deg;--card-rx:1deg;--card-rz:-1deg;border-radius:21px}
 .portal-card[data-position=left]{--card-x:-83%;--card-y:-26px;--card-z:-260px;--card-ry:51deg;--card-rx:0deg;--card-rz:1deg}.portal-card[data-position=right]{--card-x:85%;--card-y:34px;--card-z:-260px;--card-ry:-51deg;--card-rx:0deg;--card-rz:2deg}
 .portal-face{border-radius:20px}.portal-drift::before{border-radius:23px}.portal-topline{top:22px;left:23px;right:23px;font-size:12px;letter-spacing:1px}.portal-mark{font-size:22px}.portal-copy{left:24px;right:24px;bottom:24px}.portal-category{font-size:12px;letter-spacing:1px;margin-bottom:11px}.portal-copy h2{font-size:34px;letter-spacing:-1px}.portal-description{font-size:14px;line-height:1.8;margin-top:10px}.portal-enter{font-size:14px;padding-top:16px;margin-top:20px}
 .module-menu{bottom:65px;left:24px;right:24px;min-width:0;display:flex;gap:10px;justify-content:center}.module-menu>p{display:none}.module-menu button{font-size:14px;gap:8px;width:auto;padding:6px 10px;border-bottom:1px solid transparent;min-height:42px;white-space:nowrap}.module-menu button[aria-pressed=true]{border-bottom-color:#bceadb}.module-menu-arrow{display:none}.module-index{font-size:12px}
 .gallery-caption{left:50%;bottom:32px;font-size:12px;gap:12px}.gallery-progress{width:42px}.gallery-hint{left:0;right:0;text-align:center;bottom:1px;font-size:12px;letter-spacing:0}.desktop-gallery-hint{display:none}.touch-gallery-hint{display:inline}.hint-divider{padding:0 8px}
 body[data-section=home] .site-footer{padding-top:16px}.header-caption{display:none}
}
@media(max-width:380px){.module-selector{min-height:620px}.module-menu{left:12px;right:12px;gap:3px}.module-menu button{padding-inline:8px}.portal-copy h2{font-size:29px}.portal-description{font-size:14px}.portal-copy{left:20px;right:20px}.gallery-intro h1{font-size:19px}.gallery-pagination{top:92px}.portal-category{letter-spacing:.5px}}
@media(pointer:coarse){.desktop-gallery-hint{display:none}.touch-gallery-hint{display:inline}}
@media(prefers-reduced-motion:reduce){.portal-card,.portal-orbit,.portal-art,.portal-enter,.gallery-progress>span{transition:none}.portal-drift{animation:none}.portal-orbit{transform:none}}
/* All destinations remain available even before scripts load. */
body:not(.js) .module-selector{height:auto;min-height:0;padding:30px 6%}
body:not(.js) .portal-stage,body:not(.js) .portal-orbit{position:static;transform:none;perspective:none;display:grid;gap:28px}
body:not(.js) .portal-card{position:relative;inset:auto;transform:none;width:100%;max-width:760px;aspect-ratio:1.52;margin:auto}
body:not(.js) .portal-drift{animation:none}
body:not(.js) .gallery-intro,body:not(.js) .gallery-pagination,body:not(.js) .module-menu,body:not(.js) .gallery-caption,body:not(.js) .gallery-hint{display:none}
body:not(.js) .portal-enter{opacity:1;transform:none}
