:root{--wine:#25121a;--wine-light:#48232f;--paper:#f0e4d0;--muted:#c0aaa6;--gold:#c7a576;--line:rgba(199,165,118,.25);color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;background:radial-gradient(ellipse at 50% 10%,#36212b 0,#25121a 60%,#211018);color:var(--paper);-webkit-font-smoothing:antialiased;min-height:100svh}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:disabled{cursor:default}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid #e8c893;outline-offset:6px}h1:focus{outline:none}svg{display:block}button svg{flex-shrink:0}.grain{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.8' filter='url(%23n)'/%3E%3C/svg%3E")}.site-header{height:106px;max-width:1280px;margin:auto;padding:0 54px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line)}.salon-link{justify-self:start;display:flex;align-items:center;gap:11px;color:var(--muted);padding:10px 0}.tiny-star{color:var(--gold);}.wordmark{position:relative;padding-left:.32em}.wordmark-dot{position:absolute;left:50%;bottom:-15px;color:var(--gold)}.header-controls{justify-self:end;display:flex;gap:20px;align-items:center}.language{color:var(--muted);min-width:36px;min-height:44px}.sound-button{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--gold)}.sound-button svg{width:19px;height:19px}.sound-button[aria-pressed=true]{background:#6c454329;border-color:var(--gold)}#app{min-height:calc(100svh - 199px);max-width:1280px;margin:auto}.site-footer{max-width:1172px;margin:30px auto 0;border-top:1px solid var(--line);padding:25px 0 30px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);}.footer-mark{color:var(--gold)}.eyebrow{color:var(--gold);text-transform:uppercase}.salon-hero{position:relative;min-height:565px;margin:28px 54px 0;overflow:hidden;border:1px solid rgba(199,165,118,.17);background:#200b10}.hero-image{position:absolute;inset:0;background:url('/assets/salon.webp') center 57%/cover no-repeat;opacity:.9}.salon-hero:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(24,8,12,.68) 0%,rgba(24,8,12,.30) 42%,transparent 64%),linear-gradient(0deg,#25121a55,transparent 40%)}.hero-copy{position:relative;z-index:1;padding:78px 54px 58px;max-width:600px}.hero-copy h1{margin:23px 0 14px;text-shadow:0 2px 20px #190808}.hero-copy h1 em{color:#e4c3a3}.hero-ornament{width:138px;color:var(--gold);margin:25px 0 22px}.hero-subtitle{max-width:315px;color:#dec8c2;}.hero-anchor{display:inline-flex;align-items:center;gap:24px;margin-top:32px;color:#e6c99d;min-height:35px;border-bottom:1px solid #bb9b7166}.hero-caption{position:absolute;right:28px;bottom:23px;z-index:1;color:#e3c6a5bb}.rituals-section{padding:38px 54px 4px}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:21px}.section-title>span{color:var(--muted);}.ritual-grid{display:grid;grid-template-columns:1.26fr 1fr 1fr;gap:15px}.ritual-tile{position:relative;border:1px solid var(--line);padding:27px 22px;display:flex;gap:22px;align-items:center;text-align:left;min-height:184px;transition:border-color .3s,background .3s,transform .3s}.ritual-tile.available{background:radial-gradient(ellipse at 15% 50%,#63384566,transparent 75%);border-color:#aa835969}.ritual-tile.available:hover{border-color:var(--gold);background-color:#5d34443b;transform:translateY(-3px)}.miniature-card{width:62px;min-width:62px;transform:rotate(-9deg);filter:drop-shadow(3px 5px 5px #110a0d)}.miniature-card .card-art{width:100%;height:auto}.tile-eyebrow{color:var(--gold);text-transform:uppercase;display:block}.ritual-tile h2{margin:9px 0 7px}.ritual-tile p{color:var(--muted)}.tile-action{display:flex;gap:15px;align-items:center;color:#e2be87;margin-top:17px}.tile-action svg{width:19px;height:19px}.future{border-color:#b59b781c;background:#9c797004}.future .tile-eyebrow{color:#bca78f}.tile-symbol{color:var(--gold);width:27px;min-width:27px}.tile-symbol svg{width:27px;height:27px}.salon-note{display:flex;align-items:center;gap:20px;margin-top:33px;padding-top:25px;border-top:1px solid var(--line)}.note-star{color:var(--gold);}.salon-note h3{margin-bottom:5px;color:#dbc4b1}.salon-note p{color:var(--muted);}.ritual-time{margin-left:auto;color:var(--muted);white-space:nowrap}.ritual-shell{max-width:1080px;margin:auto;padding:22px 30px 20px;animation:fade-in .45s ease both}.ritual-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.text-button{color:var(--muted);min-height:44px;padding:10px 4px;text-underline-offset:4px}.text-button:hover{text-decoration:underline;color:var(--paper)}.back-button{display:flex;align-items:center;gap:7px;}.back-button svg{width:16px;height:16px}.ritual-date{color:var(--muted);}.ritual-progress{list-style:none;display:flex;max-width:565px;margin:0 auto;padding:7px 0 23px;justify-content:space-between;gap:20px;position:relative}.ritual-progress:before{content:'';position:absolute;left:30px;right:30px;top:19px;height:1px;background:var(--line);z-index:-1}.ritual-progress li{display:flex;flex-direction:column;align-items:center;gap:9px;color:#b49c94;min-width:62px}.step-number{width:25px;height:25px;display:grid;place-items:center;background:var(--wine);border:1px solid #87654f6e;border-radius:50%;color:#bda784}.ritual-progress li.active{color:#e6c99b}.active .step-number{border-color:var(--gold);background:#6c3e4155;color:#f1dcb6;box-shadow:0 0 15px #ce9d6d13}.complete .step-number{color:var(--gold)}.ritual-stage{text-align:center}.ritual-stage h1{margin:13px 0 14px;}.stage-description{color:var(--muted);max-width:414px;margin:0 auto;min-height:46px}.velvet-table{position:relative;margin:12px auto 10px;background:radial-gradient(ellipse at center,#74425037 0,#45253333 38%,transparent 70%);isolation:isolate}.table-ring{position:absolute;width:510px;height:345px;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid #aa886917;border-radius:50%;z-index:-1}.table-ring:after{content:'';position:absolute;inset:12px;border:1px solid #aa88690d;border-radius:50%}.shuffle-table{padding:34px 0 4px;height:365px}.deck{position:relative;width:171px;height:278px;margin:0 auto;touch-action:none;cursor:grab;--drag:0;animation:deck-arrive 1s cubic-bezier(.2,.7,.2,1) both;user-select:none}.deck.dragging{cursor:grabbing}.deck-card{position:absolute;inset:0;transform:translate(calc((var(--i) - 3) * 2px + var(--drag) * var(--side) * 65px),calc((var(--i) - 3) * -2px + var(--drag) * var(--side) * -12px)) rotate(calc((var(--i) - 3) * 1.5deg + var(--drag) * var(--side) * 11deg));border-radius:10px;box-shadow:1px 1px 0 #dec7a4,2px 2px 0 #653d3f,0 10px 28px #10070c66;transition:transform .32s cubic-bezier(.18,.8,.2,1)}.deck.dragging .deck-card{transition:transform .04s linear}.deck-card .card-art{width:100%;height:100%;pointer-events:none}.deck.shuffling .deck-card{animation:shuffle-card .6s cubic-bezier(.4,0,.2,1) both}.gesture-hint{color:#c7ab91;display:flex;justify-content:center;gap:13px;align-items:center;position:relative;margin:24px auto 0}.gesture-line{width:24px;height:1px;background:var(--line);position:relative}.gesture-line:before{content:'';position:absolute;width:5px;height:5px;top:-2px;left:0;border-left:1px solid var(--gold);border-bottom:1px solid var(--gold);transform:rotate(45deg)}.gesture-line:last-child:before{left:auto;right:0;transform:rotate(225deg)}.shuffle-status{margin:10px auto 0;color:#d7ba98;min-height:14px}.stage-actions{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:22px}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:17px;min-height:49px;padding:14px 24px;border:1px solid #c7a576;transition:background .25s,transform .25s,opacity .25s;border-radius:2px}.primary-button{background:#d3b383;color:#2d1920;box-shadow:0 4px 22px #00000016}.primary-button:hover{background:#e7cda1;transform:translateY(-1px)}.primary-button svg,.secondary-button svg{width:18px;height:18px}.secondary-button{color:#dfc29c;border-color:#bd976d66;background:#6e455018}.secondary-button:hover{background:#75465245;border-color:var(--gold)}.primary-button:disabled{opacity:.35;transform:none;box-shadow:none;background:#a99179;border-color:#a99179}.stage-footnote{color:var(--muted);max-width:400px;margin:16px auto 0}.spread-table{margin-left:calc((min(1080px,100vw) - 60px - 100vw)/2);margin-right:calc((min(1080px,100vw) - 60px - 100vw)/2);height:393px;padding:0;max-width:100vw;overflow:hidden}.spread-table .table-ring{top:44%}.card-rail{width:100%;height:303px;padding-top:48px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;touch-action:pan-x;overscroll-behavior-x:contain;scroll-behavior:smooth;user-select:none}.card-rail::-webkit-scrollbar{display:none}.spread-row{display:flex;align-items:flex-start;position:relative;width:max-content;padding:0 calc(50vw - 62px) 30px;isolation:isolate;height:246px}.spread-card{width:124px;height:203px;padding:0;flex-shrink:0;margin-right:-43px;position:relative;transform:translateY(var(--drop,0px)) rotate(var(--angle,0deg));transform-origin:center bottom;border-radius:8px;box-shadow:2px 2px 0 #c6ac86,5px 8px 14px #12050b77;transition:filter .2s,box-shadow .2s,opacity .3s;touch-action:pan-x}.spread-card:last-child{margin-right:0}.spread-card .card-art{width:100%;height:100%;pointer-events:none}.spread-card:hover,.spread-card:focus-visible{filter:brightness(1.15);z-index:30;box-shadow:2px 2px 0 #dabe8f,0 2px 25px #e0b78124}.spread-card.is-current{filter:brightness(1.18);box-shadow:2px 2px 0 #d5b583,0 2px 25px #d9b18722}.spread-card.lifted{animation:lift-card .4s ease forwards;z-index:40}.selection-controls{display:flex;align-items:center;justify-content:center;gap:27px;margin-top:0;color:var(--muted);}.circle-button{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;color:#d9ba92}.circle-button svg{width:16px;height:16px}#next svg{transform:rotate(180deg)}.circle-button:disabled{opacity:.25}.selection-stage .gesture-hint{margin-top:17px}.selection-stage .stage-actions{margin-top:0}.chosen-table{height:371px;padding:15px 0 0}.chosen-card{display:block;width:180px;height:295px;perspective:1000px;margin:0 auto;padding:0;border-radius:10px;touch-action:none;background:none;animation:chosen-arrive .6s cubic-bezier(.2,.7,.2,1) both}.card-rotor{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .85s cubic-bezier(.3,.05,.25,1)}.chosen-card.is-revealed .card-rotor{transform:rotateY(180deg)}.card-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 15px 38px #14080dcc,1px 1px 0 #c7aa80;border-radius:10px;overflow:hidden}.card-face svg{width:100%;height:100%}.card-front{transform:rotateY(180deg);background:#e9dab7}.reveal-line{color:#d9bda4;margin:22px auto 0;padding:0 15px;max-width:590px;}.chosen-stage .stage-actions{margin-top:8px}.chosen-stage .stage-footnote{max-width:370px}.choose-again{margin-top:10px}.reading-stage{max-width:860px;display:grid;grid-template-columns:280px minmax(0,1fr);gap:62px;margin:30px auto 15px}.reading-portrait{align-self:start;position:sticky;top:35px;padding-top:36px}.reading-card{width:236px;height:386px;margin:0 auto;transform:rotate(-4deg);box-shadow:0 25px 50px #10070b77,1px 1px 0 #cbb080;border-radius:10px;background:#e9dab7;animation:chosen-arrive .7s ease both}.reading-card .card-art{width:100%;height:100%}.reading-portrait>p{text-align:center;color:var(--muted);margin-top:36px;}.reading-content h1{margin:13px 0 12px;}.reading-essence{color:var(--gold);}.reading-intro{color:#e4c9b4;margin:24px 0 21px}.reading-sections{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}.reading-item{display:flex;gap:16px;margin-bottom:20px}.reading-item:last-child{margin-bottom:0}.reading-icon{width:26px;min-width:26px;color:var(--gold);padding-top:2px}.reading-icon svg{width:22px;height:22px}.reading-item h2{margin-bottom:6px;color:#e4cdb6}.reading-item p{color:var(--muted)}.reflection-block{padding-top:27px}.reflection-question{margin:10px 0 17px;color:#e2c9b2}textarea{width:100%;background:#4c2c352e;border:1px solid var(--line);resize:vertical;min-height:80px;border-radius:2px;font:13px/1.8 var(--serif);color:var(--paper);padding:13px 15px}textarea::placeholder{color:#bea09a;opacity:1;}.reflection-actions{display:flex;align-items:center;gap:15px;margin-top:14px}.reflection-actions .secondary-button{padding:11px 16px;min-height:43px;white-space:nowrap}.reflection-actions p{color:var(--muted);max-width:165px}.reading-note{color:var(--muted);margin:25px 0 20px}.reading-footer{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.toast{position:fixed;z-index:100;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);width:max-content;padding:15px 22px;border:1px solid #cfab76a6;background:#3a202aee;backdrop-filter:blur(10px);box-shadow:0 7px 35px #0005;color:#e9cda5;animation:fade-in .3s}.reset-dialog{max-width:440px;width:calc(100% - 40px);background:#321c25;border:1px solid var(--gold);border-radius:3px;color:var(--paper);padding:32px}.reset-dialog::backdrop{background:#13090ddd;backdrop-filter:blur(4px)}.reset-dialog h2{margin:12px 0 16px}.reset-dialog>p:not(.eyebrow){color:var(--muted);}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:26px}.dialog-actions button{padding:12px 16px;}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes deck-arrive{from{opacity:0;transform:translateY(-22px) rotate(-6deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@keyframes chosen-arrive{from{opacity:0;transform:translateY(15px) scale(.93)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes shuffle-card{0%,100%{transform:translate(calc((var(--i) - 3) * 2px),calc((var(--i) - 3) * -2px)) rotate(calc((var(--i) - 3) * 1.5deg))}45%{transform:translate(calc(var(--side) * 72px),calc(var(--side) * -14px)) rotate(calc(var(--side) * 13deg))}70%{transform:translate(calc(var(--side) * -25px),0) rotate(calc(var(--side) * -5deg))}}@keyframes lift-card{to{transform:translateY(-80px) scale(1.08);opacity:0}}
@media(min-width:1400px){.salon-hero{min-height:580px}.hero-copy{padding-top:85px}}
@media(max-width:1000px){.site-header{padding:0 34px}.salon-hero{margin-left:34px;margin-right:34px;min-height:530px}.hero-copy{padding-left:34px;max-width:540px}.rituals-section{padding-left:34px;padding-right:34px}.ritual-grid{grid-template-columns:1.18fr 1fr}.ritual-grid>.future:last-child{display:none}.site-footer{margin-left:34px;margin-right:34px}.reading-stage{gap:35px;grid-template-columns:240px minmax(0,1fr)}.reading-card{width:212px;height:347px}}
@media(max-width:650px){.site-header{height:82px;padding:0 22px;grid-template-columns:1fr auto 1fr}.salon-link{gap:6px}.wordmark{padding-left:.22em}.wordmark-dot{bottom:-13px}.header-controls{gap:2px}.language{min-width:32px}.sound-button{width:34px;height:34px}.sound-button svg{width:16px;height:16px}#app{min-height:calc(100svh - 170px)}.salon-hero{margin:17px 17px 0;min-height:505px}.hero-image{background-size:auto 100%;background-position:62% center;opacity:.82}.salon-hero:after{background:linear-gradient(90deg,#200c1480,transparent),linear-gradient(180deg,#1d0d149c 0%,#1d0d1445 45%,#25121a05 64%,#25121a4a)}.hero-copy{padding:39px 27px 45px;max-width:100%}.hero-copy h1{margin:23px 0 10px}.hero-ornament{width:116px;margin:20px 0 15px}.hero-subtitle{max-width:228px;color:#e2d0c8}.hero-anchor{margin-top:27px;gap:19px}.hero-caption{right:20px;bottom:20px}.rituals-section{padding:29px 22px 0}.section-title{margin-bottom:17px}.ritual-grid{grid-template-columns:1fr;gap:12px}.ritual-tile{min-height:162px;padding:23px 26px;gap:24px}.miniature-card{width:65px;min-width:65px}.future{min-height:110px;padding:21px 25px;gap:26px}.future h2{margin:5px 0 5px}.ritual-grid>.future:last-child{display:flex}.future .tile-symbol{width:28px;min-width:28px}.salon-note{padding-top:23px;margin-top:25px;gap:14px;align-items:flex-start}.note-star{padding-top:1px}.salon-note p{max-width:265px}.ritual-time{display:none}.site-footer{margin:29px 22px 0;padding:23px 0 25px;gap:15px;}.ritual-shell{padding:10px 22px 24px}.ritual-toolbar{margin-bottom:7px}.ritual-progress{gap:6px;margin:0 0 23px;padding:0 0 9px}.ritual-progress:before{top:12px;left:35px;right:35px}.ritual-progress li{gap:8px;min-width:58px}.step-number{width:24px;height:24px;}.ritual-stage h1{margin:13px 0 12px;}.stage-description{max-width:295px;min-height:43px}.shuffle-table{height:332px;padding:26px 0 0;margin-top:6px}.table-ring{width:350px;height:280px;max-width:calc(100vw - 4px)}.deck{width:151px;height:247px}.gesture-hint{gap:8px;margin-top:23px;max-width:calc(100vw - 40px);}.gesture-line{width:18px}.shuffle-status{margin-top:9px}.stage-actions{gap:10px;margin-top:15px}.primary-button,.secondary-button{padding:13px 18px;min-height:47px;gap:12px}.stage-actions svg{width:16px;height:16px}.stage-footnote{margin-top:13px}.spread-table{margin:8px -22px 8px;height:354px;max-width:100vw}.card-rail{height:273px;padding-top:32px}.spread-row{padding:0 calc(50vw - 57px) 30px}.spread-card{width:114px;height:187px;margin-right:-32px}.selection-controls{margin-top:3px;gap:25px;}.circle-button{width:40px;height:40px}.selection-stage .gesture-hint{margin-top:15px}.selection-stage .stage-actions{margin-top:8px}.chosen-table{padding:15px 0 0;height:336px;margin-top:9px}.chosen-card{width:166px;height:272px}.chosen-stage .gesture-hint{margin-top:24px}.chosen-stage .stage-actions{margin-top:14px}.reveal-line{max-width:330px;margin-top:18px}.chosen-stage .stage-footnote{max-width:270px;}.choose-again{margin-top:8px;}.reading-stage{display:flex;flex-direction:column;gap:27px;margin:4px auto 0}.reading-portrait{position:static;align-self:center;padding-top:9px}.reading-card{width:145px;height:237px;transform:rotate(-3deg)}.reading-portrait>p{margin-top:18px;}.reading-content h1{margin-top:13px}.reading-intro{margin:19px 0 19px;}.reading-sections{padding:21px 0}.reading-item{gap:15px;margin-bottom:22px}.reading-icon svg{width:21px;height:21px}.reflection-block{padding-top:25px}.reflection-question{margin:12px 0 16px}.reflection-actions{gap:15px}.reflection-actions p{max-width:143px}.reading-footer{gap:15px;justify-content:space-between}.reading-footer .primary-button{padding:14px 18px}.reading-note{margin-top:23px}.toast{padding:14px 18px}.reset-dialog{padding:25px}.dialog-actions{justify-content:stretch}.dialog-actions button{flex:1}}
@media(max-width:365px){.site-header{padding:0 15px}.hero-copy{padding-left:23px;padding-right:23px}.ritual-shell{padding-left:17px;padding-right:17px}.spread-table{margin-left:-17px;margin-right:-17px}.stage-actions{gap:7px}.stage-actions button{padding-left:13px;padding-right:13px;}.reflection-actions{align-items:flex-start;gap:10px}.reading-footer{justify-content:flex-start;gap:9px}.ritual-progress li{min-width:53px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.deck-card{transform:translate(calc((var(--i) - 3) * 2px),calc((var(--i) - 3) * -2px)) rotate(calc((var(--i) - 3) * 1.5deg))}.chosen-card.is-revealed .card-rotor{transform:rotateY(180deg)}}

/* The private salon prototype: mobile scene and the complete first route. */
:root{--wine:#13202c;--wine-light:#25384a;--muted:#c8bcac;--paper:#f1e7d5;--line:rgba(199,165,118,.25)}
html{background-color:#13202c}body{position:relative;isolation:isolate;--salon-shade:linear-gradient(180deg,#0b172078,#101c266d);background-color:#13202c;background-image:var(--salon-shade),url('/assets/velvet-wide.webp');background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;padding-bottom:90px}
body:before{content:none}
#app,.site-header,.site-footer{position:relative;z-index:2}
.site-header{background:#101b2550;backdrop-filter:blur(8px)}
.site-header .header-controls{gap:13px}.deck-choice{width:40px;height:44px;display:grid;place-items:center;color:var(--gold)}.deck-choice svg{width:21px;height:25px}
.scene-dimmer{position:absolute;inset:0;z-index:1;background:#050b13;opacity:0;pointer-events:none;transition:opacity .7s}.lights-out .scene-dimmer{opacity:.72}
.scene-object{position:fixed;padding:3px;z-index:4;opacity:.9;transition:opacity .5s,filter .5s;filter:drop-shadow(0 6px 16px #0008);min-width:44px;min-height:44px}.scene-object svg{width:100%;height:auto}.candle-object{width:71px;left:max(16px,calc(50vw - 591px));top:151px}.lamp-object{width:79px;right:max(16px,calc(50vw - 591px));top:140px}.gramophone-object{width:87px;right:max(22px,calc(50vw - 591px));bottom:119px}.scene-object.is-off .light-glow,.scene-object.is-off .flames{opacity:0}.scene-object .light-glow,.scene-object .flames{transition:opacity .6s}.scene-object.is-off{filter:brightness(.7) drop-shadow(0 6px 16px #0008)}
.bottom-nav{position:fixed;z-index:30;left:0;right:0;bottom:0;display:none;justify-content:center;gap:65px;padding:12px 20px max(14px,env(safe-area-inset-bottom));background:#0d1824ee;backdrop-filter:blur(18px);border-top:1px solid var(--line)}.entered .bottom-nav{display:flex}.bottom-nav button{display:flex;flex-direction:column;align-items:center;gap:5px;color:#b9aa93;min-width:68px;min-height:48px}.bottom-nav button[aria-current=page]{color:#e3c495}
body:not(.entered) .salon-link{visibility:hidden}body:not(.entered) #deck-choice{display:none}body:not(.entered) .site-footer{display:none}
.invitation-stage{text-align:center;padding:50px 100px 70px;min-height:calc(100svh - 140px)}.invitation-stage>.eyebrow{margin-bottom:34px;opacity:0;animation:fade-in .8s 1.7s both}.silver-tray{position:relative;max-width:505px;margin:0 auto;padding:28px 30px 40px;animation:letter-arrive 1s 1.1s both}.silver-tray:after{content:'';position:absolute;inset:37px -26px 2px;z-index:-1;border:6px double #a39279;border-radius:50% 50% 46% 46%;background:radial-gradient(ellipse,#b4a28a25 30%,#82746a55 60%,#b8aa9660 75%,#534844);box-shadow:0 20px 45px #0007,0 0 0 2px #514d47}
.invitation-letter{position:relative;background:#e6d7b7;color:#543c2b;border:1px solid #b1976d;padding:45px 38px 30px;box-shadow:0 8px 25px #080c10aa,0 0 0 5px #cfbea34d;transform:rotate(-1.4deg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23p)' opacity='.09'/%3E%3C/svg%3E")}.letter-rule{max-width:150px;color:#97733e;margin:20px auto}.invitation-letter>p:not(.letter-title){margin-bottom:22px}.letter-enter{color:#6f4b29;display:inline-flex;align-items:center;gap:20px;border-top:1px solid #8e704866;border-bottom:1px solid #8e704866;padding:15px 19px;margin:9px auto 0;min-height:48px}.letter-enter svg{width:22px;height:22px}.magnify{position:absolute;bottom:11px;right:9px;width:44px;height:44px;display:grid;place-items:center;color:#745634}.magnify svg{width:20px;height:20px;stroke-width:1.1}.intro-note{margin-top:33px;color:#d5c6b0;animation:fade-in 1s 1.6s both}.curtain{position:fixed;top:0;bottom:0;width:52%;z-index:70;pointer-events:none;background:repeating-linear-gradient(90deg,#090f17bb 0,#121b2744 8%,#71808b33 13%,#090f17aa 23%),url('/assets/velvet-mobile.webp') center/cover;box-shadow:inset -20px 0 35px #000a,10px 0 30px #000a;animation:curtain-open 1.8s .35s cubic-bezier(.25,.65,.2,1) both}.curtain-left{left:0;--exit:-100%}.curtain-right{right:0;--exit:100%;transform:scaleX(-1)}
@keyframes curtain-open{to{translate:var(--exit) 0;opacity:.96}}@keyframes letter-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.drink-stage{text-align:center;max-width:660px;margin:18px auto 0}.drink-stage h1,.salon-welcome h1,.library-stage>h1{margin:16px auto 14px}.drink-stage>.stage-description{max-width:400px}.drink-art{height:227px;margin:14px auto 2px;display:grid;place-items:center}.drink-art img{max-width:360px;max-height:227px;width:100%;object-fit:contain;filter:drop-shadow(0 8px 13px #0007)}.drink-art>svg{width:220px;max-height:160px}.drink-title{text-decoration:underline;text-decoration-color:#c7a57655;text-underline-offset:9px;padding:10px;min-height:44px}.drink-description{color:#d2c3ae;max-width:470px;margin:10px auto 14px}.drink-meta{color:var(--gold);margin:16px 0 24px}.drink-actions,.drink-continue{display:flex;justify-content:center;align-items:center;gap:13px;flex-wrap:wrap}.drink-continue{margin-top:22px;flex-direction:column;gap:7px}.drink-continue .primary-button{min-width:220px}.salon-stage{padding:52px 105px 20px;max-width:1170px;margin:auto}.salon-welcome{text-align:center}.salon-welcome h1{margin-top:19px}.salon-welcome .stage-description{max-width:460px}.salon-small{color:#d9c4a9;margin:21px 0 4px}.salon-center{display:grid;grid-template-columns:380px minmax(0,1fr);gap:43px;align-items:center;margin:28px auto 0;max-width:850px}.ritual-wheel{display:block;width:100%;max-width:380px;filter:drop-shadow(0 6px 25px #0005)}.wheel-sector{cursor:pointer;outline:none}.wheel-sector path{fill:#1424329c;stroke:#b392605c;stroke-width:1;transition:fill .3s}.wheel-sector.active path{fill:#3a4551c9;stroke:#ccab78;stroke-width:1.1}.wheel-sector:hover path,.wheel-sector:focus-visible path{fill:#3a4551;stroke:#e1be89;stroke-width:1.6}.wheel-sector text{font:16px var(--serif);fill:#e3d1b7;pointer-events:none}.wheel-center{fill:#152b25;stroke:#c7a57688;stroke-width:1}.direction-panel{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0}.direction-panel>.eyebrow{margin-bottom:15px}.daily-choice{display:flex;align-items:center;gap:23px;padding:20px 7px 23px;text-align:left;width:100%}.daily-choice .miniature-card{width:61px;min-width:61px}.daily-choice h2{margin-bottom:8px}.daily-choice p{color:var(--muted)}.daily-choice .tile-action{margin-top:17px}.daily-choice:hover .tile-action{color:#f0d7b3}.future-ritual{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 4px;border-top:1px solid var(--line);color:#d3c1ad;}.future-ritual small{color:#ae9f8c;max-width:100px;text-align:right}.future-note{color:var(--muted);margin-top:20px}.salon-about{display:flex;justify-content:center;align-items:center;gap:18px;text-align:left;margin-top:32px;padding-top:24px;border-top:1px solid var(--line);color:#cbbb9e}.salon-about>span{color:var(--gold)}.salon-about .text-button{padding-left:0}
.ritual-shell{padding-top:17px;max-width:1080px}.ritual-toolbar{margin-bottom:25px}.ritual-stage h1{margin:16px 0 12px}.stage-description{min-height:0;max-width:420px}.shuffle-table{height:365px;margin:9px auto 0;padding-top:36px}.deck{animation-delay:.9s;animation-duration:.7s}.deck.compressing{transform:scale(.95);opacity:.7;transition:transform .4s,opacity .4s}.deck-card{box-shadow:1px 1px 0 #cfb591,2px 2px 0 #5e4047,0 8px 22px #050d1688}.shuffle-invitation{color:#e2d0b4;margin-top:0}.shuffle-stage .gesture-hint{margin-top:9px;}.accessible-gesture{color:#cab698;margin-top:13px}.demo-caption{color:#bcae9a;margin-top:10px}.spread-table{height:360px;margin-top:35px}.card-rail{height:294px;padding-top:50px;touch-action:pan-x pinch-zoom}.spread-row{padding:0 calc(50vw - 62px) 35px}.spread-card{margin-right:-88px;transform:translateY(calc(var(--drop,0px) + var(--peek,0px))) rotate(var(--angle,0deg));transition:transform .23s ease;filter:none;box-shadow:1px 1px 0 #c6ac86,3px 4px 9px #030c1688;touch-action:pan-x pinch-zoom}.spread-card.is-current{filter:none;z-index:25;box-shadow:1px 1px 0 #c6ac86,3px 4px 9px #030c1688}.spread-card:hover,.spread-card:focus-visible{filter:none;box-shadow:1px 1px 0 #c6ac86,3px 4px 9px #030c1688}.spread-card:focus-visible{outline:2px solid #cfb586;outline-offset:4px}.selection-controls{gap:24px}.card-rail.gathering .spread-card:not(.lifted){transform:translateY(110px) rotate(0);opacity:0;transition:transform .45s,opacity .4s}.spread-card.lifted{animation:lift-card .45s ease forwards}.chosen-card{touch-action:pan-y pinch-zoom}.chosen-stage .chosen-table{height:336px;padding-top:22px;margin-top:20px}.chosen-stage>.secondary-button{min-height:48px;margin-top:19px;min-width:175px}.chosen-stage .gesture-hint{margin-top:5px}.reveal-caption{max-width:460px;margin:9px auto 0;opacity:1;transition:opacity .5s}.reveal-caption.awaiting{opacity:0;visibility:hidden}.reveal-caption h1{margin-bottom:13px}.reveal-caption>p{color:#ddc7a9;padding:0 15px}.reveal-caption>.primary-button{margin-top:24px}
.almanac-stage{max-width:690px;margin:9px auto 0}.almanac-card{width:130px;height:213px;margin:0 auto -17px;position:relative;z-index:3;box-shadow:0 7px 25px #050c16aa,1px 1px 0 #b99b6b;border-radius:8px;background:#e9dab7;transform:rotate(-3deg)}.almanac-card svg{width:100%;height:100%}.almanac-page{background:#e9deca;color:#543f2c;border:1px solid #bba780;padding:45px 57px 34px;box-shadow:0 15px 50px #050d1666}.almanac-page>.eyebrow{color:#856742;}.almanac-page>h1{margin:16px 0 14px}.almanac-page .reading-essence{color:#8e6b3f;}.almanac-page h2{color:#6c4d31;margin-bottom:9px}.today-reading{margin-top:26px;margin-bottom:25px}.today-reading>p{color:#5c4b38;}.almanac-page .reading-sections{border-color:#80623f3d}.almanac-page .reading-item p{color:#64513e;}.almanac-page .reading-icon{color:#967449}.takeaway{border-bottom:1px solid #80623f3d;padding:24px 0;color:#735236}.takeaway>.eyebrow{color:#886945;}.takeaway>p{margin-top:9px}.almanac-page .reflection-block .eyebrow{color:#886945}.almanac-page .reflection-question{color:#765739;}.almanac-page textarea{background:#f8f0df88;border-color:#80623f55;color:#543f2c;}.almanac-page textarea::placeholder{color:#8a755e;}.almanac-page .reading-footer{margin-top:20px;gap:13px}.almanac-page .secondary-button{background:#fff5dc33;color:#775331;border-color:#89633888;}.almanac-page .primary-button{background:#795b3d;color:#fff0d7;border-color:#795b3d;}.storage-note{color:#84705b;margin-top:19px}.almanac-page .reading-note{color:#8b7862;margin-bottom:0}.library-stage{max-width:780px;margin:20px auto 0}.library-stage>.eyebrow,.library-stage>h1,.library-stage>.stage-description{text-align:center}.library-stage>.stage-description{max-width:430px}.journal-storage{max-width:500px;margin:26px auto;color:#c4b39e;text-align:center}.journal-list{margin-top:30px}.journal-entry{display:flex;align-items:center;gap:25px;width:100%;text-align:left;background:#0f1f2b70;border:1px solid var(--line);padding:21px 27px;margin-bottom:15px}.journal-entry>div{width:68px;min-width:68px}.journal-entry>div svg{width:100%;height:auto}.journal-entry>span{flex:1}.journal-entry small{color:var(--gold)}.journal-entry h2{margin:9px 0}.journal-entry p{color:var(--muted)}.journal-entry>svg{width:22px;height:22px;color:var(--gold)}.entry-note{display:block;color:var(--gold);margin-top:13px}.empty-journal{text-align:center;padding:44px 30px;background:#12233170;border:1px solid var(--line)}.empty-journal>svg{width:35px;height:35px;margin:0 auto 20px;color:var(--gold)}.empty-journal h2{margin-bottom:16px}.empty-journal p{color:var(--muted);max-width:390px;margin:0 auto 25px}.recipe-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:35px}.recipe-tile{padding:24px 25px 26px;border:1px solid var(--line);background:#10212f99;text-align:left;display:flex;flex-direction:column;justify-content:flex-start}.recipe-tile-art{height:117px;display:grid;place-items:center;margin-bottom:14px}.recipe-tile-art img{height:100%;max-width:100%;object-fit:contain}.recipe-tile-art svg{height:100px;max-width:150px}.recipe-tile h2{margin-bottom:15px}.recipe-tile p{color:var(--muted);}.recipe-tile span{display:block;color:var(--gold);margin-top:17px}.about-panel{background:#10212f88;border:1px solid var(--line);padding:40px 48px;margin-top:35px}.about-deck{width:105px;margin:0 auto 30px;transform:rotate(-3deg)}.about-deck svg{width:100%}.about-panel h2{text-align:center;margin-bottom:16px}.about-panel>.eyebrow{text-align:center;margin-bottom:26px}.about-panel>p:not(.eyebrow){color:#d0c1aa;margin-bottom:20px}.about-panel>p:last-child{margin-bottom:0}
.salon-dialog{width:calc(100% - 40px);max-width:510px;max-height:calc(100svh - 60px);overflow-y:auto;background:#172735;border:1px solid #c7a57699;color:var(--paper);padding:34px 32px;box-shadow:0 25px 80px #000a;overscroll-behavior:contain}.salon-dialog::backdrop{background:#030a12b8;backdrop-filter:blur(5px)}.salon-dialog h2{margin:13px 0 20px;padding-right:10px}.salon-dialog h3{margin:22px 0 12px}.salon-dialog>p:not(.eyebrow){color:#d0c0a9;margin:18px 0}.modal-close{position:absolute;right:9px;top:6px;min-width:44px;min-height:44px;color:var(--gold);z-index:5}.modal-recipe-art{width:100%;max-height:205px;object-fit:contain;margin:7px auto 22px}.salon-dialog .drink-meta{color:var(--gold)!important;}.ingredients{padding-left:18px;color:#dbceb8}.recipe-steps{padding-left:20px;color:#dbceb8;}.recipe-steps li{padding-left:7px;margin-bottom:17px}.audio-toggle{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 0;border-bottom:1px solid var(--line);}.audio-toggle input{width:22px;height:22px;accent-color:#c7a576;flex-shrink:0}.music-volume,.theme-label{display:block;margin-top:24px;}.music-volume input{width:100%;display:block;height:36px;accent-color:#c7a576;margin-top:10px}.theme-label select{display:block;width:100%;color:var(--paper);border:1px solid var(--line);background:#1c3040;min-height:47px;padding:10px 13px;margin-top:10px;}.salon-dialog .audio-note{color:#b9aa95!important}.deck-preview{width:118px;margin:18px auto 28px}.deck-preview svg{width:100%}.letter-modal{padding:33px 25px;background:#e6d7b7;color:#543c2b;border-color:#b1976d;max-width:540px}.letter-modal .modal-close{color:#806037}.enlarged-letter{box-shadow:none;border:none;transform:none;padding:25px 10px 10px}
@media(max-width:1000px){.salon-stage{padding-left:90px;padding-right:90px}.salon-center{grid-template-columns:1fr;gap:17px;max-width:430px}.wheel-wrap{max-width:340px;margin:auto;width:100%}.scene-object{width:63px}.lamp-object{width:67px}.gramophone-object{width:74px}}
@media(max-width:650px){body{background-image:var(--salon-shade),url('/assets/velvet-mobile.webp');padding-bottom:87px}.site-header{height:77px;background:#101b2570;padding:0 16px}.site-header .header-controls{gap:3px}.deck-choice{width:30px;min-width:30px;height:44px}.deck-choice svg{width:18px;height:23px}.site-footer{margin-top:20px;padding-bottom:18px}.scene-object{width:44px}.candle-object{left:1px;top:151px}.lamp-object{right:0;top:141px;width:49px}.gramophone-object{right:4px;top:80px;bottom:auto;width:44px}.bottom-nav{gap:0;justify-content:space-around;padding:9px 12px max(11px,env(safe-area-inset-bottom));min-height:77px}.bottom-nav button{min-width:62px;min-height:46px;gap:3px}.invitation-stage{padding:36px 41px 30px;min-height:calc(100svh - 85px)}.invitation-stage>.eyebrow{margin-bottom:24px}.silver-tray{padding:13px 8px 24px;max-width:350px}.silver-tray:after{inset:24px -13px 0;border-width:4px}.invitation-letter{padding:34px 16px 25px}.letter-rule{max-width:120px;margin:16px auto}.invitation-letter>p:not(.letter-title){margin-bottom:22px}.letter-enter{padding:12px 17px;margin-top:5px;min-height:47px}.letter-enter svg{width:18px;height:18px}.magnify{bottom:1px;right:0;width:40px;height:40px}.intro-note{margin-top:27px;padding:0 8px}.ritual-shell{padding:9px 28px 15px}.ritual-toolbar{margin-bottom:23px}.drink-stage{margin-top:4px}.drink-stage h1{max-width:295px;margin:12px auto 14px}.drink-stage>.stage-description{max-width:260px}.drink-art{height:164px;margin:15px auto 2px}.drink-art img{max-height:164px;max-width:292px}.drink-art>svg{width:170px;height:130px}.drink-title{padding:10px 7px;max-width:320px}.drink-description{max-width:305px;margin-top:10px}.drink-meta{margin:17px 0 19px}.drink-actions{gap:9px;flex-direction:column}.drink-actions .secondary-button{min-height:45px;min-width:235px}.drink-continue{margin-top:17px}.drink-continue .primary-button{min-width:235px;min-height:48px}.salon-stage{padding:39px 26px 8px}.salon-welcome h1{margin:13px auto 12px}.salon-welcome .stage-description{max-width:258px;}.salon-small{margin-top:19px}.salon-center{margin-top:14px;gap:17px}.wheel-wrap{max-width:345px}.direction-panel{padding:18px 0}.direction-panel>.eyebrow{margin-bottom:11px}.daily-choice{gap:24px;padding:15px 7px 23px}.daily-choice .miniature-card{width:56px;min-width:56px}.daily-choice .tile-action{gap:15px}.future-ritual{padding:15px 6px}.future-ritual small{max-width:107px}.salon-about{margin-top:23px;gap:17px;padding-top:21px}.ritual-stage h1{margin:15px 0 13px}.stage-description{max-width:270px;min-height:0}.shuffle-table{height:310px;padding-top:39px;margin-top:10px}.deck{width:145px;height:237px;animation-delay:.9s}.shuffle-invitation{margin-top:2px;padding:0 7px;min-height:32px}.shuffle-stage .gesture-hint{max-width:270px;margin-top:7px}.accessible-gesture{margin-top:14px;min-height:44px}.demo-caption{margin:4px auto 0;max-width:275px}.spread-table{margin:31px -28px 0;height:310px}.card-rail{height:250px;padding-top:38px}.spread-card{width:109px;height:179px;margin-right:-81px}.spread-row{padding:0 calc(50vw - 54.5px) 30px}.selection-controls{gap:20px}.circle-button{width:44px;height:44px}.selection-stage .accessible-gesture{margin-top:6px}.selection-stage .demo-caption{max-width:270px}.chosen-stage .chosen-table{height:300px;padding-top:19px;margin-top:16px}.chosen-card{width:166px;height:272px;touch-action:none}.chosen-stage .gesture-hint{margin-top:8px}.chosen-stage>.secondary-button{margin-top:17px;min-height:48px}.chosen-stage .stage-footnote{max-width:247px;margin-top:15px;}.reveal-caption{margin-top:6px}.reveal-caption h1{margin:16px 0 11px}.reveal-caption>p{max-width:306px;margin:auto;padding:0 7px}.reveal-caption>.primary-button{margin-top:21px;min-height:48px}.almanac-stage{margin:0 -8px}.almanac-card{width:116px;height:190px;margin-bottom:-15px}.almanac-page{padding:37px 23px 25px}.almanac-page>h1{margin:15px 0 12px}.today-reading{margin-top:23px}.almanac-page .reading-item{gap:12px;margin-bottom:22px}.almanac-page .reading-icon{width:23px;min-width:23px}.takeaway{padding:23px 0}.almanac-page .reading-footer{flex-direction:column;align-items:stretch;gap:12px;margin-top:18px}.almanac-page .reading-footer button{min-height:47px}.almanac-page .storage-note{margin-top:20px}.library-stage{margin-top:8px}.library-stage>h1{margin-top:13px}.library-stage>.stage-description{max-width:260px}.journal-storage{margin-top:24px}.journal-entry{gap:18px;padding:19px 17px;align-items:flex-start}.journal-entry>div{width:54px;min-width:54px;margin-top:9px}.journal-entry>svg{width:18px;height:18px;margin-top:20px}.journal-entry h2{margin:8px 0}.empty-journal{padding:29px 20px}.recipe-grid{grid-template-columns:1fr;gap:14px;margin-top:28px}.recipe-tile{padding:24px 23px}.recipe-tile-art{height:139px;margin-bottom:14px}.about-panel{padding:30px 23px;margin-top:28px}.salon-dialog{padding:32px 25px;width:calc(100% - 26px);max-height:calc(100svh - 38px)}.audio-toggle{padding:17px 0}.letter-modal{padding:35px 17px}.enlarged-letter{padding:20px 4px 5px}.toast{bottom:95px;max-width:calc(100vw - 30px);width:330px;text-align:center}}
@media(max-width:365px){.invitation-stage{padding-left:32px;padding-right:32px}.invitation-letter{padding:30px 12px 24px}.salon-stage{padding-left:22px;padding-right:22px}.almanac-page{padding-left:18px;padding-right:18px}.site-footer>span:last-child{max-width:83px;text-align:right}}
html.telegram-webapp body{min-height:var(--tg-stable-height,100dvh);padding-top:var(--tg-safe-top,0px);padding-bottom:var(--tg-safe-bottom,0px)}
@media(prefers-reduced-motion:reduce){.curtain{display:none}.invitation-stage>.eyebrow{opacity:1}.silver-tray,.intro-note{opacity:1}.deck{opacity:1}.reveal-caption.awaiting{opacity:1;visibility:visible}}
@media(max-width:650px){.gramophone-object{top:264px;right:0;width:42px;opacity:.65}.shuffle-stage h1{margin:12px 0}.shuffle-stage .stage-description{max-width:268px}.shuffle-table{height:267px;padding-top:23px;margin-top:8px}.shuffle-stage .deck{width:131px;height:215px}.shuffle-stage .shuffle-invitation{min-height:27px}.shuffle-stage .gesture-hint{margin-top:7px}.shuffle-stage .accessible-gesture{margin-top:5px;min-height:40px}.shuffle-stage .demo-caption{margin-top:1px}.chosen-stage .chosen-table{height:269px;padding-top:15px;margin-top:12px}.chosen-stage .chosen-card{width:150px;height:245px}.chosen-stage .gesture-hint{margin-top:5px}.chosen-stage>.secondary-button{margin-top:12px}.reveal-caption>.primary-button{margin-top:17px}}

/* Supplied salon objects and the partial Waite–Smith deck. */
.scene-object img{display:block;width:100%;height:auto;pointer-events:none;user-select:none}
.scene-object .object-off{opacity:0;transition:opacity .6s}
.scene-object .object-on{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);object-fit:contain;transition:opacity .6s}
.scene-object.is-off .object-on{opacity:0}.scene-object.is-off .object-off{opacity:1}
.object-light{position:absolute;left:-45%;right:-45%;top:-20%;height:85%;z-index:-1;background:radial-gradient(ellipse,#f4c47732,transparent 70%);filter:blur(9px);pointer-events:none;transition:opacity .7s}
.is-off .object-light{opacity:0}
.candle-object{width:92px}.lamp-object{width:97px}.gramophone-object{width:106px}
.salon-cup{width:92px;left:max(18px,calc(50vw - 591px));bottom:111px;overflow:visible;opacity:.76}
.salon-cup[hidden]{display:none}
.drink-art{position:relative;height:235px;max-width:270px;margin:12px auto 0}
.drink-art>img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 10px 14px #02060880)}
.recipe-tile-art>img{width:100%;height:100%;object-fit:contain}
.drink-steam{position:absolute;left:37%;right:30%;top:0;height:65px;pointer-events:none;opacity:.36}
.drink-steam i{position:absolute;bottom:0;width:13px;height:45px;border-left:1px solid #e6dbcab0;border-radius:50%;filter:blur(2px);animation:steam-drift 6s linear infinite}
.drink-steam i:nth-child(2){left:36%;animation-delay:-2s}.drink-steam i:nth-child(3){left:68%;animation-delay:-4s}
.salon-cup .drink-steam{top:-23px;height:40px;opacity:.24}.salon-cup .drink-steam i{height:33px;width:10px}
@keyframes steam-drift{0%{opacity:0;transform:translate(0,8px) scale(.7)}35%{opacity:.6}100%{opacity:0;transform:translate(7px,-22px) scale(1.3)}}
.card-art.rws-card{display:block;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none;background:#eee7cb}
.card-face:has(.rws-card){border-radius:3px}.almanac-card:has(.rws-card){border-radius:3px;overflow:hidden}
.journal-entry>div:has(.rws-card){aspect-ratio:1086/1810;overflow:hidden}
.silver-tray{isolation:isolate;padding:12px 18px 94px;max-width:470px}
.silver-tray:after{display:none}
.invitation-tray-image{position:absolute;width:120%;height:auto;left:-10%;bottom:-45px;z-index:-1;pointer-events:none;filter:drop-shadow(0 14px 18px #0007)}
.silver-tray .invitation-letter{z-index:1;transform:rotate(-.8deg);padding:34px 24px 28px;background-color:#ede3cd;box-shadow:0 10px 15px #03070a50;border:1px solid #d1c1a0}


.silver-tray .magnify{bottom:3px;right:2px;min-width:44px;min-height:44px}
#preview-bell{margin:14px 0 0;}
@media(max-width:650px){
 .candle-object{width:59px;left:0;top:141px}.lamp-object{width:61px;right:0;top:143px}.gramophone-object{width:59px;right:1px;top:auto;bottom:97px;opacity:.72}
 .salon-cup{width:66px;left:0;bottom:94px}
 .invitation-stage{padding:34px 34px 22px;overflow:hidden}
 .invitation-stage>.eyebrow{margin-bottom:19px}
 .silver-tray{max-width:365px;padding:12px 8px 88px}
 .silver-tray .invitation-letter{padding:28px 15px 25px}
 .silver-tray .invitation-letter>p:not(.letter-title){margin-bottom:19px}

 .intro-note{margin-top:3px}
 .drink-art{height:200px;width:230px}
}
@media(max-width:365px){
 .invitation-stage{padding-left:27px;padding-right:27px}
 .silver-tray .invitation-letter{padding:25px 10px 22px}


 .candle-object{width:47px}.lamp-object{width:51px}
}
@media(prefers-reduced-motion:reduce){.drink-steam i{animation:none;opacity:.16}.object-on,.object-off,.object-light{transition:none}}
@media(max-width:650px){
 .invitation-stage .intro-note{margin-top:43px}
 .shuffle-stage .shuffle-table{height:235px;padding-top:19px}
 .shuffle-stage .ritual-toolbar{margin-bottom:16px}
 .spread-card{margin-right:-75px}
}
@media(max-width:650px){
 .salon-welcome h1{max-width:285px;margin-left:auto;margin-right:auto}
}

/* A slow entrance, an unopened letter, and two genuinely warm light sources. */
.recipe-illustration{width:100%;max-width:400px;aspect-ratio:4/3;margin:18px auto 22px}
.recipe-illustration>img{display:block;width:100%;height:100%;object-fit:contain}
.language-toggle,.modal-language{color:#e6cca2;min-width:44px;min-height:44px}
.site-header{z-index:80}.header-controls{gap:7px}
.modal-language{position:absolute;left:13px;top:8px;z-index:2}
#salon-light-field{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.ambient-candle-light,.ambient-lamp-light{position:absolute;inset:0;transition:opacity 1s;mix-blend-mode:screen}
.ambient-candle-light{background:radial-gradient(ellipse 66% 70% at 0% 25%,#e8a84c47 0%,#d595432c 23%,#db9a4612 53%,transparent 78%);opacity:.85}
.ambient-lamp-light{background:radial-gradient(ellipse 65% 74% at 100% 26%,#f4bb6654 0%,#e9a84b2d 28%,#eeb66b12 53%,transparent 80%);opacity:.88}
.candle-dark .ambient-candle-light,.lamp-dark .ambient-lamp-light{opacity:0}
.object-light{display:none}
.candle-object{width:190px}.lamp-object{width:202px}.scene-object{opacity:1}
.app-opening #scene-objects,.app-opening #salon-light-field{visibility:hidden}
.app-opening{overflow:hidden}
.opening-stage{position:fixed;inset:0;z-index:70;background:#0b1823;min-height:100svh}
.opening-stage .curtain{display:block;width:51.2%;animation:curtain-open 6.7s .3s cubic-bezier(.33,.04,.28,1) both;pointer-events:none;border-right:1px solid #c7a57624;box-shadow:inset -20px 0 42px #0009,8px 0 22px #0008}
.opening-wordmark{position:absolute;left:0;right:0;top:46%;z-index:73;color:#dbbc8cbd;text-align:center;pointer-events:none;animation:opening-ink 7s both}
.opening-skip{position:absolute;left:50%;bottom:max(38px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:75;color:#d4c2a8;min-height:44px;padding:9px 18px;white-space:nowrap}
@keyframes opening-ink{0%,18%{opacity:.75}70%,100%{opacity:0}}
.envelope-stage{padding:43px 40px 32px;min-height:calc(100svh - 85px)}
.envelope-stage>.eyebrow{animation:none;opacity:1;margin-bottom:8px}
.invitation-envelope{display:block;position:relative;width:min(100%,440px);padding:0;margin:24px auto 6px;filter:drop-shadow(0 18px 20px #0007);animation:envelope-arrive 1.15s ease both}
.invitation-envelope>img{display:block;width:100%;height:auto;pointer-events:none}
.letter-peek{position:absolute;left:21%;right:21%;top:27.4%;display:flex;flex-direction:column;align-items:center;color:#493124;pointer-events:none;overflow:hidden;height:30%}
.peek-title{white-space:nowrap}
.peek-line{margin-top:8px;white-space:nowrap}
.peek-name{margin-top:13px}
.envelope-hint{color:#e6c695;padding:9px 17px;display:inline-flex;border-bottom:1px solid #c7a5764a;animation:envelope-hint 1.2s .7s both}
.envelope-stage .intro-note{animation:none;opacity:1;margin-top:14px;}
@keyframes envelope-arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes envelope-hint{from{opacity:0}to{opacity:1}}
.invitation-open-stage{position:relative;max-width:620px;margin:auto;padding:35px 45px 48px;overflow:visible}
.fold-letter{display:grid;place-items:center;margin:0 auto 9px;color:var(--gold);width:44px;height:44px;padding:10px}.fold-letter svg{width:18px;height:18px}
.full-invitation{transform:none;max-width:430px;margin:auto;padding:32px 34px 31px;animation:paper-unfold .6s cubic-bezier(.16,.7,.3,1) both;transform-origin:center top;background-color:#eee2cc;box-shadow:0 18px 45px #03070b66;}


.full-invitation>p:not(.letter-title){margin-bottom:22px}
.full-invitation .letter-rule{margin:13px auto 20px;max-width:120px}
.full-invitation .letter-enter{margin-top:6px}
.full-invitation .magnify{bottom:4px;right:4px;min-width:44px;min-height:44px}

@keyframes paper-unfold{from{opacity:.2;transform:perspective(900px) rotateX(-15deg) scale(.93)}to{opacity:1;transform:perspective(900px) rotateX(0) scale(1)}}
@media(max-width:650px){
 .site-header .salon-link>span:last-child{display:none}.site-header .salon-link{min-width:44px;min-height:44px;justify-content:center;padding:0}.site-header{padding:0 13px}
 .header-controls{gap:2px}.site-header .header-controls{gap:1px}
 .candle-object{width:128px;left:-18px;top:133px}.lamp-object{width:132px;right:-18px;top:133px}
 .salon-welcome h1,.ritual-stage h1,.drink-stage h1,.library-stage>h1{max-width:210px;margin-left:auto;margin-right:auto}
 .salon-welcome .stage-description,.drink-stage>.stage-description,.library-stage>.stage-description{max-width:220px}
 .shuffle-stage .shuffle-table{height:250px}
 .envelope-stage{padding:35px 18px 30px;overflow:hidden}
 .invitation-envelope{width:355px;max-width:100%;margin-top:79px}

.peek-line{margin-top:4px}.peek-name{margin-top:9px}
 .envelope-stage .intro-note{margin-top:16px;}
 .invitation-open-stage{padding:24px 35px 38px;overflow:visible}
 .full-invitation{padding:25px 22px 24px}

 .full-invitation>p:not(.letter-title){margin-bottom:21px}
 .full-invitation .letter-rule{margin:13px auto 17px;max-width:96px}
 .app-opening .site-header{background:#101b2580}
}
@media(max-width:365px){
 .candle-object{width:114px}.lamp-object{width:118px}
 .salon-welcome h1,.ritual-stage h1,.drink-stage h1,.library-stage>h1{max-width:160px;}
 .salon-welcome .stage-description,.drink-stage>.stage-description,.library-stage>.stage-description{max-width:180px}
 .invitation-envelope{margin-top:71px}
 .invitation-open-stage{padding-left:24px;padding-right:24px}.full-invitation{padding:24px 18px}
}
@media(prefers-reduced-motion:reduce){.opening-stage .curtain{display:none}.invitation-envelope,.envelope-hint,.full-invitation{animation:none;opacity:1}.ambient-candle-light,.ambient-lamp-light{transition:none}}

/* Uploaded CEREMONY identity and Waite–Smith card back. */
.wordmark{display:block;position:relative;overflow:visible;width:210px;height:auto;aspect-ratio:3/1;flex-shrink:0;padding-left:0;}
.wordmark>img{display:block;position:static;width:100%;max-width:100%;height:auto}
.opening-wordmark{top:23%;width:100%;}
.opening-logo{display:block;width:min(280px,72vw);height:auto;margin:auto}
.uploaded-back{display:block;width:100%;height:100%;object-fit:contain;background:#fff;border-radius:inherit;user-select:none;pointer-events:none}
.miniature-card .uploaded-back,.deck-preview .uploaded-back,.about-deck .uploaded-back{height:auto}
@media(max-width:650px){.site-header{grid-template-columns:minmax(44px,1fr) auto auto;column-gap:4px}.wordmark{width:154px;height:auto;padding-left:0;}}
@media(max-width:365px){.wordmark{width:126px;height:auto}}

/* A closed entrance on every visit, including phones with reduced motion enabled. */
.app-opening .site-header,.app-opening .site-footer,.app-opening .bottom-nav{visibility:hidden}
.app-opening #scene-objects,.app-opening #salon-light-field{visibility:hidden}
.app-opening[data-entrance=emerging] #scene-objects,.app-opening[data-entrance=emerging] #salon-light-field{visibility:visible}
.opening-stage{background:#03080c;z-index:90}
.opening-stage.is-running{background:transparent}
.opening-stage .curtain{display:block;animation:none;translate:none;opacity:1;transform:translateX(0) scaleX(var(--curtain-mirror,1));will-change:transform}
.opening-stage .curtain-right{--curtain-mirror:-1}
.opening-stage.is-running .curtain{animation:ceremony-curtain-open 6s var(--opening-delay,0s) cubic-bezier(.33,.04,.28,1) both!important}
.opening-wordmark{top:22%;animation:none;opacity:1}
.opening-stage.is-running .opening-wordmark{animation:ceremony-opening-ink 6s var(--opening-delay,0s) linear both!important}
.opening-logo{width:min(310px,76vw)}
.opening-language{position:absolute;right:22px;top:max(22px,env(safe-area-inset-top));min-width:44px;min-height:44px;z-index:75}
.opening-actions{position:absolute;bottom:max(50px,calc(env(safe-area-inset-bottom) + 24px));left:20px;right:20px;display:flex;flex-direction:column;align-items:center;gap:10px;z-index:75}
.opening-start{color:#eadac0;padding:14px 20px;min-height:48px;border-bottom:1px solid #c7a57677}
.opening-start:disabled,.opening-silent:disabled{opacity:.5}
.opening-silent{color:#c9b99e;padding:10px 15px;min-height:44px}
.opening-actions .opening-skip{position:static;transform:none;}
.scene-revealed .invitation-envelope{animation:none}
@keyframes ceremony-curtain-open{0%{transform:translateX(0) scaleX(var(--curtain-mirror,1))}100%{transform:translateX(var(--exit)) scaleX(var(--curtain-mirror,1))}}
@keyframes ceremony-opening-ink{0%,22%{opacity:1}70%,100%{opacity:0}}
/* The requested six-second curtain entrance remains a slow, simple movement.
   Reduced-motion rules still apply to other decorative effects in the salon. */
.opening-stage.scene-is-emerging{animation:ceremony-salon-emerge .9s var(--opening-delay,0s) ease-out both!important}
@keyframes ceremony-salon-emerge{from{opacity:1}to{opacity:0}}

/* Letter layout; typography is defined globally in typography.css. */


.peek-line{margin-top:7px}

.full-invitation>p:not(.letter-title){margin-bottom:22px}

.gramophone-object{width:214px;opacity:1}
@media(max-width:650px){
.peek-line{margin-top:4px}




 .gramophone-object{width:142px;right:-10px;top:auto;bottom:calc(88px + env(safe-area-inset-bottom));opacity:.92}
}
@media(max-width:365px){.gramophone-object{width:128px}}

/* All current and future salon objects belong to the background layer. */
#salon-light-field{z-index:0}
.scene-dimmer{z-index:2}
#app{position:relative;z-index:10;isolation:isolate;pointer-events:none}
#app :is(button,a,input,textarea,select,label,h1,h2,h3,p,ul,ol,[role=button],[role=group],.card-rail,.chosen-card,.almanac-card,.full-invitation,.almanac-page,.recipe-tile,.journal-entry,.empty-journal,.about-panel){pointer-events:auto}
.site-header{position:relative;z-index:20}
.site-footer{position:relative;z-index:20}
.bottom-nav{z-index:30}
/* showModal() places dialogs and their backdrops above every scene layer. */
.audio-current{margin-top:12px;color:var(--gold);}

/* Supplied gilt frames. Long content scrolls inside a stationary ornament. */
.salon-dialog.framed-dialog{width:calc(100vw - 20px);max-width:600px;max-height:calc(100svh - 28px);padding:0;border:0;background:transparent;overflow:visible;box-shadow:none;filter:drop-shadow(0 18px 30px #0009)}
.modal-frame{--frame-x:clamp(30px,8.5vw,56px);--frame-y:clamp(40px,12vw,68px);position:relative;isolation:isolate;display:flex;flex-direction:column;max-height:calc(100svh - 28px);padding:var(--frame-y) var(--frame-x)}
/* Render supplied ornament as ordinary images, including all four corners. */
.gilt-frame{position:absolute;inset:0;z-index:2;display:grid;grid-template-columns:var(--frame-x) minmax(0,1fr) var(--frame-x);grid-template-rows:var(--frame-y) minmax(0,1fr) var(--frame-y);pointer-events:none;user-select:none}
.gilt-frame>img{display:block;width:100%;height:100%;max-width:none;min-width:0;min-height:0;object-fit:fill;pointer-events:none}
.gilt-frame-top-left{grid-area:1/1}.gilt-frame-top{grid-area:1/2}.gilt-frame-top-right{grid-area:1/3}
.gilt-frame-left{grid-area:2/1}.gilt-frame-right{grid-area:2/3}
.gilt-frame-bottom-left{grid-area:3/1}.gilt-frame-bottom{grid-area:3/2}.gilt-frame-bottom-right{grid-area:3/3}
.modal-frame--rectangle::before{content:none}
.modal-frame--rectangle::after{content:'';position:absolute;inset:14px;z-index:0;background:linear-gradient(#142532ef,#152632f5),url('/assets/velvet-mobile.webp') center/cover;border-radius:7px;pointer-events:none}
.modal-controls{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;min-height:44px;padding:0 4px}
.salon-dialog .modal-controls .modal-close,.salon-dialog .modal-controls .modal-language{position:static;margin:0;min-width:44px;min-height:44px;padding:0;color:#e7cb93;border-radius:50%;background:#0d1b2799}
.modal-content{position:relative;z-index:1;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#a88653 transparent;padding:12px 12px 20px;overflow-wrap:break-word}
.modal-content>p:not(.eyebrow){color:#d9ccb7;margin:18px 0;}

.modal-content h2{padding-right:0}

.modal-content .theme-label select{padding-left:8px;padding-right:8px;max-width:100%;}
.modal-content .audio-current{color:var(--gold)}
.salon-dialog.letter-modal{background:transparent;color:#543c2b}
.letter-modal .modal-frame--rectangle::after{background:#e9ddc6}
.letter-modal .modal-controls .modal-language,.letter-modal .modal-controls .modal-close{color:#65482b;background:#fff6e180}
.letter-modal .modal-content{padding:10px 0 18px}
.letter-modal .enlarged-letter{background:transparent;padding:8px 0;box-shadow:none;overflow-wrap:normal}


.salon-dialog.frame-oval{width:min(510px,calc(100vw - 20px),calc((100svh - 28px)*.72554))}
.modal-frame--oval{display:block;width:100%;aspect-ratio:1068/1472;padding:0}
.modal-frame--oval::before{content:none}
.oval-frame-art{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none;object-fit:fill}
.modal-frame--oval>.gilt-frame{display:none}
.modal-frame--oval::after{content:'';position:absolute;inset:10% 10% 9%;z-index:0;background:radial-gradient(ellipse,#233746,#142432 75%);border-radius:50%;pointer-events:none}
.modal-frame--oval .modal-controls{position:absolute;left:32%;right:32%;top:18%;padding:0}
.modal-frame--oval .modal-content{position:absolute;inset:27% 22% 28%;padding:0 4px 10px;text-align:center}
.modal-frame--oval .modal-content h2{margin:10px 0 15px}
.modal-frame--oval .modal-content .deck-preview{width:90px;max-width:70%;margin:12px auto 20px}

.toast{--frame-x:22px;--frame-y:26px;border:0;background:#172936f5;padding:36px 32px;box-shadow:none;isolation:isolate}.toast-message{position:relative;z-index:1}
@media(max-width:350px){.modal-content{padding-left:8px;padding-right:8px}}
@media(max-height:500px){
 .salon-dialog.frame-oval{width:calc(100vw - 20px)}
 .modal-frame--oval{display:flex;aspect-ratio:auto;padding:var(--frame-y) var(--frame-x)}
 .modal-frame--oval>.oval-frame-art{display:none}
 .modal-frame--oval>.gilt-frame{display:grid}
 .modal-frame--oval::after{inset:14px;background:#142532f5;border-radius:7px}
 .modal-frame--oval .modal-controls{position:relative;left:auto;right:auto;top:auto;padding:0 4px}
 .modal-frame--oval .modal-content{position:relative;inset:auto;padding:12px 12px 20px;text-align:left}
}

/* Objects are already laid out when the salon emerges; only touch moves them. */
/* The ordinary letter is a plain paper sheet; ornament belongs to dialogs. */
.full-invitation{border:1px solid #b1976d;background:#eee2cc;padding:32px 34px 31px;box-shadow:0 18px 45px #03070b66;isolation:isolate}
.full-invitation::after{content:none}
.full-invitation .magnify{position:absolute;right:4px;bottom:4px}
@media(max-width:650px){.full-invitation{padding:25px 22px 24px}}
.day-motif{margin:22px 0 26px;text-align:center}
.day-motif>.eyebrow{color:var(--gold);margin:0 0 12px}
.day-motif>.motif-line{margin:0 auto;max-width:470px;color:var(--paper)}
.reading-motif{padding:20px 0 24px;border-bottom:1px solid #c7a57636}
.reading-motif>.motif-line{color:#e3ccb0;}
@media(max-width:650px){}
.scene-prop{--prop-turn:0deg;touch-action:pan-y;user-select:none;opacity:.92}
.gloves-prop{--prop-turn:-12deg;width:150px;left:max(-22px,calc(50vw - 642px));top:43svh}
.fan-prop{--prop-turn:10deg;width:175px;right:max(-25px,calc(50vw - 641px));top:46svh}
.vanity-prop{--prop-turn:-4deg;width:170px;left:max(-30px,calc(50vw - 656px));bottom:135px}
.key-prop{--prop-turn:9deg;width:125px;right:max(15px,calc(50vw - 568px));top:31svh}
.hankie-prop{--prop-turn:-10deg;width:125px;left:max(20px,calc(50vw - 545px));bottom:55px}
@media(max-width:650px){
 .gloves-prop{width:110px;left:-20px;top:37svh}
 .fan-prop{width:132px;right:-36px;top:47svh}
 .vanity-prop{width:118px;left:-24px;bottom:calc(168px + env(safe-area-inset-bottom))}
 .key-prop{width:90px;right:-16px;top:34svh}
 .hankie-prop{width:96px;left:14px;bottom:calc(105px + env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){}


/* Owner-authorized removal of displaced rectangular ornaments. */
.plain-dialog{filter:none!important}
.plain-dialog .modal-frame{padding:24px 22px;max-height:calc(100svh - 28px)}
.plain-dialog .modal-frame--rectangle::after{inset:0;background:#172735;border:1px solid #c7a57680;border-radius:4px}
.plain-dialog .modal-controls{padding:0}
.plain-dialog .modal-content{padding:12px 4px 10px}
.plain-dialog.letter-modal .modal-frame--rectangle::after{background:#e9ddc6;border-color:#b1976d}
.toast{border:1px solid #c7a57680;border-radius:3px;padding:16px 20px}
@media(max-height:500px){.modal-frame--oval::after{inset:0;border:1px solid #c7a57680}}


/* A readable daily phrase on both paper and velvet. */
.almanac-page .reading-motif>.motif-line{color:#58331f;text-shadow:none}
.almanac-page .reading-motif>.eyebrow{color:#754e2e}
.reveal-motif>.motif-line{color:#fff0d1;text-shadow:0 1px 8px #03090d99}
/* Small supplied ornaments occupy their own space rather than covering copy. */
.section-ornament{width:72px;height:76px;display:grid;place-items:center;margin:0 auto 16px;pointer-events:none;user-select:none;flex-shrink:0}
.section-ornament>img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.section-ornament--sun-one{width:52px;height:72px;transform:rotate(-9deg)}
.section-ornament--sun-three{width:82px;height:54px;transform:rotate(-8deg)}
.section-ornament--heart-red{width:48px;height:72px;transform:rotate(7deg)}
.section-ornament--sun-one>img,.section-ornament--sun-three>img{filter:invert(88%) sepia(20%) saturate(450%) hue-rotate(342deg)}
.almanac-page .section-ornament--sun-three{width:64px;height:42px;margin:0 auto 13px;transform:rotate(8deg)}
.almanac-page .section-ornament>img{filter:none}
.almanac-page .reading-icon{width:34px;min-width:34px;height:49px;display:grid;place-items:start center;margin-top:3px}
.section-icon{display:block;width:34px;height:47px;object-fit:contain;pointer-events:none}
.section-icon--heart-dagger{transform:rotate(-8deg)}
.section-icon--sun-two{height:34px;transform:rotate(8deg);margin-top:5px}
.section-icon--heart-black{width:32px;height:43px;transform:rotate(7deg)}
@media(max-width:650px){.almanac-page .reading-icon{width:30px;min-width:30px}.section-icon{width:30px;height:43px}.section-icon--sun-two{height:31px}.section-icon--heart-black{width:28px;height:40px}.section-ornament{margin-bottom:14px}}


/* Equal side columns keep the brand at the exact header centre in every view. */
.site-header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:4px}
.header-leading{display:flex;align-items:center;justify-self:start;gap:8px;min-width:0}
.site-header .wordmark{justify-self:center;margin:0;transform:none;animation:none;transition:none}
.site-header .header-controls{min-width:0}
@media(max-width:650px){
 .header-leading{gap:0}
 .site-header .header-controls{gap:4px}
 .site-header .wordmark{width:clamp(100px,calc(100vw - 210px),154px);height:auto;aspect-ratio:3/1}
}

/* Give the shared reading scale room; narrow legacy text widths were tuned
   for much smaller fonts. Layout stays separate from typography tokens. */
.primary-button,.secondary-button,.letter-enter{max-width:100%;white-space:normal}
.journal-entry>span,.reading-item>div{min-width:0}
.future-ritual>span{min-width:0}
.stage-description,.drink-description,.recipe-description,.ingredients,.recipe-steps,.journal-entry p,.motif-line{overflow-wrap:break-word}
.site-footer{gap:16px}
.site-footer>span{min-width:0}
.tiny-star>svg,.footer-mark>svg,.salon-about>span>svg,.bottom-nav button>svg{width:24px;height:24px;flex-shrink:0}
.bottom-nav .nav-engraving{display:block;width:24px;height:24px;flex-shrink:0;object-fit:contain;pointer-events:none;user-select:none;opacity:1}
.bottom-nav button[aria-current=page] .nav-engraving{filter:drop-shadow(0 0 2px #d2ad7040)}
.selection-next svg{transform:rotate(180deg)}
.card-rail[data-card-selection]{overscroll-behavior-x:none;-webkit-overflow-scrolling:touch}
@media(max-width:650px){
 .salon-welcome h1,.ritual-stage h1,.drink-stage h1,.library-stage>h1{max-width:100%}
 .salon-welcome .stage-description,.drink-stage>.stage-description,.library-stage>.stage-description{max-width:100%}
 .site-footer{flex-wrap:wrap;justify-content:center;text-align:center}
 .site-footer>span:last-child{max-width:100%;text-align:center}
 .future-ritual{align-items:flex-start}
 .future-ritual small{min-width:80px;max-width:110px}
 .ritual-date{max-width:48%;text-align:right}
 .bottom-nav button{flex:1;min-width:0;max-width:25%}
 .bottom-nav button span{text-align:center}
}

/* Storage information is a separate, initially collapsed disclosure outside
   the literary card page and the journal introduction. */
.storage-info{max-width:500px;margin:22px auto 0;color:var(--muted);text-align:left}
.storage-info summary{cursor:pointer;min-height:44px;padding:12px 0;list-style-position:inside}
.storage-info summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.storage-info details[open] summary{border-bottom:1px solid var(--line)}
.storage-info p{margin:12px 0 0}
.drink-description,.recipe-description{white-space:pre-line}

/* Continuous salon light; scene states change emphasis without changing the room. */
[hidden]{display:none!important}
.salon-welcome{position:relative}
.salon-close{display:block;margin:8px auto 0;min-height:44px;color:var(--muted)}
.returning-greeting{font:var(--caption-medium);color:var(--gold);margin:0 0 8px}
.daily-shortcut{font:var(--button);color:var(--gold);min-height:44px;padding:8px 14px;max-width:100%;border-bottom:1px solid var(--line)}
.previous-ritual{min-height:44px;color:var(--muted)}
.salon-continuation{text-align:center;max-width:480px;margin:24px auto 0}
#freedom-hint{margin:0 auto 20px;max-width:360px}
.salon-cinema-eye{display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(190px,100%);min-height:44px;margin:0 auto 12px;gap:8px;color:var(--gold);font:var(--button)}
.salon-cinema-eye img{display:block;width:100%;height:auto;filter:drop-shadow(0 8px 10px #0004)}
.cinema-first-hint{max-width:310px;margin:0 auto;color:var(--muted)}
.object-label{display:block;position:absolute;left:0;right:0;bottom:-14px;text-align:center;font:var(--caption-medium);color:var(--paper);text-shadow:0 2px 6px #000;pointer-events:none}
body[data-stage=goodbye]{padding-bottom:env(safe-area-inset-bottom,0px)}
body[data-stage=goodbye] .scene-dimmer{opacity:.58;transition:opacity 1.2s}
body[data-stage=goodbye] #salon-light-field>div{transition:opacity 1s}
.afterglow-stage,.goodbye-stage{padding:70px 24px 45px;max-width:600px;margin:auto;text-align:center;min-height:calc(100svh - 200px);animation:scene-soft-arrival .55s both}
.afterglow-stage>h1,.goodbye-stage>h1{margin-bottom:24px}
.afterglow-stage>h2{margin:28px auto 12px}
.afterglow-stage>.salon-cinema-eye{margin:22px auto 12px;width:165px}
.afterglow-stage>.primary-button{max-width:100%;min-width:0;min-height:48px;margin:4px auto 10px}
.evening-quiet-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 22px;margin-top:12px}
.evening-quiet-actions button{min-height:44px;color:var(--muted)}
.goodbye-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100svh;animation:scene-soft-arrival 1.2s both}
.goodbye-stage>.secondary-button{margin-top:32px;min-height:48px;max-width:100%}
@keyframes scene-soft-arrival{from{opacity:0}to{opacity:1}}
.deck-demonstration .deck-card:last-child{animation:deck-demonstration .7s ease-in-out 1}
@keyframes deck-demonstration{0%,100%{translate:0}50%{translate:12px}}
.how-to-use{margin-top:20px;font:var(--body-sm)}
.how-to-use summary{cursor:pointer;min-height:44px;padding:10px 0}
.how-to-use p{margin:8px 0}
@media(max-width:650px){.afterglow-stage{padding:35px 22px 26px}.afterglow-stage>h1{font:var(--display-lg)}.salon-close{margin-bottom:2px}.salon-continuation{margin-top:20px}.salon-cup .object-label{bottom:-5px}}
@media(prefers-reduced-motion:reduce){.afterglow-stage,.goodbye-stage{animation:none}body[data-stage=goodbye] .scene-dimmer{transition:opacity .15s}}

/* The salon exists behind the curtains from the first frame. Five seconds of
   dissolving mist reveal it while the curtains travel for six seconds. */
.app-opening[data-entrance=opening] #salon-light-field{
 visibility:visible;
 animation:ceremony-object-emerge 5s var(--opening-delay,0s) ease-out both!important;
}
.opening-scene-background{
 pointer-events:none;
 animation:ceremony-object-emerge 5s var(--opening-delay,0s) ease-out both!important;
}
.scene-revealed .envelope-hint,.scene-revealed .full-invitation{animation:none;opacity:1}
.opening-stage .opening-fog{
 position:absolute;inset:-8%;z-index:1;overflow:hidden;pointer-events:none;
 background:radial-gradient(ellipse at 45% 35%,#b7c1c6f2 0%,#8c9ba6ec 48%,#526575f2 100%);
 animation:ceremony-fog-dissolve 5s var(--opening-delay,0s) cubic-bezier(.3,.05,.65,1) both!important;
}
.opening-fog .fog-bank{
 position:absolute;inset:-20%;display:block;
 background:radial-gradient(ellipse at 32% 44%,#e5e9eac9 0%,#c0cbd373 24%,transparent 57%);
 animation:ceremony-fog-drift-left 5s var(--opening-delay,0s) ease-out both!important;
}
.opening-fog .fog-bank-right{
 background:radial-gradient(ellipse at 70% 48%,#d4dce3bf 0%,#98acbf80 28%,transparent 62%);
 animation-name:ceremony-fog-drift-right!important;
}
.opening-fog .fog-bank-low{
 background:radial-gradient(ellipse at 48% 80%,#e3e3d6a6 0%,#a8bdca73 26%,transparent 59%);
 animation-name:ceremony-fog-drift-low!important;
}
@keyframes ceremony-object-emerge{0%{opacity:0}22%{opacity:.12}65%{opacity:.72}100%{opacity:1}}
@keyframes ceremony-fog-dissolve{0%,8%{opacity:1}35%{opacity:.82}75%{opacity:.27}100%{opacity:0}}
@keyframes ceremony-fog-drift-left{from{transform:translateX(0)}to{transform:translateX(-8%)}}
@keyframes ceremony-fog-drift-right{from{transform:translateX(0)}to{transform:translateX(8%)}}
@keyframes ceremony-fog-drift-low{from{transform:translateY(0)}to{transform:translateY(7%)}}
@media(prefers-reduced-motion:reduce){.opening-stage .opening-fog .fog-bank{animation:none!important}}

/* Keep small header controls easy to tap on either mobile platform. */
.header-controls .deck-choice,.header-controls .sound-button{min-width:44px;min-height:44px;width:44px;height:44px}
@media(max-width:650px){.site-header .wordmark{width:clamp(100px,calc(100vw - 218px),154px)}}

/* A focused Card of the Day preview, using the salon's original artwork. */
.daily-prototype-stage{max-width:680px;margin:auto;text-align:center;padding-bottom:36px}
.daily-prototype-stage .salon-welcome{padding-bottom:8px}
.prototype-ritual{max-width:440px;margin:0 auto;padding:14px 24px 32px}
.prototype-deck-art{position:relative;width:132px;height:216px;margin:12px auto 28px;transform:rotate(-5deg);filter:drop-shadow(0 18px 20px #060d1480)}
.prototype-deck-art:before,.prototype-deck-art:after{content:'';position:absolute;inset:0;background:#243943;border:1px solid #b69772;border-radius:6px;z-index:-1;transform:translate(5px,-2px) rotate(4deg)}
.prototype-deck-art:after{transform:translate(-4px,2px) rotate(-3deg)}
.prototype-deck-art .card-art{width:100%;height:100%;object-fit:fill;border-radius:6px}
.prototype-ritual h2{font:normal clamp(27px,5vw,35px)/1.25 var(--font-display);color:var(--paper);margin:16px 0}
.prototype-ritual-copy{color:#d4bc9e;margin:14px 0 24px;font-style:italic}
.prototype-colophon{color:#bcaa8d;font-size:13px;letter-spacing:.1em;margin:0 auto 30px}
.shuffle-actions{display:flex;flex-direction:column;align-items:center;gap:15px;margin-top:18px;min-height:95px}
.shuffle-actions [hidden]{display:none!important}
.shuffle-actions .accessible-gesture{margin:0;min-height:44px;padding:10px 18px}
.shuffle-actions .primary-button{min-width:196px}
.shuffle-invitation{min-height:28px}
.prototype-afterglow .afterglow-card{width:138px;margin:24px auto;transform:rotate(-4deg);filter:drop-shadow(0 12px 18px #040a1370)}
.afterglow-card .card-art{display:block;width:100%;height:auto;border-radius:6px}
.prototype-final-motif{max-width:420px;margin:30px auto;color:#fff0d1;font-style:italic;font-size:21px}
.prototype-afterglow .evening-quiet-actions{flex-direction:column;align-items:center}
@media(max-width:430px){.daily-prototype-stage .salon-welcome{padding-top:22px}.prototype-ritual{padding-top:4px}.prototype-deck-art{width:116px;height:190px;margin:10px auto 25px}.prototype-ritual h2{font-size:29px}.shuffle-actions{margin-top:10px}}
@media(prefers-reduced-motion:reduce){.deck.shuffling .deck-card{animation:none!important}.deck.compressing{animation:none!important}}
.daily-prototype .bottom-nav,.daily-prototype .site-footer{display:none!important}
.daily-prototype .shuffle-stage .gesture-hint{margin-top:8px}
.daily-prototype .circle-button{min-width:44px;min-height:44px}

/* Every entrance pauses at the tray; the letter unfolds only after a touch. */
.envelope-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100svh - 106px);padding:30px 18px 70px}
.invitation-envelope{width:min(88vw,420px);max-width:100%;margin:0 auto 18px;animation:ceremony-tray-arrive .9s ease-out both;touch-action:manipulation}
.envelope-preview{position:absolute;top:27%;left:22%;width:56%;color:#4b3026;text-align:center;font:normal clamp(16px,4.5vw,23px)/1.45 var(--font-body);pointer-events:none}
.envelope-preview>span{display:block;font-family:var(--font-display);letter-spacing:.1em;margin-top:5px}
.envelope-hint{position:relative;margin:0 auto;min-height:44px;animation:ceremony-tray-arrive .9s .35s ease-out both;touch-action:manipulation}
.opening-scene-background .invitation-envelope,.opening-scene-background .envelope-hint{animation:none!important}
@keyframes ceremony-tray-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(max-height:500px) and (min-width:600px){.envelope-stage{min-height:calc(100svh - 85px);padding:12px}.invitation-envelope{width:240px;margin-bottom:0}.envelope-preview{font-size:15px}.envelope-hint{padding-top:0}}
@media(prefers-reduced-motion:reduce){.invitation-envelope,.envelope-hint{animation:none!important}}

.recipe-footer{padding:28px 0 20px;text-align:center}.recipe-footer .primary-button{width:100%;max-width:320px;min-height:48px}
