/* Shared art direction: เรือนลับรับชะตา */
:root{--house-ink:#0e1b17;--house-wood:#2d241c;--house-gold:#c4a16a;--house-paper:#eadab5;--house-jade:#97ad9a;--house-red:#943b2c;--house-purple:#52384f}
html{background:var(--house-ink)}body{color:var(--house-paper);background:radial-gradient(ellipse at 70% 20%,#3452432b,transparent 65%),var(--house-ink)}
body,button{font-family:Tahoma,'Leelawadee UI',sans-serif}a,button{touch-action:manipulation}button:focus-visible,a:focus-visible{outline:3px solid #edd297;outline-offset:5px}
.game-shell{background:var(--house-ink)}.game-bar,body>header{background:linear-gradient(90deg,#171f17,#29251b,#171f17);border-bottom:1px solid #b9996047;box-shadow:0 3px 18px #0003}.brand{color:#ddc390;letter-spacing:.7px}
.game-footer,body>footer{background:#111d17;color:#a3b29d;border-color:#b9996033}.game-bar #scene-name{color:#b2c0ac}
.lobby{background:linear-gradient(0deg,#0c1915e0,transparent 55%),linear-gradient(90deg,#10221b88,#10221b55),url('house-hall.png') center 50%/cover;padding-top:clamp(24px,4vh,48px)}
.lobby:before{border-color:#bd9e6552;box-shadow:inset 0 0 60px #111b1122}.welcome{max-width:700px;margin:auto}.welcome .eyebrow{font-size:10px;color:#d7c190;letter-spacing:2px}.welcome h1{font-family:Georgia,'Leelawadee UI',Tahoma,serif;font-weight:500;line-height:1.2;font-size:clamp(44px,5.2vw,72px);color:#f1e2bf;text-shadow:0 4px 20px #05120ff0}.welcome h1 span{color:#d3ad71}.welcome>p:not(.eyebrow){color:#d2d8c5;text-shadow:0 2px 8px #000}.lobby-tag{background:#17271dd6;padding:9px 22px;border:1px solid #c3a2685e;border-radius:2px;color:#e7d3aa;letter-spacing:1px;box-shadow:0 4px 15px #0002}
.rooms{gap:32px;margin-top:26px;max-width:960px;perspective:1100px}.room{border-radius:110px 110px 5px 5px;border:1px solid #c5a16b96;box-shadow:inset 0 0 0 6px #3e3027,0 16px 40px #0007;min-height:clamp(310px,43vh,440px);background:#17241b}.room:before{content:'';position:absolute;inset:7px;border:1px solid #bca16c65;border-radius:103px 103px 2px 2px;pointer-events:none;z-index:2}.room:after{background:linear-gradient(0deg,#112019ff 0%,#112019eb 27%,#11201922 72%)}.tarot-room:after{background:linear-gradient(0deg,#251d27ff 0%,#251d27eb 27%,#251d2710 72%)}.room:hover{transform:translateY(-4px);border-color:#f0cd8b;box-shadow:0 18px 55px #0008,0 0 30px #c8a35a16}.room-image{transition:transform 1.4s cubic-bezier(.16,1,.3,1),filter 1.4s;filter:saturate(.92)}.fortune-room .room-image{background-image:url('house-pavilion.png');background-position:center 42%}.tarot-room .room-image{background-image:url('thai-spirit-medium.png');background-position:center 32%}.room-number{left:50%;transform:translateX(-50%);top:17px;border-radius:2px;background:#1c251cf0;border-color:#c5a16b80;letter-spacing:1px;padding:7px 16px}.room-copy{padding:25px 30px;z-index:1}.room h2{color:#f1dfba;font-family:Georgia,'Leelawadee UI',Tahoma,serif}.room p{color:#c6cdbb}.room-type{color:#c6af7d}.enter-room{color:#efdaad;border-color:#c5a16b55;min-height:44px}.enter-room b{transition:transform .4s}.room:hover .enter-room b{transform:translateX(5px)}.lobby-bottom{color:#c4cdb7;padding:14px 20px;background:#102017b8;border:1px solid #bba16b26;border-radius:3px;max-width:960px;margin-top:20px}.lobby-bottom>span:last-child{color:#aab8a2}.lobby-mist{background:radial-gradient(ellipse at 30% 80%,#c9dccb22,transparent 60%);animation:house-mist 24s ease-in-out infinite alternate}
.bar-actions a,.bar-actions button,#retry,.back-home,.back{border-radius:3px;border-color:#bda16b70;background:linear-gradient(#364333aa,#1c2b20e6);color:#e7d4ac;min-height:44px}.scene-loading{background:radial-gradient(ellipse,#38432b,#102018 70%)}.loading-seal{color:#d2ae72;text-shadow:0 0 45px #d6b56f35;animation:house-lamp 2s ease-in-out infinite alternate}.game-scene:not([hidden]){animation:house-enter .85s cubic-bezier(.16,1,.3,1)}
/* All game objects remain live code above the illustrated backgrounds. */
.fortune-page{background:radial-gradient(ellipse at 20% 30%,#a9803320,transparent 70%),var(--house-ink)}.fortune-page .scene{box-shadow:inset 0 0 60px #12201466;filter:none}.fortune-page .game-backdrop{background-image:url('house-pavilion.png');background-position:center 66%;filter:none}.fortune-page .stage[data-phase="lifting"] .game-backdrop,.fortune-page .stage[data-phase="shaking"] .game-backdrop,.fortune-page .stage[data-phase="releasing"] .game-backdrop{filter:brightness(.88);transform:scale(1.025)}.fortune-page .result{background-image:linear-gradient(#182b1bd9,#111c17e8),url('house-pavilion.png')}.fortune-page .stage{border:1px solid #bd9e667d;border-radius:5px;box-shadow:0 18px 55px #0007,inset 0 0 0 4px #987c4020}.fortune-page .stage:before,.fortune-page .stage:after{background:#14231b;color:#d0ad6e}.fortune-page .controls{background:linear-gradient(#253728,#16251b);border-top:1px solid #b69d6526}.fortune-page .primary,.primary{border-radius:3px;background:linear-gradient(120deg,#51442c,#303b28);border:1px solid #c5a16b99;box-shadow:inset 0 1px 0 #ffe2a52b,0 4px 0 #101a12,0 8px 22px #0003;color:#f5e6c3;min-height:52px;letter-spacing:.3px}.fortune-page .primary:hover,.primary:hover{background:linear-gradient(120deg,#6b5633,#3f5032);border-color:#e4bf7d}.fortune-page .primary:disabled,.primary:disabled{opacity:.65;cursor:wait}.fortune-page .copy h1 span{color:#d2ae72}.fortune-page .eyebrow,.eyebrow{color:#c8ac78}.fortune-page .intro{color:#bfcbb6}.fortune-page .hint{color:#c3cfb9}.fortune-page .scene-label{color:#f0dcb3;background:#17271cce;border-color:#c6a36655;letter-spacing:1px;backdrop-filter:none}.fortune-page .game-aura{background:radial-gradient(ellipse at 50% 65%,#e7bd673d,transparent 60%)}.fortune-page .table-mist{animation:house-mist 22s ease-in-out infinite alternate;background:radial-gradient(ellipse,#c4d3b41c,transparent 65%)}.fortune-page .stage[data-phase="idle"] .cup-wrap{animation:none}.fortune-page .smoke{animation-duration:16s;opacity:.14}.fortune-page .lamp-glow{animation:house-lamp 7s ease-in-out infinite alternate}
.fortune-page .paper{background:radial-gradient(ellipse at 50% 0%,#fff1ce66,transparent 75%),linear-gradient(110deg,#decea7,#f2e4bf 50%,#dfcda5);color:#403c2c;border:1px solid #b69b64;outline:1px solid #b69b6470;outline-offset:-10px;border-radius:3px;box-shadow:0 20px 50px #0006}.fortune-page .paper h2{color:#2d4432}.fortune-page .paper p{color:#4d5039;line-height:1.95}.fortune-page .paper .ornament{color:#875039}.fortune-page .paper .number{color:#875039}.fortune-page .paper .tip{border-color:#ae9563}.fortune-page .paper .treat{background:#bac19b3d;color:#49593c}
/* The reader, real selectable cards and table share one illustrated scene. */
body:not(.fortune-page):not(:has(.game-shell)){background:radial-gradient(ellipse at 50% 25%,#49364a2e,transparent 65%),#122019}.parlour{background:radial-gradient(ellipse at 50% 25%,#62495a22,transparent 80%),#17271e;border:1px solid #bd9e667d;border-radius:5px;box-shadow:0 18px 55px #0006}.parlour:before{border-color:#c5a16b2b}.tarot-table{background-image:url('thai-spirit-medium.png');background-color:#30272d;background-position:50% 50%;border-color:#b99a665e;border-radius:4px}.tarot-table .card-back{background:repeating-linear-gradient(45deg,transparent 0 9px,#c5a16b0c 10px 11px),linear-gradient(140deg,#5a4054,#312a3d);border-color:#c9a975;box-shadow:0 6px 13px #140f1788}.tarot-table .secondary{background:linear-gradient(#4a3546ee,#2f2839ee);border:1px solid #c5a16b99;border-radius:3px;color:#ead9b6;min-height:44px}.tarot-table:before{background:linear-gradient(0deg,#24172c66,transparent 28%)}.table-candlelight{animation:house-lamp 8s ease-in-out infinite alternate}.table-invitation{color:#f4dfb6;letter-spacing:.5px}.deck-intro h2,.intro h1{color:#eeddb9}.deck-intro p,.subtitle{color:#bcc8b4}.fine-label,.upright{color:#cbb17b}.reading-layout{padding:20px;align-items:center}.reading-copy{padding:24px;background:linear-gradient(115deg,#ecdfba,#dfcea7);border:1px solid #b99b65;outline:1px solid #a88b5e66;outline-offset:-8px;border-radius:3px;color:#3c4433;box-shadow:0 12px 30px #0004}.reading-copy h2{color:#2d4432}.reading-copy h3{color:#59462f}.reading-copy p{color:#50503e;line-height:1.95}.reading-copy .fine-label,.reading-copy .english{color:#835238}.reading-copy .work-reading h4{color:#73543a}.reading-copy .work-reading{border-color:#a78b5a66}.reading-copy .oracle-tip{background:#9cae7a1c;border-color:#a68b5a}.reading-copy .oracle-tip span{color:#73543a}.reading-rule{background:#af946166}.face-card{border-color:#c4a16a;box-shadow:0 14px 35px #0006}.parlour .reading-note{color:#a7b59e}
@keyframes house-enter{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}@keyframes house-mist{from{transform:translateX(-3%);opacity:.4}to{transform:translateX(4%);opacity:.8}}@keyframes house-lamp{0%,100%{opacity:.55}35%{opacity:.7}60%{opacity:.6}80%{opacity:.8}}
@media(max-height:740px) and (min-width:701px){.welcome h1{font-size:44px}.rooms{margin-top:20px}.room{min-height:300px}.lobby{padding-top:22px}.lobby-bottom{margin-top:16px;padding:9px 18px}}
@media(max-width:700px){.welcome h1{font-size:48px}.welcome h1 span{margin-left:0}.rooms{gap:22px;max-width:460px}.room{min-height:340px}.room-copy{padding:25px}.lobby-bottom{max-width:460px;padding:14px}.reading-layout{padding:0}.reading-copy{padding:25px}.room-number{top:20px}.lobby{background-position:center top}.welcome .eyebrow{font-size:9px;letter-spacing:1px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}
/* A doorway opens once each room has loaded. It never blocks input. */
.game-scene:has(#loading[hidden]):before,.game-scene:has(#loading[hidden]):after{content:'';position:absolute;top:0;bottom:0;width:50%;z-index:3;pointer-events:none;background:repeating-linear-gradient(90deg,#2a251c 0 12px,#332b20 13px 15px,#26271d 16px 65px);border:1px solid #b6955e66;box-shadow:inset 0 0 80px #070f0aaa;animation:house-door-left 1.1s cubic-bezier(.22,1,.36,1) both}.game-scene:has(#loading[hidden]):before{left:0;transform-origin:left center}.game-scene:has(#loading[hidden]):after{right:0;transform-origin:right center;animation-name:house-door-right}
@keyframes house-door-left{from{transform:translateX(0);opacity:1}85%{opacity:.8}to{transform:translateX(-102%);opacity:0}}
@keyframes house-door-right{from{transform:translateX(0);opacity:1}85%{opacity:.8}to{transform:translateX(102%);opacity:0}}
@media(prefers-reduced-motion:reduce){.game-scene:before,.game-scene:after{display:none!important}}
/* Wide tables use a matching wide painting; portrait devices keep the full seated reader. */
.tarot-table{background-image:url('thai-spirit-medium.png');background-position:50% 0}
@media(max-width:820px){.tarot-table{background-image:url('thai-spirit-medium.png');background-position:50% 0}}
/* Room labels live with the captions, leaving character faces unobstructed. */
.room .room-copy .room-number{position:static;float:right;display:inline-block;transform:none;margin:0 0 10px 12px;padding:5px 10px;font-size:10px;line-height:1.5;white-space:nowrap}
.room .room-copy h2{clear:both}
.tarot-room .room-image{background-position:50% 0}


@media(max-width:620px){.tarot-room .room-image,.tarot-table{background-position:64% 0}}
