:root{color-scheme:dark;--night:#100918;--purple:#241039;--plum:#30174c;--gold:#ffd78a;--gold-bright:#fff1bd;--cream:#fbefd9;--muted:#cdbdd3;--edge:rgba(255,209,124,.33);--shadow:0 20px 70px rgba(0,0,0,.55)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night);color:var(--cream);font-family:system-ui,-apple-system,'Segoe UI',Arial,sans-serif}button,a{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #fff3a2;outline-offset:4px}::selection{background:#8352c7;color:#fff}
[hidden]{display:none!important}.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}.skip-link{position:fixed;left:16px;top:-80px;z-index:9999;padding:12px 20px;background:var(--gold);color:#21112c;border-radius:8px}.skip-link:focus{top:12px}
.app-shell,.view{min-height:100vh;min-height:100dvh}.view{position:relative}.portal-view,.hallway-view{height:100vh;height:100dvh;overflow:hidden;background:#14091e;isolation:isolate}
.artboard{position:absolute;left:50%;top:50%;height:auto;width:max(100vw,150vh);width:max(100vw,150dvh);aspect-ratio:3/2;transform:translate(-50%,-50%);will-change:transform}
.portal-base,.hall-art{position:absolute;inset:0;background-position:center;background-size:100% 100%}.portal-base{background-image:url('assets/portal-background.webp')}.portal-door{position:absolute;height:auto;max-width:none;filter:drop-shadow(2px 0px 5px rgba(0,0,0,.25));backface-visibility:hidden;will-change:transform;transition:transform 1.75s cubic-bezier(.2,.45,.05,1),filter 1.75s}
.portal-door-left{left:29.4921875%;top:33.69140625%;width:20.8333333%;transform-origin:9% 50%}
.portal-door-right{left:49.3489583%;top:33.69140625%;width:20.703125%;transform-origin:91% 50%}
.portal-beam{position:absolute;left:48.5%;top:35%;height:43%;width:3.2%;background:linear-gradient(90deg,transparent,#fff6c5,transparent);filter:blur(12px);opacity:.5;pointer-events:none;transition:opacity 1.2s,transform 1.2s}.portal-flash{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 55%,rgba(255,245,192,.95),rgba(242,176,93,.17) 30%,transparent 60%);transition:opacity 1.2s}
.portal-view.is-knocking .portal-artboard{animation:knock-shake .12s 3 alternate ease-in-out}.portal-view.is-opening .portal-door-left{transform:perspective(950px) rotateY(-87deg);filter:drop-shadow(-22px 0 20px rgba(0,0,0,.6))}.portal-view.is-opening .portal-door-right{transform:perspective(950px) rotateY(87deg);filter:drop-shadow(22px 0 20px rgba(0,0,0,.6))}.portal-view.is-opening .portal-beam{transform:scaleX(9);opacity:.75}.portal-view.is-opening .portal-flash{opacity:1}.portal-view.is-opening .portal-base{animation:portal-push 2s ease-in forwards}.portal-view.is-opening .knock-button{opacity:0;pointer-events:none}
@keyframes knock-shake{from{transform:translate(calc(-50% - 2px),-50%)}to{transform:translate(calc(-50% + 2px),-50%)}}@keyframes portal-push{to{transform:scale(1.035)}}
.knock-button{position:absolute;z-index:5;left:50%;top:82.3%;transform:translate(-50%,-50%);width:min(33vw,520px);min-width:265px;min-height:80px;border-radius:100px;border:2px solid transparent;color:var(--gold-bright);background:transparent;text-align:center;box-shadow:0 0 24px transparent;transition:opacity .5s,box-shadow .2s,border-color .2s}.knock-button:hover,.knock-button:focus-visible{border-color:var(--gold-bright);box-shadow:0 0 38px 10px rgba(255,181,66,.45)}.knock-button-text{position:absolute;left:50%;top:calc(100% + 28px);transform:translate(-50%,2px);padding:4px 14px;background:rgba(20,7,28,.8);color:var(--gold-bright);border-radius:99px;font-size:.9rem;white-space:nowrap;letter-spacing:.07em;box-shadow:0 0 24px rgba(0,0,0,.6)}.portal-mobile-brand{display:none}.portal-actions{position:absolute;right:24px;bottom:18px;z-index:8}.quiet-button{padding:9px 13px;color:#fff2cb;background:rgba(18,8,32,.76);border:1px solid rgba(255,216,145,.42);border-radius:100px;backdrop-filter:blur(9px);font-size:.84rem}.quiet-button:hover{background:rgba(91,36,120,.9)}
.hall-art{background-image:url('assets/hallway.webp')}.hall-artboard{transition:transform .8s ease,filter .8s ease}.hallway-view.is-navigating .hall-artboard{filter:brightness(1.3) blur(2px);transform:translate(-50%,-50%) scale(1.045)}.hall-top-actions{position:absolute;z-index:15;top:max(14px,env(safe-area-inset-top));left:16px;right:16px;display:flex;justify-content:space-between;pointer-events:none}.hall-top-actions>*{pointer-events:auto}.hotspot{position:absolute;background:rgba(255,230,140,.001);border:2px solid transparent;border-radius:12px;outline-offset:2px;z-index:2;transition:background .25s,box-shadow .25s,border-color .25s}.hotspot:hover,.hotspot:focus-visible{background:rgba(255,200,112,.12);border-color:var(--gold);box-shadow:0 0 24px rgba(255,193,97,.6),inset 0 0 40px rgba(255,218,161,.25)}.hot-events{left:3.5%;top:18.5%;width:17.7%;height:62%}.hot-development{left:21%;top:22%;width:14%;height:58%}.hot-suppers{left:71%;top:22%;width:15%;height:58%}.hot-steve{left:85%;top:18.5%;width:14%;height:63%}.hotspot-tooltip{position:absolute;bottom:5px;left:50%;transform:translateX(-50%) translateY(8px);white-space:nowrap;opacity:0;padding:8px 16px;border:1px solid var(--gold);border-radius:100px;background:#241138;color:var(--gold);font-weight:700;transition:.22s}.hotspot:hover .hotspot-tooltip,.hotspot:focus-visible .hotspot-tooltip{transform:translateX(-50%);opacity:1}
.hall-visitor-hint{position:absolute;z-index:3;bottom:12px;left:50%;transform:translateX(-50%);margin:0;background:rgba(22,5,29,.86);border:1px solid var(--edge);border-radius:90px;padding:9px 20px;font-size:.86rem;color:var(--gold);white-space:nowrap;letter-spacing:.06em}.hall-visitor-hint span{margin-left:.5rem}.mobile-hall-header,.mobile-door-menu{display:none}
.door-transition{position:absolute;inset:0;z-index:20;pointer-events:none;display:grid;grid-template-columns:1fr 1fr;opacity:0;perspective:1200px}.door-transition .transition-half{background:repeating-linear-gradient(92deg,#2a1425 0,#59351e 8%,#281324 15%,#794823 23%,#3b1b2c 31%);border:10px ridge #b37a45;box-shadow:inset 0 0 120px #11091b;transition:transform .7s ease}.door-transition .left{transform:translateX(-105%);transform-origin:left}.door-transition .right{transform:translateX(105%);transform-origin:right}.door-transition .transition-gem{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:6rem;color:var(--gold);text-shadow:0 0 40px var(--gold);opacity:0;transition:opacity .4s}.hallway-view.is-navigating .door-transition{opacity:1}.hallway-view.is-navigating .transition-half{transform:translateX(0)}.hallway-view.is-navigating .transition-gem{opacity:1}
.room-view{background:radial-gradient(circle at 80% -10%,#39214b,transparent 55%),linear-gradient(#130b20,#1e102f);padding-bottom:1px}.room-nav{position:relative;z-index:5;height:68px;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 clamp(18px,4vw,70px);background:rgba(21,9,31,.9);border-bottom:1px solid var(--edge)}.room-nav button,.room-footer button{background:transparent;border:0;color:var(--gold);font-weight:650}.room-nav button:hover,.room-footer button:hover{text-decoration:underline}.room-mark{font-size:.8rem;letter-spacing:.15em;color:var(--gold);text-align:right}.room-hero{position:relative;min-height:min(610px,78vh);display:flex;align-items:center;overflow:hidden;padding:60px max(6vw,24px);background-size:cover;background-position:center}.room-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(16,6,29,.95) 0%,rgba(19,8,34,.78) 53%,rgba(17,6,29,.35) 100%)}.room-hero:after{content:"";position:absolute;inset:auto 0 0;height:110px;background:linear-gradient(transparent,#170d25)}.events-hero{background-image:url('assets/gathering.webp')}.development-hero{background-image:url('assets/community.webp')}.shop-hero{background-image:radial-gradient(circle at 75% 35%,#b985ff45,transparent 26%),radial-gradient(circle at 80% 65%,#d79b5544,transparent 23%),linear-gradient(120deg,#120924,#4b1e6e 80%)}.shop-hero:before{background:linear-gradient(90deg,#130b21,rgba(17,5,29,.78) 60%,rgba(17,5,29,.22))}.room-hero-content{position:relative;z-index:1;max-width:730px}.eyebrow{display:inline-block;color:var(--gold);font-weight:700;letter-spacing:.19em;font-size:.78rem;text-transform:uppercase}.room-hero h1,.steve-copy h1{font-family:Georgia,'Times New Roman',serif;font-weight:400;font-size:clamp(2.7rem,5.6vw,6rem);line-height:1.07;letter-spacing:-.035em;margin:20px 0 22px}.room-hero h1 em,.steve-copy h1 em{color:var(--gold);font-weight:400}.room-hero p{max-width:610px;color:var(--cream);font-size:clamp(1.03rem,1.5vw,1.3rem);line-height:1.7;margin-bottom:32px}.gold-button,.outline-button{display:inline-flex;align-items:center;justify-content:center;gap:15px;padding:13px 22px;border-radius:100px;min-height:48px;font-weight:700;text-decoration:none;border:1px solid #ffdea2;transition:transform .2s,box-shadow .2s,background .2s;cursor:pointer}.gold-button{background:linear-gradient(#ffe4a8,#d9a55b);color:#23132d;border:1px solid #ffeeb5;box-shadow:0 8px 30px rgba(215,162,69,.23)}.outline-button{background:transparent;color:var(--gold)}.gold-button:hover,.outline-button:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(236,178,91,.2)}
.content-wrap{max-width:1230px;margin:0 auto;padding:70px clamp(20px,5vw,60px)}.section-head{text-align:center;max-width:750px;margin:0 auto 40px}.section-head h2,.content-wrap h2{font-family:Georgia,serif;font-size:clamp(2.1rem,3.7vw,3.6rem);font-weight:400;margin:15px 0 16px}.section-head p,.content-wrap p{color:#e3d7e8;line-height:1.8}.event-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.event-card{background:linear-gradient(150deg,#322043,#1b0e2a);padding:30px 26px;min-height:310px;border-radius:18px;border:1px solid var(--edge);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px}.event-card.featured{border-color:rgba(255,216,129,.7);background:linear-gradient(145deg,#46305b,#211230)}.event-date{display:flex;align-items:baseline;gap:10px;color:var(--gold)}.event-date span{font-size:.86rem;font-weight:800;letter-spacing:.2em}.event-date strong{font-size:3rem;font-weight:400;font-family:Georgia,serif}.event-date small{font-size:.78rem;color:#f4deb9}.event-card>div:nth-child(2){display:flex;flex:1;flex-direction:column}.event-tag{text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;color:var(--gold);font-weight:800}.event-card h3{font-family:Georgia,serif;font-size:1.75rem;line-height:1.23;margin:13px 0 4px;font-weight:400}.event-card p{font-size:.95rem;line-height:1.6;margin:4px 0 13px}.event-meta{margin-top:6px;color:#e8d9ed;font-size:.85rem}.text-link{margin-top:16px;color:var(--gold);text-underline-offset:4px}.empty-events{border:1px solid var(--edge);background:#2c1b40;padding:38px;border-radius:20px;text-align:center}.empty-events h3{font-family:Georgia,serif;font-size:2rem}.venue-card{margin-top:48px;border:1px solid var(--edge);border-radius:20px;padding:32px;display:flex;align-items:center;justify-content:space-between;gap:30px;background:linear-gradient(120deg,#322045,#21142e)}.venue-card h3{font-family:Georgia,serif;font-size:1.7rem;font-weight:400;margin:10px 0}.venue-card p{margin:0}.two-col{display:grid;grid-template-columns:1fr .85fr;gap:clamp(30px,7vw,90px);align-items:center}.two-col p{font-size:1.05rem}.status-pill{display:inline-block;padding:10px 16px;border-radius:100px;border:1px solid var(--edge);background:#3c2850;color:var(--gold);margin:12px 0 0}.note{font-size:.87rem!important;color:#cbbbcb!important}.framed-image{padding:9px;border:1px solid #af854e;background:linear-gradient(120deg,#59376c,#251733);border-radius:25px;transform:rotate(2deg);box-shadow:var(--shadow)}.framed-image img{display:block;width:100%;border-radius:16px;aspect-ratio:4/5;object-fit:cover}.shop-preview{text-align:center;border:1px solid var(--edge);background:radial-gradient(circle at 50% 0,#633479,#1b1129 55%);border-radius:22px;padding:80px clamp(18px,7vw,120px);max-width:900px;margin:auto}.shop-crystal{font-size:8rem;line-height:1;color:var(--gold);text-shadow:0 0 45px #b481ef}.shop-preview p{max-width:650px;margin:0 auto 30px}.steve-intro{display:grid;grid-template-columns:minmax(240px,.75fr) 1.2fr;align-items:center;gap:clamp(30px,7vw,110px);min-height:calc(90vh - 68px)}.steve-photo{border-radius:28px;overflow:hidden;border:7px solid #a98155;box-shadow:var(--shadow);max-height:680px}.steve-photo img{display:block;width:100%;height:100%;max-height:680px;object-fit:cover;object-position:center top}.steve-copy h1{margin:18px 0}.steve-copy p{font-size:1.04rem}.steve-copy .lead{font-size:1.25rem;color:#fff0de}.steve-copy .outline-button{margin-left:10px}.room-footer{border-top:1px solid var(--edge);padding:32px;text-align:center}.room-footer button{font-size:1rem}
@media(max-width:900px){.event-grid{grid-template-columns:1fr 1fr}.event-card.featured{grid-column:span 2}.room-hero{min-height:510px}.hotspot-tooltip{display:none}}
@media(max-width:650px){.portal-mobile-brand{display:flex;position:absolute;z-index:4;top:13%;left:0;right:0;min-height:25%;align-items:flex-start;justify-content:center;padding-top:10px;background:linear-gradient(180deg,rgba(22,8,34,1) 0%,rgba(26,9,40,1) 85%,rgba(26,9,40,.96) 95%,transparent 100%);pointer-events:none}.portal-mobile-brand img{display:block;width:min(100vw,480px);height:auto;max-height:155px;object-fit:contain;mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}.hallway-view::before{content:"";position:absolute;z-index:3;top:0;left:0;right:0;height:220px;background:linear-gradient(#130820 12%,rgba(21,8,35,.99) 62%,transparent);pointer-events:none}.portal-actions{right:12px;bottom:calc(12px + env(safe-area-inset-bottom))}.quiet-button{font-size:.76rem}.knock-button{width:84vw;min-width:0;top:82%}.knock-button-text{font-size:.75rem;top:calc(100% + 13px)}.hall-artboard{top:43%}.hall-top-actions{top:10px}.mobile-hall-header{display:block;position:absolute;top:11%;left:10px;right:10px;text-align:center;z-index:4;pointer-events:none;text-shadow:0 2px 10px #10071c}.mobile-hall-header .eyebrow{font-size:.68rem}.mobile-hall-header h1{font-family:Georgia,serif;color:var(--gold);font-weight:400;font-size:1.85rem;margin:7px 0 2px}.mobile-hall-header p{font-size:.9rem;margin:0}.hall-art{filter:brightness(.7)}.hotspot{display:none}.hall-visitor-hint{display:none}.mobile-door-menu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;position:absolute;z-index:8;left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));padding:12px;border-radius:18px;background:rgba(20,8,32,.9);border:1px solid #bd975e;backdrop-filter:blur(12px);box-shadow:0 -12px 55px rgba(14,2,27,.7)}.mobile-door-menu button{min-height:120px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;padding:10px 6px;border-radius:13px;border:1px solid #c99e57;background:repeating-linear-gradient(97deg,#40253d,#3d2239 18%,#533826 32%,#452a39 52%,#57341c 65%);box-shadow:inset 0 0 25px #27142d;color:#fff0d2;font-family:Georgia,serif;font-size:1.11rem}.mobile-door-menu button:hover,.mobile-door-menu button:focus-visible{box-shadow:0 0 20px rgba(246,194,101,.45),inset 0 0 25px #27142d}.mobile-door-menu small{color:#edd7af;font-family:system-ui,sans-serif;font-size:.7rem}.door-glyph{font-family:Georgia,serif;color:var(--gold);font-size:1.6rem}.room-nav{height:62px}.room-mark{font-size:.57rem;letter-spacing:.07em}.room-hero{min-height:520px;padding:40px 22px}.room-hero:before{background:linear-gradient(90deg,rgba(16,6,29,.94),rgba(16,6,29,.68))}.room-hero h1,.steve-copy h1{font-size:clamp(2.55rem,10vw,3.5rem)}.room-hero p{font-size:1rem}.content-wrap{padding:48px 22px}.event-grid,.two-col,.steve-intro{grid-template-columns:1fr}.event-card.featured{grid-column:auto}.event-card{min-height:auto}.venue-card{flex-direction:column;align-items:flex-start;padding:24px}.steve-intro{padding-top:38px}.steve-photo{max-width:380px;margin:0 auto}.steve-copy .outline-button{margin:13px 0 0}.framed-image{max-width:430px;margin:0 auto}.shop-preview{padding:45px 22px}.shop-crystal{font-size:5.5rem}}
@media(max-width:380px){.mobile-door-menu button{min-height:102px;font-size:.95rem}.mobile-door-menu small{font-size:.65rem}.mobile-hall-header{top:8%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}.portal-door{transition-duration:.001ms!important}}

/* V2 — one continuous plum/amethyst-and-antique-gold palette everywhere. */
:root {
  --night: #170922;
  --purple: #2a1046;
  --plum: #42165c;
  --velvet: #350b59;
  --violet: #5f2185;
  --gold: #ffd48c;
  --gold-bright: #fff0c0;
  --edge: rgba(255, 208, 129, .38);
}
body { background: #170922; }
.portal-view, .hallway-view { background: #170922; }
.portal-base { transition: filter 1.2s ease; }
/* Entrance keeps its doors/scene in view while we travel into the hallway. */
.portal-view.is-passing { z-index: 12; animation: passage-forward 1.27s cubic-bezier(.25,.64,.22,1) forwards; transform-origin: 50% 55%; }
.portal-view.is-passing .portal-flash { opacity: .25; }
.portal-view.is-passing .portal-base { filter: saturate(1.09); }
.hallway-view.is-arriving .hall-artboard { animation: hall-arrival 1.27s cubic-bezier(.25,.64,.22,1) both; }
.hallway-view.is-arriving .hall-top-actions,
.hallway-view.is-arriving .hall-visitor-hint,
.hallway-view.is-arriving .mobile-hall-header,
.hallway-view.is-arriving .mobile-door-menu { animation: welcome-arrival 1.27s ease both; }
@keyframes passage-forward {
  0% { opacity: 1; transform: scale(1); }
  30% { opacity: .96; }
  100% { opacity: 0; transform: scale(1.52); }
}
@keyframes hall-arrival {
  0% { transform: translate(-50%,-50%) scale(1.18); filter: blur(6px) saturate(1.18); }
  100% { transform: translate(-50%,-50%) scale(1); filter: none; }
}
@keyframes welcome-arrival {
  0%,24% { opacity: 0; transform: translateY(12px); }
  100% { opacity: 1; transform: translateY(0); }
}
/* A chosen hallway door nudges the perspective forward before the curtain reveal. */
.hallway-view.is-approaching .hall-artboard {
  animation: approach-door .39s ease-in forwards;
  transform-origin: var(--door-focus-x, 50%) var(--door-focus-y, 50%);
}
@keyframes approach-door {
  from { filter: brightness(1); transform: translate(-50%,-50%) scale(1); }
  to { filter: brightness(1.16) blur(1.4px); transform: translate(-50%,-50%) scale(1.095); }
}
/* Draped, rich PURPLE velvet. The panels ONLY MOVE OUTWARDS. */
.curtain-stage { position: fixed; inset: 0; z-index: 100; overflow: hidden; pointer-events: none; isolation: isolate; background: transparent; }
.curtain-halo { position: absolute; inset: 0; z-index: 2; pointer-events: none; background: radial-gradient(ellipse at center, rgba(255,215,143,.22) 0%, rgba(99,32,134,.08) 36%, transparent 70%); opacity: 0; transition: opacity 1.08s ease; }
.velvet-curtain {
  position: absolute; z-index: 3; top: 0; bottom: 0; width: calc(50% + 2px);
  overflow: hidden;
  background-image:
    linear-gradient(90deg,rgba(11,3,24,.62),transparent 8%,rgba(223,160,255,.17) 19%,rgba(12,3,26,.6) 27%,transparent 35%,rgba(241,164,250,.16) 48%,rgba(14,2,29,.53) 57%,rgba(181,96,232,.21) 67%,rgba(18,4,39,.65) 83%,rgba(230,175,249,.17) 93%,rgba(11,3,24,.5)),
    repeating-linear-gradient(96deg,#351053 0%,#5e2082 8%,#40105d 15%,#28093e 23%,#682a8a 29%,#310a52 40%);
  box-shadow: inset 0 0 90px rgba(6,1,16,.58), 0 0 65px rgba(16,2,31,.8);
  transition: transform 1.16s cubic-bezier(.2,.69,.15,1);
  will-change: transform;
}
.velvet-left { left: 0; border-right: 1px solid rgba(255,222,163,.36); transform: translateX(0); }
.velvet-right { right: 0; border-left: 1px solid rgba(255,222,163,.36); transform: translateX(0); }
.curtain-edge { position: absolute; top: 0; bottom: 0; width: 12px; background: linear-gradient(90deg,#5d2c3e,#ffe8aa 34%,#b47836 72%,#402133); box-shadow: 0 0 23px rgba(255,199,98,.6); }
.velvet-left .curtain-edge { right: 0; }
.velvet-right .curtain-edge { left: 0; }
.curtain-center-emblem { position: absolute; top: 50%; left: 50%; z-index: 4; transform: translate(-50%,-50%); color: var(--gold-bright); text-shadow: 0 0 32px #ffbd64,0 0 76px #b173eb; font-family: Georgia,serif; font-size: clamp(2.6rem,8vw,6rem); transition: transform .6s,opacity .5s; }
.curtain-stage.is-opening .velvet-left { transform: translateX(-102%); }
.curtain-stage.is-opening .velvet-right { transform: translateX(102%); }
.curtain-stage.is-opening .curtain-halo { opacity: 1; }
.curtain-stage.is-opening .curtain-center-emblem { opacity: 0; transform: translate(-50%,-50%) scale(1.8); }
/* Room designs inherit the jewel palette, gold trims, glowing purple atmosphere. */
.room-view {
  background:
    radial-gradient(ellipse at 85% 4%, rgba(120,53,167,.45),transparent 52%),
    radial-gradient(ellipse at 13% 85%, rgba(80,22,110,.31),transparent 55%),
    linear-gradient(165deg,#210c37,#36124e 54%,#1c0a32);
}
.room-nav { background: linear-gradient(90deg,#210b37,#3a1558,#210b37); border-bottom-color: rgba(255,207,128,.5); }
.room-hero { border-bottom: 2px solid rgba(248,195,111,.48); background-color: #34114e; }
.room-hero:before { background: linear-gradient(90deg,rgba(33,8,57,.95) 0%,rgba(49,15,75,.84) 53%,rgba(55,14,82,.42) 100%); }
.room-hero:after { background: linear-gradient(transparent,#2d1046); }
.shop-hero { background-image: radial-gradient(circle at 77% 42%,rgba(163,94,240,.47),transparent 33%),radial-gradient(circle at 85% 73%,rgba(237,169,76,.25),transparent 24%),linear-gradient(130deg,#21103b,#5b1a82 75%); }
.shop-hero:before { background: linear-gradient(90deg,#2a0e44,rgba(44,11,71,.82) 61%,rgba(44,11,71,.2)); }
.event-card { background: linear-gradient(145deg,#431766,#240e3c); border-color:rgba(250,198,105,.4); }
.event-card.featured { background: linear-gradient(145deg,#59247b,#2a0e49); }
.venue-card { background: linear-gradient(120deg,#461667,#2b103f); }
.status-pill { background: #4b1b6c; }
.empty-events { background: #3a165b; }
.framed-image { background:linear-gradient(120deg,#6f3295,#32124c); }
.shop-preview { background:radial-gradient(circle at 50% -15%,#6f2d98,#2c103f 58%); }
.room-footer { background:rgba(25,7,42,.35); }
@media(max-width:650px) {
  .hallway-view::before { background: linear-gradient(#1b0a32 12%,rgba(30,10,49,.98) 62%,transparent); }
  .mobile-door-menu { background:rgba(37,10,63,.92); }
  .mobile-door-menu button {
    border-color:#e6b36c;
    background:linear-gradient(160deg,rgba(102,42,143,.96),rgba(48,14,73,.97));
    box-shadow:inset 0 0 26px rgba(10,2,25,.6),0 2px 18px rgba(16,2,26,.38);
  }
  .portal-view.is-passing { transform-origin:50% 55%; }
}
@media(prefers-reduced-motion:reduce) {
  .portal-view.is-passing,.hallway-view.is-arriving .hall-artboard,.hallway-view.is-arriving .hall-top-actions,.hallway-view.is-arriving .hall-visitor-hint,.hallway-view.is-arriving .mobile-hall-header,.hallway-view.is-arriving .mobile-door-menu,.hallway-view.is-approaching .hall-artboard { animation: none!important; }
  .velvet-curtain { transition: none!important; }
}
/* Both illustrated scenes occupy exactly the same viewport during crossing. */
.hallway-view.is-arriving { position:fixed;inset:0;z-index:11; }

/* VERSION 5: no giant oval hover effect or luminous elliptical click ring. */
.knock-button {
  position:absolute; z-index:7; left:50%; top:54%; width:37%; height:40%; min-width:0;
  min-height:0; transform:translate(-50%,-50%); border:0!important; border-radius:0!important;
  box-shadow:none!important; background:transparent!important; color:inherit; outline-offset:-8px;
  touch-action:manipulation; -webkit-tap-highlight-color:transparent;
}
.knock-button:hover,.knock-button:focus-visible {border:0!important;box-shadow:none!important;}
.knock-button:focus-visible { outline:2px dashed var(--gold-bright); }
.portal-verse {
  position:absolute;z-index:7;left:50%;bottom:19%;transform:translateX(-50%);
  width:min(93vw,680px);padding:7px 16px 9px;text-align:center;
  font-family:Georgia,'Times New Roman',serif;font-style:italic;
  font-size:clamp(.85rem,1.6vw,1.15rem);line-height:1.32;
  color:#fff0ca;text-shadow:0 2px 8px #140520,0 0 16px #4f216a;
  background:linear-gradient(90deg,transparent,rgba(32,8,53,.87) 17%,rgba(32,8,53,.87) 83%,transparent);
  pointer-events:none;
}
.portal-verse span {white-space:normal;}
.knock-instruction {
  position:absolute;z-index:9;left:50%;bottom:41%;transform:translateX(-50%);
  display:flex;align-items:center;justify-content:center;gap:10px;
  min-width:250px;max-width:94vw;padding:9px 15px;border:1px solid rgba(255,211,129,.8);
  border-radius:8px;background:linear-gradient(120deg,#2b0d49ee,#512075ee,#2b0d49ee);
  font-family:Georgia,serif;color:var(--gold-bright);font-size:clamp(.76rem,1.3vw,.94rem);
  box-shadow:inset 0 0 22px rgba(20,3,31,.6),0 7px 30px rgba(9,1,20,.6);
  pointer-events:none;text-align:center;
}
.knock-instruction b{display:inline-block;white-space:nowrap;font-family:system-ui,sans-serif;font-size:.75em;letter-spacing:.07em;margin-left:6px;color:#f3c577}
.knock-icon{font-size:1.2rem;color:var(--gold)}
.portal-view.is-opening .portal-verse,.portal-view.is-opening .knock-instruction {opacity:0;transition:opacity .42s ease;}
.portal-view.is-opening .knock-button {pointer-events:none;}
.portal-view.is-opening .portal-flash {opacity:0!important;}
/* The authentic hallway image is visible between doors *before* the forward move.
   As the door leaves swing away, the art inside has the same hue and
   visual content as the arriving room, preventing an unrelated image flash. */
.portal-interior{
  position:absolute;z-index:1;left:29.55%;top:33.65%;width:40.55%;height:44.65%;
  background-image:url('assets/hallway.webp');
  background-position:center center; background-size:180% auto;
  box-shadow:inset 0 0 35px 25px rgba(26,6,41,.3);
  opacity:0;filter:saturate(.95) blur(2px);
  transition:opacity 1s ease, filter 1.65s ease;
  pointer-events:none;
}
.portal-view.is-opening .portal-interior{opacity:1;filter:none;}
.portal-view.is-opening .portal-beam{opacity:.2;filter:blur(17px);transform:scaleX(2)}
.portal-view.is-passing {
  position:fixed;inset:0;z-index:12;
  animation:doorway-travel 1.45s cubic-bezier(.19,.67,.2,1) both;
  transform-origin:50% 53%;pointer-events:none;
}
@keyframes doorway-travel{
  0%{opacity:1;transform:scale(1);filter:none}
  28%{opacity:1;transform:scale(1.12);filter:none}
  62%{opacity:.84;transform:scale(1.36);filter:none}
  88%{opacity:.21;transform:scale(1.68);filter:blur(3px)}
  100%{opacity:0;transform:scale(1.84);filter:blur(5px)}
}
.hallway-view.is-arriving .hall-artboard{animation:hallway-push-in 1.45s cubic-bezier(.2,.68,.23,1) both}
@keyframes hallway-push-in {0%{transform:translate(-50%,-50%) scale(.94);filter:blur(4px) brightness(.84)}
  68%{filter:blur(1px) brightness(.98)}100%{transform:translate(-50%,-50%) scale(1);filter:none}}
.hallway-view.is-arriving .hall-top-actions,.hallway-view.is-arriving .hall-visitor-hint,
.hallway-view.is-arriving .mobile-hall-header,.hallway-view.is-arriving .mobile-door-menu{
  animation:welcome-arrival 1.45s ease both;
}
@media(max-width:650px){
  .portal-verse{bottom:22%;font-size:.82rem;line-height:1.24;padding:6px 10px;background:rgba(29,9,44,.9)}
  .knock-instruction{bottom:41%;min-width:0;width:min(90vw,345px);padding:9px 8px;font-size:.79rem}
  .knock-button{left:50%;top:55%;width:38%;height:39%;}
  .portal-mobile-brand {top:10%;min-height:22%;background:linear-gradient(180deg,rgba(23,9,34,.98),rgba(23,9,34,.96) 77%,transparent);}
}
@media(prefers-reduced-motion:reduce){.portal-view.is-passing,.hallway-view.is-arriving .hall-artboard{animation:none!important;}}

.portal-door{z-index:3}.portal-beam,.portal-flash{z-index:2}.portal-view.is-opening .portal-base{animation:none}

/* VERSION 6: Separate the quotation into a small line of gold type. The much
   larger KNOCK / AND IT SHALL BE OPENED UNTO YOU remains painted on the doors. */
.portal-verse {
  bottom: 18.2%; width: min(78vw,560px); padding:5px 12px;
  font-size:clamp(1rem,1.7vw,1.3rem);line-height:1.3;
  color:#ffdd9b;letter-spacing:.045em;
  background:none;border:0;box-shadow:none;
  text-shadow:0 2px 4px #13071d,0 0 12px rgba(62,15,78,.88);
}
.verse-decoration {color:#f8b956;font-style:normal;font-size:.8em;margin-inline:.5em;}
@media(max-width:650px) {
  .portal-verse{bottom:20.6%;width:94vw;padding:2px 4px;
    font-size:clamp(.88rem,3.7vw,1.05rem);background:none;white-space:nowrap;}
  .verse-decoration{margin-inline:.22em;}
  /* Remove the mobile double wordmark: the overlay should fully mask the
     original title behind it rather than revealing extra lines below. */
  .portal-mobile-brand{top:10%;min-height:26%;background:linear-gradient(180deg,#170922 0%,#170922 91%,transparent 100%);}
}


/* V10 RESPONSIVE HALLWAY: Fit the complete original artwork, including its
   gold masthead and bottom welcome sign, without stretching people's faces.
   All four interactive hot zones stay aligned to the image. */
.hallway-view {background:#170922;}
.hallway-view::after {
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(90deg,#1b1025 0%,#372247 50%,#1b1025 100%);
}
.hallway-view .hall-artboard {
  width:min(100vw,150dvh);
  aspect-ratio:3 / 2;
  max-height:100dvh;
  top:50%;
  overflow:visible;
}
.hallway-view .hall-art {background-size:100% 100%;}
/* Short landscape screens: the headline is now inside the viewport, rather
   than cropped from the top by cover scaling. */
@media (max-aspect-ratio: 3/2) and (min-width:651px) {
  .hallway-view .hall-artboard { width:100vw; }
}
/* Portrait phone: the full visual sits above the clearly labelled door menu. */
@media (max-width:650px) {
  .hallway-view::before { height:22%; }
  .hallway-view .hall-artboard {
    width:min(100vw,150dvh);
    top:43%;
  }
  .hallway-view .mobile-hall-header {top:5%;}
  .hallway-view .mobile-door-menu {bottom:calc(10px + env(safe-area-inset-bottom));}
}
@media (max-width:650px) and (max-height:620px) {
  .hallway-view .hall-artboard {top:39%;width:min(85vw,125dvh);}
  .hallway-view .mobile-door-menu button {min-height:74px;}
  .hallway-view .mobile-hall-header {top:3%;}
}
