/* Premium ritual presentation. Every palette is supplied by theme.js. */
.workspace{
 --glass:color-mix(in srgb,var(--surface) 88%,transparent);
 --glass-raised:color-mix(in srgb,var(--surface-elevated) 92%,transparent);
 --light-line:color-mix(in srgb,var(--accent-soft) 76%,var(--border-emphasis));
 --light-soft:color-mix(in srgb,var(--glow) 40%,transparent);
 --scene-veil:color-mix(in srgb,var(--background-primary) 58%,transparent);
 width:calc(100% - 48px);max-width:1480px;margin:24px auto;
 border:1px solid var(--border-emphasis);border-radius:24px;
 box-shadow:0 0 0 5px var(--background-primary),0 0 0 6px var(--border),0 22px 80px color-mix(in srgb,var(--shadow) 30%,transparent);
}
/* Shared type, breathing space and control family. */
.eyebrow,.position-label,.row-meta,.row-date span,.altar-caption,.ritual-utility .eyebrow,.music-toggle span,.page-footer{font-size:14px;letter-spacing:.6px;line-height:1.7}
.primary,.outline,.text-button,.button,.shelf-link{font-size:16px;line-height:1.5;min-height:48px}
label,summary,.reference-note,.room-name,.ambient-player label,.pill,.reading-tags{font-size:15px;line-height:1.65}
.prose,.meaning-copy p{font-size:17px;line-height:1.95}
.meaning-copy h4,.reading-interpretation summary{font-size:16px}
.primary,.outline,.ritual-choice{transition:transform .4s ease,translate .4s ease,border-color .45s ease,background .5s ease,box-shadow .5s ease}
.primary{
 display:inline-flex;align-items:center;justify-content:center;gap:22px;
 background:linear-gradient(135deg,var(--accent-soft),var(--accent));color:var(--button-text);
 border:1px solid var(--accent-soft);padding:15px 30px;min-height:56px;
 box-shadow:inset 0 1px 9px color-mix(in srgb,var(--accent-soft) 65%,transparent),inset 0 0 0 4px color-mix(in srgb,var(--surface) 10%,transparent),0 0 22px var(--light-soft),0 7px 24px color-mix(in srgb,var(--shadow) 18%,transparent);
}
.primary:hover,.primary:focus-visible{background:linear-gradient(135deg,var(--accent-soft),var(--accent));box-shadow:inset 0 0 15px var(--accent-soft),0 0 36px color-mix(in srgb,var(--glow) 45%,transparent);filter:none;transform:translateY(-2px)}
.primary:active,.outline:active{transform:translateY(0) scale(.985)}
.primary:after{animation:quiet-shimmer 12s ease-in-out infinite;opacity:.65}
.outline{border-color:var(--border-emphasis);padding:12px 25px;background:var(--glass);box-shadow:inset 0 1px 7px var(--halo)}
.outline:hover{background:var(--glass-raised);box-shadow:0 0 22px var(--light-soft);border-color:var(--light-line)}
.text-button{padding:12px 20px;color:var(--text-secondary);border-radius:999px}
.text-button:hover{color:var(--text-primary);background:var(--glass)}
button:focus-visible,a:focus-visible{outline:2px solid var(--border-emphasis);outline-offset:5px}
input,textarea,select{font-size:16px;line-height:1.7}
.panel,.pack-tile,.collection-banner,.empty,dialog,.memory-shelf,.path-note,.journal-details[open]{background:var(--glass);border-color:var(--border-emphasis);border-radius:20px;box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--surface) 55%,transparent),inset 0 0 0 5px color-mix(in srgb,var(--border-emphasis) 26%,transparent),inset 0 1px 20px var(--halo),0 12px 32px color-mix(in srgb,var(--shadow) 18%,transparent);backdrop-filter:blur(15px)}
/* Supporting journal screens retain the same readable type scale. */
main .page-heading p{font-size:17px;line-height:1.85}main .page-heading .eyebrow{font-size:14px}main .muted,.stats span,.bar-row>div:first-child,.pack-tile p,.empty p,.day-empty p,.gallery-card>span{font-size:14px;line-height:1.8}.pack-tile .outline,.filters .text-button{font-size:16px;min-height:48px}.pack-tile .pill{font-size:14px}.calendar-week{font-size:13px}.calendar-day small{font-size:12px}.section-title>select,.library-controls>select,.searchbox input{font-size:16px}
/* Framed navigation remains recognisable on every ritual step. */
.sanctuary-header,.workspace[data-phase=draw] .sanctuary-header{min-height:92px;padding:12px 38px;max-width:none;background:color-mix(in srgb,var(--background-secondary) 94%,transparent);border-bottom:1px solid var(--border-emphasis);gap:24px}
.sanctuary-header .brand{display:flex;gap:12px;align-items:center;flex-shrink:0}
.sanctuary-header .brand img,.workspace[data-phase=draw] .brand img{width:53px;height:60px;object-fit:contain;mix-blend-mode:normal}
.brand-name{font:19px/1.4 var(--serif);letter-spacing:1px;font-variant:small-caps;color:var(--accent-soft);white-space:nowrap}.sanctuary-header .brand-name{display:block;font:19px/1.4 var(--serif);letter-spacing:1px}
.sanctuary-header nav{font-size:15px;gap:26px;flex-wrap:nowrap}
.sanctuary-header nav a{position:relative;padding:16px 0}
.sanctuary-header nav a[aria-current]{border-color:var(--border-emphasis);text-shadow:0 0 15px var(--light-soft)}
.sanctuary-header nav a[aria-current]:after{content:'✧';position:absolute;bottom:-10px;left:50%;translate:-50% 0;color:var(--accent-soft);text-shadow:0 0 9px var(--glow)}
.top-tools{gap:14px;flex-shrink:0}.music-toggle{min-height:44px;padding:8px 16px;font-size:20px;border-color:var(--border-emphasis)}.music-toggle span{font-size:14px}.language-label select{font-size:14px;min-height:44px;padding:8px 15px;border-color:var(--border-emphasis)}
.workspace[data-phase=draw] .sanctuary-header nav{display:flex}.workspace[data-phase=draw] .sound-toggle,.workspace[data-phase=draw] .top-tools>a,.workspace[data-phase=draw] .language-label{display:initial}
/* One room, distinct viewpoints. All foreground text stays above a semantic veil. */
.illustrated-scene{border-radius:0 0 23px 23px}
.illustrated-scene:after{inset:10px;border:1px solid color-mix(in srgb,var(--border-emphasis) 70%,transparent);border-radius:18px;z-index:0;box-shadow:inset 0 0 22px color-mix(in srgb,var(--glow) 8%,transparent)}
.frame-corners{position:absolute;inset:15px;z-index:3;pointer-events:none}
.frame-corners i{position:absolute;top:0;left:0;width:45px;height:45px;background:var(--border-emphasis);mask:url('assets/ornaments/corner.svg') center/contain no-repeat;opacity:.75}
.frame-corners i:nth-child(2){left:auto;right:0;scale:-1 1}.frame-corners i:nth-child(3){top:auto;bottom:0;scale:1 -1}.frame-corners i:nth-child(4){top:auto;bottom:0;left:auto;right:0;scale:-1 -1}
.scene-props{position:absolute;inset:0;pointer-events:none;z-index:-1}.scene-props img{position:absolute;object-fit:contain;filter:blur(.6px) saturate(.72);opacity:.55}
.scene-vine{width:95px;height:430px;top:40px;left:-30px}.scene-vine.vine-right{left:auto;right:-30px;scale:-1 1;top:80px}.scene-candles{width:145px;height:155px;right:35px;bottom:22px}.scene-study{width:210px;height:230px;right:16px;bottom:40px}
.ambient-dust{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.85;overflow:hidden;border-radius:inherit}
.ambient-dust i:nth-child(n){display:block;background:var(--accent-soft);width:3px;height:3px;opacity:.55;box-shadow:0 0 6px var(--accent-soft),0 0 16px var(--glow);animation:room-dust 24s ease-in-out infinite;animation-delay:calc(var(--i)*-1.7s)}
.ambient-dust i:nth-child(5n){width:5px;height:5px;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%)}
/* Sanctuary: an invitation and private journal at left, a clear floating card at right. */
.sanctuary-scene{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);grid-template-rows:auto 1fr auto;min-height:760px;padding:65px 64px 44px;gap:28px 70px;align-items:start}
.sanctuary-opening{grid-column:1;grid-row:1;align-self:start;padding:0;z-index:2}
.sanctuary-opening h1{font-size:clamp(36px,3.35vw,49px);line-height:1.5;margin:22px 0;letter-spacing:.02em;text-wrap:balance}
.sanctuary-opening p{font-size:18px;line-height:1.9;max-width:440px;text-wrap:balance}
.sanctuary-invitation{display:flex;align-items:flex-start;flex-direction:column;gap:12px;margin-top:30px}
.sanctuary-invitation .primary{font:19px/1.5 var(--serif);min-width:285px;min-height:60px}
.sanctuary-invitation .primary>span:first-child{font-size:29px;font-weight:normal;line-height:1}.sanctuary-invitation .primary>span:last-child{font-size:25px}
.invitation-deck{font-size:13px;color:var(--text-secondary);letter-spacing:1px;line-height:1.7}
.sanctuary-altar{grid-column:2;grid-row:1/4;position:relative;isolation:isolate;align-self:center;min-height:600px;width:100%;padding:0 0 130px;display:flex;align-items:center;justify-content:center}
.featured-card{width:clamp(225px,21vw,286px);max-width:67%;rotate:7deg;border-radius:8px;z-index:1;box-shadow:0 18px 45px color-mix(in srgb,var(--shadow) 32%,transparent),0 0 25px var(--light-soft),0 0 65px color-mix(in srgb,var(--glow) 23%,transparent);animation:card-float 8s ease-in-out infinite}
.card-halo{position:absolute;left:50%;top:45px;translate:-50% 0;width:350px;height:420px;border:none;background:radial-gradient(ellipse,color-mix(in srgb,var(--accent-soft) 24%,transparent),var(--light-soft) 40%,transparent 72%);box-shadow:none;transform:none;animation:aura-breathe 8s ease-in-out infinite}
.card-halo:after{display:none}
.memory-shelf{grid-column:1;grid-row:2;align-self:start;max-width:510px;width:100%;margin:0;padding:25px 28px;z-index:2}
.memory-shelf .section-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 13px}
.memory-shelf h2{font-size:26px;margin:0}.memory-shelf .section-title a{font-size:15px;white-space:nowrap;color:var(--text-secondary)}
.memory-shelf>p{font-size:17px;padding:4px 0;line-height:1.8}.memory-shelf .reading-row{display:grid;grid-template-columns:68px minmax(0,1fr) 56px;gap:14px;padding:13px 0;border-color:color-mix(in srgb,var(--border-emphasis) 40%,transparent)}
.memory-shelf .row-date{display:flex;flex-direction:column;gap:0;align-items:flex-start;border:0;padding:0;grid-row:1;grid-column:1}.memory-shelf .row-date strong{font-size:24px}.memory-shelf .row-date span{font-size:13px;line-height:1.4;white-space:normal;overflow-wrap:anywhere}
.memory-shelf .mini-cards{display:flex;grid-column:3;grid-row:1;justify-content:flex-end;align-items:center}.memory-shelf .mini-cards img{width:30px;max-height:53px;object-fit:contain}.memory-shelf .row-copy{grid-column:2;grid-row:1;margin:0;min-width:0}.memory-shelf .row-title{font-size:18px;line-height:1.6}.memory-shelf .row-meta{font-size:14px;display:block;margin-top:4px}.memory-shelf .row-notes,.memory-shelf .row-arrow{display:none}
.sanctuary-whisper{position:static;grid-column:1;grid-row:3;padding:0;max-width:510px;text-align:left;align-self:end}.sanctuary-whisper>.eyebrow,.sanctuary-whisper .whisper-line,.scene-signature{display:none}.sanctuary-whisper p{font-size:16px;line-height:1.8;margin:0;color:var(--text-secondary)}
.sanctuary-scene .scene-study{bottom:15px;right:12px;width:185px;height:225px;opacity:.48}.sanctuary-scene .scene-candles{right:190px;bottom:18px;width:100px;height:100px;opacity:.5}.sanctuary-scene .vine-left{opacity:.35}
/* Reusable independent live stage, separate from card artwork. */
.ritual-stage{position:absolute;inset:0;z-index:-1;pointer-events:none}
.ritual-pedestal{position:absolute;bottom:-20px;left:-12%;width:124%;height:300px;max-width:none;object-fit:contain;opacity:.8}
.ritual-circle{position:absolute;left:50%;bottom:150px;width:360px;height:110px;translate:-50% 0;border:1px solid var(--accent-soft);border-radius:50%;transform:none;box-shadow:0 0 12px var(--light-soft),inset 0 0 35px var(--light-soft);background:radial-gradient(ellipse,color-mix(in srgb,var(--glow) 18%,transparent),transparent 72%);animation:circle-breath 7s ease-in-out infinite}
.ritual-circle i{position:absolute;inset:12px;border:1px solid color-mix(in srgb,var(--accent-soft) 65%,transparent);border-radius:50%}.ritual-circle i:nth-child(2){inset:25px;border-style:dotted}.ritual-circle i:nth-child(3){inset:-13px;border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.ritual-circle span{position:absolute;left:50%;top:50%;translate:-50% -50%;font-size:30px;color:var(--accent-soft);text-shadow:0 0 18px var(--glow)}
.stage-orbit{position:absolute;left:50%;top:24%;translate:-50% 0;width:365px;height:140px;border:1px solid color-mix(in srgb,var(--accent-soft) 70%,transparent);border-radius:50%;rotate:-20deg;box-shadow:0 0 10px color-mix(in srgb,var(--glow) 22%,transparent);animation:orbit-sway 12s ease-in-out infinite}
.orbit-two{top:45%;rotate:22deg;width:340px;animation-delay:-6s}
.stage-orbit:before,.stage-orbit:after{content:'✦';position:absolute;left:9%;top:12%;color:var(--accent-soft);font-size:15px;text-shadow:0 0 12px var(--glow)}.stage-orbit:after{left:auto;right:12%;top:auto;bottom:5%;font-size:11px}
.stage-beam{position:absolute;inset:8% 8% 8%;background:radial-gradient(ellipse at 50% 90%,color-mix(in srgb,var(--glow) 24%,transparent),transparent 64%);animation:beam-drift 10s ease-in-out infinite}
.stage-spark{position:absolute;color:var(--accent-soft);font-size:18px;text-shadow:0 0 10px var(--glow);animation:spark-breathe 7s ease-in-out infinite}.spark-one{left:17%;top:40%}.spark-two{right:18%;top:57%;font-size:14px;animation-delay:-3s}.spark-three{left:57%;top:7%;font-size:13px;animation-delay:-1s}
/* Ritual headings, paths and spread tiles share one family. */
.ritual-page{max-width:none;min-height:760px;padding:32px 60px 52px}
.ritual-utility{display:flex;gap:24px;align-items:center;justify-content:space-between;margin:0 0 24px;min-height:48px}
.ritual-exit{border:1px solid color-mix(in srgb,var(--border-emphasis) 45%,transparent);background:color-mix(in srgb,var(--surface) 65%,transparent);font-size:16px;padding:10px 20px;white-space:nowrap}
.ritual-utility .eyebrow{font-size:13px;max-width:none;color:var(--text-secondary)}
.ritual-title{margin:0 auto 28px;text-align:center;max-width:900px}
.ritual-title h1,.ritual-spread .ritual-title h1,.ritual-draw h1{font-size:clamp(32px,3vw,42px);line-height:1.5;margin:18px 0 12px;text-wrap:balance}
.ritual-title>p,.draw-breath{font-size:18px;line-height:1.8;color:var(--text-secondary)}
.celestial-divider{width:265px;max-width:100%;gap:22px;margin:0 auto 12px}
.celestial-divider i{background:linear-gradient(90deg,transparent,var(--border-emphasis));opacity:.8}
.celestial-divider span{font-size:24px;position:relative}.moon-crest{width:50px;height:50px;display:block;filter:drop-shadow(0 0 8px var(--light-soft))}
.celestial-divider span:before,.celestial-divider span:after{content:'✧';position:absolute;left:-50px;top:50%;translate:0 -50%;font-size:12px}.celestial-divider span:after{left:auto;right:-50px}
.ritual-choice{position:relative;border-radius:20px;border:1px solid var(--border-emphasis);background:linear-gradient(140deg,var(--glass-raised),var(--glass));backdrop-filter:blur(12px);color:var(--text-primary);padding:20px 24px;gap:18px;text-align:left;box-shadow:inset 0 1px 14px var(--halo);overflow:visible;font-size:20px}
.ritual-choice:before{content:'';position:absolute;inset:4px;border:1px solid color-mix(in srgb,var(--border-emphasis) 32%,transparent);border-radius:inherit;pointer-events:none}
.ritual-choice:hover,.ritual-choice:focus-visible,.ritual-choice[aria-pressed=true]{border-color:var(--light-line);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--surface-elevated)),var(--glass-raised));box-shadow:inset 0 0 28px var(--light-soft),0 0 24px var(--light-soft),0 0 0 1px color-mix(in srgb,var(--accent-soft) 55%,transparent);transform:translateY(-2px);translate:0 0}
.ritual-choice[aria-pressed=true]{box-shadow:inset 0 0 30px var(--light-soft),0 0 22px var(--light-soft),0 0 0 1px var(--light-line)}
.ritual-choice:active{transform:translateY(0) scale(.99);box-shadow:inset 0 0 38px var(--light-soft),0 0 32px var(--light-soft)}
.choice-copy{display:flex;flex-direction:column;gap:5px;min-width:0}.choice-copy strong{font:inherit;line-height:1.5}.choice-copy small{font:14px/1.7 var(--sans);color:var(--text-secondary)}
.choice-glyph{color:var(--accent-soft);min-width:40px}.choice-glyph .scene-sigil{width:44px;height:44px;opacity:1;stroke-width:1.6}.choice-glyph .scene-sigil>circle{opacity:.12}
.ritual-choice:hover:before,.ritual-choice:focus-visible:before,.ritual-choice[aria-pressed=true]:before{border-color:var(--light-line);box-shadow:0 0 10px var(--light-soft),inset 0 0 9px var(--light-soft)}
.ritual-choice .choice-arrow{margin-left:auto;color:var(--text-secondary);font-size:24px}
.ritual-intention #reading-form{display:grid;grid-template-columns:minmax(0,.68fr) minmax(0,1.32fr);gap:24px 60px}
.ritual-intention .ritual-title{grid-column:2;grid-row:1;text-align:center;margin:0;max-width:none}.ritual-intention .ritual-title h1{font-size:clamp(30px,2.7vw,39px)}
.intention-scene{display:contents}.intention-grid{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;max-width:none}
.intention-grid .ritual-choice,.intention-grid .ritual-choice:first-child{grid-column:auto;max-width:none;justify-self:stretch;margin:0;min-height:94px;width:100%;padding:18px 20px;font-size:19px;border-radius:22px}
.intention-emblem{grid-column:1;grid-row:1/3;align-self:center;text-align:left;max-width:340px;margin:0;position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:32px}
.intention-stack{position:relative;width:250px;height:330px;isolation:isolate;margin-top:65px}
.intention-stack:before{content:'';position:absolute;inset:12px -30px;background:radial-gradient(ellipse,var(--light-soft),transparent 70%);z-index:-1}
.intention-stack img{width:172px;position:absolute;top:20px;left:38px;border-radius:6px;box-shadow:0 16px 30px color-mix(in srgb,var(--shadow) 32%,transparent)}
.intention-stack img:first-child{rotate:-13deg;translate:-20px 7px}.intention-stack img:nth-child(2){rotate:9deg;translate:20px 8px}.intention-stack img:last-child{rotate:-3deg}
.path-note{padding:23px;display:flex;align-items:center;gap:17px;width:100%;border:1px solid var(--border);font-size:17px;line-height:1.8}.path-note .scene-sigil{width:40px;height:40px;flex-shrink:0;color:var(--accent)}.path-note p{font:17px/1.8 var(--serif);padding:0;background:none;margin:0;color:var(--text-secondary)}
.ritual-intention .scene-study{left:-20px;right:auto;bottom:35px;width:185px;height:220px;opacity:.4}.ritual-intention .scene-candles{left:200px;right:auto;bottom:40px;width:110px;height:130px;opacity:.4}
/* Spread: a centred ritual gallery with actual deck backs in every diagram. */
.ritual-spread #reading-form{display:block;max-width:1100px;margin:auto}
.ritual-spread .ritual-title{position:static;max-width:900px;text-align:center;margin:0 auto 26px}.spread-workspace-label{display:none}
.spread-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:0 0 28px}
.spread-grid .ritual-choice{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:7px;min-height:215px;padding:18px 22px 22px;border-radius:20px;text-align:center;font-size:21px;background-image:none}
.spread-grid .choice-glyph{width:100%;min-height:124px;position:relative}.spread-pattern{display:block;width:210px;height:124px;margin:0 auto;color:var(--accent);filter:drop-shadow(0 0 7px var(--halo))}
.spread-grid .choice-copy{align-items:center;gap:8px}.spread-grid .choice-copy small{font-size:15px}.spread-grid .choice-arrow{display:none}
.spread-grid .ritual-choice:after{content:'';position:absolute;inset:11px;pointer-events:none;background:var(--border-emphasis);mask:url('assets/ornaments/corner.svg') top left/25px 25px no-repeat;opacity:.65}
.ritual-spread #reading-form>.text-button{display:block;margin:22px auto 0}.ritual-spread .scene-study{left:-58px;right:auto;bottom:25px;width:170px;opacity:.3}.ritual-spread .scene-candles{right:-18px;bottom:25px;width:115px;opacity:.4}
/* Draw: three live choices, a wide altar, and readable selection progress. */
.ritual-draw{min-height:760px;padding:30px 55px 42px;display:block}
.ritual-draw #reading-form{display:flex;flex-direction:column;align-items:center}
.ritual-draw .ritual-title{max-width:900px;margin:0 auto 10px}.ritual-draw .ritual-title .eyebrow{font-size:14px}.ritual-draw .ritual-title h1{font-size:38px;margin-top:12px}.ritual-draw .draw-counter{font:22px/1.7 var(--serif);letter-spacing:3px;margin:12px 0 6px}.draw-breath{font:17px/1.8 var(--serif)}
.ritual-draw .ritual-deck{width:100%;max-width:850px;height:410px;margin:28px auto 0;isolation:isolate;perspective:900px}
.ritual-deck:before{display:none}
.ritual-deck .ritual-pedestal{width:116%;left:-8%;height:330px;bottom:-35px;opacity:.8}
.ritual-deck .ritual-circle{width:620px;height:120px;bottom:80px;box-shadow:0 0 18px var(--light-soft),inset 0 0 40px var(--light-soft)}
.ritual-deck .stage-orbit{width:650px;height:155px;top:22%;rotate:-9deg}.ritual-deck .orbit-two{top:51%;width:550px;rotate:8deg;opacity:.6}
.ritual-deck .stage-beam{inset:-5% 10% 4%}.ritual-deck .spark-one{left:18%;top:12%}.ritual-deck .spark-two{right:18%;top:30%}.ritual-deck .spark-three{left:51%;top:-3%}
.fan-choice{width:174px;left:calc(50% - 87px);top:5px;border:0;padding:0;border-radius:8px;box-shadow:none;background:none;transform:translateX(calc(var(--slot)*210px)) translateY(calc(var(--slot)*var(--slot)*19px)) rotate(calc(var(--slot)*3deg));transform-origin:50% 85%;transition:transform .55s cubic-bezier(.2,.65,.3,1),filter .5s;animation:deck-enter .7s ease-out both;animation-delay:calc((var(--slot) + 1)*.08s)}
.fan-choice img{display:block;width:100%;border:0;border-radius:7px;box-shadow:0 13px 32px color-mix(in srgb,var(--shadow) 35%,transparent),0 0 18px var(--light-soft),0 0 40px color-mix(in srgb,var(--glow) 13%,transparent)}
.fan-choice:after{inset:-2px;border:none;background:radial-gradient(ellipse,var(--light-soft),transparent);filter:blur(14px);z-index:-1;opacity:.4;box-shadow:none}
.fan-choice:hover,.fan-choice:focus-visible{transform:translateX(calc(var(--slot)*210px)) translateY(calc(var(--slot)*var(--slot)*19px - 16px)) rotate(calc(var(--slot)*2deg));z-index:12;filter:drop-shadow(0 0 10px var(--light-soft))}
.fan-choice:hover img,.fan-choice:focus-visible img{box-shadow:0 18px 36px color-mix(in srgb,var(--shadow) 35%,transparent),0 0 28px var(--light-soft)}
.fan-choice.picked{transform:translateY(-22px) rotate(0) scale(1.04);z-index:15;filter:drop-shadow(0 0 22px var(--light-soft))}.fan-choice.picked:after{animation:chosen-bloom .42s ease-out both;opacity:.8}
.selected-slots{gap:18px;margin:14px 0 0}.selected-slot{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--border-emphasis);border-radius:50%;background:var(--glass);color:var(--text-secondary);font-size:21px;box-shadow:inset 0 0 0 4px var(--background-primary)}.selected-slot.filled{background:var(--accent);color:var(--button-text);box-shadow:inset 0 0 0 4px var(--background-primary),0 0 20px var(--light-soft);border-color:var(--accent-soft)}
.ritual-draw .scene-study{display:none}.ritual-draw .scene-candles{bottom:22px;left:25px;right:auto;width:140px;opacity:.38}.ritual-draw .scene-vine{opacity:.3}
.ritual-question .ritual-title{margin:20px auto 32px;text-align:center;max-width:760px}
.ritual-narrow{max-width:740px;padding:28px;background:var(--glass);border:1px solid var(--border-emphasis);border-radius:20px;backdrop-filter:blur(15px);margin:0 auto 25px}.ritual-narrow textarea{font:18px/1.9 var(--sans);padding:22px;min-height:180px}.ritual-narrow .button-row{gap:18px;margin-top:24px;flex-wrap:wrap}
.ritual-method .ritual-title{margin:20px auto 32px}.deck-companion{margin:0 auto 35px}.deck-companion h2{font-size:27px}.method-grid{gap:22px}.method-grid .ritual-choice{min-height:90px}.journal-details{padding:22px 0;margin:28px auto}.journal-details[open]{padding:25px}.journal-details summary{font-size:16px}.ritual-check{font-size:16px}
.ritual-page.ritual-result{padding:32px 50px 52px;min-height:0}.ritual-results .ritual-title h2{text-wrap:balance;font-size:34px}
.drawn-grid>.reading-card{background:var(--glass);border-color:var(--border-emphasis);border-radius:20px;box-shadow:inset 0 0 0 4px var(--surface),inset 0 0 0 5px color-mix(in srgb,var(--border-emphasis) 25%,transparent)}
.reading-visual .card-art{border-radius:7px;box-shadow:0 8px 25px color-mix(in srgb,var(--shadow) 24%,transparent),0 0 28px var(--halo)}.reading-card.is-revealed .card-art{animation:gentle-reveal .7s cubic-bezier(.2,.65,.3,1) both,reveal-illumination 1.1s ease both}.reading-visual .position-label{font-size:15px}.orientation-control select{font-size:15px}.reading-interpretation .keywords{font-size:16px}.result-actions{gap:22px}.result-intention{font-size:18px}
.ambient-player{border-color:var(--border-emphasis);box-shadow:0 14px 45px color-mix(in srgb,var(--shadow) 35%,transparent),inset 0 0 0 4px var(--surface),inset 0 0 0 5px color-mix(in srgb,var(--border-emphasis) 25%,transparent)}.player-controls time{font-size:14px}.calendar-day small{font-size:14px}
.update-notice{display:flex;justify-content:center;align-items:center;gap:18px;padding:12px 20px;background:var(--surface-elevated);color:var(--text-primary);border-bottom:1px solid var(--border-emphasis);font-size:16px;line-height:1.6}.update-notice button{font-size:15px;padding:8px 18px}
@keyframes card-float{50%{translate:0 -7px;rotate:6deg}}@keyframes aura-breathe{50%{opacity:.7;scale:1.04}}@keyframes circle-breath{50%{opacity:.72;box-shadow:0 0 19px var(--light-soft),inset 0 0 42px var(--light-soft)}}@keyframes orbit-sway{50%{translate:-50% -8px;scale:1.025}}@keyframes beam-drift{50%{translate:8px -6px;opacity:.6}}@keyframes spark-breathe{0%,100%{opacity:.35;scale:.85}50%{opacity:.9;scale:1}}@keyframes reveal-illumination{0%{filter:brightness(.9)}45%{filter:brightness(1.06);box-shadow:0 0 45px var(--light-soft)}100%{filter:none}}
/* Tablet keeps generous controls; phone retains the same visual system. */
@media(max-width:1240px){.sanctuary-header,.workspace[data-phase=draw] .sanctuary-header{flex-wrap:wrap;gap:8px 24px;padding:14px 30px}.sanctuary-header nav,.workspace[data-phase=draw] .sanctuary-header nav{order:3;width:100%;justify-content:center;gap:32px}.top-tools{margin-left:auto}.sanctuary-header nav a{padding:12px 0}.brand-name{font-size:20px}.sanctuary-scene{padding:48px 45px 40px;gap:30px 40px}.sanctuary-opening h1{font-size:40px}.sanctuary-altar{min-height:570px}.ritual-page{padding:30px 40px 42px}.ritual-intention #reading-form{grid-template-columns:minmax(0,.55fr) minmax(0,1.45fr);gap:24px 32px}.intention-grid .ritual-choice,.intention-grid .ritual-choice:first-child{font-size:18px;padding:17px 15px;gap:12px}.intention-stack{scale:.83}.spread-grid{gap:20px}.spread-grid .ritual-choice{padding:17px 15px;font-size:20px}.memory-shelf .reading-row{grid-template-columns:68px minmax(0,1fr)}.memory-shelf .mini-cards{display:none}}
@media(max-width:960px) and (min-width:761px){.sanctuary-scene{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:40px 35px;gap:25px;min-height:740px}.sanctuary-opening h1{font-size:34px}.sanctuary-opening p{font-size:17px}.sanctuary-invitation .primary{min-width:245px;padding:14px 22px;font-size:17px}.featured-card{width:220px;max-width:80%}.sanctuary-altar{min-height:540px}.stage-orbit{width:300px}.orbit-two{width:285px}.ritual-circle{width:290px}.memory-shelf{padding:24px}.memory-shelf .section-title{flex-wrap:wrap}.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;gap:18px}.intention-emblem{grid-column:1;grid-row:3;max-width:none;display:block}.intention-stack{display:none}.path-note{max-width:600px;margin:8px auto 0}.ritual-intention .scene-study,.ritual-intention .scene-candles{display:none}.spread-grid{gap:18px}.spread-grid .ritual-choice{font-size:18px;min-height:215px}.spread-pattern{width:140px}.spread-grid .choice-copy small{font-size:14px}.fan-choice{width:155px;left:calc(50% - 77.5px);transform:translateX(calc(var(--slot)*175px)) translateY(calc(var(--slot)*var(--slot)*19px)) rotate(calc(var(--slot)*3deg))}.fan-choice:hover,.fan-choice:focus-visible{transform:translateX(calc(var(--slot)*175px)) translateY(calc(var(--slot)*var(--slot)*19px - 16px)) rotate(calc(var(--slot)*2deg))}.fan-choice.picked{transform:translateY(-20px) scale(1.04)}}
@media(max-width:760px){
 .workspace{width:calc(100% - 20px);margin:10px auto;border-radius:20px}
 .sanctuary-header,.workspace[data-phase=draw] .sanctuary-header{padding:14px 18px;gap:10px;min-height:0;border-radius:20px 20px 0 0}
 .sanctuary-header .brand img,.workspace[data-phase=draw] .brand img{width:38px;height:45px}.sanctuary-header .brand{gap:8px}.sanctuary-header .brand-name{font-size:16px;letter-spacing:.3px;max-width:112px;white-space:normal}
 .top-tools{gap:9px;margin-left:auto}.sound-toggle,.top-tools>a{display:none!important}.language-label select{padding:8px;max-width:110px}.music-toggle{padding:8px 12px;min-height:42px}.music-toggle span{display:none}
 .sanctuary-header nav,.workspace[data-phase=draw] .sanctuary-header nav{justify-content:space-between;gap:12px;width:100%;order:3;overflow-x:auto;font-size:14px;padding:4px 0 10px;scrollbar-width:none}.sanctuary-header nav a{padding:8px 0;min-height:40px}.sanctuary-header nav a[aria-current]:after{bottom:-6px}
 .workspace[data-phase=draw] .sanctuary-header nav{display:none}
 .illustrated-scene{border-radius:0 0 19px 19px}.illustrated-scene:after{inset:7px;border-radius:14px}.frame-corners{inset:11px}.frame-corners i{width:32px;height:32px}
 .sanctuary-scene{display:flex;flex-direction:column;min-height:0;padding:37px 27px 32px;gap:30px}
 .sanctuary-opening h1{font-size:32px;line-height:1.5;margin:20px 0}.sanctuary-opening p{font-size:17px;line-height:1.9}.sanctuary-invitation{margin-top:24px;gap:11px;align-items:stretch}.sanctuary-invitation .primary{min-width:0;width:100%;font-size:18px;gap:18px}.invitation-deck{font-size:13px;letter-spacing:.3px;text-align:center}
 .sanctuary-altar{width:100%;margin:0;min-height:490px;padding:0 0 100px;order:2;overflow:visible}.featured-card{width:205px;max-width:70%;rotate:5deg}.card-halo{width:285px;height:335px;top:35px}.ritual-pedestal{width:130%;left:-15%;height:240px;bottom:-15px}.ritual-circle{width:260px;height:80px;bottom:122px}.stage-orbit{width:285px;height:105px;top:27%;rotate:-18deg}.orbit-two{top:47%;width:270px;rotate:20deg}
 .memory-shelf{order:3;padding:25px;width:100%;max-width:none}.memory-shelf h2{font-size:24px}.memory-shelf .section-title{flex-wrap:wrap;gap:8px}.memory-shelf .section-title a{font-size:15px}.memory-shelf .reading-row{grid-template-columns:72px minmax(0,1fr);gap:12px}.memory-shelf .row-title{font-size:17px}.memory-shelf .row-meta{font-size:14px;display:block;margin-top:4px}.memory-shelf .mini-cards{display:none}.sanctuary-whisper{order:4;position:static;max-width:none;text-align:center}.sanctuary-whisper p{font-size:16px}
 .scene-study{display:none}.scene-vine{width:67px;height:330px;left:-30px;top:150px;opacity:.35!important}.scene-vine.vine-right{right:-30px;top:250px}.sanctuary-scene .scene-candles{right:-8px;bottom:370px;width:80px;height:100px;opacity:.35}
 .ambient-dust i:nth-child(n+15){display:none}
 .ritual-page{min-height:0;padding:25px 24px 35px}.ritual-utility{gap:15px;margin-bottom:24px;align-items:flex-start}.ritual-utility .eyebrow{font-size:13px;max-width:175px;line-height:1.6;letter-spacing:.3px;padding-top:8px}.ritual-exit{font-size:16px;padding:10px 16px;min-height:46px}
 .ritual-title h1,.ritual-spread .ritual-title h1,.ritual-draw .ritual-title h1{font-size:29px;line-height:1.55;margin:18px 0 14px}.ritual-title>p{font-size:17px;line-height:1.85}.ritual-title>.eyebrow{font-size:14px}.celestial-divider{width:230px;margin:0 auto 10px}.moon-crest{width:44px;height:44px}
 .ritual-intention #reading-form{display:flex;flex-direction:column;gap:26px}.ritual-intention .ritual-title{margin:0;max-width:none;text-align:center}.intention-grid{display:grid;grid-template-columns:1fr;gap:16px;width:100%;margin:0;order:2}.intention-grid .ritual-choice,.intention-grid .ritual-choice:first-child{min-height:88px;font-size:19px;padding:18px 21px;gap:17px;border-radius:22px}.choice-glyph .scene-sigil{width:41px;height:41px}.choice-copy small{font-size:15px}.intention-emblem{order:3;display:block;max-width:none;margin:0}.intention-stack{display:none}.path-note{padding:21px;line-height:1.8}.path-note p{font-size:17px}.ritual-intention .scene-study,.ritual-intention .scene-candles{display:none}
 .ritual-spread .ritual-title{margin:0 0 28px;text-align:center;max-width:none}.spread-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px}.spread-grid .ritual-choice{min-height:218px;padding:17px 12px 20px;font-size:18px;gap:7px;border-radius:18px;justify-content:flex-start}.spread-grid .choice-glyph{min-height:88px}.spread-pattern{width:115px;height:88px}.spread-grid .choice-copy{gap:7px}.spread-grid .choice-copy small{font-size:14px;line-height:1.7}.spread-grid .ritual-choice:after{inset:10px;mask-size:21px 21px}.ritual-spread .scene-study,.ritual-spread .scene-candles{display:none}
 .ritual-draw{padding:25px 24px 35px;min-height:730px}.ritual-draw .ritual-title{margin:0 auto 10px}.ritual-draw .ritual-title h1{font-size:28px}.ritual-draw .draw-counter{font-size:22px}.draw-breath{font-size:17px;line-height:1.8}.ritual-draw .ritual-deck{height:345px;margin-top:26px;max-width:100%}
 .ritual-draw .ritual-utility{margin-bottom:18px}.ritual-draw .ritual-deck{height:275px;margin-top:18px}
 .fan-choice{width:104px;left:calc(50% - 52px);top:18px;transform:translateX(calc(var(--slot)*83px)) translateY(calc(var(--slot)*var(--slot)*16px)) rotate(calc(var(--slot)*4deg))}.fan-choice:hover,.fan-choice:focus-visible{transform:translateX(calc(var(--slot)*83px)) translateY(calc(var(--slot)*var(--slot)*16px - 12px)) rotate(calc(var(--slot)*3deg))}.fan-choice.picked{transform:translateY(-18px) scale(1.04)}
 .ritual-deck .ritual-pedestal{width:145%;left:-22.5%;height:240px;bottom:-20px}.ritual-deck .ritual-circle{width:300px;height:85px;bottom:58px}.ritual-deck .stage-orbit{width:290px;height:90px;top:34%}.ritual-deck .orbit-two{width:260px;top:54%}.ritual-deck .spark-one{left:9%;top:12%}.ritual-deck .spark-two{right:7%;top:34%}.ritual-draw .scene-candles{width:80px;bottom:22px;left:-8px;opacity:.22}.selected-slots{gap:18px;margin-top:12px}.selected-slot{width:34px;height:34px}
 .ritual-question .ritual-title{margin:0 auto 26px}.ritual-narrow{padding:22px;max-width:100%}.ritual-narrow textarea{font-size:17px;padding:18px;min-height:190px}.ritual-narrow .button-row{gap:14px}.ritual-narrow .button-row button{flex:1}.ritual-narrow .button-row .primary{flex-basis:100%}.ritual-question .scene-candles,.ritual-method .scene-candles{display:none}.method-grid{grid-template-columns:1fr;gap:18px}.deck-companion{gap:22px}.deck-companion h2{font-size:24px}.journal-details[open]{padding:22px}
 .ritual-page.ritual-result{padding:25px 22px 36px}.ritual-results .ritual-title h2{text-wrap:balance;font-size:29px}.drawn-grid>.reading-card,.saved-cards .drawn-card{padding:26px 22px;gap:25px}.reading-interpretation .meaning-copy p{font-size:17px}.result-intention{padding:20px;font-size:17px}.reading-visual .card-art{width:185px}.reading-visual h3{font-size:29px}.result-actions{gap:16px}.save-bar{gap:18px;flex-wrap:wrap}.save-bar .primary{min-height:54px}.page-footer{font-size:13px;padding:20px 24px}.ambient-player{top:85px;right:18px}.update-notice{flex-wrap:wrap;gap:8px;padding:12px 18px}
}
@media(max-width:380px){.sanctuary-header .brand-name{font-size:15px;max-width:106px}.sanctuary-header .brand img{width:30px}.top-tools{gap:6px}.language-label select{max-width:96px;font-size:13px}.ritual-page{padding-left:21px;padding-right:21px}.spread-grid{grid-template-columns:1fr}.spread-grid .ritual-choice{min-height:205px}.spread-pattern{width:160px;height:100px}.fan-choice{width:96px;left:calc(50% - 48px);transform:translateX(calc(var(--slot)*73px)) translateY(calc(var(--slot)*var(--slot)*16px)) rotate(calc(var(--slot)*4deg))}.fan-choice:hover,.fan-choice:focus-visible{transform:translateX(calc(var(--slot)*73px)) translateY(calc(var(--slot)*var(--slot)*16px - 12px)) rotate(calc(var(--slot)*3deg))}.fan-choice.picked{transform:translateY(-18px) scale(1.04)}}
.still .stage-orbit,.still .ritual-circle,.still .stage-beam,.still .stage-spark,.still .featured-card,.still .card-halo,.still .reading-card .card-art{animation:none!important}.still .ambient-dust{display:none}
@media(prefers-reduced-motion:reduce){.stage-orbit,.ritual-circle,.stage-beam,.stage-spark,.featured-card,.card-halo,.reading-card .card-art{animation:none!important}.ambient-dust{display:none!important}}

@media(max-width:760px){.calendar-top{flex-direction:column;align-items:center;gap:14px}.calendar-top h2{white-space:nowrap}.calendar-top .button-row{flex-wrap:nowrap;justify-content:center;gap:16px}}

/* Focused atmosphere polish: the established composition stays intact. */
.ambient-dust{opacity:.9}
.ambient-dust i:nth-child(n){display:block;width:2px;height:2px;clip-path:none;animation:enchanted-dust 15s ease-in-out infinite;animation-delay:calc(var(--i)*-1.13s);box-shadow:0 0 5px var(--accent-soft),0 0 12px var(--glow)}
.ambient-dust i:nth-child(3n){width:3px;height:3px;animation-duration:18s;filter:blur(.4px)}
.ambient-dust i:nth-child(5n){width:7px;height:7px;filter:none;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);animation:quiet-twinkle 11s ease-in-out infinite;animation-delay:calc(var(--i)*-.83s);box-shadow:0 0 12px var(--glow)}
@keyframes enchanted-dust{0%,100%{translate:-8px 22px;opacity:.16}35%{opacity:.52}65%{translate:24px -42px;opacity:.42}}
@keyframes quiet-twinkle{0%,100%{opacity:.08;translate:0 12px;scale:.65}43%{opacity:.17}50%{opacity:.7;scale:1.05}59%{opacity:.13}75%{translate:12px -18px;scale:.8}}
.scene-moonlight{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.65;background:radial-gradient(ellipse at 72% 24%,color-mix(in srgb,var(--accent-soft) 13%,transparent),transparent 42%);animation:moonlight-drift 13s ease-in-out infinite}
.ritual-intention .scene-moonlight{background:radial-gradient(ellipse at 20% 38%,color-mix(in srgb,var(--accent-soft) 17%,transparent),transparent 48%);animation-delay:-4s}
.ritual-spread .scene-moonlight{background:radial-gradient(ellipse at 50% 75%,color-mix(in srgb,var(--glow) 20%,transparent),transparent 63%);animation-delay:-8s}
.ritual-draw .scene-moonlight{background:radial-gradient(ellipse at 50% 60%,color-mix(in srgb,var(--glow) 25%,transparent),transparent 52%),linear-gradient(110deg,transparent 28%,color-mix(in srgb,var(--accent-soft) 7%,transparent) 42%,transparent 59%)}
.ritual-result .scene-moonlight{opacity:.3}
@keyframes moonlight-drift{50%{translate:1.5% -1%;opacity:.35}}
.hero-entry{position:relative;z-index:1;display:block;width:clamp(225px,21vw,286px);max-width:67%;padding:0;background:transparent;border:0;border-radius:8px;line-height:0;cursor:pointer;transition:transform .55s cubic-bezier(.2,.65,.3,1);-webkit-tap-highlight-color:transparent}
.hero-entry .featured-card{display:block;width:100%;max-width:none;transition:box-shadow .55s ease,filter .55s ease}
.hero-entry:hover,.hero-entry:focus-visible{transform:translateY(-9px)}
.hero-entry:focus-visible{outline:2px solid var(--border-emphasis);outline-offset:12px}
.hero-entry:active{transform:translateY(-3px) scale(.985);transition-duration:.25s}
.hero-entry:hover .featured-card,.hero-entry:focus-visible .featured-card{box-shadow:0 20px 48px color-mix(in srgb,var(--shadow) 32%,transparent),0 0 34px color-mix(in srgb,var(--glow) 48%,transparent),0 0 90px color-mix(in srgb,var(--glow) 32%,transparent)}
.sanctuary-altar:has(.hero-entry:is(:hover,:focus-visible)) .card-halo{opacity:1;scale:1.1;filter:brightness(1.12)}
.stage-orbit,.ritual-circle,.card-halo,.stage-beam{transition:opacity .6s ease,filter .6s ease,box-shadow .6s ease}
.stage-orbit{animation-duration:9s;box-shadow:0 0 15px color-mix(in srgb,var(--glow) 28%,transparent)}
.orbit-two{animation-duration:11s;animation-delay:-4s}
.ritual-circle{box-shadow:0 0 19px var(--light-soft),inset 0 0 42px var(--light-soft)}
.sanctuary-altar:has(.hero-entry:is(:hover,:focus-visible)) .stage-orbit{border-color:var(--accent-soft);filter:drop-shadow(0 0 6px var(--light-soft));animation-duration:6s}
.stage-motes{position:absolute;inset:10% 10% 23%;pointer-events:none}
.stage-motes i{position:absolute;left:calc(14% + var(--m)*14%);top:calc(24% + var(--m)*8%);width:3px;height:3px;border-radius:50%;background:var(--accent-soft);box-shadow:0 0 7px var(--accent-soft),0 0 15px var(--glow);animation:altar-mote 9s ease-in-out infinite;animation-delay:calc(var(--m)*-1.4s);opacity:.4}
.stage-motes i:nth-child(2n){width:5px;height:5px;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%)}
.sanctuary-altar:has(.hero-entry:is(:hover,:focus-visible)) .stage-motes i{animation-duration:5.5s;filter:drop-shadow(0 0 4px var(--glow))}
@keyframes altar-mote{0%,100%{translate:-8px 20px;opacity:.15;scale:.7}45%{opacity:.68;scale:1}70%{translate:17px -27px;opacity:.35}}
.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]){border-color:var(--accent-soft);box-shadow:inset 0 0 34px color-mix(in srgb,var(--glow) 26%,transparent),0 0 18px var(--light-soft),0 0 48px color-mix(in srgb,var(--glow) 24%,transparent),0 0 0 1px var(--light-line)}
.spread-grid .ritual-choice[aria-pressed=true]:before{border-color:var(--accent-soft);box-shadow:inset 0 0 18px var(--light-soft),0 0 14px var(--light-soft)}
.spread-grid .ritual-choice:is(:hover,:focus-visible,[aria-pressed=true]) .choice-glyph{filter:drop-shadow(0 0 9px var(--light-soft))}
.primary{box-shadow:inset 0 1px 11px color-mix(in srgb,var(--accent-soft) 65%,transparent),inset 0 0 0 4px color-mix(in srgb,var(--surface) 10%,transparent),0 0 28px var(--light-soft),0 7px 24px color-mix(in srgb,var(--shadow) 18%,transparent)}
/* Search/filter controls belong inside the panel, with aligned safe insets. */
.search-panel{padding:24px;margin-bottom:22px;border:1px solid var(--border-emphasis)}
.search-panel .searchbox{width:100%;min-width:0;gap:10px;padding:0 16px;min-height:54px}
.search-panel .searchbox>span{flex:0 0 24px;text-align:center}
.search-panel .searchbox input{flex:1;width:100%;min-width:0;padding:12px 0;background:transparent;border-radius:0}
.search-panel .searchbox:focus-within{border-color:var(--border-emphasis);outline:2px solid var(--border-emphasis);outline-offset:3px;box-shadow:0 0 18px var(--light-soft)}
.search-panel .searchbox input:focus{outline:none;box-shadow:none}
.compact-filters{margin-top:12px}
.compact-filters>summary{width:fit-content;margin-left:auto;min-height:44px;padding:10px 14px;border-radius:999px;cursor:pointer;color:var(--text-secondary)}
.compact-filters>summary:hover,.compact-filters>summary:focus-visible{background:var(--halo);color:var(--text-primary)}
.search-panel .filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:18px;margin:14px 0 0}
.search-panel .filters>label{display:grid;gap:8px;margin:0;min-width:0;font-size:15px}
.search-panel .filters input,.search-panel .filters select{width:100%;min-width:0;max-width:100%;min-height:50px;margin:0}
.search-panel .filters .text-button{margin:0;min-height:50px;align-self:end}
@media(max-width:960px) and (min-width:761px){.hero-entry{width:220px;max-width:80%}.search-panel .filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.hero-entry{width:205px;max-width:70%}.ambient-dust i:nth-child(n+25){display:none}.ambient-dust i:nth-child(-n+24){display:block}.search-panel{padding:20px}.search-panel .filters{grid-template-columns:minmax(0,1fr);gap:16px}.search-panel .filters .text-button{justify-self:end}.stage-motes{inset:12% 4% 24%}}
.still .scene-moonlight,.still .stage-motes i{animation:none!important}.still .stage-motes{display:none}.still .hero-entry{transition:none}.still .hero-entry:is(:hover,:focus-visible){transform:none}
@media(prefers-reduced-motion:reduce){.scene-moonlight,.stage-motes i{animation:none!important}.stage-motes{display:none}.hero-entry{transition:none}.hero-entry:is(:hover,:focus-visible){transform:none}}

/* Living gold threads: the artwork stays sharp; light passes behind and in front. */
.magic-ribbons{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;color:color-mix(in srgb,var(--accent) 20%,var(--accent-soft));opacity:.9;transition:opacity .25s ease-out,filter .25s ease-out}
.magic-ribbons path{fill:none;stroke:currentColor;stroke-linecap:round;vector-effect:non-scaling-stroke}
.ribbon-thread{stroke-width:1.5;opacity:.46;filter:drop-shadow(0 0 5px var(--glow))}
.ribbon-haze{stroke-width:7;opacity:.2;filter:blur(5px)}
.ribbon-comet{stroke-width:2;stroke-dasharray:100 900;opacity:.9;filter:drop-shadow(0 0 7px var(--glow));animation:ribbon-flow var(--ribbon-time) linear infinite;animation-delay:var(--ribbon-delay)}
.mote-halo{fill:currentColor;opacity:.32;filter:blur(3px)}
.mote-core{fill:var(--accent-soft);filter:drop-shadow(0 0 5px var(--glow))}
.ribbons-hero-front,.ribbons-draw-front{z-index:2;opacity:.65}
.ribbons-hero-front .ribbon-thread,.ribbons-draw-front .ribbon-thread{opacity:.2}
.ribbons-hero-front .ribbon-comet,.ribbons-draw-front .ribbon-comet{stroke-dasharray:70 930;opacity:.6}
@keyframes ribbon-flow{to{stroke-dashoffset:-1000}}
.sanctuary-altar:has(:is(.hero-entry,.altar-entry):is(:hover,:focus-visible)) .magic-ribbons{opacity:1;filter:drop-shadow(0 0 4px var(--light-soft))}
.altar-entry{position:absolute;z-index:1;bottom:0;left:2%;width:96%;height:190px;padding:0;background:transparent;border:0;border-radius:50%;box-shadow:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.altar-entry:after{display:none}
.altar-entry:hover{background:transparent;border:0;box-shadow:none}
.altar-entry:focus-visible{outline:2px solid var(--border-emphasis);outline-offset:-20px;background:var(--light-soft)}
.sanctuary-altar:has(.altar-entry:is(:hover,:focus-visible)) .ritual-circle{filter:brightness(1.2);box-shadow:0 0 32px var(--light-soft),inset 0 0 52px var(--light-soft)}
.hero-entry .featured-card{--card-angle:7deg;animation:ritual-card-float 4.8s ease-in-out infinite}
@keyframes ritual-card-float{0%,100%{translate:0 2px;rotate:calc(var(--card-angle) - 1.2deg);transform:none}50%{translate:0 -5px;rotate:calc(var(--card-angle) + 1.2deg);transform:none}}
.ritual-circle{animation:altar-breath 3.6s ease-in-out infinite}
@keyframes altar-breath{0%,100%{opacity:.6;box-shadow:0 0 19px var(--light-soft),inset 0 0 32px var(--light-soft)}50%{opacity:.95;box-shadow:0 0 32px var(--light-soft),inset 0 0 52px var(--light-soft)}}
.stage-motes i:nth-child(n){width:3px;height:3px;animation:ritual-sparkle 4.2s ease-out infinite;animation-delay:calc(var(--m)*-.7s);opacity:0;clip-path:none}
.stage-motes i:nth-child(2n){width:4px;height:4px;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)}
.sanctuary-altar:has(.hero-entry:is(:hover,:focus-visible)) .stage-motes i{animation-duration:4.2s}
.stage-spark{animation:ritual-sparkle 4.2s ease-out infinite;animation-delay:-1.4s;font-size:13px}
.stage-spark.spark-two{animation-delay:-2.8s}.stage-spark.spark-three{animation-delay:-.7s}
@keyframes ritual-sparkle{0%,30%,100%{opacity:0;translate:-3px 6px;scale:.7}10%{opacity:.75;scale:1}28%{opacity:0;translate:6px -8px;scale:.8}}
/* Quiet dust stays in the room; brighter light lives close to the ritual object. */
.ambient-dust i:nth-child(n){width:2px;height:2px;clip-path:none;filter:none;opacity:.16;animation:room-dust-soft 18s ease-in-out infinite;animation-delay:calc(var(--i)*-1.13s);box-shadow:0 0 4px var(--light-soft)}
.ambient-dust i:nth-child(3n){width:1px;height:1px;animation-duration:22s}
@keyframes room-dust-soft{0%,100%{translate:-8px 22px;opacity:.1}35%{opacity:.22}65%{translate:24px -42px;opacity:.18}}
/* Four distinct spread states. Only a deliberate choice gets a lasting halo. */
.spread-grid .ritual-choice{box-shadow:inset 0 1px 12px var(--light-soft);transition:transform .24s ease-out,scale .24s ease-out,background .24s ease-out,border-color .24s ease-out,box-shadow .24s ease-out,opacity .24s ease-out}
.spread-grid .choice-glyph{position:relative;isolation:isolate;filter:none}
.spread-grid .choice-glyph:before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(115px,90%);height:85px;border:1px solid var(--light-line);border-radius:50%;background:radial-gradient(ellipse,var(--light-soft),transparent 70%);z-index:-1;opacity:.6}
.spread-grid .spread-pattern{position:relative;z-index:1;transition:translate .25s ease-out}
.spread-grid .ribbons-tile{opacity:0;inset:0;z-index:0}
.spread-grid .ritual-choice:is(:hover,:focus-visible){transform:translateY(-3px);scale:1.015;border-color:var(--accent-soft);box-shadow:inset 0 0 28px color-mix(in srgb,var(--glow) 15%,transparent),0 0 18px var(--light-soft),0 0 0 1px var(--light-line)}
.spread-grid .ritual-choice:is(:hover,:focus-visible) .ribbons-tile{opacity:.7}
.spread-grid .ritual-choice:is(:hover,:focus-visible) .spread-pattern{translate:0 -2px}
.spread-grid .ritual-choice[aria-pressed=true]{border-color:var(--accent-soft);background:linear-gradient(145deg,var(--surface-elevated),color-mix(in srgb,var(--accent-soft) 12%,var(--surface)));animation:spread-breathe 3.6s ease-in-out infinite}
.spread-grid .ritual-choice[aria-pressed=true] .ribbons-tile{opacity:1}
.spread-grid:has([aria-pressed=true]) .ritual-choice[aria-pressed=false]:not(:hover,:focus-visible){opacity:.9}
@keyframes spread-breathe{0%,100%{box-shadow:inset 0 0 30px color-mix(in srgb,var(--glow) 22%,transparent),0 0 20px var(--light-soft),0 0 0 1px var(--light-line)}50%{box-shadow:inset 0 0 38px color-mix(in srgb,var(--glow) 30%,transparent),0 0 28px color-mix(in srgb,var(--glow) 35%,transparent),0 0 0 1px var(--light-line)}}
.spread-grid .ritual-choice:disabled{opacity:.55;animation:none;transform:none;scale:1;box-shadow:none;filter:none}
.spread-grid .ritual-choice:disabled .ribbons-tile{opacity:0}
.spread-grid .ritual-choice:disabled:before{box-shadow:none}
.ritual-spread .scene-moonlight{background:radial-gradient(ellipse at 50% 58%,color-mix(in srgb,var(--glow) 22%,transparent),transparent 63%)}
/* Independent translate keeps idle drift separate from the original fan layout. */
.fan-choice{--fan-gap:210px;--fan-drop:19px;--fan-tilt:3deg;transform:translateX(calc(var(--slot)*var(--fan-gap))) translateY(calc(var(--slot)*var(--slot)*var(--fan-drop))) rotate(calc(var(--slot)*var(--fan-tilt)));animation:fan-breathe 4.6s ease-in-out infinite;animation-delay:calc((var(--slot) + 1)*-1.4s);transition:translate .45s cubic-bezier(.2,.65,.3,1),scale .45s ease,transform .45s ease,filter .45s ease}
@keyframes fan-breathe{0%,100%{translate:0 0}50%{translate:0 -6px}}
.fan-choice:is(:hover,:focus-visible){transform:translateX(calc(var(--slot)*var(--fan-gap))) translateY(calc(var(--slot)*var(--slot)*var(--fan-drop))) rotate(calc(var(--slot)*var(--fan-tilt)));translate:0 -12px;scale:1.02;animation:none;filter:drop-shadow(0 0 14px var(--light-soft))}
.fan-choice.picked{transform:translateY(-20px) rotate(0);translate:0 -6px;scale:1.04;animation:none;filter:drop-shadow(0 0 22px var(--light-soft));z-index:15}
.fan-choice:disabled:not(.picked){opacity:.7;animation:none;filter:none;translate:0 0;scale:1}
.fan-choice:disabled:not(.picked) img{box-shadow:0 13px 32px color-mix(in srgb,var(--shadow) 35%,transparent)}
.fan-choice:disabled:not(.picked):after{opacity:0}
.ritual-deck:has(.fan-choice:is(:hover,:focus-visible,.picked)) .magic-ribbons{opacity:1}
.ritual-utility .ritual-exit{min-height:44px;padding:10px 16px;font-size:16px}
@media(max-width:960px) and (min-width:761px){.fan-choice{--fan-gap:175px}}
@media(max-width:760px){.fan-choice{--fan-gap:83px;--fan-drop:16px;--fan-tilt:4deg}.hero-entry .featured-card{--card-angle:5deg}.ambient-dust i:nth-child(n+19){display:none}.altar-entry{height:160px}.ribbon-haze{stroke-width:5}.ribbon-thread{stroke-width:1.5}.magic-ribbons{opacity:.8}}
@media(max-width:380px){.fan-choice{--fan-gap:73px}}
.still .ribbon-comet,.still .fan-choice,.still .spread-grid .ritual-choice{animation:none!important}.still .ribbon-mote,.still .stage-spark{display:none}.still .fan-choice:is(:hover,:focus-visible){translate:none;scale:1}.still .spread-grid .ritual-choice[aria-pressed=true]{box-shadow:inset 0 0 30px var(--light-soft),0 0 16px var(--light-soft)}
@media(prefers-reduced-motion:reduce){.ribbon-comet,.fan-choice,.spread-grid .ritual-choice{animation:none!important}.ribbon-mote,.stage-spark{display:none}.fan-choice:is(:hover,:focus-visible){translate:none;scale:1}.spread-grid .ritual-choice[aria-pressed=true]{box-shadow:inset 0 0 30px var(--light-soft),0 0 16px var(--light-soft)}}
