/* Current composition, responsive geometry and VFX timing. Materials live in ui-system.css. */
.workspace{--ritual-light:var(--accent-soft);--ritual-bloom:color-mix(in srgb,var(--ritual-light) 38%,transparent)}
.sanctuary-scene{min-height:860px;gap:26px 62px;padding:55px 56px 38px}
.sanctuary-opening h1{font-size:clamp(36px,3.5vw,51px);line-height:1.48}
.sanctuary-altar{min-height:630px;padding-bottom:150px;align-self:start;margin-top:48px}
.featured-card{width:clamp(220px,20vw,282px)}
.hero-entry{max-width:100%}
.ritual-pedestal{display:none}
.card-halo{top:12%;height:440px;width:390px;background:radial-gradient(ellipse,var(--ritual-bloom),color-mix(in srgb,var(--glow) 18%,transparent) 42%,transparent 72%);animation:material-halo 4s ease-in-out infinite}
.workspace .primary:is(:hover,:focus-visible){translate:0 -2px;transform:none}
.workspace .primary:after{opacity:.25;inset:5px;border-radius:inherit}
.workspace .primary:disabled{filter:none;opacity:.6}
.sanctuary-invitation .primary{min-height:64px;min-width:310px;gap:20px}

.memory-shelf{padding:25px 30px 28px;min-height:326px;display:grid;grid-template-rows:52px minmax(98px,1fr) minmax(98px,1fr);gap:8px;border-radius:22px}
.memory-shelf .section-title{margin:0;padding:0 0 11px;align-self:center}.memory-shelf .section-title a,.memory-shelf .row-meta,.memory-shelf .row-date span,.memory-shelf .shelf-link{}
.memory-shelf h2,.memory-shelf .row-title{}.memory-shelf .row-date strong{}
.memory-shelf .reading-row{border-radius:9px;padding:14px 0;align-self:stretch;align-items:center;min-width:0;gap:12px}
.memory-shelf .reading-row:hover{}
.memory-shelf .reading-row:focus-visible{}
.memory-shelf .row-title{font-size:18px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.memory-shelf .row-meta{font-size:14px;line-height:1.7}
.memory-shelf>p{margin:0;align-self:center;font:19px/1.85 var(--serif)}.memory-shelf>.shelf-link{align-self:center;justify-self:start}
.ritual-intention{min-height:890px;padding:30px 48px 48px}
.ritual-intention #reading-form{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:28px 34px}
.intention-guidance{grid-column:1;grid-row:1/3;align-self:start;max-width:290px;padding:40px 0 0;color:var(--text-primary);background:none;border:0;box-shadow:none}
.intention-guidance p{font:22px/1.9 var(--serif);margin:24px 0;text-wrap:balance}
.intention-guidance .eyebrow{font-size:14px;line-height:1.8}
.intention-grid{gap:17px}
.intention-grid .ritual-choice,.intention-grid .ritual-choice:first-child{padding:20px 24px;gap:13px;min-height:106px;border-radius:22px;font-size:20px;isolation:isolate;transition:translate .4s ease,filter .4s ease}
.intention-grid .ritual-choice .choice-glyph,.intention-grid .choice-arrow{}
.intention-grid .choice-glyph .scene-sigil{width:37px;height:37px}.intention-grid .choice-copy small{font-size:15px;line-height:1.6}
.intention-grid .ritual-choice:before{inset:5px;border-radius:inherit;opacity:0;transition:opacity .4s ease}
.intention-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]){translate:0 -3px;transform:none}
.intention-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]):before{opacity:1}
.ritual-spread #reading-form{max-width:1120px}
.spread-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:27px 25px;margin-top:35px}
.spread-grid .ritual-choice{border-radius:20px;min-height:348px;padding:57px 22px 35px;gap:17px;font-size:22px;isolation:isolate;transition:translate .35s ease,scale .35s ease,filter .35s ease}
.spread-grid .choice-glyph{min-height:144px;display:flex;align-items:center;justify-content:center}
.spread-grid .spread-pattern{width:100%;height:140px;max-width:210px}
.spread-grid .choice-copy{gap:11px}.spread-grid .choice-copy small{font-size:15px;line-height:1.75;text-wrap:balance}
.spread-grid .choice-glyph:before{opacity:0;transition:opacity .4s ease;box-shadow:0 0 30px var(--ritual-bloom)}
.spread-grid .ritual-choice:before{inset:10px;opacity:0;transition:opacity .4s ease;border-radius:16px;z-index:-1}
.spread-grid .ritual-choice:after{inset:8px;mask:none;border-radius:18px;opacity:0;transition:opacity .4s ease}
.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]){translate:0 -5px;transform:none;scale:1.015;filter:drop-shadow(0 0 12px var(--ritual-bloom));box-shadow:none;animation:none}
.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]):before,.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]):after{opacity:.85}
.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]) .choice-glyph:before{opacity:.7}
.spread-grid .ribbons-tile{inset:-9px;opacity:0}
.spread-grid .ritual-choice:is(:hover,:focus-visible) .ribbons-tile{opacity:.85}.spread-grid .ritual-choice[aria-pressed=true] .ribbons-tile{opacity:1}
.spread-grid .ritual-choice[aria-pressed=true]:after{animation:tile-focus-breathe 4s ease-in-out infinite}
.spread-grid .ritual-choice:last-child:nth-child(4n+1){grid-column:2/4;max-width:265px;width:100%;justify-self:center}
.spread-grid .ritual-choice:disabled{filter:none;scale:1;translate:none}.spread-grid .ritual-choice:disabled:before,.spread-grid .ritual-choice:disabled:after{opacity:0}
.ritual-draw{min-height:890px}
.ritual-draw .ritual-deck{height:445px;margin-top:28px;max-width:890px}
.ritual-deck .ritual-circle{bottom:88px;width:690px;height:135px}
.fan-choice{width:192px;left:calc(50% - 96px);--fan-gap:228px}
.fan-choice img{box-shadow:0 17px 30px color-mix(in srgb,var(--shadow) 30%,transparent),0 0 22px var(--ritual-bloom)}
.fan-choice:after{opacity:.25;animation:material-halo 4s ease-in-out infinite}
.fan-choice:is(:hover,:focus-visible) img{box-shadow:0 20px 38px color-mix(in srgb,var(--shadow) 30%,transparent),0 0 30px var(--ritual-bloom)}
.fan-choice.picked img{box-shadow:0 0 42px var(--ritual-bloom)}
.fan-choice.picked:before{content:'';position:absolute;inset:-22px;border:1px solid var(--ritual-light);border-radius:50%;animation:summon-focus .6s ease-out both;pointer-events:none;box-shadow:0 0 12px var(--ritual-bloom)}

.chamber-bokeh{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.chamber-bokeh i{position:absolute;left:calc(13% + var(--b)*18%);top:calc(22% + var(--b)*7%);width:calc(26px + var(--b)*7px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,var(--ritual-bloom),transparent 65%);filter:blur(7px);opacity:.22;animation:bokeh-drift 11s ease-in-out infinite;animation-delay:calc(var(--b)*-2.1s)}
.scene-moonlight{opacity:.45;animation:moonlight-drift 12s ease-in-out infinite}
.ambient-dust i:nth-child(n){width:2px;height:2px;opacity:.3;box-shadow:0 0 5px var(--ritual-bloom);animation:chamber-dust 13s ease-in-out infinite;animation-delay:calc(var(--i)*-.77s)}
.ambient-dust i:nth-child(3n){width:1px;height:1px;animation-duration:17s}
.ambient-dust i:nth-child(6n){width:5px;height:5px;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);animation:chamber-twinkle 3s ease-in-out infinite;animation-delay:calc(var(--i)*-.63s)}
.ritual-circle{animation:altar-breath 5s ease-in-out infinite;background:radial-gradient(ellipse,var(--ritual-bloom),transparent 71%);border-color:var(--ritual-light)}
.altar-sigil{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--ritual-light);stroke-width:1.4;opacity:.52;filter:drop-shadow(0 0 4px var(--ritual-bloom))}
.ritual-circle span{font-size:22px;text-shadow:0 0 16px var(--ritual-light)}
.stage-beam{background:conic-gradient(from 345deg at 50% 93%,transparent 0deg,color-mix(in srgb,var(--ritual-light) 12%,transparent) 9deg,transparent 23deg),radial-gradient(ellipse at 50% 91%,var(--ritual-bloom),transparent 64%);filter:blur(6px);animation:beam-drift 6s ease-in-out infinite}
.stage-motes i:nth-child(n){animation-duration:3s;animation-delay:calc(var(--m)*-.37s);left:calc(12% + var(--m)*7%);top:calc(13% + var(--m)*5%);background:var(--ritual-light);box-shadow:0 0 7px var(--ritual-light)}
.stage-spark{animation-duration:2.8s;filter:drop-shadow(0 0 5px var(--ritual-light))}
.ribbon-thread{stroke-width:1.6;opacity:.64}.ribbon-haze{stroke-width:8;opacity:.27;filter:blur(5px)}.ribbon-comet{stroke-width:2;stroke-dasharray:120 880;opacity:.95}.mote-halo{opacity:.4}.mote-core{fill:var(--ritual-light)}
.ribbons-hero-front,.ribbons-draw-front{opacity:.85}.ribbons-hero-front .ribbon-comet,.ribbons-draw-front .ribbon-comet{opacity:.75}

.reading-card.is-revealed .card-stage{position:relative;isolation:isolate}
.reading-card.is-revealed .card-stage:after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,color-mix(in srgb,var(--accent-soft) 25%,transparent) 49%,transparent 61%);border-radius:8px;pointer-events:none;animation:reveal-sweep 1.1s ease-out both}
@keyframes material-halo{0%,100%{opacity:.65;scale:.96}50%{opacity:1;scale:1.06}}
@keyframes tile-focus-breathe{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes chamber-dust{0%,100%{translate:-12px 18px;opacity:.18}35%{opacity:.42}65%{translate:26px -45px;opacity:.3}}
@keyframes chamber-twinkle{0%,70%,100%{opacity:.08;scale:.65;translate:0 0}35%{opacity:.55;scale:1;translate:5px -8px}}
@keyframes bokeh-drift{50%{translate:13px -30px;opacity:.4;scale:1.12}}
@keyframes moonlight-drift{50%{translate:12px -8px;opacity:.65}}
@keyframes reveal-sweep{0%{opacity:0;translate:-35% 0}30%{opacity:1}100%{opacity:0;translate:35% 0}}
@keyframes summon-focus{0%{opacity:0;scale:.84}30%{opacity:.6}100%{opacity:0;scale:1.15}}
@media(max-width:1240px){.sanctuary-scene{padding:45px 40px 35px;gap:25px 40px}.sanctuary-opening h1{font-size:40px}.ritual-intention{padding:28px 38px 42px}.ritual-intention #reading-form{grid-template-columns:minmax(0,.6fr) minmax(0,1.4fr);gap:25px}.intention-grid .ritual-choice,.intention-grid .ritual-choice:first-child{padding:20px;gap:12px;font-size:19px}.spread-grid{gap:24px 20px}.spread-grid .ritual-choice{min-height:330px;padding:52px 18px 32px;font-size:20px}.spread-grid .choice-glyph{min-height:130px}.spread-pattern{height:125px}}
@media(max-width:960px){.spread-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.spread-grid .ritual-choice:last-child:nth-child(4n+1){grid-column:auto;max-width:none}.ritual-intention #reading-form{grid-template-columns:1fr}.ritual-intention .ritual-title{grid-column:1;grid-row:1}.intention-grid{grid-column:1;grid-row:2}.intention-guidance{grid-column:1;grid-row:3;max-width:650px;padding:10px 0}.intention-guidance p{font-size:18px}.sanctuary-invitation .primary{min-width:0}.sanctuary-altar{min-height:590px;margin-top:38px}.fan-choice{--fan-gap:185px;width:164px;left:calc(50% - 82px)}}
@media(max-width:760px){
 .sanctuary-scene{padding:34px 25px 30px;gap:27px;min-height:0}.sanctuary-opening h1{font-size:33px}.sanctuary-opening p{font-size:17px}
 .sanctuary-invitation .primary{width:100%;min-height:60px;font-size:18px;padding:14px 23px}
 .sanctuary-altar{min-height:485px;order:2;margin-top:0;padding-bottom:125px}.featured-card{width:205px;max-width:74%}.card-halo{width:285px;height:360px;top:6%}
 .memory-shelf{padding:22px 23px 24px;min-height:338px;grid-template-rows:54px minmax(102px,1fr) minmax(102px,1fr);gap:6px}.memory-shelf .section-title{flex-wrap:nowrap;gap:8px;padding-bottom:10px}.memory-shelf h2{font-size:23px}.memory-shelf .section-title a{font-size:14px}.memory-shelf .reading-row{gap:10px;grid-template-columns:58px minmax(0,1fr)}.memory-shelf .row-title{font-size:17px}.memory-shelf .row-meta{font-size:14px}.memory-shelf .row-date span{font-size:13px}
 .ritual-intention{min-height:0;padding:24px 24px 35px}.ritual-intention #reading-form{display:flex;gap:25px}
 .intention-grid{gap:16px}.intention-grid .ritual-choice,.intention-grid .ritual-choice:first-child{min-height:99px;padding:19px 25px;gap:17px;font-size:20px}.intention-grid .choice-copy small{font-size:15px}.intention-guidance{order:3;padding:0;text-align:center}.intention-guidance p{font-size:18px;margin:16px 0 0}.intention-guidance .eyebrow{display:none}
 .ritual-spread{padding:24px 24px 35px}.spread-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px;margin-top:26px}.spread-grid .ritual-choice{min-height:278px;padding:45px 12px 26px;gap:14px;font-size:20px}.spread-grid .choice-glyph{min-height:110px}.spread-grid .spread-pattern{height:109px;max-width:133px}.spread-grid .choice-copy{gap:6px}.spread-grid .choice-copy small{font-size:14px;line-height:1.75}.spread-grid .ritual-choice:last-child:nth-child(odd){grid-column:1/3;max-width:155px;justify-self:center}.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]){translate:0 -2px;scale:1}
 .ritual-draw{min-height:0;padding:24px 24px 35px}.ritual-draw .ritual-title h1{font-size:28px}.ritual-draw .ritual-deck{height:286px;margin-top:30px}.fan-choice{width:104px;left:calc(50% - 52px);--fan-gap:84px;--fan-drop:16px;--fan-tilt:4deg}.ritual-deck .ritual-circle{width:330px;height:94px;bottom:38px}.selected-slots{margin-top:8px}
 .ritual-circle{bottom:115px;height:85px;width:275px}.stage-beam{inset:8% 0 5%}.altar-entry{height:160px}
 .ambient-dust i:nth-child(n+25){display:none}.ambient-dust i:nth-child(-n+24){display:block}.ribbon-haze{stroke-width:6}.ribbon-thread{stroke-width:1.5}
}
@media(max-width:380px){.spread-grid{gap:19px 10px}.spread-grid .ritual-choice{font-size:18px;min-height:272px;padding:44px 10px 25px}.spread-grid .choice-copy small{font-size:14px}.fan-choice{width:96px;left:calc(50% - 48px);--fan-gap:74px}.memory-shelf .section-title{flex-wrap:wrap}}
.still .chamber-bokeh,.still .stage-motes,.still .stage-spark{display:none}.still .scene-moonlight,.still .card-stage:after,.still .fan-choice:before{animation:none!important}.still .fan-choice:before,.still .reading-card.is-revealed .card-stage:after{display:none}
@media(prefers-reduced-motion:reduce){.chamber-bokeh,.stage-motes,.stage-spark,.fan-choice:before,.reading-card.is-revealed .card-stage:after{display:none}.scene-moonlight{animation:none}}
