/* The supplied objects keep their exact geometry. Their shared table is the
   existing seamless blue velvet, with no horizon or substituted illustration. */
:root{--paper:#f4ebda;--muted:#dfd4c3;--scene-ink:#07121f}
#salon-backdrop:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 36%,transparent 22%,#020a1640 82%);pointer-events:none;z-index:-1}
body[data-stage=reflection-select] #salon-backdrop,body[data-stage=reflection-closed] #salon-backdrop{background-color:#13202c;background-image:var(--salon-shade),var(--velvet-texture);background-size:100% 100%,var(--velvet-size);background-repeat:no-repeat,repeat;background-blend-mode:normal}
.ambient-lamp-light{background:radial-gradient(ellipse 230px 280px at var(--lamp-x,90%) var(--lamp-y,240px),#f1b55b70 0%,#daa35b38 38%,#d99e4818 62%,transparent 100%);opacity:1}
.ambient-candle-light{background:radial-gradient(ellipse 160px 205px at var(--candle-x,10%) var(--candle-y,220px),#e6ae5642 0%,#cd964624 40%,transparent 100%);opacity:.8}
@media(min-width:651px){.ambient-lamp-light{background:radial-gradient(ellipse 370px 330px at var(--lamp-x,90%) var(--lamp-y,240px),#f1b55b70 0%,#daa35b38 38%,#d99e4818 62%,transparent 100%)}.ambient-candle-light{background:radial-gradient(ellipse 245px 265px at var(--candle-x,10%) var(--candle-y,220px),#e6ae5642 0%,#cd964624 40%,transparent 100%)}}
#scene-objects .scene-object,#scene-objects .scene-object.is-off{filter:none;isolation:isolate;z-index:2;opacity:1}
#salon-shadows{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:visible}
.object-shadow-set{position:absolute;display:block;pointer-events:none}
.object-cast-shadow,.object-contact-shadow{position:absolute;inset:3px;pointer-events:none;transform-origin:50% 50%}
.object-cast-shadow{transform-origin:50% var(--base-y,100%);transform:translate(var(--cast-x),var(--cast-y)) matrix(1,0,var(--cast-shear),var(--cast-compress),0,0);filter:blur(var(--cast-blur));opacity:var(--cast-opacity);transition:opacity .7s}
.object-cast-shape{position:absolute;inset:0;background:#010611;mask-image:var(--object-mask);-webkit-mask-image:var(--object-mask);mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;transform:rotate(var(--object-turn));transform-origin:50% 50%;pointer-events:none}
.shadow-base .object-contact-shadow{inset:auto;left:var(--base-x);top:var(--base-y);width:var(--base-width);height:7%;transform:translate(-50%,-50%) rotate(-6deg);border-radius:50%;background:radial-gradient(ellipse,#01050ad1 10%,#02071194 42%,transparent 76%);filter:blur(1.4px)}
.shadow-contour .object-contact-shadow{background:#020915;mask-image:var(--object-mask);-webkit-mask-image:var(--object-mask);mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;transform:translate(-1.3px,2px) rotate(var(--object-turn));filter:blur(1.25px);opacity:.4}
.object-shadow-set[data-shadow-for=prop-gloves] .object-contact-shadow,.object-shadow-set[data-shadow-for=prop-hankie] .object-contact-shadow{opacity:.23;filter:blur(1.7px)}
.object-shadow-set[data-shadow-for=prop-key] .object-cast-shadow{opacity:calc(var(--cast-opacity) * .66)}
/* Cards are flat objects on the same surface. Cast on the unrotated group,
   after its children's rotations, so a wide fan shares the scene's light. */
.deck,.spread-row{filter:drop-shadow(-5.2px 8px 12px #02091570)}
.deck .deck-card{box-shadow:inset 0 0 0 1px #cfb59170}
.spread-row .spread-card,.spread-row .spread-card.is-current,.spread-row .spread-card:hover,.spread-row .spread-card:focus-visible{box-shadow:inset 0 0 0 1px #c6ac8670}
.chosen-card{filter:drop-shadow(-6.5px 10px 14px #02091580)}
.chosen-card .card-face{box-shadow:inset 0 0 0 1px #c7aa8070}
.question-revealed-card{filter:drop-shadow(-5.2px 8px 12px #02091570)}
.reflection-entry-deck,.miniature-card,.prototype-deck-art,.prototype-afterglow .afterglow-card{transform:none;filter:drop-shadow(-5.2px 8px 12px #02091570)}
.reflection-entry-deck .card-art,.prototype-deck-art>.card-art{transform:rotate(-5deg)}
.miniature-card>.card-art{transform:rotate(-9deg)}
.prototype-afterglow .afterglow-card>.card-art{transform:rotate(-4deg)}
.almanac-stage .almanac-card{transform:none;box-shadow:none;background:none;filter:drop-shadow(-5.2px 8px 12px #02091570);overflow:visible}
.almanac-stage .almanac-card>.card-art{transform:rotate(-3deg)}
.object-relief{position:absolute;inset:3px;z-index:3;pointer-events:none;mask-image:var(--object-mask);-webkit-mask-image:var(--object-mask);mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;transform:rotate(var(--prop-turn,0deg));transition:none}
.object-relief>span{position:absolute;inset:0;pointer-events:none;transition:opacity .7s}
.object-cool-shade{background:linear-gradient(155deg,transparent 35%,#051326b3 95%);mix-blend-mode:multiply;opacity:var(--cool-falloff,.25)}
.object-lamp-reflection{background:radial-gradient(ellipse at 84% 10%,#ffdca9a0,transparent 68%);mix-blend-mode:soft-light;opacity:calc(var(--lamp-reflect,0) * .36)}
.object-candle-reflection{background:radial-gradient(ellipse at 4% 27%,#edba8273,transparent 67%);mix-blend-mode:soft-light;opacity:calc(var(--candle-reflect,0) * .26)}
.object-material-detail{opacity:0}
[data-material=brass] .object-lamp-reflection,[data-material=glass-brass] .object-lamp-reflection,[data-material=glass-metal] .object-lamp-reflection{mix-blend-mode:screen;background:radial-gradient(ellipse 70% 52% at 83% 14%,#ffdea48a,transparent 73%);opacity:calc(var(--lamp-reflect,0) * .25)}
[data-material=wood-brass] .object-lamp-reflection{background:radial-gradient(ellipse 72% 31% at 78% 71%,#dfad788c,transparent 87%);opacity:calc(var(--lamp-reflect,0) * .29)}
[data-material=wood-brass] .object-material-detail{background:radial-gradient(ellipse at 82% 15%,#ffe4b95c,transparent 51%);mix-blend-mode:screen;opacity:calc(var(--lamp-reflect,0) * .17)}
[data-material=porcelain] .object-lamp-reflection{background:radial-gradient(ellipse 90% 80% at 69% 24%,#fff0c599,transparent 86%);opacity:calc(var(--lamp-reflect,0) * .33)}
[data-material=satin] .object-lamp-reflection,[data-material=lace] .object-lamp-reflection,[data-material=linen] .object-lamp-reflection{background:linear-gradient(140deg,#edd9b73d,transparent 73%);opacity:calc(var(--lamp-reflect,0) * .15)}
[data-material=glass-brass] .object-material-detail{background:radial-gradient(ellipse 18% 35% at 52% 38%,#ffd69580,transparent 87%);mix-blend-mode:screen;opacity:calc(var(--lamp-reflect,0) * .20)}
[data-material=glass-metal] .object-material-detail{background:linear-gradient(110deg,transparent 56%,#ffe9ce70 58%,transparent 60%);clip-path:ellipse(25% 22% at 75% 48%);mix-blend-mode:screen;opacity:calc(var(--lamp-reflect,0) * .27)}
body[data-lamp=off] .object-lamp-reflection,body[data-lamp=off] .object-material-detail,body[data-candle=off] .object-candle-reflection{opacity:0}

/* These fields follow the text while it scrolls across every bright prop.
   Only their soft center darkens; no rectangular boundary is drawn. */
.scene-copy{position:relative;isolation:isolate;text-shadow:0 .6px 1.3px #020915a6,0 1.5px 3px #02091566,0 0 6px #0209153d;-webkit-text-stroke:.13px #0713206b}
.scene-copy:before{content:'';position:absolute;inset:-12px -18px;z-index:-1;pointer-events:none;border-radius:45%;background:radial-gradient(ellipse at center,#07121f7a 0%,#07121f6b 48%,#07121f2e 73%,transparent 96%)}
.scene-copy .scene-copy:before{display:none}
#app .scene-copy{pointer-events:none}
#app .scene-copy h1,#app .scene-copy h2,#app .scene-copy h3,#app .scene-copy p,#app .scene-copy span{pointer-events:none}
#app .scene-copy button,#app .scene-copy a,#app .scene-copy input,#app .scene-copy textarea,#app .scene-copy select,#app .scene-copy summary,#app button.scene-copy,#app a.scene-copy{pointer-events:auto}
.scene-copy:is(.primary-button,.secondary-button,.text-button,.daily-shortcut):before{inset:-7px -10px}
.direction-panel{background:none;border-color:transparent}
.direction-panel.scene-copy:before{inset:-16px -24px;border-radius:35%}
.about-panel,.empty-journal,.recipe-tile,.journal-entry{background:none;border:0;box-shadow:none}
.journal-entry,.recipe-tile{border-bottom:1px solid #c7a57626}
.about-panel.scene-copy:before,.recipe-tile.scene-copy:before,.journal-entry.scene-copy:before,.empty-journal.scene-copy:before{inset:-4px -8px;background:radial-gradient(ellipse,#07121f7a 12%,#07121f61 55%,transparent 98%)}
.scene-copy .stage-description,.scene-copy .drink-description,.scene-copy .salon-small{color:var(--paper)}
.wheel-sector text{fill:#f4ebda;paint-order:stroke fill;stroke:#07121f88;stroke-width:.2px;text-shadow:0 1px 2px #02091580}
.object-label{left:50%;right:auto;width:max-content;max-width:140%;transform:translateX(-50%);z-index:5;color:var(--paper);text-shadow:0 1px 2px #020915c9;-webkit-text-stroke:.13px #07132066}
.object-label:before{content:'';position:absolute;inset:-5px -10px;border-radius:50%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse,#07121f91 0%,#07121f61 50%,transparent 94%)}
.bottom-nav{isolation:isolate;background:linear-gradient(180deg,transparent 0%,#091523b5 26%,#081321da 76%,#081321e3 100%);backdrop-filter:none;-webkit-backdrop-filter:none;border-top:0}
.bottom-nav button{background:none;text-shadow:0 1px 2px #020915c9;-webkit-text-stroke:.13px #07132066}
.bottom-nav button span{color:var(--paper)}
.bottom-nav button[aria-current=page] span{color:#e9c68c}
.site-header .salon-link,.site-header .language-toggle,.site-header .header-controls,.site-footer{position:relative;isolation:isolate;text-shadow:0 1px 3px #020915bf}
.site-header .salon-link:before,.site-header .language-toggle:before,.site-header .header-controls:before,.site-footer:before{content:'';position:absolute;inset:-3px -9px;border-radius:50%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse,#07121f61,transparent 87%)}
@media(max-width:650px){.scene-copy:before{inset:-10px -13px}.direction-panel.scene-copy:before{inset:-13px -17px}}
@media(prefers-reduced-motion:reduce){.object-relief,.object-relief>span,.object-cast-shadow{transition:none}}

/* One viewport canvas. No transformed parent and no scroll-driven geometry. */
#scene-objects.salon-scene{position:fixed;inset:0;width:100vw;height:100svh;overflow:hidden;z-index:1;isolation:isolate;pointer-events:none;opacity:1;transform:none;filter:none;backdrop-filter:none;perspective:none;transition:none;animation:none!important}
#scene-objects #salon-backdrop{position:absolute;inset:0;z-index:0}
#scene-objects #salon-stars{z-index:1}
.app-opening[data-entrance=opening] #scene-objects{visibility:visible}
#scene-objects .scene-object{position:absolute;z-index:2;opacity:1;transform:none;translate:none;scale:none;filter:none;transition:none;animation:none;pointer-events:auto}
#scene-objects .scene-object .prop-art{transform:rotate(var(--prop-turn,0deg));translate:none;scale:none;transition:none;animation:none;opacity:1}
#scene-objects .gramophone-object{top:auto;bottom:119px;width:214px;right:max(22px,calc(50vw - 591px))}
#scene-objects .object-light{display:none}
.grain{z-index:0}
@media(max-width:650px){#scene-objects .gramophone-object{width:142px;right:-10px;bottom:calc(88px + env(safe-area-inset-bottom))}}
@media(max-width:365px){#scene-objects .gramophone-object{width:128px}}

/* Matte gold is painted independently. Ink and arrows never share a haze or
   an opacity/filter animation with either the gold or a text smoke field. */
.contains-gold-cta{opacity:1!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;animation:none!important;transform:none!important}
.primary-button,.almanac-page .primary-button,.evening-quiet-actions .primary-button{position:relative;isolation:isolate;z-index:3;opacity:1!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;mix-blend-mode:normal;background:transparent!important;color:#3d281b!important;text-shadow:none!important;-webkit-text-stroke:0;transform:none!important;animation:none!important;transition:none;border-color:#c9a16c}
.primary-button:before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,#e0c393 0%,#d4b17b 55%,#c9a16c 100%);box-shadow:inset 0 1px 0 #f4dfb785,inset 0 -1px 2px #77563329;opacity:1;filter:none}
.primary-button:hover:before{background:linear-gradient(115deg,#e8cea3,#d9b982 65%,#d2ad75)}
.primary-button:disabled{opacity:1!important;color:#3d281b!important;box-shadow:none;border-color:#b49c7b}
.primary-button:disabled:before{background:linear-gradient(115deg,#cebc9f,#c0ab8d)}
.primary-button:after{display:none}
.primary-button-content{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;gap:inherit;opacity:1!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;mix-blend-mode:normal;color:#3d281b!important;text-shadow:none!important;-webkit-text-stroke:0;transform:none!important;animation:none!important}
.primary-button-content svg,.primary-button-content span{position:relative;z-index:2;opacity:1!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;mix-blend-mode:normal;color:#3d281b!important;text-shadow:none!important;-webkit-text-stroke:0;animation:none!important}
