.journey-exit-veil{position:absolute;inset:auto 0 0;z-index:18;height:46svh;pointer-events:none;opacity:var(--journey-exit,0);background:radial-gradient(ellipse at 50% 100%,rgba(75,47,112,.26),transparent 58%),linear-gradient(180deg,transparent,#080916 92%);-webkit-mask-image:linear-gradient(transparent,#000 48%);mask-image:linear-gradient(transparent,#000 48%)}
.journey-exit-veil:before,.journey-exit-veil:after{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,rgba(235,218,255,.9) 0 1px,transparent 1.7px),radial-gradient(circle,rgba(137,172,255,.72) 0 1px,transparent 1.8px);background-size:71px 83px,113px 97px;background-position:17px 21px,53px 39px;opacity:.48}
.journey-exit-veil:after{background-size:181px 137px;background-position:83px 17px;filter:blur(.4px);opacity:.28}
.faith-passage{--faith-descent:0;--faith-dawn:0;position:relative;z-index:20;height:280svh;margin-top:0;overflow:clip;background:transparent}
/* v25: no private backdrop — the site's own living background (#soul-atmosphere over #080916) shows through */
.faith-passage:before{content:none}
.faith-passage-sticky{position:sticky;top:0;height:100svh;display:grid;place-items:center;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 112%,rgba(255,248,226,calc(var(--faith-dawn) * .42)),transparent 58%),radial-gradient(ellipse at 24% 44%,rgba(112,86,168,.11),transparent 46%)}
.faith-bridge-canvas{position:absolute;inset:0;z-index:0;width:100%;height:100%;pointer-events:none;opacity:.94}
.faith-dawn{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 108%,rgba(255,236,190,.34),rgba(255,236,190,.08) 42%,transparent 66%);opacity:var(--faith-dawn)}
.faith-passage-sticky:after{content:'';position:absolute;left:50%;bottom:-30%;z-index:1;width:min(90vw,1050px);height:90%;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(255,252,241,.7),rgba(234,217,185,.11) 42%,transparent 70%);opacity:var(--faith-glow-opacity,0);pointer-events:none}
.faith-gate-status{position:absolute;left:50%;top:48%;z-index:3;width:min(520px,86vw);transform:translate(-50%,-50%);text-align:center;color:#e9e2f0;opacity:var(--faith-gate-opacity,1);transition:opacity .35s}
.faith-gate-star{display:block;margin-bottom:20px;color:#d8c4ee;font-size:20px;filter:drop-shadow(0 0 12px #c8a6ff)}
.faith-gate-status p{margin:0 0 18px;font:400 clamp(22px,3vw,36px)/1.5 var(--serif,Georgia,serif);letter-spacing:.05em}
.faith-time{width:min(320px,72vw);height:1px;margin:auto;background:rgba(255,255,255,.12);overflow:hidden}.faith-time i{display:block;width:var(--faith-time-progress,0%);height:100%;background:linear-gradient(90deg,#a991d5,#f0d8bd);box-shadow:0 0 12px #d7b7e9;transition:width .8s linear}
.faith-gate-status small{display:block;margin-top:12px;color:#a89db7;font:500 11px/1.5 var(--sans);letter-spacing:.18em}
.faith-descent-cue{position:absolute;left:50%;top:16%;z-index:3;display:flex;flex-direction:column;align-items:center;gap:14px;transform:translateX(-50%);color:#c5b9d0;opacity:0;text-align:center;font:500 11px/1.6 var(--sans);letter-spacing:.14em;transition:opacity .5s}
.faith-unlocked .faith-descent-cue{opacity:var(--faith-cue-opacity,0)}.faith-descent-cue i{font-style:normal;color:#eedcc1;animation:faithDown 2s ease-in-out infinite}
.faith-easter-egg{position:absolute;left:50%;top:55%;z-index:4;width:min(70vw,850px);display:grid;place-items:center;transform:translate(-50%,-42%) scale(.76);opacity:0;filter:blur(14px);pointer-events:none;text-decoration:none;transition:opacity 1.1s,transform 1.3s cubic-bezier(.16,.8,.2,1),filter 1s}
.faith-easter-egg.is-visible{opacity:1;transform:translate(-50%,-50%) scale(1);filter:none;pointer-events:auto}
.faith-easter-egg img{display:block;width:100%;height:auto;filter:drop-shadow(0 0 12px rgba(255,255,255,.72)) drop-shadow(0 0 48px rgba(244,213,158,.48));animation:faithWingBreath 6s ease-in-out infinite}
.faith-easter-egg span{position:absolute;top:84%;padding:11px 22px;border:1px solid rgba(231,207,167,.28);border-radius:999px;background:rgba(16,14,32,.55);backdrop-filter:blur(12px);color:#eadbb8;font:600 11px/1.4 var(--sans);letter-spacing:.18em;white-space:nowrap;box-shadow:0 16px 46px rgba(78,62,41,.09);transition:.3s}
.faith-easter-egg:hover span,.faith-easter-egg:focus-visible span{background:rgba(255,253,248,.95);box-shadow:0 15px 46px rgba(99,77,42,.16)}
.faith-easter-egg:focus-visible{outline:1px solid #e7cfa7;outline-offset:12px;border-radius:50%}
.faith-passage:not(.faith-unlocked){--faith-dawn:0!important}.faith-passage:not(.faith-unlocked) .faith-descent-cue,.faith-passage:not(.faith-unlocked) .faith-easter-egg{display:none}
@keyframes faithWingBreath{50%{transform:translateY(-8px) scale(1.012);filter:drop-shadow(0 0 18px rgba(255,255,255,.85)) drop-shadow(0 0 58px rgba(244,213,158,.58))}}@keyframes faithDown{50%{transform:translateY(6px)}}
@media(max-width:700px){.faith-passage{height:320svh}.faith-easter-egg{top:54%;width:min(112vw,680px)}.faith-easter-egg span{top:87%;font-size:9px;max-width:86vw;white-space:normal;text-align:center}.faith-gate-status p{font-size:22px}.faith-descent-cue{top:17%;width:80vw}}
@media(prefers-reduced-motion:reduce){.faith-easter-egg img,.faith-descent-cue i{animation:none}.faith-easter-egg{transition:none}.journey-exit-veil:before,.journey-exit-veil:after{transform:none}}

/* ---- prayer gate (replaces the 10-minute timer) ---- */
.faith-form{display:grid;gap:14px;justify-items:center;margin:0 auto}
.faith-form textarea{width:min(440px,84vw);padding:.95em 1.1em;border:1px solid rgba(216,196,238,.28);border-radius:16px;background:rgba(255,255,255,.04);color:#efe8f5;font:400 16px/1.9 var(--serif,Georgia,serif);letter-spacing:.05em;text-align:center;resize:none;outline:none;box-shadow:0 0 40px -18px #a991d5;transition:border-color .3s,box-shadow .3s,background .3s}
.faith-form textarea::placeholder{color:rgba(216,196,238,.42)}
.faith-form textarea:focus{border-color:rgba(240,216,189,.7);background:rgba(255,255,255,.07);box-shadow:0 0 56px -12px #d7b7e9}
.faith-form button{padding:.8em 2.4em;border:1px solid rgba(240,216,189,.5);border-radius:999px;background:linear-gradient(135deg,rgba(169,145,213,.28),rgba(240,216,189,.2));color:#f4e6d3;font:500 14px/1 var(--sans);letter-spacing:.4em;padding-left:2.8em;cursor:pointer;transition:box-shadow .3s,transform .3s,border-color .3s}
.faith-form button:hover{border-color:#f0d8bd;box-shadow:0 0 30px -4px rgba(215,183,233,.85);transform:translateY(-2px)}
#faith-hint{margin-top:16px}
.faith-gate-status p{margin-bottom:22px}
.faith-gate-star{transition:filter .6s,opacity .6s,transform .6s}
.faith-accepted .faith-gate-star{animation:faithFlare 2.2s ease-out}
@keyframes faithFlare{0%{transform:scale(1)}30%{transform:scale(3.2);filter:drop-shadow(0 0 40px #fff) drop-shadow(0 0 80px #ffe3a8)}100%{transform:scale(1)}}
.faith-unlocked .faith-gate-status .faith-form,.faith-unlocked #faith-hint{display:none}
/* wrong answer: the light goes out */
.faith-denied{position:absolute;left:0;right:0;top:0;display:grid;place-items:center;gap:10px;min-height:100%;padding:0 4vw;background:rgba(8,9,22,.0)}
.faith-denied[hidden]{display:none}
.faith-denied b{font:500 clamp(20px,2.6vw,30px)/1.8 var(--serif,Georgia,serif);letter-spacing:.1em;color:#cfc6d6;opacity:0;animation:faithRegret 4.8s ease forwards;text-shadow:0 0 24px rgba(0,0,0,.8)}
@keyframes faithRegret{0%{opacity:0;transform:translateY(10px);filter:blur(8px)}20%{opacity:1;transform:none;filter:none}82%{opacity:1}100%{opacity:0;filter:blur(6px)}}
.faith-denied-on .faith-gate-status>*:not(.faith-denied){opacity:0!important;transition:opacity .5s;pointer-events:none}
.faith-denied-on .faith-passage-sticky{animation:faithShake .5s ease-out}
.faith-denied-on .faith-passage-sticky:before{opacity:1}
.faith-passage-sticky:before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;transition:opacity .9s;background:radial-gradient(ellipse at 50% 48%,rgba(0,0,0,0) 0,rgba(3,3,10,.55) 38%,rgba(2,2,6,.94) 100%)}
.faith-denied-on .faith-bridge-canvas{filter:grayscale(1) brightness(.35);transition:filter .8s}
.faith-bridge-canvas{transition:filter 1.2s}
.faith-denied-on .faith-gate-status{z-index:4}
@keyframes faithShake{0%,100%{transform:none}20%{transform:translateX(-7px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@media(prefers-reduced-motion:reduce){.faith-denied-on .faith-passage-sticky,.faith-accepted .faith-gate-star{animation:none}}

/* ---- seamless hand-over: the soul-gem scene dissolves into the night as it leaves, no hard edge ---- */
.galaxy-stage{opacity:max(0,calc(1 - var(--journey-exit,0) * 1.08));will-change:opacity}
.journey-exit-veil{background:radial-gradient(ellipse at 50% 100%,rgba(75,47,112,.18),transparent 58%),linear-gradient(180deg,transparent,rgba(8,9,22,0))}
.galaxy-stage{
 -webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 85% * var(--journey-exit,0)),transparent calc(100% - 38% * var(--journey-exit,0))),linear-gradient(180deg,transparent 0,#000 calc(34% * var(--journey-exit,0)));
 -webkit-mask-composite:source-in;
 mask-image:linear-gradient(180deg,#000 calc(100% - 85% * var(--journey-exit,0)),transparent calc(100% - 38% * var(--journey-exit,0))),linear-gradient(180deg,transparent 0,#000 calc(34% * var(--journey-exit,0)));
 mask-composite:intersect}

/* v27 · one continuous passage: the journey's HUD dissolves upward as the end nears, the gate rises out of the same sky */
.spiral-screen>:not(.galaxy-stage):not(.journey-exit-veil){filter:opacity(calc(1 - var(--journey-exit,0)*1.9)) blur(calc(var(--journey-exit,0)*7px));translate:0 calc(var(--journey-exit,0)*-26px)}
.faith-passage-sticky{background:radial-gradient(ellipse at 50% 112%,rgba(255,236,190,calc(var(--faith-dawn) * .3)),transparent 58%),radial-gradient(ellipse at 24% 44%,rgba(112,86,168,.1),transparent 46%)}
.faith-passage-sticky>.faith-gate-status,.faith-passage-sticky>.faith-easter-egg,.faith-passage-sticky>.faith-descent-cue{filter:opacity(var(--faith-in,1)) blur(calc((1 - var(--faith-in,1))*9px));translate:0 calc((1 - var(--faith-in,1))*38px)}
.faith-bridge-canvas{opacity:calc(.94*var(--faith-in,1))}
.journey-exit-veil:before{opacity:.32;filter:blur(.5px)}.journey-exit-veil:after{opacity:.14}
.journey-exit-veil{-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 38%,#000 62%,transparent 100%)!important;mask-image:linear-gradient(180deg,transparent 0,#000 38%,#000 62%,transparent 100%)!important}

/* v28 · no hard top edge inside the passage: everything clipped to its box fades in over the first third */
.faith-bridge-canvas,.faith-dawn{-webkit-mask-image:linear-gradient(180deg,transparent 0,rgba(0,0,0,.35) 12%,#000 36%);mask-image:linear-gradient(180deg,transparent 0,rgba(0,0,0,.35) 12%,#000 36%)}
.faith-passage-sticky{-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 14%);mask-image:linear-gradient(180deg,transparent 0,#000 14%)}
.journey-exit-veil:before,.journey-exit-veil:after{display:none}
