/* A short passage between the story and the listening table. */
.portal-passage{height:120svh;position:relative;background:#090d0b;margin-top:12px}
.portal-stage{height:80svh;min-height:440px;max-height:900px;position:sticky;top:76px;overflow:hidden;isolation:isolate;background:#080d0b}
.portal-landscape{position:absolute;inset:0;background:linear-gradient(#080d0b 0%,#080d0b44 35%,#080d0b 100%),url('assets/hero-poster.jpg') center/cover;opacity:.45;transform:scale(1.08)}
.portal-window{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;gap:0;background:radial-gradient(ellipse at 50% 40%,#66847a55,#12251e 55%,#080d0b);clip-path:ellipse(var(--portal-radius,18%) var(--portal-height,40%) at 50% 48%)}
.portal-window img{width:31%;max-width:330px;height:83%;object-fit:contain;object-position:center center;filter:brightness(.65) saturate(.55);mask-image:linear-gradient(#000 60%,transparent 98%);margin-inline:-4%;transform:translateY(0)}
.portal-window img:nth-child(2){z-index:1;height:96%;filter:brightness(.85) saturate(.7);transform:none}
#portal-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.portal-stage:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(#080d0b,transparent 14%,transparent 70%,#080d0b);z-index:2}
.portal-inscription{position:absolute;left:0;right:0;bottom:8%;z-index:3;text-align:center;color:#e9d9a5;text-shadow:0 3px 12px #000}
.portal-inscription span{display:block;font:600 11px/1.5 'WitcherNavigation',sans-serif;letter-spacing:5px;margin-bottom:12px}
.portal-inscription a{font:500 clamp(29px,4vw,58px)/1.2 'Cinzel',serif;display:inline-block;border-bottom:1px solid #d7ba7566;padding-bottom:12px}
.portal-inscription small{display:block;font:500 9px/1.7 'WitcherNavigation',sans-serif;letter-spacing:3px;margin-top:14px;color:#c2c7b7}
.portal-stage.portal-fallback .portal-window{box-shadow:inset 0 0 90px #b8d3b11a}
.portal-stage.portal-fallback:before{content:'';position:absolute;z-index:2;left:30%;right:30%;top:10%;bottom:15%;border:2px solid #d8b87988;border-radius:50%;box-shadow:0 0 35px #c6d5aa22;pointer-events:none}
.voices{position:relative;isolation:isolate;overflow:clip}
.voices:before{content:'';position:absolute;z-index:-1;left:3%;right:3%;top:330px;height:600px;border-radius:50%;background:radial-gradient(ellipse,#31413644,#111b1244 55%,transparent 72%);transform:perspective(1000px) rotateX(35deg);pointer-events:none}
@media(min-width:901px) and (hover:hover) and (prefers-reduced-motion:no-preference){
 .voices .character-grid{padding-top:48px;padding-bottom:52px;scroll-padding-inline:15px;perspective:1600px;gap:18px}
 .voices .character-grid .character{transform:translate3d(var(--fan-nudge,0px),var(--fan-drop,0px),0) rotate(var(--fan-angle,0deg)) rotateY(var(--tilt-x,0deg));transform-origin:50% 90%;transition:transform .36s cubic-bezier(.22,1,.36,1),box-shadow .3s;box-shadow:0 18px 20px #0009,inset 0 0 0 2px #dfcc9155}
 .voices .character-grid .character:hover,.voices .character-grid .character:focus-visible{transform:translate3d(0,-23px,32px) rotate(0deg);z-index:8;box-shadow:0 26px 35px #000b,0 0 16px #b69a4f30}
 .voices .character-grid.is-dragging .character{transition:none}
}
.sense-trigger{display:flex;align-items:center;gap:10px;background:none;color:#d6c58f;padding:8px 0;border:0;font:500 12px/1.4 'Cinzel',serif;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none}
.sense-trigger svg{width:38px;height:42px;stroke:#c6b787;fill:#19211b;stroke-width:1.5;transition:filter .25s}
.sense-trigger small{display:block;font:500 8px/1.7 'WitcherNavigation',sans-serif;letter-spacing:2px;color:#989e8a}
.sense-trigger[aria-pressed=true]{color:#ffe5a4}.sense-trigger[aria-pressed=true] svg{filter:drop-shadow(0 0 6px #d8a65a)}
.senses-active .hero,.senses-active .intro,.senses-active .portal-stage,.senses-active .cinema{filter:grayscale(1) brightness(.65)}
.senses-active .voices{background:#070b08}.senses-active .character-grid .character{border-color:#e1b85f;box-shadow:0 0 18px #c997452e,inset 0 0 0 2px #d3b56d}
.senses-active .character>img{filter:grayscale(1) contrast(1.15)}
.senses-active .character .character-info{background:linear-gradient(#e8d09b,#af8b4d)}
.senses-active .card-corners{filter:drop-shadow(0 0 4px #eac15e)}
.senses-active .character-grid{background-image:radial-gradient(ellipse at var(--sense-x,50%) 40%,#d4a94d17,transparent 60%)}
.coin-flight{position:absolute;z-index:8;width:76px;height:76px;top:31%;left:calc(50% - 38px);border-radius:50%;border:4px double #f3d997;background:repeating-conic-gradient(#9d773c 0deg 5deg,#c3a05b 5deg 10deg);box-shadow:inset 0 0 0 5px #5d4929,inset 0 0 0 7px #dabd7e,0 12px 22px #0008;display:grid;place-items:center;color:#49381e;font:600 37px/1 'Cinzel',serif;pointer-events:none;backface-visibility:visible}
.voice-dialog .voice-art:after{content:'';position:absolute;inset:35% -10% -5%;pointer-events:none;background:radial-gradient(ellipse at 25% 65%,#c0cfab3a,transparent 55%),radial-gradient(ellipse at 75% 40%,#9daf9733,transparent 50%);filter:blur(20px);opacity:calc(.12 + var(--voice-energy,0)*.6);transform:translateX(calc(var(--voice-energy,0)*12px));z-index:2}
.voice-dialog .voice-art{overflow:hidden}
@media(max-width:900px){.portal-passage{height:85svh}.portal-stage{height:65svh;min-height:400px;top:70px}.portal-inscription{bottom:9%}.portal-window img{width:44%;margin-inline:-8%}.sense-trigger{margin-left:0}.voices:before{top:420px;height:430px}}
@media(max-width:600px){.portal-passage{height:65svh}.portal-stage{position:relative;top:0;height:65svh;min-height:360px}.portal-inscription a{font-size:29px}.portal-inscription span{font-size:9px;letter-spacing:3px}.portal-inscription small{font-size:8px;letter-spacing:2px}.portal-window img{width:55%;height:75%;margin-inline:-13%}.portal-window img:nth-child(2){height:90%}.sense-trigger{font-size:12px}.voices .filter-bar .search{flex:1 1 160px;width:auto}.coin-flight{width:60px;height:60px;left:calc(50% - 30px);font-size:28px}}
@media(prefers-reduced-motion:reduce){.portal-passage{height:420px}.portal-stage{position:relative;top:0;height:420px;min-height:0}.portal-inscription small{display:none}.sense-trigger svg{transition:none}.voice-dialog .voice-art:after{opacity:.12;transform:none}}

/* Three distinct silhouettes share one stage; faces never overlap. */
.portal-window.portal-trio{inset:5% max(12%,calc((100% - 1000px)/2)) 23%;clip-path:none;background:none;display:grid;grid-template-columns:1fr 1.08fr 1fr;grid-template-rows:minmax(0,1fr);align-items:end;gap:1.5%;padding:0;}
.portal-window.portal-trio img,.portal-window.portal-trio img:nth-child(2){width:100%;max-width:none;height:90%;min-width:0;min-height:0;max-height:100%;margin:0;object-fit:contain;object-position:center bottom;transform:none;filter:brightness(.92) saturate(.78);mask-image:linear-gradient(#000 68%,transparent 100%);}
.portal-window.portal-trio img:nth-child(2){height:100%;filter:brightness(1) saturate(.8);}
.portal-stage.portal-fallback:before{display:none}
@media(max-width:600px){.portal-stage{min-height:420px}.portal-window.portal-trio{inset:8% 1% 24%;grid-template-columns:1fr 1.05fr 1fr;gap:0}.portal-window.portal-trio img,.portal-window.portal-trio img:nth-child(2){height:100%;object-position:center center}.portal-inscription{bottom:7%}}

.portal-window.portal-trio img{mask-image:linear-gradient(#000 68%,transparent 100%),linear-gradient(90deg,transparent,#000 13%,#000 87%,transparent);mask-composite:intersect}
