/* Full-bleed cinematic composition */
:root{--bg:#060d10;--gold:#d6b47e;--cream:#ede6d8;--muted:#b5bdba;--look-x:0px;--look-y:0px}
body{background:#060d10}body:not(.ready) header,body:not(.ready) main,body:not(.ready) footer{visibility:hidden}
.scenery{z-index:-2;background:#050c10}.hall-depth{position:absolute;inset:-3%;transform:translate(var(--look-x),var(--look-y)) scale(1.03);transition:transform 3s cubic-bezier(.2,.6,.2,1),filter 2s}
.hall-art,.hall-foreground{position:absolute;inset:0;background:url('assets/interior.webp') center 43%/cover no-repeat}.hall-foreground{mask-image:linear-gradient(90deg,#000,transparent 21%,transparent 79%,#000);transform:translate(calc(var(--look-x)*1.3),calc(var(--look-y)*.8)) scale(1.018)}
.scene-vignette{position:absolute;inset:0;background:linear-gradient(0deg,#02070beb,transparent 47%,#03080b88),linear-gradient(90deg,#02070b55,transparent 27%,transparent 72%,#02070b55);transition:background 1s}
.light-shafts{position:absolute;inset:-15%;opacity:.3;background:conic-gradient(from 135deg at 13% 0%,transparent 0deg,#aacfd722 6deg,transparent 12deg,#becfcb15 20deg,transparent 30deg);mix-blend-mode:screen;animation:light-breathe 16s ease-in-out infinite alternate;pointer-events:none}
.haze{position:absolute;inset:35% -25% -20%;background:radial-gradient(ellipse at 20% 80%,#82a8ad30,transparent 48%),radial-gradient(ellipse at 70% 60%,#b6b3a321,transparent 43%);filter:blur(30px);animation:mist-drift 28s ease-in-out infinite alternate;pointer-events:none}.haze-front{inset:58% -35% -35%;opacity:.7;animation-duration:19s;animation-direction:alternate-reverse}.haze-back{opacity:.5}
#embers{position:absolute;inset:0;pointer-events:none}.ritual-light{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 70%,#eb9c3d45,transparent 60%);opacity:0;transition:opacity 4s;mix-blend-mode:screen}.grateful .ritual-light{opacity:1}
header{height:90px;padding:0 4vw;position:fixed;inset:0 0 auto;z-index:8;background:linear-gradient(#04090caa,transparent);transition:opacity 1s}.brand{font-size:21px}.brand-seal{border-radius:0;width:33px;height:39px;font-size:24px;border-color:#d6b47e66}.brand small{font-size:10px;letter-spacing:.18em}.header-right{gap:18px}.header-right .quiet{font-size:13px}.edition{font-size:12px;opacity:.65}
footer{height:65px;padding:12px 4vw;background:linear-gradient(transparent,#04090cbb);font-size:12px;z-index:8}.at-gate header,.at-gate footer,.at-gate main{opacity:0;pointer-events:none}.entered main{transition:opacity 1.5s}.letterbox{position:fixed;left:0;right:0;height:0;background:#020507;z-index:45;pointer-events:none;transition:height 1.4s}.letterbox.top{top:0}.letterbox.bottom{bottom:0}.journey .letterbox{height:6vh}.casting-scene .letterbox{height:3vh}
main{padding:100px 6vw 95px;min-height:100svh;width:100%;align-items:flex-end;justify-content:center;position:relative}main:focus{outline:none}.page{max-width:100%;animation:scene-content 1.5s ease both}.home-stage{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:4vw;min-height:calc(100svh - 220px)}
.deity-plaque{align-self:center;text-shadow:0 3px 30px #000}.deity-plaque .eyebrow{font-size:12px;letter-spacing:.3em;margin-bottom:15px}.deity-plaque h1{font-size:clamp(42px,5vw,72px);letter-spacing:.2em;margin:0 0 15px}.deity-plaque p{font-size:14px;color:#c5c7bd;line-height:2;max-width:250px}.deity-plaque .text-button{font-size:12px;color:#bbb8a9}.hall-center{min-width:240px;text-align:center;padding-bottom:1vh}.hall-center p{font-size:15px;letter-spacing:.22em;margin-bottom:22px}.hall-center .text-button{display:block;margin:16px auto 0;border:0;font-size:13px}.scene-inscription{justify-self:end;writing-mode:vertical-rl;align-self:center;font-size:16px;letter-spacing:.45em;color:#d4c6ab;line-height:2.4;text-shadow:0 2px 20px #000}
.primary{background:linear-gradient(120deg,#d7b784,#c39960);color:#1c1c16;border:1px solid #e5c28e88;border-radius:0;box-shadow:0 0 32px #c4974120;padding:14px 32px;font-size:15px;min-height:52px}.primary:hover:not(:disabled){box-shadow:0 0 50px #c4974144}.secondary{background:#07111680;border-color:#c5ae8055;border-radius:0}.text-button{color:#cdbb98}.tiny{font-size:12px}.actions{justify-content:center}.gentle-offer{order:3;flex-basis:auto;font-size:12px;border:0;opacity:.75}
.ritual-stage{text-align:center;max-width:780px;margin:auto;padding-top:8vh}.ritual-stage .eyebrow{margin:0 0 10px;font-size:12px}.ritual-stage h1{font-size:clamp(25px,3vw,40px);margin:0;letter-spacing:.2em}.ritual-stage .question-display{margin:15px 0;font-size:17px;color:#e7d7bb}.ritual-stage .ritual-steps{justify-content:center;margin:20px 0 0;font-size:12px;letter-spacing:.13em}.ritual-stage #cupStage{height:clamp(220px,34vh,350px);max-width:650px;margin:auto;touch-action:none;cursor:grab}.ritual-stage #cupStage canvas{width:100%;height:100%}.ritual-stage .primary{min-width:260px;max-width:100%;width:auto}.ritual-stage .tiny{margin:8px 0;opacity:.7}.ritual-stage .text-button{border:0;font-size:12px;padding:5px}.ritual-note{margin:12px 0 5px;min-height:25px;font-size:14px;letter-spacing:.12em}
body[data-view=ritual] .hall-depth{transform:translate(var(--look-x),calc(var(--look-y) - 7vh)) scale(1.18);filter:brightness(.55) blur(1px)}body[data-view=ritual] .scene-vignette{background:linear-gradient(0deg,#03090dbb,#03090d33 70%,#03090d55)}body[data-view=ritual] main{align-items:center}.casting-scene header{opacity:.25}.casting-scene .ritual-stage .eyebrow,.casting-scene .ritual-steps{opacity:.3;transition:opacity 1s}
.result-stage{max-width:630px;margin:auto;text-align:center;padding-top:13vh}.result-stage .eyebrow{margin:0 0 15px}.result-word{font-size:clamp(65px,8vw,104px);letter-spacing:.28em;text-indent:.28em;text-shadow:0 0 45px #d8a95244;margin:0}.result-rule{font-size:13px;margin:10px 0 22px}.reading-lead{font-size:clamp(21px,2.5vw,30px);font-weight:400;letter-spacing:.08em;margin:22px 0}.result-question{font-size:14px;color:#bbc1bc}.reading-details{max-width:540px;margin:18px auto;text-align:left;border-top:1px solid #d6b47e33;border-bottom:1px solid #d6b47e33;padding:13px 0;color:#c5c9c4}.reading-details summary{cursor:pointer;text-align:center;font-size:14px;list-style:none}.reading-details summary:after{content:' ＋';color:var(--gold)}.reading-details[open] summary:after{content:' −'}.reading-details p{line-height:2;font-size:15px;margin:16px 4px 5px}.result-stage .actions{margin:22px 0 12px}.result-stage .offering-link{display:block;margin:14px auto 0;border:0;font-size:12px;opacity:.7}
body[data-view=result] .hall-depth{filter:brightness(.43);transform:translate(var(--look-x),var(--look-y)) scale(1.1)}body[data-view=result] .scene-vignette{background:radial-gradient(ellipse at center,#03090d55,transparent 80%),linear-gradient(0deg,#03090dee,transparent 90%)}
.return-stage,.complete-stage{max-width:560px;margin:auto;text-align:center;padding-top:15vh}.return-stage h1,.complete-stage h1{font-size:clamp(30px,4vw,50px);margin:0 0 20px}.return-stage .eyebrow{margin:0 0 14px}.return-stage .user-quote,.complete-stage .user-quote{border:0;background:none;font-size:15px;padding:10px;margin:10px 0}.return-stage .vow-scroll{font-size:20px;line-height:2;border:0;margin:18px 0}.return-stage input{background:#03090d88}.return-stage label{text-align:left;max-width:410px;margin:auto;font-size:12px}.return-stage .actions{margin-top:20px}.return-stage .tiny{max-width:410px;margin:15px auto}.complete-stage .intro{margin:0 auto 15px}.complete-stage .check{text-align:left;max-width:450px;margin:auto}
body[data-view=return] .hall-depth,body[data-view=complete] .hall-depth{filter:brightness(.57);transform:translate(var(--look-x),var(--look-y)) scale(1.07)}.grateful .hall-depth{filter:brightness(.85)}
dialog{border:1px solid #d6b47e44;border-radius:0;background:linear-gradient(145deg,#142025f5,#060c10fa);box-shadow:0 25px 150px #000b;padding:30px;width:min(580px,92vw)}dialog::backdrop{background:#03090d80;backdrop-filter:blur(5px)}dialog[data-kind=ask]{width:min(750px,92vw);margin:auto auto 9vh;padding:28px 36px;background:linear-gradient(160deg,#172228ed,#081014f5)}dialog[data-kind=ask]::backdrop{background:#03090d22;backdrop-filter:blur(1px)}dialog[data-kind=ask] h2{font-size:27px;margin:0}dialog[data-kind=ask] .eyebrow{display:none}dialog[data-kind=ask] .muted{font-size:14px;margin:13px 0}.token-field{font-size:23px;min-height:54px}.scenario-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.scenario-grid button{font-size:16px;padding:14px 12px;background:#07111677}.scenario-grid button small{font-size:12px;line-height:1.5}.scenario-grid button.selected{background:#d6b47e12}.scenario-grid button:focus-visible{outline-offset:2px}.modal-title .close{font-size:25px}
.records-mode main{padding:125px 7vw 100px;min-height:100svh}.records-mode .hall-depth{filter:brightness(.18) blur(7px)}.records-mode .page{max-width:1100px}.records-mode .scene-vignette{background:#03090d88}.records-top .actions{justify-content:flex-end}.record .actions{justify-content:flex-end}.record .text-button{font-size:13px}.record-summary{margin-top:35px}.record-summary span{font-size:13px}.record-empty{background:#09121777}.record-empty .text-button{margin-left:20px}.tabs{margin-top:35px}.activity{background:#101a1ed9;font-size:13px;z-index:10}.notice{line-height:1.8}.wallet-box{background:#040c1066}
.cinema-gate{position:fixed;inset:0;z-index:40;overflow:hidden;background:#050b10;isolation:isolate}.mountain-view,.mountain-art,.mountain-near,.mountain-shade,.mountain-mist{position:absolute;inset:0}.mountain-art,.mountain-near{background:url('assets/exterior.webp') center/cover no-repeat;transform:scale(1.035);animation:establish 12s ease-out both}.mountain-near{mask-image:linear-gradient(90deg,#000,transparent 20%,transparent 80%,#000);animation:establish-near 12s ease-out both}.mountain-shade{background:linear-gradient(90deg,#030a1055,transparent 40%),linear-gradient(0deg,#030a10dc,transparent 45%,#030a1044)}.mountain-mist{inset:45% -20% -30%;background:radial-gradient(ellipse at 20% 60%,#a6c7d133,transparent 55%),radial-gradient(ellipse at 80% 40%,#9abac32b,transparent 45%);filter:blur(40px);animation:mist-drift 18s ease-in-out infinite alternate}
.gate-top{position:absolute;top:5vh;left:5vw;right:5vw;display:flex;justify-content:space-between;align-items:center;color:#d3c5aa}.gate-top>span+span{font-size:12px;letter-spacing:.25em}.gate-wordmark{font-size:25px;letter-spacing:.3em}.gate-heading{position:absolute;left:8vw;top:31%;text-shadow:0 3px 45px #000}.gate-heading .eyebrow{font-size:12px;letter-spacing:.35em;margin-bottom:20px}.gate-heading h1{font-size:clamp(40px,5.3vw,78px);line-height:1.45;letter-spacing:.16em;margin:0 0 22px}.gate-heading h1 em{color:#e2d8c6}.gate-heading p{font-size:14px;letter-spacing:.2em;color:#c3c7c5}.gate-enter{position:absolute;bottom:12vh;left:50%;transform:translateX(-50%);text-align:center;min-width:300px}.entry-button{background:transparent;border:0;color:#f0dfbf;display:flex;align-items:center;gap:20px;justify-content:center;margin:auto;font-size:17px;letter-spacing:.25em;padding:10px 22px;text-shadow:0 1px 12px #000}.entry-symbol{display:grid;place-items:center;border:1px solid #d5b78088;width:45px;height:45px;transform:rotate(45deg);font-size:0;box-shadow:0 0 30px #d6b47e22;animation:entry-pulse 3s infinite}.entry-symbol:after{content:'叩';transform:rotate(-45deg);font-size:22px}.entry-line{width:44px;height:1px;background:#c7ab77;transition:width .5s}.entry-button:hover .entry-line{width:65px}.gate-sound{display:flex;align-items:center;justify-content:center;gap:9px;font-size:12px;letter-spacing:.07em;margin:20px auto;color:#b5c0c0}.gate-sound input{width:14px;min-height:14px;height:14px;padding:0;accent-color:#c5a474}.gate-footnote{position:absolute;left:5vw;bottom:3vh;color:#b0bcbca0;font-size:12px;letter-spacing:.13em}.threshold{position:absolute;inset:0;display:flex;opacity:0;pointer-events:none}.threshold-door{width:50%;height:100%;background:url('assets/doors.png') left center/200% 100% no-repeat}.threshold-door.right{background-position:right center}.travelling{background:transparent}.travelling .gate-heading,.travelling .gate-top,.travelling .gate-enter,.travelling .gate-footnote{opacity:0;transition:opacity .7s;pointer-events:none}.travelling .mountain-art{animation:forward-travel 4.2s ease-in forwards}.travelling .mountain-near{animation:forward-near 4.2s ease-in forwards}.travelling .mountain-view{animation:exterior-away 4.1s forwards}.travelling .threshold{animation:threshold-in 6.5s forwards}.travelling .threshold-door.left{animation:open-left 2.8s 2.8s cubic-bezier(.24,.06,.32,1) forwards;transform-origin:left}.travelling .threshold-door.right{animation:open-right 2.8s 2.8s cubic-bezier(.24,.06,.32,1) forwards;transform-origin:right}.cinema-gate.finished{visibility:hidden;pointer-events:none}.journey .hall-depth{animation:hall-reveal 2.4s 4.1s both}.at-gate:not(.entered) main{opacity:0}
#chapterCaption{position:fixed;bottom:12vh;left:0;right:0;text-align:center;font-size:14px;letter-spacing:.45em;color:#e0ceb0;z-index:46;pointer-events:none;text-shadow:0 3px 14px #000}.journey #chapterCaption{animation:caption-arrive 2.5s both}
@keyframes establish{from{transform:scale(1)}to{transform:scale(1.04)}}@keyframes establish-near{from{transform:scale(1.015)}to{transform:scale(1.075)}}@keyframes forward-travel{from{transform:scale(1.04)}to{transform:scale(1.42) translateY(2%)}}@keyframes forward-near{from{transform:scale(1.075)}to{transform:scale(1.9) translateY(4%)}}@keyframes exterior-away{0%,68%{opacity:1}100%{opacity:0}}@keyframes threshold-in{0%,30%{opacity:0}44%,77%{opacity:1}100%{opacity:0}}@keyframes open-left{to{transform:perspective(1200px) rotateY(-65deg) translateX(-100%)}}@keyframes open-right{to{transform:perspective(1200px) rotateY(65deg) translateX(100%)}}@keyframes hall-reveal{from{transform:scale(1.25) translateY(4%);filter:brightness(.25)}to{transform:scale(1.03) translateY(0);filter:brightness(1)}}@keyframes mist-drift{from{transform:translateX(-7%) scale(1)}to{transform:translateX(7%) scale(1.15)}}@keyframes light-breathe{from{opacity:.16;transform:rotate(-2deg)}to{opacity:.35;transform:rotate(2deg)}}@keyframes scene-content{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes entry-pulse{50%{box-shadow:0 0 45px #d6b47e44;border-color:#e6d1a9}}@keyframes caption-arrive{0%,20%{opacity:0}65%,100%{opacity:1}}
@media(min-width:1600px){main{padding-left:8vw;padding-right:8vw}.home-stage{min-height:calc(100svh - 235px)}}
@media(max-width:800px){.home-stage{grid-template-columns:1fr auto;gap:20px}.scene-inscription{display:none}.deity-plaque h1{font-size:44px}.deity-plaque p{max-width:200px}.hall-center{min-width:210px}.gate-heading{top:28%;left:7vw}.gate-heading h1{font-size:48px}.header-right{gap:5px}.brand small{display:none}.edition{display:none}.hall-art,.hall-foreground{background-position:50% 35%}.scenario-grid{grid-template-columns:1fr 1fr}.gate-top>span+span{font-size:10px}}
@media(max-width:600px){header{height:75px;padding:0 20px}.brand{font-size:18px}.brand-seal{width:29px;height:35px;font-size:22px}.header-right .quiet{font-size:12px;padding:7px}.header-right [data-act=ledger]{display:none}footer{padding:12px 20px;height:55px}main{padding:85px 24px 80px;align-items:flex-end}.home-stage{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:20px;min-height:calc(100svh - 175px)}.deity-plaque{align-self:flex-start;margin-bottom:0}.deity-plaque h1{font-size:36px;margin:0 0 5px;letter-spacing:.18em}.deity-plaque .eyebrow{margin-bottom:8px;font-size:12px}.deity-plaque p{font-size:13px;max-width:240px;margin:5px 0}.deity-plaque .text-button{padding:5px 0}.hall-center{padding:0}.hall-center p{display:none}.hall-center .text-button{margin:8px auto 0}.hall-art,.hall-foreground{background-size:auto 110%;background-position:50% 25%}.scene-vignette{background:linear-gradient(0deg,#02080def,transparent 75%,#02080d77)}.gate-heading{top:20%;left:8vw}.gate-heading h1{font-size:41px}.gate-heading p{max-width:220px;font-size:13px;line-height:1.8}.gate-heading .eyebrow{font-size:11px;margin-bottom:15px}.gate-top{top:4vh;left:7vw;right:7vw}.gate-top>span+span{display:none}.gate-enter{bottom:14vh}.gate-footnote{left:7vw;font-size:11px}.mountain-art,.mountain-near{background-position:53% center}.mountain-shade{background:linear-gradient(0deg,#030a10e0,transparent 50%),linear-gradient(90deg,#030a1099,transparent 85%)}.entry-button{font-size:16px}.ritual-stage{padding-top:6vh}.ritual-stage #cupStage{height:250px}.ritual-stage .question-display{font-size:16px}.ritual-stage .ritual-steps{gap:20px}.ritual-stage h1{font-size:28px}.ritual-stage .primary{min-width:240px}.result-stage{padding-top:14vh}.result-word{font-size:76px}.reading-lead{font-size:23px}.result-stage .actions{gap:15px}.reading-details p{font-size:14px}.result-stage .tiny{font-size:11px}.return-stage{padding-top:15vh}.return-stage h1{font-size:33px}.return-stage .vow-scroll{font-size:18px}.return-stage .user-quote{font-size:14px}.return-stage .actions{gap:14px}.records-mode main{padding:100px 22px 90px}.records-top h1{font-size:32px}.records-top .actions,.record .actions{justify-content:flex-start}.record-summary{gap:22px}.record-summary b{font-size:24px}.record-summary span{font-size:11px}.record-empty{padding:25px 18px}.record-empty .text-button{display:block;margin:14px auto 0}dialog[data-kind=ask]{padding:24px;margin:auto auto 8vh}.scenario-grid{gap:9px;margin:15px 0}.scenario-grid button{padding:12px}.scenario-grid button small{font-size:11px}.modal-title h2{font-size:25px}.activity{position:fixed;left:20px;right:20px;bottom:65px;margin:0;max-width:none}.complete-stage{padding-top:16vh}}
@media(max-height:650px) and (min-width:601px){main{padding-top:85px;padding-bottom:75px}.ritual-stage{padding-top:0}.ritual-stage #cupStage{height:190px}.ritual-stage h1{font-size:26px}.ritual-stage .ritual-steps{margin-top:10px}.ritual-stage .question-display{margin:8px 0}.result-stage{padding-top:0}.result-word{font-size:65px}.result-rule{margin-bottom:12px}.reading-lead{margin:15px 0;font-size:23px}.return-stage{padding-top:0}.return-stage h1{font-size:32px}.return-stage .vow-scroll{margin:8px 0}.home-stage{min-height:calc(100svh - 190px)}}
@media(prefers-reduced-motion:reduce){.hall-depth,.hall-foreground{transform:none!important}.travelling .mountain-view{opacity:0}.travelling .threshold{opacity:0}.cinema-gate.travelling{background:transparent}.haze,.light-shafts{animation:none}.entered main{transition:none}}
.result-stage #cupStage{position:fixed;left:5vw;bottom:80px;width:24vw;height:180px;pointer-events:none}.result-stage #cupStage canvas{height:100%;width:100%}#cast{touch-action:none;user-select:none}.at-gate #activity{visibility:hidden}
@media(max-width:800px){.result-stage #cupStage{display:none}}
.ritual-stage{padding-top:0}.ritual-stage #cupStage{height:clamp(180px,27vh,270px)}
@media(max-width:600px){.ritual-stage #cupStage{height:230px}}
body.at-gate{overflow:hidden}
/* Entrance film: a continuous, deliberately paced 11.2 second approach. */
.journey .letterbox{height:8vh;transition:height 1.6s}
.journey #chapterCaption{bottom:12vh;font-size:14px;letter-spacing:.55em}
.journey .hall-depth{animation:none;transform:scale(1.32) translateY(-5%);filter:brightness(.12)}
.journey.film-reveal .hall-depth{animation:solemn-reveal 6.4s cubic-bezier(.16,.5,.18,1) both}
.journey main,.journey header,.journey footer{opacity:0!important;pointer-events:none}
.travelling .mountain-art{transform-origin:50% 48%;animation:pilgrim-approach 4.8s cubic-bezier(.55,.03,.75,.4) forwards}
.travelling .mountain-near{transform-origin:50% 48%;animation:pilgrim-parallax 4.8s cubic-bezier(.55,.03,.75,.4) forwards}
.travelling .mountain-view{animation:mountain-cut 5s linear forwards}
.travelling .threshold{perspective:1300px;animation:doors-arrive 9s linear forwards}
.travelling .threshold-door{backface-visibility:hidden;box-shadow:0 0 70px #000;filter:brightness(.55)}
.travelling .threshold-door.left{animation:heavy-left 4.8s 3.5s cubic-bezier(.45,.02,.2,1) forwards}
.travelling .threshold-door.right{animation:heavy-right 4.8s 3.5s cubic-bezier(.45,.02,.2,1) forwards}
.passage-veil{position:absolute;inset:0;background:#010406;opacity:0;pointer-events:none}
.travelling .passage-veil{animation:threshold-darkness 8s linear both}
.travelling .mountain-mist{animation:mist-crossing 4.8s ease-in both}
.journey .haze-front{animation:sanctuary-smoke 7s 4.2s ease-out both}
.journey .light-shafts{animation:sanctuary-light 6s 5s ease-out both}
.entry-button:focus-visible{outline:2px solid #dfc18b;outline-offset:10px}
@keyframes pilgrim-approach{0%{transform:scale(1.04)}70%{transform:scale(1.54) translateY(3%)}100%{transform:scale(2.15) translateY(7%);filter:brightness(.35)}}
@keyframes pilgrim-parallax{0%{transform:scale(1.075)}100%{transform:scale(3) translateY(10%);filter:brightness(.3)}}
@keyframes mountain-cut{0%,70%{opacity:1}88%,100%{opacity:0}}
@keyframes doors-arrive{0%,25%{opacity:0;transform:scale(.88)}39%,78%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.18)}}
@keyframes heavy-left{0%{transform:rotateY(0)}22%{transform:rotateY(-8deg);filter:brightness(.7)}100%{transform:rotateY(-83deg) translateX(-75%);filter:brightness(.15)}}
@keyframes heavy-right{0%{transform:rotateY(0)}22%{transform:rotateY(8deg);filter:brightness(.7)}100%{transform:rotateY(83deg) translateX(75%);filter:brightness(.15)}}
@keyframes threshold-darkness{0%,32%{opacity:0}45%,57%{opacity:1}85%,100%{opacity:0}}
@keyframes solemn-reveal{0%{transform:scale(1.32) translateY(-5%);filter:brightness(.12)}40%{filter:brightness(.65)}100%{transform:scale(1.03) translateY(0);filter:brightness(1)}}
@keyframes mist-crossing{0%{transform:translateX(-8%);opacity:.45}70%{transform:translateX(9%) scale(1.7);opacity:1}100%{transform:translateX(20%) scale(2);opacity:0}}
@keyframes sanctuary-smoke{0%{opacity:0;transform:translateX(-12%) scale(1.8)}25%{opacity:1}100%{opacity:.6;transform:translateX(8%) scale(1)}}
@keyframes sanctuary-light{0%{opacity:0}100%{opacity:.3}}
@media(max-width:600px){.journey .letterbox{height:5vh}.journey #chapterCaption{bottom:10vh;letter-spacing:.3em}.journey.film-reveal .hall-depth{animation-name:solemn-reveal-mobile}}
@keyframes solemn-reveal-mobile{0%{transform:scale(1.18) translateY(-3%);filter:brightness(.12)}100%{transform:scale(1.03);filter:brightness(1)}}
@media(prefers-reduced-motion:reduce){.travelling *,.journey .hall-depth,.journey.film-reveal .hall-depth{animation:none!important}.journey .letterbox{height:0}.journey .hall-depth{transform:none;filter:none}}
/* Scene-linked ritual interactions */
.entry-button{touch-action:none;user-select:none;min-height:64px}.pressing .entry-symbol{box-shadow:0 0 calc(25px + var(--press,0)*65px) #e7b75c88;border-color:#ffe3a9}.door-answered .mountain-art{filter:brightness(1.12)}.door-answered .entry-symbol{box-shadow:0 0 65px #e7b75c77}.cinema-gate:after{content:'';position:absolute;left:49.7%;top:36%;width:.6%;height:26%;background:#ffe0a1;filter:blur(12px);opacity:0;pointer-events:none;mix-blend-mode:screen}.cinema-gate.door-answered:not(.travelling):after{opacity:.65;transition:opacity 1s}
.question-on-table{margin:22px auto!important;padding:17px 28px;max-width:560px;background:linear-gradient(100deg,#071013cc,#233137ed,#071013cc);border-block:1px solid #caa36b66;box-shadow:0 20px 45px #0009;transform-origin:center bottom;animation:question-land 1.5s both}.question-on-table small{display:block;font-size:12px;letter-spacing:.2em;color:#a49a83;margin-bottom:9px}
.ritual-stage #cupStage{height:clamp(240px,34vh,360px);border-bottom:1px solid #aa8c5544;mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}
body[data-view=ritual] .hall-depth{transform:translate(var(--look-x),-12vh) scale(1.25);transition:transform 2s,filter 2s}
.ritual-stage .tiny{font-size:12px}.ritual-note{max-width:580px;margin:12px auto;line-height:1.8}
.result-stage{animation:reading-arrive 1.4s both}.result-stage .reading-details{font-size:16px}.result-stage .offering-link{margin-top:24px;opacity:.65;font-size:13px}.result-stage #cupStage{left:2vw;width:27vw;height:220px;bottom:18vh}
#votiveLamp{width:min(360px,100%);height:200px;margin:0 auto;cursor:pointer;outline-offset:3px;touch-action:manipulation;mask-image:linear-gradient(transparent,#000 8%,#000 90%,transparent)}#votiveLamp canvas{display:block;width:100%;height:100%}#votiveLamp:focus-visible{outline:2px solid #d6b47e}.lamp-caption{font-size:14px;color:#ddc495;letter-spacing:.15em;margin:4px 0 16px}.lamp-lit .ritual-light{opacity:1}.lamp-lit .hall-depth{filter:brightness(.85)!important;transition:filter 2.5s}.lamp-lit .return-stage{filter:drop-shadow(0 0 30px #d9993933)}
.return-stage{padding-top:1vh}.return-stage h1{font-size:32px;margin-bottom:10px}.return-stage .vow-scroll{font-size:17px;line-height:1.8;margin:10px 0}.return-stage .user-quote{animation:question-land 1.8s both}.return-stage input{min-height:42px}.return-stage .actions{margin-top:14px}.return-stage label{font-size:14px}.return-stage .tiny{margin:10px auto}.return-stage #bowStatus{min-height:26px}
@keyframes question-land{from{opacity:0;transform:perspective(700px) rotateX(18deg) translateY(-30px)}to{opacity:1;transform:none}}
@keyframes reading-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@media(max-width:600px){.ritual-stage #cupStage{height:260px}.question-on-table{padding:12px 16px;margin:14px auto!important}.ritual-stage h1{font-size:25px}.ritual-stage .ritual-steps{margin-top:12px}.return-stage{padding-top:0}.return-stage h1{font-size:27px}#votiveLamp{height:170px}.return-stage .vow-scroll{font-size:16px}.return-stage .user-quote{font-size:14px}.return-stage .actions{gap:10px}.result-stage #cupStage{display:block;position:relative;left:auto;bottom:auto;width:100%;height:150px;margin:0 auto}.result-stage{padding-top:3vh}}
@media(prefers-reduced-motion:reduce){.question-on-table,.result-stage,.return-stage .user-quote{animation:none}.door-answered .mountain-art{filter:none}}
.ritual-stage #cupStage,.result-stage #cupStage{mask-image:radial-gradient(ellipse at center,#000 40%,#000c 65%,transparent 74%)}
#votiveLamp{mask-image:radial-gradient(ellipse at center,#000 48%,transparent 74%)}

/* Result cups occupy their own row, never a floating overlay. */
.result-stage #cupStage{display:block;position:relative;inset:auto;width:min(320px,100%);height:130px;margin:4px auto 16px;mask-image:none;overflow:hidden;pointer-events:none}
.result-stage #cupStage canvas{display:block;width:100%;height:100%}
.result-stage{width:min(630px,100%);padding-top:2vh}
body[data-view=result] main{align-items:flex-start;min-height:100svh;padding-bottom:110px}
@media(max-width:600px){.result-stage #cupStage{height:110px;width:min(280px,100%)}.result-stage{padding-top:0}.result-word{font-size:64px}.reading-lead{font-size:22px}}
.reading-open{padding:20px 0;overflow-wrap:anywhere}.reading-open .reading-context{font-size:14px;color:#bfc5c0;line-height:1.8;margin:0 0 16px}.reading-open .reading-motif{color:#d8bc87;text-align:center;font-size:18px;margin:16px 0 24px}.reading-part{margin:22px 0}.reading-part h3{font-size:15px;font-weight:400;letter-spacing:.15em;color:#d7b784;margin:0 4px 8px}.reading-open .reading-part p{font-size:16px;line-height:1.95;margin:0 4px}.reading-open .reading-source{font-size:13px;line-height:1.8;color:#acb5b0;margin-top:22px}.result-stage .offering-link{font-size:17px;opacity:1;color:#ddbf8c;min-height:44px;padding:10px 18px;margin:22px auto 8px}.result-stage .offering-link:hover{color:#ffe0a6;background:#d7b7840c}.result-stage .offering-link:focus-visible{outline:1px solid #ddbf8c;outline-offset:3px}

/* Short reading: one heading and one sentence. */
.reading-simple{max-width:32rem;margin:1rem auto 1.8rem;padding:0 1rem;font-size:1.0625rem;line-height:1.9;color:#e2ddcf;text-align:center;}

/* Three explicit knocks: doors stay visible from first contact to opening. */
.triple-gate{background:transparent!important}
.triple-gate:after{display:none}
.triple-gate .threshold{opacity:1;perspective:1400px;overflow:hidden;animation:none;transform:none}
.triple-gate .threshold-door{filter:brightness(.72);backface-visibility:hidden;box-shadow:inset 0 0 65px #0009}
.triple-gate .threshold-door.left{transform-origin:0% 50%}
.triple-gate .threshold-door.right{transform-origin:100% 50%}
.triple-gate .gate-heading{top:12%;left:0;width:100%;text-align:center;pointer-events:none}
.triple-gate .gate-heading h1{font-size:clamp(32px,4vw,58px);margin-bottom:8px}
.triple-gate .gate-heading p{max-width:none;font-size:16px}
.triple-gate .gate-heading .eyebrow{margin-bottom:10px}
.triple-gate .gate-enter{bottom:12vh}
.triple-gate .entry-button{flex-direction:column;gap:14px;touch-action:manipulation}
.triple-gate .entry-symbol{transform:none;width:76px;height:76px;border-radius:50%;font-size:34px;background:#100b08cc;border:2px solid #c9a467;animation:none;box-shadow:0 5px 20px #0009}
.triple-gate .entry-symbol:after{display:none}
.triple-gate .knock-label{font-size:16px}
.knock-progress{display:flex;gap:14px;justify-content:center;margin-top:14px}
.knock-progress i{width:8px;height:8px;border:1px solid #d8b77b;border-radius:50%;transition:background .2s}
.knock-progress i.done{background:#ebcc93;box-shadow:0 0 12px #d6b47e}
#knockStatus{font-size:14px;color:#ead4ae;text-shadow:0 2px 8px #000;margin:12px 0}
.triple-gate.travelling .threshold{animation:clear-threshold 6.2s linear forwards}
.triple-gate.travelling .threshold-door.left{animation:visible-door-left 4.6s cubic-bezier(.32,.04,.18,1) forwards}
.triple-gate.travelling .threshold-door.right{animation:visible-door-right 4.6s cubic-bezier(.32,.04,.18,1) forwards}
.journey.film-reveal .hall-depth{animation:enter-through-doors 6.2s ease-out both}
@keyframes visible-door-left{0%{transform:rotateY(0);filter:brightness(.72)}20%{transform:rotateY(-14deg);filter:brightness(.8)}100%{transform:translateX(-30%) rotateY(-100deg);filter:brightness(.35)}}
@keyframes visible-door-right{0%{transform:rotateY(0);filter:brightness(.72)}20%{transform:rotateY(14deg);filter:brightness(.8)}100%{transform:translateX(30%) rotateY(100deg);filter:brightness(.35)}}
@keyframes clear-threshold{0%,75%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.16)}}
@keyframes enter-through-doors{0%{transform:scale(.92);filter:brightness(.28)}40%{filter:brightness(.65)}100%{transform:scale(1.03);filter:brightness(1)}}
@media(max-width:600px){.triple-gate .gate-heading{top:15%}.triple-gate .gate-enter{bottom:14vh}.deity-plaque h1{font-size:32px}}
@media(prefers-reduced-motion:reduce){.triple-gate.travelling .threshold,.triple-gate.travelling .threshold-door,.journey.film-reveal .hall-depth{animation:none!important}.triple-gate.travelling .threshold{opacity:0}}

/* Establish the mountain gate before approaching the door. */
.triple-gate .mountain-view{opacity:1;animation:none;transition:opacity 1s ease}
.triple-gate .mountain-art,.triple-gate .mountain-near{animation:none;transform:scale(1.035);transform-origin:50% 48%;transition:transform 1.25s cubic-bezier(.2,.65,.25,1)}
.triple-gate[data-knocks="1"] .mountain-art{transform:scale(1.18)}
.triple-gate[data-knocks="1"] .mountain-near{transform:scale(1.25)}
.triple-gate[data-knocks="2"] .mountain-art{transform:scale(1.42)}
.triple-gate[data-knocks="2"] .mountain-near{transform:scale(1.6)}
.triple-gate[data-knocks="3"] .mountain-art{transform:scale(1.85)}
.triple-gate[data-knocks="3"] .mountain-near{transform:scale(2.2)}
.triple-gate:not(.travelling) .threshold{opacity:0;transform:scale(.92);transition:opacity .95s ease,transform 1.25s ease}
.triple-gate[data-knocks="3"]:not(.travelling) .threshold{opacity:1;transform:scale(1)}
.triple-gate[data-knocks="3"] .mountain-view{opacity:0;transition-delay:.5s}
.triple-gate.travelling .mountain-view{opacity:0;animation:none}
.triple-gate.travelling .mountain-art,.triple-gate.travelling .mountain-near{animation:none}
@media(prefers-reduced-motion:reduce){.triple-gate .mountain-art,.triple-gate .mountain-near{transform:none!important;transition:none}.triple-gate .threshold,.triple-gate .mountain-view{transition:none!important}}

.offering-wallet{text-align:center;padding:16px 0}.offering-wallet .eyebrow{display:block}.address-qr{display:block;width:180px;height:180px;margin:18px auto;background:white;padding:10px}.offering-wallet code{display:block;overflow-wrap:anywhere;font-size:16px;line-height:1.7;padding:12px;background:#ffffff08;user-select:all;margin-bottom:14px}
