/* 달빛 사주당 · 머무는 기능들 */

/* 반응하기 */
.emo{position:absolute;bottom:96%;left:50%;transform:translateX(-50%);font-family:var(--hand);font-size:clamp(15px,2.3cqw,21px);color:var(--paper);text-shadow:0 1px 3px rgba(0,0,0,.7);white-space:nowrap;animation:emoUp 2.4s ease-out forwards;z-index:5;pointer-events:none}
@keyframes emoUp{from{opacity:0;transform:translate(-50%,30%)}15%{opacity:1}to{opacity:0;transform:translate(-50%,-90%)}}
.seat.emo-nod .who img{animation:nod .45s ease-in-out 4}
@keyframes nod{50%{transform:translateY(7%) rotate(0)}}
.seat.emo-clap .who img{animation:clapShake .18s ease-in-out 10}
@keyframes clapShake{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
.seat.emo-tea .who img{animation:sip 2.2s ease-in-out 1}
@keyframes sip{30%,70%{transform:rotate(-9deg) translateY(-2%)}}
.seat.emo-yawn .who img{animation:yawn 2.2s ease-in-out 1}
@keyframes yawn{40%,60%{transform:scale(1.04,1.1)}}

/* 행동 바 — 무대 아래 마루 판자 한 장: 말하기 줄 + 반응 + 마당 도구. 선 없이 톤 단계로만 구분 */
:root{--walnut:#231915;--walnut-2:#33241d;--walnut-3:#47332a}
.dock{background:var(--walnut);padding:12px 14px 10px;margin-top:0;border-radius:0}
.stage{border-radius:8px 8px 0 0}
.dock input{background:var(--walnut-2);border:0;color:var(--paper);padding:11px 16px;font-size:15px}
.dock input::placeholder{color:#a8927e}
.dock input:focus-visible{outline:2px solid var(--gold);outline-offset:0}
.dock .btn{padding:10px 18px;font-size:15px}
.dock .btn.line{background:var(--walnut-3);border:0;color:var(--paper)}
.dock .mystate{color:#d9c6a8}
.acts{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;background:var(--walnut);padding:0 14px 14px;border-radius:0 0 8px 8px}
.emos{display:flex;flex-wrap:wrap;gap:6px}
.act{border:0;background:var(--walnut-2);color:#f1e4cc;border-radius:999px;padding:8px 14px;font-family:var(--body);font-size:14px;line-height:1.2;white-space:nowrap;transition:background-color .15s,transform .1s}
.act:hover{background:var(--walnut-3)}
.act:active{transform:scale(.96)}
.act[aria-pressed="true"]{background:var(--gold);color:var(--ink)}
.emo-btn{font-family:var(--body);font-size:14px;padding:8px 14px}
.emo-btn.hint{background:var(--gold);color:var(--ink);animation:pulseBtn .6s infinite alternate}
@keyframes pulseBtn{to{transform:scale(1.06)}}
@media (max-width:620px){.acts{gap:8px}.act{padding:8px 12px;font-size:13.5px}}
@media (prefers-reduced-motion:reduce){.act,.emo-btn.hint{transition:none;animation:none}}

/* 소원등 */
#lanterns{position:absolute;left:0;right:0;top:0;height:30%;z-index:50;pointer-events:none}
.lantern{position:absolute;top:var(--len,6%);width:2.4cqw;height:3.2cqw;padding:0;border:0;border-radius:42% 42% 38% 38%;background:radial-gradient(circle at 50% 40%,#fff4cf 0,var(--lc) 55%,color-mix(in srgb,var(--lc) 70%,#000) 100%);box-shadow:0 0 1.6cqw .3cqw color-mix(in srgb,var(--lc) 55%,transparent);pointer-events:auto;cursor:pointer;transform-origin:50% -200%;animation:lsway 4s ease-in-out infinite alternate}
.lantern::before{content:"";position:absolute;left:50%;bottom:100%;width:1px;height:calc(var(--len,6%) * 10);max-height:14cqw;background:rgba(60,35,20,.7)}
.lantern::after{content:"";position:absolute;left:35%;right:35%;top:100%;height:.9cqw;background:var(--lc);border-radius:0 0 2px 2px;opacity:.8}
.lantern.rise{animation:rise 2.6s cubic-bezier(.2,.7,.3,1) 1,lsway 4s ease-in-out 2.6s infinite alternate}
@keyframes lsway{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}
@keyframes rise{from{transform:translateY(500%) scale(.6);opacity:0}30%{opacity:1}to{transform:none}}
.wishtip{position:absolute;top:32%;transform:translateX(-30%);background:var(--paper);color:var(--ink);border-radius:8px;padding:6px 10px;font-size:13.5px;max-width:42cqw;box-shadow:0 3px 0 rgba(0,0,0,.2);pointer-events:none;animation:pop .2s ease-out;z-index:3}
.wishtip b{display:block;font-family:var(--hand);font-weight:400;font-size:16px;color:var(--red)}

/* 오늘의 일진 · 개장 */
.opening{position:absolute;inset:0;z-index:150;display:grid;place-content:center;text-align:center;gap:10px;padding:8%;background:radial-gradient(ellipse at 50% 40%,rgba(40,25,20,.55),rgba(14,10,18,.85));color:var(--paper);animation:fadeIn .8s ease-out}
.opening small{font-family:var(--hand);font-size:clamp(18px,3cqw,28px);color:var(--gold)}
.opening h3{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(24px,5cqw,48px)}
.opening p{margin:0 auto;max-width:36em;font-size:clamp(14px,2cqw,19px);line-height:1.6}
@keyframes fadeIn{from{opacity:0}}

/* 부적 벽 */
.wallsec{margin-top:22px}
.wallsec h2{margin:0;font-family:var(--display);font-weight:400;font-size:20px}
.wallsec .sub{margin:2px 0 12px;color:#9d8f99;font-size:13px}
.wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.slip{background:#f0c35a url(img/bujeok.webp) center/cover;color:#7a1f18;border-radius:3px;padding:16px 12px 12px;text-align:center;font-family:var(--display);min-height:120px;display:flex;flex-direction:column;justify-content:center;gap:6px;transform:rotate(var(--r,0deg))}
.slip:nth-child(3n){--r:-1.5deg}.slip:nth-child(3n+1){--r:1.2deg}
.slip p{margin:0;font-size:15px;line-height:1.4;overflow-wrap:anywhere}
.slip span{font-family:var(--hand);font-size:15px;color:var(--red)}
.slip.fresh{animation:pop .4s ease-out}

/* 도장 */
.stamps{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:6px 0}
.stamp{aspect-ratio:1;border-radius:50%;border:2px dashed #d6c7a6;display:grid;place-items:center;color:#c8b89a;font-size:14px}
.stamp.on{border:2px solid var(--red);color:var(--red);font-family:var(--display);font-size:22px;transform:rotate(-8deg);background:#fdeee6}

/* 궁합 상대 */
.partner{border-top:1px dashed #d6c7a6;padding-top:10px;margin-top:4px}

/* 마룻바닥 걷기 */
.seat.walker .who{bottom:2%}
.seat.walker .nm{top:100%}
.seat.walker::before{content:"";position:absolute;left:22%;right:22%;bottom:0;height:9%;border-radius:50%;background:rgba(40,20,10,.28);filter:blur(1px)}
#stage{cursor:pointer}

/* 입구 마당 장면 */
.bg.gate{display:none;object-position:50% 50%}
.gateplaque,.gatesign{display:none}
.stage.scene-gate .bg.wide,.stage.scene-gate .bg.tall{display:none}
.stage.scene-gate .bg.gate{display:block}
.stage.scene-gate .lampglow,.stage.scene-gate .plaque,.stage.scene-gate .door,.stage.scene-gate .cat,.stage.scene-gate #people,.stage.scene-gate #lanterns{display:none}
.stage.scene-gate .gateplaque{display:grid;place-items:center;position:absolute;left:43.4%;width:16.1%;top:27.5%;height:4.8%;font-family:var(--display);color:#f3d48e;font-size:1.9cqw;letter-spacing:.1em;white-space:nowrap;text-shadow:0 1px 0 rgba(0,0,0,.6);pointer-events:none}
.stage.scene-gate .gatesign{display:block;position:absolute;left:50%;top:61%;transform:translateX(-50%);background:var(--paper);color:var(--ink);font-family:var(--hand);font-size:clamp(14px,2.2cqw,20px);padding:.2cqw 1.2cqw;border-radius:4px;white-space:nowrap;z-index:60;box-shadow:0 2px 0 rgba(0,0,0,.2);animation:bob 2.4s ease-in-out infinite;pointer-events:none}
@keyframes bob{50%{transform:translate(-50%,-12%)}}
.stage.scene-gate .doorsign,.stage.scene-gate #atdoor{display:none}
@media (max-width:620px){.stage.scene-gate .gateplaque{left:38%;width:29.3%;top:27.5%;font-size:3.3cqw}}
.stage.fading::after{content:"";position:absolute;inset:0;background:#0e0a12;z-index:180;animation:fadeBlk .76s ease-in-out}
@keyframes fadeBlk{0%,100%{opacity:0}50%{opacity:1}}

/* 걷는 그림: 왼발 그림과 그 거울상(오른발)을 번갈아 보여 줌 */
.who.upright{left:6%;width:88%}
.atdoor .who img{animation:none}
.who.upright{position:absolute}
.who.upright img{animation:none}
.who.upright img.fr{position:absolute;left:0;bottom:0;width:100%;visibility:hidden}
.seat.walking .who img.fl{animation:footL var(--step,380ms) steps(1) infinite}
.seat.walking .who img.fr{animation:footR var(--step,380ms) steps(1) infinite}
@keyframes footL{0%{visibility:visible}50%{visibility:hidden}}
@keyframes footR{0%{visibility:hidden}50%{visibility:visible}}
@media (prefers-reduced-motion:reduce){.seat.walking .who img.fl,.seat.walking .who img.fr{animation:none}}

/* 마당 놀거리: 감 · 평상 · 날씨 · 안방 그림 · 데모 */
#yardItems,.bench{display:none}
.stage.scene-gate #yardItems{display:block}
.stage.scene-gate .bench{display:block}
.gam{position:absolute;width:1.9cqw;aspect-ratio:1;transform:translate(-50%,-50%);border:0;padding:0;border-radius:50%;background:#e8742a;box-shadow:inset -.35cqw -.35cqw 0 #b9531a,inset .25cqw .25cqw 0 #f6a25b;cursor:pointer;z-index:40;animation:gamBob 2.6s ease-in-out infinite}
.gam::after{content:"";position:absolute;left:30%;top:-22%;width:40%;height:34%;border-radius:50% 50% 30% 30%;background:#4f7a3a}
.gam:hover{filter:brightness(1.15)}
.gam.got{animation:gamGot .9s ease-out forwards}
@keyframes gamBob{50%{transform:translate(-50%,-62%)}}
@keyframes gamGot{to{transform:translate(-50%,-260%) scale(1.4);opacity:0}}
.gamplus{position:absolute;transform:translate(-50%,-180%);font-family:var(--hand);color:var(--paper);font-size:clamp(16px,2.4cqw,22px);text-shadow:0 1px 3px rgba(0,0,0,.7);z-index:41;pointer-events:none;animation:emoUp 1.1s ease-out forwards}
.basket{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.gamdot{width:22px;height:22px;border-radius:50%;background:#e8742a;box-shadow:inset -3px -3px 0 #b9531a}

.bench{position:absolute;left:68%;width:26%;top:72.5%;height:3.2cqw;z-index:30}
.bench::before{content:"";position:absolute;inset:0;border-radius:3px;background:#7a4a2a;box-shadow:inset 0 .5cqw 0 #9a6640,0 .35cqw 0 #4e2e19}
.bench::after{content:"";position:absolute;left:6%;right:6%;top:100%;height:2.2cqw;background:linear-gradient(90deg,#4e2e19 0 5%,transparent 5% 95%,#4e2e19 95%)}
.benchspot{position:absolute;top:-180%;width:24%;height:280%;transform:translateX(-50%);border:0;padding:0;background:none;cursor:pointer;border-radius:8px}
.benchspot:hover,.benchspot:focus-visible{background:rgba(255,235,190,.18)}
@media (max-width:620px){.bench{left:62%;width:36%}}

#weather{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:120}
.wx{position:absolute;right:1.6%;top:2.5%;z-index:125;background:rgba(27,22,34,.62);color:var(--paper);font-size:clamp(11px,1.4cqw,14px);padding:.3cqw 1cqw;border-radius:999px;font-variant-numeric:tabular-nums;pointer-events:none}
.stage.foggy::before{content:"";position:absolute;inset:0;background:rgba(225,225,235,.2);z-index:115;pointer-events:none}

.anbang{position:relative;height:170px;border-radius:8px;overflow:hidden;margin:4px 0 14px;background:#2c1d14}
.anbang img{width:100%;height:100%;object-fit:cover;object-position:50% 50%;display:block}
.anbang .candle{position:absolute;inset:0;background:radial-gradient(circle at 92% 62%,rgba(255,200,110,.35),transparent 40%);animation:candleFl 2.4s ease-in-out infinite alternate;pointer-events:none}
@keyframes candleFl{to{opacity:.6}}

.demotag{position:absolute;left:1.6%;top:2.5%;z-index:125;background:var(--red);color:var(--paper);font-size:clamp(11px,1.4cqw,14px);padding:.3cqw 1cqw;border-radius:999px;pointer-events:none}

/* 오늘의 일진 족자: 평소엔 말려 있고, 누르면 펼쳐짐 */
.scroll{position:absolute;left:var(--scrollX,29%);top:var(--scrollY,36%);z-index:46;width:max-content;display:flex;flex-direction:column;align-items:center}
.stage.scene-maru .scroll{--scrollX:2.5%;--scrollY:22%}
@media (max-width:620px){.scroll{--scrollX:3%;--scrollY:36%}.stage.scene-maru .scroll{--scrollX:3%;--scrollY:17%}}
.scroll .rod{display:block;position:relative;width:13cqw;min-width:96px;height:auto;border:0;padding:.5cqw .6cqw;border-radius:4px;background:#5b3a28;color:#f3d48e;font-family:var(--display);font-size:clamp(12px,1.5cqw,15px);cursor:pointer;box-shadow:0 2px 0 #3a2418}
.scroll .rod::before,.scroll .rod::after{content:"";position:absolute;top:50%;width:.8cqw;height:.8cqw;min-width:6px;min-height:6px;border-radius:50%;background:#e8b24f;transform:translateY(-50%)}
.scroll .rod::before{left:-.5cqw}.scroll .rod::after{right:-.5cqw}
.scroll .rod.low{height:.9cqw;min-height:6px;padding:0;width:13cqw;min-width:96px;cursor:default;margin-top:-1px}
.scroll .rod.low::before,.scroll .rod.low::after{display:none}
.scroll .paper{width:12cqw;min-width:88px;max-height:0;overflow:hidden;background:var(--paper);color:var(--ink);transition:max-height .7s cubic-bezier(.2,.7,.3,1),width .4s;box-shadow:inset 0 0 0 .3cqw #f0e2c2}
.scroll .paper p{margin:0;padding:1.2cqw 1.2cqw 1.4cqw;font-size:clamp(12px,1.45cqw,15px);line-height:1.55}
.scroll.open .rod,.scroll.open .rod.low{width:28cqw;max-width:320px}
.scroll.open .paper{width:27cqw;max-width:310px;max-height:40cqw}
@media (max-width:620px){.scroll.open .rod,.scroll.open .rod.low{width:62cqw}.scroll.open .paper{width:60cqw;max-height:70cqw}}
.scroll:not(.open) .rod{animation:scrollSway 3.6s ease-in-out infinite;transform-origin:50% -40%}
@keyframes scrollSway{50%{transform:rotate(1.5deg)}}
@media (prefers-reduced-motion:reduce){.scroll .paper{transition:none}.scroll:not(.open) .rod{animation:none}}

/* 머리 위 일간 표시 · 손님 카드 */
.ilgan{position:absolute;left:50%;bottom:calc(100% + .3cqw);transform:translateX(-50%);display:flex;align-items:center;gap:.3em;white-space:nowrap;background:rgba(27,22,34,.72);color:var(--paper);font-size:clamp(10px,1.3cqw,13px);line-height:1;padding:.25em .55em .25em .35em;border-radius:999px;pointer-events:auto;cursor:pointer;animation:ilBob 3s ease-in-out infinite;z-index:3}
.ilgan i{width:.8em;height:.8em;border-radius:50%;background:var(--elc);box-shadow:0 0 .5em var(--elc)}
.ilgan.el-mok{--elc:#7fc49a}.ilgan.el-hwa{--elc:#ff7a5c}.ilgan.el-to{--elc:#e8b24f}.ilgan.el-geum{--elc:#e6e2da}.ilgan.el-su{--elc:#6f9cff}
@keyframes ilBob{50%{transform:translate(-50%,-18%)}}
.seat.has-il .bub,.seat.has-il .emo{bottom:122%}
.seat.walker.has-il .bub,.seat.walker.has-il .emo{bottom:150%}
.gcard{position:absolute;z-index:140;width:min(260px,70cqw);background:var(--paper);color:var(--ink);border-radius:10px;padding:12px 14px;box-shadow:0 6px 18px rgba(0,0,0,.35);animation:pop .2s ease-out}
.gcard b{display:block;font-family:var(--display);font-weight:400;font-size:18px}
.gcard .meta{display:block;color:var(--red);font-size:13px;margin-bottom:6px}
.gcard p{margin:0 0 6px;font-size:14px;line-height:1.5}
.gcard .rel{color:var(--ink-2)}
.gcard .row2{display:flex;gap:6px;margin-top:8px}
.gcard .act{background:var(--paper-2);color:var(--ink)}
.gcard .act:hover{background:#e6d6b4}
.ilopt{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--ink-2);margin:4px 0 10px}
@media (prefers-reduced-motion:reduce){.ilgan{animation:none}}

/* 하이멜로디는 글자가 넓어서 손글씨 크기를 조금 줄임 */
.nm{font-size:clamp(11px,1.55cqw,16px)!important;max-width:24cqw!important;line-height:1.25!important}
.bub{font-size:clamp(14px,2cqw,19px)!important;max-width:32cqw!important;line-height:1.3!important}
.emo{font-size:clamp(13px,1.9cqw,18px)!important}
.doorsign,.stage.scene-gate .gatesign{font-size:clamp(13px,1.9cqw,18px)!important}
.cat .t,.gamplus{font-size:clamp(12px,1.6cqw,16px)!important}

/* 안방 장면: 무대가 도사님 방으로 바뀌고, 대화는 바로 아래 한지 판에서 */
.bg.room,.anbang-glow,.dosa-say,#anbangMe{display:none}
.stage.scene-anbang .bg.room{display:block;object-fit:cover;object-position:50% 38%}
.stage.scene-anbang .anbang-glow{display:block;position:absolute;inset:0;background:radial-gradient(ellipse 40% 50% at 88% 60%,rgba(255,200,110,.28),transparent 70%);animation:candleFl 2.4s ease-in-out infinite alternate;pointer-events:none;z-index:2}
.stage.scene-anbang :is(.bg.wide,.bg.tall,.bg.gate,.lampglow,.plaque,.door,.cat,#people,#walkers,#lanterns,.bench,#yardItems,.gateplaque,.gatesign,.doorsign,#atdoor,.scroll,.demotag,.standing){display:none!important}
.stage.scene-anbang #anbangMe{display:block;position:absolute;left:50%;bottom:-3%;width:20cqw;height:24cqw;transform:translateX(-50%);z-index:20}
#anbangMe .cu{position:absolute;left:-10%;width:120%;bottom:0}
#anbangMe .who{position:absolute;left:10%;width:80%;bottom:14%}
.stage.scene-anbang .dosa-say:not([hidden]){display:block;position:absolute;left:58%;top:12%;z-index:25;background:var(--paper);color:var(--ink);font-family:var(--hand);font-size:clamp(14px,2cqw,19px);padding:.6cqw 1.4cqw;border-radius:1.6cqw;box-shadow:0 2px 0 rgba(0,0,0,.15);animation:pop .2s ease-out}
.stage.scene-anbang .dosa-say::after{content:"";position:absolute;left:-1cqw;top:55%;border:.7cqw solid transparent;border-right-color:var(--paper)}
@media (max-width:620px){.stage.scene-anbang #anbangMe{width:30cqw;height:36cqw}.stage.scene-anbang .dosa-say:not([hidden]){left:52%;top:8%}}
.anbang-panel{background:var(--paper);color:var(--ink);padding:18px 18px 16px;border-radius:0}
.anbang-panel h2{margin:0 0 2px;font-family:var(--display);font-weight:400;font-size:22px}
.anbang-panel .convo{max-height:none}
/* 임시 안방(도사 얼굴 그림)일 때: 그림을 작게 가운데, 나는 왼쪽 앞 방석에 */
.stage.scene-anbang.temp-room{background:#2a1a12}
.stage.scene-anbang.temp-room .bg.room{object-fit:contain;object-position:50% 50%;inset:4% 0 auto 0;height:92%}
.stage.scene-anbang.temp-room #anbangMe{left:18%}
.stage.scene-anbang.temp-room .dosa-say:not([hidden]){left:66%;top:16%}

/* 진짜 안방 그림: 그림 속 방석 위에 내가 앉음 */
.stage.scene-anbang:not(.temp-room) #anbangMe{left:50%;bottom:9%;width:15cqw;height:18cqw}
.stage.scene-anbang:not(.temp-room) #anbangMe .cu{display:none}
.stage.scene-anbang:not(.temp-room) #anbangMe .who{bottom:0;left:6%;width:88%}
.stage.scene-anbang:not(.temp-room) .anbang-glow{background:radial-gradient(ellipse 22% 30% at 82% 44%,rgba(255,200,110,.3),transparent 70%)}
.stage.scene-anbang:not(.temp-room) .dosa-say:not([hidden]){left:60%;top:12%}
@media (max-width:620px){.stage.scene-anbang:not(.temp-room) #anbangMe{width:26cqw;height:31cqw;bottom:8%}.stage.scene-anbang:not(.temp-room) .anbang-glow{background:none}}

/* 진짜 평상 그림 */
.bench{height:auto}
.bench::before,.bench::after{display:none}
.bench img{display:block;width:100%;filter:drop-shadow(0 .4cqw .3cqw rgba(40,20,10,.4))}
.benchspot{top:-140%;height:200%}

/* 띠 동물 손님 */
.picks.animals{grid-template-columns:repeat(6,1fr)}
.picks.animals .pick{height:74px}
.pick{position:relative}
.pick.mytti{border-color:var(--gold)}
.pick .mt{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);background:var(--gold);color:var(--ink);font-size:11px;border-radius:999px;padding:0 6px;line-height:1.5;white-space:nowrap}
@media (max-width:620px){.picks.animals{grid-template-columns:repeat(4,1fr)}}
.who.animal{left:10%;width:80%}
.who.animal.upright{left:14%;width:72%}

/* 2.5D 카메라 */
.world{position:absolute;inset:0;transform-origin:0 0;transition:transform 1.1s cubic-bezier(.3,.7,.3,1);will-change:transform}
.world .layer{transition:transform 1.1s cubic-bezier(.3,.7,.3,1)}
.stage.scene-anbang .world{visibility:hidden}
.camtoggle{position:absolute;right:1.6%;bottom:2.5%;z-index:126;border:0;border-radius:999px;background:rgba(27,22,34,.62);color:var(--paper);font-family:var(--body);font-size:clamp(11px,1.4cqw,14px);padding:.35cqw 1.1cqw;cursor:pointer}
.camtoggle:hover{background:rgba(27,22,34,.82)}
.stage.scene-anbang .camtoggle{display:none}
@media (prefers-reduced-motion:reduce){.world,.world .layer{transition:none}}

/* 마당 겹 그림 (하늘 · 바닥 · 대문): 대문은 82%로 줄여 마당을 넓게 */
.bg.gate.wall{scale:.818;transform-origin:50% 0}
.stage.scene-gate .gateplaque{left:41.8%;width:16.8%;top:29.7%;height:4.9%}
.stage.scene-gate .gatesign{top:65.5%}
@media (max-width:620px){.stage.scene-gate .gateplaque{left:35.1%;width:30.5%;top:29.7%}}
.bg.gate.sky{translate:0 -17%;height:118%}
.stage.scene-gate .scroll{--scrollX:13%;--scrollY:42%}
@media (max-width:620px){.stage.scene-gate .scroll{--scrollX:3%;--scrollY:44%}}

/* 마당 소품: 담장 밑 풀숲, 대문 양옆 등롱, 화면 앞 풀숲 */
.props{display:none}
.stage.scene-gate .props{display:block}
.prop{position:absolute;left:var(--x);top:var(--y);width:var(--w);translate:-50% -100%;pointer-events:none;display:block}
.prop img{display:block;width:100%}
.prop.lantern::after{content:"";position:absolute;left:50%;top:52%;width:320%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(rgba(255,208,120,.32),transparent 62%);animation:candleFl 2.6s ease-in-out infinite alternate}
.prop.bush.front{filter:brightness(.82) saturate(1.05)}
@media (max-width:620px){.prop.lantern{--w:9%}.prop.bush{--w:44%}.prop.bush.front{--w:60%}}
/* 족자: 펼칠 땐 옆으로 먼저 → 아래로, 말 땐 위로 먼저 → 옆으로 (글자가 찌그러져 보이지 않게) */
.scroll .paper{transition:max-height .5s cubic-bezier(.4,0,.2,1),width .3s ease .5s}
.scroll.open .paper{transition:width .3s ease,max-height .7s cubic-bezier(.2,.7,.3,1) .3s}
.scroll .rod{transition:width .3s ease .5s}
.scroll.open .rod{transition:width .3s ease}
@media (max-width:620px){.prop.rock{--w:20%}.prop.rock.front{--w:32%}}
/* 감나무가 왼쪽 담장을 가리니 일진 족자는 오른쪽 담장으로 */
.stage.scene-gate .scroll{--scrollX:66%;--scrollY:42%}
@media (max-width:620px){.prop.tree{--w:44%}.stage.scene-gate .scroll{--scrollX:60%;--scrollY:44%}}

/* 날씨(비·눈·안개)는 마당에서만 */
.stage:not(.scene-gate) #weather,.stage.scene-anbang #weather{display:none}
.stage.foggy:not(.scene-gate)::before,.stage.foggy.scene-anbang::before{display:none}
/* 족자를 펼치면 풀숲·사람보다 앞으로 */
.scroll.open{z-index:150}
/* 무대 안쪽이 포커스·스크롤로 밀려 옆으로 비지 않게 */
.stage{overflow:hidden;overflow:clip}

/* 대문 겹: 줄이지 않고 위로 올려서 담장이 화면 양끝까지 이어지게 (밑동 78% → 64%) */
.bg.gate.wall{scale:none;translate:0 -14.2%}
.stage.scene-gate .gateplaque{left:40%;width:20.5%;top:22.1%;height:6%;font-size:2.2cqw}
@media (max-width:620px){.stage.scene-gate .gateplaque{left:31.8%;width:37.3%;top:22.1%;font-size:3.8cqw}}
/* 대문 문턱 너머로 하늘이 비치지 않게 바닥을 살짝 올림 (담장이 가려서 옆에서는 안 보임) */
.bg.gate.ground{translate:0 -6%;height:106%}
@media (max-width:620px){.prop.lantern{--w:8%}}
.bg.gate.ground{translate:0 -10%;height:110%}
.stage.scene-gate .gatesign{top:71%}
@media (max-width:620px){
  .prop.lantern.l{--x:25%!important}.prop.lantern.r{--x:75%!important}
  .stage.scene-gate .gatesign{top:72%}
}
.gam.flying{position:absolute;z-index:160;pointer-events:none;animation:none}

/* 번호표 기계 · 종이 번호표 · 지금 안방 판 */
.nowboard{position:absolute;left:50%;top:1.6%;translate:-50% 0;z-index:127;display:flex;align-items:baseline;gap:.6em;background:#2b1b14;color:#f3d48e;border:2px solid #5b3a28;border-radius:6px;padding:.35cqw 1.2cqw;box-shadow:0 2px 0 rgba(0,0,0,.35);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none}
.nowboard .bl{font-size:clamp(10px,1.3cqw,13px);color:#cdb38a}
.nowboard .bn{font-family:var(--display);font-weight:400;font-size:clamp(15px,2.1cqw,21px);color:#ffd27a;text-shadow:0 0 .6em rgba(255,190,90,.45)}
.nowboard .bw{font-size:clamp(10px,1.2cqw,12px);color:#cdb38a}
.nowboard .bw:empty{display:none}
.nowboard.calling{background:var(--red);border-color:#f3d48e;animation:boardBlink .5s steps(1) infinite}
.nowboard.calling .bn,.nowboard.calling .bl{color:#fff4d6}
@keyframes boardBlink{50%{filter:brightness(1.35)}}
.stage.scene-anbang .nowboard{display:none}
.demotag+.nowboard,.stage:has(.demotag) .nowboard{top:9%}
.printer{position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:170;display:flex;flex-direction:column;align-items:center;cursor:pointer;transition:opacity .6s,transform .6s}
.printer.away{opacity:0;transform:translateY(30%) scale(.7)}
.machine{position:relative;width:min(220px,46cqw);height:64px;background:#5b3a28;border-radius:10px 10px 4px 4px;box-shadow:inset 0 -6px 0 #3e2619,0 4px 0 rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;z-index:2}
.machine .mlabel{font-family:var(--display);color:#f3d48e;font-size:17px;letter-spacing:.2em}
.machine .slot{position:absolute;left:14%;right:14%;bottom:8px;height:6px;border-radius:3px;background:#1d120c}
.ticketpaper{position:relative;margin-top:-10px;width:min(180px,38cqw);background:#fbf4e4;color:var(--ink);padding:16px 12px 14px;text-align:center;display:flex;flex-direction:column;gap:2px;clip-path:inset(0 0 100% 0);animation:printOut 1.3s cubic-bezier(.3,.6,.3,1) .25s forwards;box-shadow:0 6px 14px rgba(0,0,0,.35);background-image:radial-gradient(circle at 50% 100%,transparent 5px,#fbf4e4 5.5px);background-size:14px 12px;background-position:bottom;background-repeat:repeat-x}
.ticketpaper small{font-family:var(--display);color:var(--red);font-size:13px}
.ticketpaper .tlabel{font-size:12px;color:var(--ink-2)}
.ticketpaper b{font-family:var(--display);font-weight:400;font-size:54px;line-height:1;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.ticketpaper .ahead{font-size:12.5px}
.ticketpaper .when{font-size:11px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ticketpaper .stamp{position:absolute;right:10px;top:46px;width:30px;height:30px;border:2px solid var(--red);border-radius:50%;color:var(--red);font-style:normal;font-family:var(--display);display:grid;place-items:center;rotate:-12deg;opacity:.85}
@keyframes printOut{to{clip-path:inset(0 0 0 0)}}
@media (prefers-reduced-motion:reduce){.ticketpaper{animation:none;clip-path:none}.nowboard.calling{animation:none}}

/* 안방 한지 판 위 버튼: 밝은 바탕에 맞는 진한 글씨 */
.anbang-panel .btn.line{color:var(--ink);border-color:#bfae8c;background:transparent}
.anbang-panel .btn.line:hover{background:var(--paper-2)}
.anbang-panel .btn:disabled{opacity:.55}
.anbang-panel .note{color:var(--ink-2)}
/* 안방에 있을 땐 아래 말하기 줄이 대화판 버튼을 가리지 않게 */
body:has(#anbangPanel:not([hidden])) .dock{position:static}
.anbang-panel{padding-bottom:22px}
.nowboard.flash{animation:boardFlash .9s ease-out 1}
@keyframes boardFlash{0%{filter:brightness(1.8)}100%{filter:none}}
/* 다른 곳에 있는 손님 알림 */
.elsewhere{position:absolute;left:50%;bottom:2.5%;translate:-50% 0;z-index:128;border:0;border-radius:999px;background:rgba(251,244,228,.94);color:var(--ink);font-family:var(--body);font-size:clamp(12px,1.5cqw,15px);padding:.45cqw 1.4cqw;box-shadow:0 2px 0 rgba(0,0,0,.25);cursor:pointer;white-space:nowrap;max-width:86%;overflow:hidden;text-overflow:ellipsis;animation:pop .25s ease-out}
.elsewhere:hover{background:#fff}

/* 무대가 화면 높이를 넘지 않게: 비율은 그대로 두고 폭을 줄임 (아래쪽 사람들이 화면 밖·말하기 줄 밑으로 숨지 않게) */
.stage{width:100%;max-width:max(320px,calc((100vh - 150px) * 16 / 11));max-width:max(320px,calc((100svh - 150px) * 16 / 11));margin-inline:auto}
@media (max-width:620px){.stage{max-width:max(280px,calc((100vh - 150px) * 4 / 5));max-width:max(280px,calc((100svh - 150px) * 4 / 5))}}
.elsewhere{bottom:10%}

/* 차 한 잔 */
.teacup{position:absolute;right:-14%;bottom:6%;width:30%;padding:0;border:0;background:none;z-index:4;pointer-events:none;animation:pop .3s ease-out}
.teacup svg{display:block;width:100%;height:auto;overflow:visible}
button.teacup{pointer-events:auto;cursor:pointer}
button.teacup:hover svg,button.teacup:focus-visible svg{filter:drop-shadow(0 0 .5cqw rgba(255,220,150,.9))}
button.teacup:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:30%}
.teacup.held{right:-6%;bottom:30%;width:24%}
.teacup .steam path{animation:steam 2.6s ease-in-out infinite;opacity:.0}
.teacup .steam path+path{animation-delay:1.3s}
@keyframes steam{0%{opacity:0;transform:translateY(3px)}40%{opacity:.75}100%{opacity:0;transform:translateY(-5px)}}
.seat.emo-tea .teacup{animation:cupLift 2.2s ease-in-out 1}
@keyframes cupLift{30%,70%{transform:translate(-30%,-25%) rotate(-14deg)}}
.tearec{background:rgba(201,162,75,.16);border-left:3px solid var(--gold);padding:8px 12px;border-radius:4px;margin:0 0 12px;font-size:14.5px;line-height:1.5}
.teas{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-bottom:12px}
.teaopt{position:relative;display:grid;grid-template-columns:40px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;border:1px solid rgba(90,58,40,.25);background:rgba(255,255,255,.5);border-radius:10px;padding:8px 10px;cursor:pointer;font-family:var(--body);color:var(--ink);transition:background-color .15s,transform .1s}
.teaopt:hover{background:#fff}
.teaopt:active{transform:scale(.98)}
.teaopt .tc{grid-row:1/3;width:40px}
.teaopt .tc svg{display:block;width:100%}
.teaopt b{font-size:15px;font-weight:700}
.teaopt .tl{font-size:12.5px;opacity:.75;line-height:1.3}
.teaopt.rec{border-color:var(--gold);background:rgba(201,162,75,.18)}
.teaopt .rt{position:absolute;top:-8px;right:8px;background:var(--gold);color:var(--ink);font-size:11px;padding:1px 7px;border-radius:999px}
.teanudge{position:absolute;left:50%;bottom:16%;translate:-50% 0;z-index:129;display:flex;align-items:center;gap:6px;border-radius:999px;background:rgba(251,244,228,.96);color:var(--ink);font-family:var(--body);font-size:clamp(13px,1.6cqw,16px);padding:5px 6px 5px 14px;box-shadow:0 2px 0 rgba(0,0,0,.25);white-space:nowrap;animation:pop .25s ease-out}
.teanudge button{border:0;border-radius:999px;background:var(--gold);color:var(--ink);font:inherit;padding:6px 12px;cursor:pointer}
.teanudge button:hover{filter:brightness(1.06)}
@media (prefers-reduced-motion:reduce){.teacup .steam path,.seat.emo-tea .teacup{animation:none}.teacup .steam path{opacity:.5}}

/* 연결이 잠깐 끊긴 손님: 45초 동안 흐리게 자리 지킴 */
.seat.ghost .who{opacity:.45;filter:grayscale(.5)}
.seat.ghost .nm::after{content:" · 연결 중";opacity:.7}

/* 부적 쓰는 방 */
.sheet.charmroom{background:linear-gradient(#3a2a20,#2a1d16);color:#f1e4cc}
.sheet.charmroom h2{color:#f6e2b3}
.sheet.charmroom .sub{color:#d9c8a8}
.charmkinds{margin-bottom:10px}
.charmroom .chip{background:#47332a;color:#f1e4cc;border-color:transparent}
.charmroom .chip[aria-pressed="true"]{background:var(--gold);color:var(--ink)}
.charmkinds .cg{font-family:"Gowun Batang",serif;font-weight:700;margin-right:5px;color:#e8705f}
.charmroom .chip[aria-pressed="true"] .cg{color:var(--red)}
.charmpaper{position:relative;width:min(100%,300px,calc((100svh - 330px)*.666));min-width:200px;aspect-ratio:466/700;margin:0 auto 12px;border-radius:4px;box-shadow:0 8px 22px rgba(0,0,0,.45)}
.charmpaper canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:4px}
.charmpaper canvas.ink{touch-action:none;cursor:crosshair}
.charmhint{position:absolute;left:50%;top:50%;translate:-50% -50%;background:rgba(42,29,22,.85);color:#f6e2b3;font-size:14px;padding:8px 14px;border-radius:999px;white-space:nowrap;pointer-events:none}
.charmhint.nudge{animation:charmNudge .4s ease-in-out 2}
@keyframes charmNudge{50%{transform:scale(1.08)}}
.charmroom .btn.line{background:#47332a;color:#f1e4cc;border-color:transparent}
.charmdone{display:block;width:min(100%,280px);margin:0 auto 12px;border-radius:4px;box-shadow:0 8px 22px rgba(0,0,0,.45)}
/* 안내 */
.guide{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:10px}
.guide li{display:grid;grid-template-columns:28px 1fr;column-gap:10px}
.guide .gn{grid-row:1/3;width:26px;height:26px;border-radius:50%;background:var(--red);color:var(--paper);display:grid;place-items:center;font-size:14px;font-weight:700}
.guide b{font-size:15.5px}
.guide p{margin:2px 0 0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.guidenote{background:rgba(232,178,79,.16);border-radius:8px;padding:8px 12px;margin-bottom:12px}
.guidenote p{margin:3px 0;font-size:13.5px;line-height:1.45}
.guidenote p::before{content:"· "}

/* 새로 떨어지는 감 */
.gam.falling{animation:gamFall .7s cubic-bezier(.5,0,.8,1) both,gamBob 2.6s ease-in-out .7s infinite}
@keyframes gamFall{from{transform:translate(-50%,-420%);opacity:0}60%{opacity:1}to{transform:translate(-50%,-50%)}}
/* 화면 밖 손님 이름표 */
.edges{position:absolute;inset:0;pointer-events:none;z-index:127}
.edgechip{position:absolute;translate:0 -50%;pointer-events:auto;border:0;border-radius:999px;background:rgba(251,244,228,.9);color:var(--ink);font-family:var(--hand);font-size:clamp(12px,1.5cqw,15px);padding:2px 9px;box-shadow:0 1px 0 rgba(0,0,0,.25);cursor:pointer;white-space:nowrap}
.edgechip:not([style*="right"]):not([style*="left: 1%"]){translate:-50% -50%}
.tab-asleep .stage{filter:grayscale(.6)}

/* 폰: 아래 메뉴를 얇게 (말하기 칸 한 줄 + 버튼 줄은 옆으로 밀어서 보기) */
@media (max-width:620px){
  .dock{flex-wrap:nowrap;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px))}
  .dock form{flex:1 1 auto;gap:6px}
  .dock input{padding:8px 12px;font-size:16px}
  .dock .btn{padding:8px 11px;font-size:14px;white-space:nowrap;flex:none}
  .dock .mystate{font-size:13px;white-space:nowrap;flex:none}
  .dock:has(.guidebtn){flex-wrap:wrap}
  .acts{flex-wrap:nowrap;overflow-x:auto;gap:6px;padding:0 10px 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    mask-image:linear-gradient(90deg,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .acts::-webkit-scrollbar{display:none}
  .acts .emos{flex-wrap:nowrap;flex:none;gap:5px}
  .acts .emos+.emos{padding-left:6px;border-left:1px solid var(--walnut-3)}
  .act,.emo-btn{padding:6px 11px;font-size:13px}
}

/* 폰 마루 길게: 그림(world)은 위쪽 4:5 그대로, 아래로 바닥을 이어 붙임 */
.floorext{display:none;position:absolute;left:0;top:100%;width:100%;height:auto;pointer-events:none}
.stage.ext{aspect-ratio:auto}
.stage.ext .world{bottom:auto;height:auto;aspect-ratio:4/5}
.stage.ext .floorext{display:block}
/* 새 버전 알림 */
.newver{position:fixed;left:50%;top:calc(10px + env(safe-area-inset-top,0px));translate:-50% 0;z-index:900;display:flex;align-items:center;gap:8px;max-width:calc(100% - 24px);background:var(--paper);color:var(--ink);border-radius:999px;padding:6px 6px 6px 16px;box-shadow:0 4px 14px rgba(0,0,0,.35);font-size:14px;animation:pop .3s ease-out}
.newver span{min-width:0}
.newver button{border:0;border-radius:999px;background:var(--gold);color:var(--ink);font:inherit;font-weight:700;padding:6px 12px;cursor:pointer;white-space:nowrap}
.newver button.x{background:transparent;font-weight:400;padding:6px 8px;color:var(--ink-2)}

.stage.scene-maru #camBtn{display:none} /* 마루는 확대를 안 하니 "전체 보기" 버튼도 숨김 */

/* 내 차례 딩동 (화면으로) */
.callcard{position:fixed;inset:0;z-index:950;display:grid;place-items:center;background:rgba(20,12,8,.55);animation:ccIn .25s ease-out;pointer-events:none}
.callcard.away{animation:ccOut .5s ease-in forwards}
@keyframes ccIn{from{opacity:0}}
@keyframes ccOut{to{opacity:0}}
.callcard .rays{position:absolute;width:150vmax;aspect-ratio:1;background:repeating-conic-gradient(rgba(255,214,130,.22) 0 9deg,transparent 9deg 22deg);border-radius:50%;mask-image:radial-gradient(#000 0,transparent 55%);-webkit-mask-image:radial-gradient(#000 0,transparent 55%);animation:rays 6s linear infinite}
@keyframes rays{to{rotate:360deg}}
.callcard .cc{position:relative;width:min(300px,80vw);background:var(--paper);color:var(--ink);border-radius:22px;padding:26px 18px 22px;text-align:center;box-shadow:0 0 0 6px var(--gold),0 18px 50px rgba(0,0,0,.5);animation:ccPop .5s cubic-bezier(.3,1.6,.5,1)}
@keyframes ccPop{from{transform:scale(.4) rotate(-6deg)}}
.callcard .bell{width:64px;height:58px;margin:0 auto 6px;background:var(--gold);border-radius:32px 32px 8px 8px;position:relative;transform-origin:50% 0;animation:ring .35s ease-in-out 8 alternate;box-shadow:inset -6px -6px 0 rgba(0,0,0,.12)}
.callcard .bell::before{content:"";position:absolute;left:50%;top:-10px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--gold)}
.callcard .bell::after{content:"";position:absolute;left:50%;bottom:-10px;width:18px;height:18px;margin-left:-9px;border-radius:50%;background:var(--red)}
@keyframes ring{from{rotate:-18deg}to{rotate:18deg}}
.callcard .dd{font-family:var(--hand);font-size:34px;color:var(--red);line-height:1.1;margin-top:8px;animation:ddBounce .4s ease-in-out 6 alternate}
@keyframes ddBounce{to{transform:translateY(-5px) scale(1.06)}}
.callcard b{display:block;font-size:30px;margin-top:6px;font-variant-numeric:tabular-nums}
.callcard p{margin:4px 0 0;font-size:16px;color:var(--ink-2)}
.nexttoast{position:absolute;left:50%;top:18%;translate:-50% 0;z-index:140;background:var(--gold);color:var(--ink);border-radius:16px;padding:10px 18px;text-align:center;box-shadow:0 4px 14px rgba(0,0,0,.35);animation:ccPop .45s cubic-bezier(.3,1.6,.5,1)}
.nexttoast b{display:block;font-size:clamp(16px,2.4cqw,20px)}
.nexttoast span{font-size:13px}
.nexttoast.away{animation:ccOut .5s ease-in forwards}
.nowboard.calling{animation:boardCall .5s ease-in-out infinite alternate}
@keyframes boardCall{to{box-shadow:0 0 0 4px var(--gold),0 0 22px var(--gold)}}
@media (prefers-reduced-motion:reduce){.callcard .rays,.callcard .bell,.callcard .dd,.nowboard.calling{animation:none}}

/* 폰: "오늘의 일진" 걸이를 작게 (마당은 확대돼서 더 커 보였음) */
@media (max-width:620px){
  .scroll:not(.open) .rod{width:auto;min-width:0;padding:3px 9px;font-size:11px;border-radius:3px}
  .scroll:not(.open) .rod.low{width:100%;min-width:0;height:4px;min-height:4px;padding:0}
  .scroll:not(.open) .rod::before,.scroll:not(.open) .rod::after{width:5px;height:5px;min-width:5px;min-height:5px}
  .stage.scene-gate .scroll:not(.open){scale:.8;transform-origin:0 0}
}

/* 손님 카드 버튼이 카드 밖으로 넘치던 것: 줄바꿈 + 조금 작게, "닫기"는 오른쪽 위 ✕ 처럼 */
.gcard{width:min(270px,82cqw);position:absolute}
.gcard .row2{flex-wrap:wrap;gap:5px}
.gcard .act{padding:6px 11px;font-size:13px}
.gcard .row2 .act:last-child{position:absolute;top:6px;right:6px;background:transparent;color:var(--ink-2);font-size:0;padding:6px 9px}
.gcard .row2 .act:last-child::after{content:"✕";font-size:15px}
.gcard b{padding-right:26px}

/* 대문 안내 글씨가 지나가는 손님 머리에 가려지던 것: 사람보다 위로, 조금 작고 살짝 비치게.
   한 번 마루에 들어가 본 손님에겐 숨김 */
.stage.scene-gate .gatesign{z-index:115;opacity:.93;padding:.1cqw 1cqw}
.stage.scene-gate.knows-gate .gatesign{display:none}

/* 마루 벽 부적: 오른쪽 창문 아래 벽에 붙음 (마루에서만) */
.charmwall{display:none;position:absolute;left:73%;top:44%;width:18%;height:12%;z-index:45;pointer-events:none}
.stage.scene-maru .charmwall{display:block}
.cslip{position:absolute;top:0;left:calc(var(--i)*16.5%);width:2.1cqw;height:4.6cqw;padding:0;border:0;border-radius:1px;background:#f0c35a url(img/bujeok.webp) center/cover;color:#b5362c;font-family:var(--display);font-size:1.3cqw;display:grid;place-items:center;rotate:var(--r);transform-origin:50% 0;box-shadow:0 .2cqw .3cqw rgba(40,20,10,.4);pointer-events:auto;cursor:pointer;animation:slipSway 5s ease-in-out infinite alternate;animation-delay:calc(var(--i)*-.8s)}
.cslip::before{content:"";position:absolute;top:-.25cqw;left:50%;width:1.2cqw;height:.5cqw;margin-left:-.6cqw;background:rgba(245,235,210,.75)}
.cslip.fresh{animation:slipIn .7s cubic-bezier(.3,1.5,.5,1),slipSway 5s ease-in-out .7s infinite alternate}
@keyframes slipSway{to{rotate:calc(var(--r) + 3deg)}}
@keyframes slipIn{from{transform:translateY(-60%) scale(1.6);opacity:0}}
.cwtag{position:absolute;left:0;top:-30%;border:0;border-radius:3px;background:rgba(58,36,24,.88);color:#f3d48e;font-family:var(--display);font-size:clamp(10px,1.1cqw,13px);padding:1px 6px;white-space:nowrap;pointer-events:auto;cursor:pointer}
.cwtip{position:absolute;top:110%;left:calc(var(--i)*16.5% - 30%);background:var(--paper);color:var(--ink);border-radius:8px;padding:6px 10px;font-size:13.5px;width:max-content;max-width:40cqw;box-shadow:0 3px 0 rgba(0,0,0,.2);animation:pop .2s ease-out;z-index:3}
.cwtip b{display:block;font-size:12px;color:var(--red)}
@media (max-width:620px){
  .charmwall{left:71%;top:31%;width:19%;height:9%}
  .cslip{width:3cqw;height:6.4cqw;font-size:1.9cqw}
  .cslip{left:calc(var(--i)*20%)}
  .cwtag{top:-36%}
  .cwtip{left:auto;right:0;max-width:60cqw}
}
.lantern.more{display:grid;place-items:center;font-size:clamp(9px,1.1cqw,12px);color:#5b3a28;font-weight:700;--lc:#e8d7b0;width:auto;min-width:2.6cqw;padding:0 .4cqw}
.wishlist{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px;max-height:50vh;overflow:auto}
.wishlist li{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center;background:rgba(255,255,255,.5);border-radius:8px;padding:7px 10px}
.wishlist i{width:12px;height:16px;border-radius:42%;background:var(--lc);box-shadow:0 0 6px var(--lc)}
.wishlist p{margin:0;font-size:14px;line-height:1.4}
.wishlist span{font-size:12px;color:var(--ink-2)}

/* 이름 시트의 내 일간 미리보기 */
.ilpreview{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:8px;padding:8px 12px;border-radius:8px;background:rgba(232,178,79,.16)}
.ilpreview b{font-family:var(--display);font-size:20px}
.ilpreview span{font-size:13.5px;color:var(--ink-2)}
.ilpreview .muted{color:#9a8a78}
.ilpreview.el-mok b{color:#3f8a4a}.ilpreview.el-hwa b{color:#c8463a}.ilpreview.el-to b{color:#a77a2a}.ilpreview.el-geum b{color:#6f7a86}.ilpreview.el-su b{color:#2f5f9a}
/* 처음 일간이 생길 때 머리 위 "짠" */
.ilreveal{position:absolute;left:50%;bottom:118%;translate:-50% 0;z-index:6;background:var(--paper);color:var(--ink);border-radius:12px;padding:6px 12px;text-align:center;white-space:nowrap;box-shadow:0 0 0 3px var(--gold),0 6px 14px rgba(0,0,0,.35);animation:ccPop .5s cubic-bezier(.3,1.6,.5,1),ccOut .5s ease-in 3.7s forwards;pointer-events:none}
.ilreveal b{display:block;font-family:var(--display);font-size:clamp(15px,2.3cqw,20px)}
.ilreveal span{font-size:12px;color:var(--ink-2)}
/* 부적은 창문 유리가 아니라 창 아래 벽에 */
.charmwall{top:51.5%}
@media (max-width:620px){.charmwall{top:34.6%}}

/* 덜 복잡하게: "마당에 ○○ 있어요" 띠는 안 띄움 (위 인원 표시로 충분) */
.elsewhere{display:none!important}
@media (max-width:620px){
  .cat .t{display:none}                 /* 고양이 이름표는 숨김 */
  .ilgan{font-size:10px;padding:.15em .45em .15em .3em;background:rgba(27,22,34,.6)}
  .seat .nm{font-size:12px;padding:0 .4em}
  .cwtag{font-size:9px;padding:0 4px;opacity:.85}
  .scroll:not(.open) .rod{opacity:.9}
}

/* ---------- 오늘의 운세 ---------- */
.fortunebtn.new{background:var(--gold);color:var(--ink);position:relative}
.fortune{border-radius:14px;padding:14px 16px;background:linear-gradient(160deg,#fffaf0,#f6e7c6);border:1px solid #e3cf9f;margin-bottom:12px}
.fhead{display:grid;gap:2px;margin-bottom:8px}
.fhead .fd{font-size:12.5px;color:var(--ink-2)}
.fhead b{font-family:var(--display);font-size:22px}
.fhead .stars{color:#d99a1e;letter-spacing:2px;font-size:18px}
.fall{margin:0 0 10px;line-height:1.6;font-size:15px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}
.fgrid div{background:rgba(255,255,255,.6);border-radius:8px;padding:7px 9px;display:grid;gap:2px}
.fgrid b{font-size:12px;color:var(--red)}
.fgrid span{font-size:13.5px;line-height:1.4}
.fluck{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:13.5px;margin-bottom:6px}
.fluck i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:5px;vertical-align:-1px;box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.fwho{margin:0;font-size:12.5px;color:var(--ink-2)}

/* ---------- 무엇을 볼지 고르기 ---------- */
.kinds{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.kindcard{position:relative;display:grid;justify-items:center;gap:4px;text-align:center;border:2px solid #e3cf9f;background:#fffaf0;border-radius:14px;padding:12px 10px 14px;cursor:pointer;font-family:var(--body);color:var(--ink);transition:transform .1s,border-color .15s}
.kindcard:hover{border-color:var(--gold)}.kindcard:active{transform:scale(.97)}
.kindcard img{width:74px;height:74px;object-fit:contain}
.kindcard.k-saju img{object-fit:cover;border-radius:50%}
.kindcard b{font-size:16px}
.kindcard span{font-size:12.5px;line-height:1.4;color:var(--ink-2)}
.kindcard i{position:absolute;top:8px;right:8px;font-style:normal;font-size:10px;font-weight:700;background:#e889a8;color:#fff;border-radius:999px;padding:1px 7px}
.kindcard.k-sin{background:linear-gradient(170deg,#fff6fa,#fbe6ef);border-color:#f1c3d4}

/* ---------- 선녀님 방 ---------- */
.seonnyeo{display:none;position:absolute;left:50%;top:18%;height:39.5%;width:40%;translate:-50% 0;overflow:hidden;z-index:2;pointer-events:none}
.seonnyeo img{position:absolute;left:50%;top:0;height:142%;translate:-50% 0;animation:sway 4.4s ease-in-out infinite;transform-origin:50% 90%;filter:drop-shadow(0 0 1.2cqw rgba(255,190,220,.55))}
.stage.sin-room .seonnyeo{display:block}
.stage.sin-room .anbang-glow{background:radial-gradient(60% 50% at 50% 45%,rgba(255,170,210,.22),transparent 70%)}
.stage.sin-room .dosa-say{left:50%;top:9%}
@media (max-width:620px){.seonnyeo{top:24%;height:33.5%;width:70%}}
.rituals{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 6px}
.ritual{display:grid;justify-items:center;gap:3px;border:1.5px solid #f1c3d4;background:linear-gradient(170deg,#fff6fa,#fbe6ef);border-radius:12px;padding:10px 8px 12px;cursor:pointer;font-family:var(--body);color:var(--ink)}
.ritual:disabled{opacity:.5;cursor:default}
.ritual img{width:38px;height:38px;object-fit:contain}
.ritual .rice{width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff 0 2px,transparent 3px),radial-gradient(circle at 60% 40%,#fff 0 2px,transparent 3px),radial-gradient(circle at 45% 65%,#fff 0 2px,transparent 3px),radial-gradient(circle at 70% 70%,#fff 0 2px,transparent 3px),#c9a24a;box-shadow:inset 0 0 0 3px #a8802e}
.ritual b{font-size:14.5px}
.ritual span{font-size:12px;color:var(--ink-2);line-height:1.35}
.ritualview{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin:0 0 10px;padding:10px;border-radius:12px;background:linear-gradient(170deg,#fff6fa,#fbe6ef)}
.ritualview p{flex-basis:100%;text-align:center;margin:2px 0 0;font-size:14px;color:#8a3f5c}
.rcoin{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#ffe9a8,#c9962e 70%);box-shadow:inset 0 0 0 3px #a8742a,0 2px 4px rgba(0,0,0,.25);font-family:var(--display);color:#6b4410;position:relative}
.rcoin::after{content:"";position:absolute;width:12px;height:12px;background:#fbe6ef;box-shadow:inset 0 0 0 2px #a8742a}
.rcoin span{position:absolute;bottom:-18px;font-size:12px;color:#8a3f5c}
.rcoin.back{background:radial-gradient(circle at 35% 30%,#e0c48a,#9a7432 70%)}
.ritualview.anim .rcoin{animation:coinFlip .5s linear infinite;animation-delay:calc(var(--i)*-.17s)}
.ritualview.anim .rcoin span{visibility:hidden}
@keyframes coinFlip{50%{transform:scaleX(.08) translateY(-10px)}}
.rtray{position:relative;width:120px;height:90px;border-radius:50%;background:radial-gradient(#e2bf62,#b88d33);box-shadow:inset 0 0 0 4px #9b7428}
.rtray i{position:absolute;width:5px;height:3px;border-radius:50%;background:#fffaf0;box-shadow:0 0 1px rgba(0,0,0,.3);translate:-50% -50%}
.ritualview.anim .rtray i{animation:riceFall .9s cubic-bezier(.3,.6,.4,1) both;animation-delay:calc(var(--i)*25ms)}
@keyframes riceFall{from{left:50%;top:-40%;opacity:0}}
.dosa.sin .txt{background:#fff3f8}
@media (prefers-reduced-motion:reduce){.seonnyeo img,.ritualview.anim .rcoin,.ritualview.anim .rtray i{animation:none}}
.ritualview p{margin-top:18px}

#timer.warn,.timer.warn{color:var(--red);font-weight:700;animation:pulseBtn .6s infinite alternate}

/* 안방 문 앞: 도사님 방·선녀님 방 손님이 나란히 */
.atdoor.two{width:calc(var(--base)*1.05)}
.atdoor.two .who.at-saju{left:-2%;width:48%}
.atdoor.two .who.at-sin{left:54%;width:48%}
.nowboard .bn{white-space:nowrap}
/* 연결 끊긴 손님의 번호표는 흐리게 (줄에서는 잠시 빠짐) */
.seat.ghost .num{opacity:.4;text-decoration:line-through}

/* ---------- 마당: 돌탑 · 정화수 (마당에서만) ---------- */
.tower,.jeongsu{display:none;position:absolute;border:0;padding:0;background:none;cursor:pointer;translate:-50% -100%}
.stage.scene-gate .tower,.stage.scene-gate .jeongsu{display:block}
.tower{left:8%;top:93%;width:9%;height:22%;z-index:93}
.jeongsu{left:91%;top:95%;width:13%;height:7%;z-index:95}
@media (max-width:620px){.tower{left:11%;top:91%;width:15%;height:20%}.jeongsu{left:86%;top:94%;width:22%;height:7%}}
.tbase{position:absolute;left:5%;right:5%;bottom:0;height:12%;border-radius:50%;background:radial-gradient(rgba(40,25,15,.45),transparent 70%)}
.tstone{position:absolute;left:50%;translate:-50% 0;filter:drop-shadow(0 .2cqw .2cqw rgba(30,15,5,.45))}
.tstone.drop{animation:stoneDrop .7s cubic-bezier(.4,0,.7,1.4)}
@keyframes stoneDrop{from{transform:translateY(-260%);opacity:0}60%{opacity:1}}
.tower .tlabel,.jeongsu .tlabel{position:absolute;left:50%;top:100%;translate:-50% 2px;white-space:nowrap;font-family:var(--hand);font-size:clamp(11px,1.4cqw,15px);background:rgba(251,244,228,.88);color:var(--ink);padding:0 .5em;border-radius:3px}
.tower:hover .tstone,.tower:focus-visible .tstone{filter:drop-shadow(0 0 .6cqw rgba(255,220,150,.9))}
.sbase{position:absolute;inset:30% 0 0;border-radius:40%/60%;background:linear-gradient(#a59a8a,#7c7262);box-shadow:inset 0 -.4cqw 0 rgba(0,0,0,.25),0 .3cqw .4cqw rgba(0,0,0,.35)}
.jeongsu .bowl{position:absolute;bottom:42%;width:13%;translate:-50% 0;filter:drop-shadow(0 0 .6cqw rgba(190,225,255,.85));animation:bowlGlow 3s ease-in-out infinite alternate}
.jeongsu .bowl.mine{filter:drop-shadow(0 0 .9cqw rgba(255,230,160,.95))}
.jeongsu .bowl svg{display:block;width:100%}
@keyframes bowlGlow{to{filter:drop-shadow(0 0 1.2cqw rgba(190,225,255,.5))}}
/* 정화수 빌기 화면 */
.pray{position:absolute;inset:0;z-index:160;display:grid;place-content:center;justify-items:center;gap:8px;text-align:center;background:radial-gradient(circle at 50% 40%,rgba(30,40,70,.55),rgba(10,10,25,.82));color:var(--paper);padding:16px;animation:ccIn .3s ease-out}
.pray .pt{margin:0;font-family:var(--display);font-size:clamp(17px,2.6cqw,24px)}
.pray .ps{margin:0;font-size:clamp(12px,1.6cqw,15px);opacity:.85;max-width:300px;line-height:1.5}
.pray .pbowl{width:clamp(110px,22cqw,190px);transition:transform .4s}
.pray .pbowl svg{display:block;width:100%;filter:drop-shadow(0 0 14px rgba(190,225,255,.6))}
.pray.holding .pbowl{transform:scale(1.06)}
.pray.done .pbowl svg{filter:drop-shadow(0 0 28px rgba(255,236,170,.95))}
.pring{--p:0;position:relative;width:86px;height:86px;border-radius:50%;border:0;cursor:pointer;color:var(--ink);font-family:var(--body);font-size:13px;font-weight:700;background:conic-gradient(var(--gold) calc(var(--p)*360deg),rgba(255,255,255,.18) 0);touch-action:none;user-select:none;-webkit-user-select:none}
.pring span{position:absolute;inset:7px;border-radius:50%;background:var(--paper);display:grid;place-items:center;line-height:1.25;padding:6px}
.pclose{position:absolute;top:10px;right:10px;border:0;background:rgba(255,255,255,.15);color:var(--paper);width:32px;height:32px;border-radius:50%;cursor:pointer}
.pray .spark{position:absolute;top:58%;width:6px;height:6px;border-radius:50%;background:#fff3c4;box-shadow:0 0 8px #ffe7a0;animation:sparkUp 1.8s ease-out forwards}
@keyframes sparkUp{to{transform:translateY(-38vh) scale(.4);opacity:0}}
/* 부적 끌어 붙이기 */
.dragcharm{position:fixed;z-index:990;width:46px;height:96px;translate:-50% -50%;border-radius:2px;background:#f0c35a url(img/bujeok.webp) center/cover;display:grid;place-items:center;font-family:var(--display);font-size:24px;color:#b5362c;box-shadow:0 8px 18px rgba(0,0,0,.4);cursor:grab;touch-action:none;animation:dragBob 1.2s ease-in-out infinite alternate}
.dragcharm.held{cursor:grabbing;animation:none;scale:1.1;rotate:-4deg}
.dragcharm.back{transition:left .3s,top .3s}
.dragcharm.stick{transition:left .35s,top .35s,scale .35s;scale:.45;animation:none}
@keyframes dragBob{to{translate:-50% -60%}}
.draghint{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));translate:-50% 0;z-index:989;display:grid;justify-items:center;gap:2px;background:var(--paper);color:var(--ink);border-radius:14px;padding:10px 16px;box-shadow:0 6px 18px rgba(0,0,0,.35);text-align:center}
.draghint span{font-size:12.5px;color:var(--ink-2)}
.draghint button{margin-top:4px;border:0;background:none;color:var(--ink-2);text-decoration:underline;font:inherit;font-size:12.5px;cursor:pointer}
.charmwall.target{outline:2px dashed rgba(255,214,130,.9);outline-offset:.8cqw;border-radius:4px;animation:wallGlow 1s ease-in-out infinite alternate}
.charmwall.near{outline-color:#fff;background:rgba(255,230,160,.25)}
@keyframes wallGlow{to{box-shadow:0 0 1.6cqw rgba(255,214,130,.7)}}
/* 빈 방으로 바꾸기 */
.swapnudge{position:absolute;left:50%;top:16%;translate:-50% 0;z-index:141;display:flex;align-items:center;gap:8px;background:var(--paper);color:var(--ink);border-radius:999px;padding:5px 6px 5px 14px;box-shadow:0 4px 14px rgba(0,0,0,.35);font-size:clamp(12px,1.5cqw,14px);white-space:nowrap;animation:pop .3s ease-out;max-width:96%}
.swapnudge button{border:0;border-radius:999px;background:var(--gold);color:var(--ink);font:inherit;font-weight:700;padding:6px 11px;cursor:pointer}
.swapnudge button.x{background:none;font-weight:400;padding:6px 8px}
@media (prefers-reduced-motion:reduce){.tstone.drop,.jeongsu .bowl,.dragcharm,.charmwall.target,.pray .spark{animation:none}}
.tstone{position:absolute;left:50%;translate:-50% 0;height:15%;border-radius:50%/46%;box-shadow:inset 0 -.25cqw 0 rgba(0,0,0,.22),0 .15cqw .2cqw rgba(30,15,5,.45);border:1px solid rgba(70,55,40,.55)}
.tower{width:7%;height:24%}
@media (max-width:620px){.tower{width:11%;height:22%}.jeongsu{left:80%}}
@media (max-width:620px){.jeongsu{left:72%;top:93%}}
.jeongsu .bowl{width:16%}

/* 기다리는 동안 카드 */
.waitcard{position:absolute;left:50%;bottom:4%;translate:-50% 0;z-index:142;width:min(92%,380px);background:var(--paper);color:var(--ink);border-radius:16px;padding:12px 12px 10px;box-shadow:0 8px 24px rgba(0,0,0,.4);animation:ccPop .35s cubic-bezier(.3,1.5,.5,1)}
.waitcard>b{display:block;font-family:var(--display);font-size:15px;margin:0 26px 8px 4px}
.waitcard .x{position:absolute;top:6px;right:6px;border:0;background:none;font-size:15px;color:var(--ink-2);padding:6px 9px;cursor:pointer}
.wgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.witem{display:grid;justify-items:center;gap:2px;border:1px solid #e3cf9f;background:#fffaf0;border-radius:10px;padding:8px 4px;cursor:pointer;font-family:var(--body);color:var(--ink)}
.witem:active{transform:scale(.96)}
.witem i{font-style:normal;font-size:20px;line-height:1}
.witem span{font-size:12.5px}
.wnotify{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 10px;border-radius:10px;background:rgba(232,178,79,.18);font-size:12.5px;line-height:1.4}
.wnotify button{flex:none;border:0;border-radius:999px;background:var(--gold);color:var(--ink);font:inherit;font-weight:700;padding:6px 12px;cursor:pointer}
.waitcard .wok{margin:8px 2px 0;font-size:12.5px;color:var(--ink-2)}
.dock .mystate.tap{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}

/* 방명록 */
.gbbtn.new{position:relative}
.gbbtn.new::after{content:"";position:absolute;top:4px;right:6px;width:7px;height:7px;border-radius:50%;background:#e2584a}
.gbwrite{background:linear-gradient(#fffaf0,#f7ecd4);border:1px solid #e3cf9f;border-radius:12px;padding:10px;margin-bottom:12px}
.gbwrite textarea{width:100%;box-sizing:border-box;border:1px solid #d6c7a6;border-radius:8px;padding:8px 10px;font:inherit;font-size:16px;background:#fffdf7;color:var(--ink);resize:vertical}
.gbrow{display:flex;justify-content:space-between;align-items:center;margin-top:6px}
.gbcnt{font-size:12px;color:var(--ink-2)}
.gblist{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px;max-height:52vh;overflow:auto}
.gbitem{display:grid;grid-template-columns:38px 1fr;column-gap:10px;align-items:start;background:rgba(255,255,255,.55);border-radius:10px;padding:8px 10px}
.gbitem.fresh{animation:pop .4s ease-out;background:rgba(232,178,79,.18)}
.gbav{grid-row:1/3;width:38px;height:38px;object-fit:contain;object-position:50% 20%;border-radius:50%;background:#f1e4cc}
.gbhead{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.gbhead b{font-size:14px}
.gbhead span{font-size:11.5px;color:var(--ink-2);white-space:nowrap}
.gbitem p{margin:2px 0 0;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.gbempty{text-align:center;color:var(--ink-2);font-size:13.5px;padding:14px}

/* ---------- 마당 그림 소품: 돌탑 · 정화수 돌판 · 촛대 단 ---------- */
.tower{width:9%;height:auto;aspect-ratio:450/420}
.tower .tbase{position:absolute;left:0;bottom:0;width:100%;height:auto;border-radius:0;background:none;filter:drop-shadow(0 .3cqw .3cqw rgba(30,15,5,.4))}
.tower .tstone{position:absolute;left:50%;translate:-50% 0;height:auto;border:0;box-shadow:none;background:none;border-radius:0;filter:drop-shadow(0 .15cqw .2cqw rgba(30,15,5,.45))}
.jeongsu{width:16%;height:auto;aspect-ratio:760/226}
.jeongsu .sbase{position:absolute;inset:0;width:100%;height:100%;border-radius:0;background:none;box-shadow:none;filter:drop-shadow(0 .3cqw .3cqw rgba(30,15,5,.35))}
.bowlglow{position:absolute;top:38%;width:16%;aspect-ratio:2/1;translate:-50% -50%;border-radius:50%;background:radial-gradient(rgba(255,248,210,.95),rgba(200,230,255,.55) 45%,transparent 72%);mix-blend-mode:screen;animation:bowlPulse 2.6s ease-in-out infinite alternate;pointer-events:none}
.bowlglow.mine{background:radial-gradient(rgba(255,240,170,1),rgba(255,214,130,.6) 45%,transparent 72%)}
@keyframes bowlPulse{to{opacity:.55;transform:scale(1.15)}}
.cstand{display:none;position:absolute;left:30%;top:73%;width:18%;aspect-ratio:900/212;translate:-50% -100%;z-index:72;cursor:pointer}
.stage.scene-gate .cstand{display:block}
.cstand .csbase{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 .3cqw .3cqw rgba(30,15,5,.4))}
.cstand .tlabel{position:absolute;left:50%;top:100%;translate:-50% 2px;white-space:nowrap;font-family:var(--hand);font-size:clamp(11px,1.4cqw,15px);background:rgba(251,244,228,.88);color:var(--ink);padding:0 .5em;border-radius:3px}
.clit{position:absolute;bottom:88%;width:5.6%;translate:-50% 0;border:0;padding:0;background:none;cursor:pointer;transform-origin:50% 100%;animation:candleSway 3s ease-in-out infinite alternate}
.clit img{display:block;width:100%;filter:drop-shadow(0 0 .8cqw rgba(255,200,110,.9))}
.clit::before{content:"";position:absolute;left:50%;top:0;width:340%;aspect-ratio:1;translate:-50% -45%;border-radius:50%;background:radial-gradient(rgba(255,214,130,.38),transparent 65%);pointer-events:none;animation:candleFl 1.8s ease-in-out infinite alternate}
.clit.mine img{filter:drop-shadow(0 0 1.1cqw rgba(255,230,150,1))}
@keyframes candleSway{to{rotate:1.5deg}}
.ctip{position:absolute;bottom:170%;translate:-50% 0;background:var(--paper);color:var(--ink);border-radius:8px;padding:5px 9px;font-size:12.5px;white-space:nowrap;box-shadow:0 3px 0 rgba(0,0,0,.2);z-index:9;animation:pop .2s ease-out}
.ctip b{display:block;font-size:11.5px;color:var(--red)}
@media (max-width:620px){.tower{width:14%}.jeongsu{width:26%}.cstand{left:48%;top:75%;width:34%}}
/* 촛불 켜기 화면 */
.candleui{background:radial-gradient(circle at 50% 45%,rgba(60,35,20,.55),rgba(12,8,6,.86))}
.cbig{position:relative;height:clamp(150px,34cqw,260px);display:grid;place-items:end center;touch-action:none;cursor:ns-resize;--pull:0}
.cbig img{height:100%;width:auto;transform:translateY(calc(var(--pull)*-8px));transition:transform .1s}
.cbig.lit img{filter:drop-shadow(0 0 22px rgba(255,200,110,.9));animation:candleFl 1.6s ease-in-out infinite alternate}
.cbig.hands{height:clamp(150px,34cqw,250px)}
.cbig.hands img{animation:none;filter:drop-shadow(0 0 26px rgba(255,200,110,.85))}
.cstrike{background:rgba(255,255,255,.14)!important;color:var(--paper)!important;border:0}
.candleui .cwish{width:min(260px,80%);border:0;border-radius:999px;padding:9px 14px;font:inherit;font-size:16px;text-align:center;background:rgba(251,244,228,.95);color:var(--ink)}
.pray .pbowl img{display:block;width:100%;filter:drop-shadow(0 0 18px rgba(190,225,255,.55))}
.pray.done .pbowl img{filter:drop-shadow(0 0 30px rgba(255,236,170,.95))}
@media (prefers-reduced-motion:reduce){.clit,.clit::before,.cbig.lit img,.bowlglow{animation:none}}
.clit{width:9%;bottom:84%}
@media (max-width:620px){.tower{width:16%}.cstand{width:40%}}
.cbig,.cbig.hands{height:min(34vh,230px);width:auto}
.cbig img{height:min(34vh,230px)!important;width:auto!important;max-width:none}
.cbig.lit img{animation:candleBig 1.6s ease-in-out infinite alternate}
@keyframes candleBig{to{filter:drop-shadow(0 0 30px rgba(255,200,110,1))}}
/* 번호표 안내 */
.trules{background:rgba(181,54,44,.07);border:1px dashed rgba(181,54,44,.35);border-radius:10px;padding:7px 10px;margin:0 22px 10px 0}
.sheet .trules{margin:10px 0}
.trules b{display:block;font-size:13px;color:var(--red);margin-bottom:2px}
.trules ul{margin:0;padding-left:16px}
.trules li{font-size:12.5px;line-height:1.5;color:var(--ink)}

/* 마당 소품 이름표는 소품 위쪽에 (앞 바위·"따라 보기" 버튼에 가려지던 것) + 돌탑은 감나무 밑 감과 안 겹치게 오른쪽 빈터로 */
.tower .tlabel,.jeongsu .tlabel,.cstand .tlabel{top:auto;bottom:100%;translate:-50% -3px;z-index:5}
.tower,.jeongsu,.cstand{z-index:96}
.tower{left:73%;top:97%}
.jeongsu{top:93%}
@media (max-width:620px){.tower{left:11%;top:91%}}

/* ---------- 마당 굿판 ---------- */
.gutworld{display:none;position:absolute;left:50%;top:97%;width:46%;aspect-ratio:900/351;translate:-50% -100%;z-index:94;pointer-events:none}
.stage.gut-on .gutworld{display:block;animation:gutIn .8s ease-out}
@keyframes gutIn{from{opacity:0;transform:translateY(6%)}}
.gutworld .gp{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 .4cqw .4cqw rgba(30,15,5,.4))}
.gutworld .md{position:absolute;left:50%;bottom:30%;height:118%;translate:-50% 0;transform-origin:50% 100%;animation:mudang .8s ease-in-out infinite alternate}
.gutworld .md.b{display:none}
.gutworld.flip .md.a{display:none}.gutworld.flip .md.b{display:block}
@keyframes mudang{from{transform:translateY(0) rotate(-3deg)}to{transform:translateY(-6%) rotate(3deg)}}
.gutui{display:none;position:absolute;inset:0;z-index:135;pointer-events:none;overflow:hidden}
.stage.gut-on .gutui{display:block}
.gutui .gtitle{position:absolute;left:50%;top:21%;translate:-50% 0;background:rgba(181,54,44,.92);color:#fff6e0;font-family:var(--display);font-size:clamp(13px,1.8cqw,18px);padding:3px 14px;border-radius:999px;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.25)}
.gutui .gline{position:absolute;left:50%;top:28%;translate:-50% 0;width:min(86%,560px);text-align:center;font-family:var(--hand);font-size:clamp(18px,3.2cqw,30px);line-height:1.3;color:#fff8e4;text-shadow:0 2px 6px rgba(0,0,0,.85),0 0 14px rgba(181,54,44,.6)}
.gutui .gline.in{animation:glineIn .7s ease-out}
@keyframes glineIn{from{opacity:0;transform:translateY(10px) scale(.96)}}
.gutui .gbar{position:absolute;left:50%;top:40%;translate:-50% 0;width:min(46%,260px);height:8px;border-radius:999px;background:rgba(0,0,0,.35);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);overflow:hidden}
.gutui .gbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#e2584a,#e8b24f,#9cc78a,#8fb8e8);transition:width .4s}
.gutui.full .gbar{box-shadow:0 0 12px #e8b24f}
.geol{position:absolute;right:3%;bottom:20%;pointer-events:auto;border:0;border-radius:50%;width:clamp(58px,10cqw,84px);aspect-ratio:1;background:radial-gradient(circle at 35% 30%,#ff8f6b,#b5362c);color:#fff;font-family:var(--hand);font-size:clamp(16px,2.6cqw,22px);box-shadow:0 4px 0 #7a1f18,0 6px 14px rgba(0,0,0,.35);cursor:pointer;animation:eolBob 1.2s ease-in-out infinite alternate}
.geol:active{transform:translateY(3px);box-shadow:0 1px 0 #7a1f18}
@keyframes eolBob{to{transform:scale(1.06)}}
.eolpop{position:absolute;z-index:136;translate:-50% -100%;font-family:var(--hand);font-size:clamp(15px,2.4cqw,21px);color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.8);pointer-events:none;animation:eolUp 1.3s ease-out forwards;white-space:nowrap}
.eolpop.mine{color:#ffe08a}
@keyframes eolUp{to{transform:translateY(-40px);opacity:0}}
.gconf{position:absolute;top:-8%;width:clamp(16px,3cqw,28px);aspect-ratio:1;background:url(img/gut-confetti.webp) 0 0/400% auto no-repeat;animation:confFall 2.8s linear forwards;pointer-events:none}
@keyframes confFall{to{transform:translate(var(--dx),90vh) rotate(540deg)}}
.guttoast{position:absolute;left:50%;top:16%;translate:-50% 0;z-index:141;display:flex;align-items:center;gap:8px;background:var(--paper);color:var(--ink);border-radius:999px;padding:5px 6px 5px 14px;box-shadow:0 4px 14px rgba(0,0,0,.35);font-size:clamp(12px,1.5cqw,14px);white-space:nowrap;animation:pop .3s ease-out}
.guttoast[hidden]{display:none}
.guttoast button{border:0;border-radius:999px;background:#b5362c;color:#fff;font:inherit;font-weight:700;padding:6px 12px;cursor:pointer}
.gutkinds{margin-bottom:10px}
.gutbtn{background:#5a2a24}
.stage.gut-on .tower,.stage.gut-on .jeongsu{opacity:.35}
@media (max-width:620px){.gutworld{width:84%;top:96%}.gutui .gline{top:30%}}
@media (prefers-reduced-motion:reduce){.gutworld .md,.geol,.gconf{animation:none}}
.gutworld .md{height:72%;bottom:28%}
.gutworld{width:40%}
@media (max-width:620px){.gutworld{width:78%}}
/* 촛불·정화수 화면: 무대 높이에 맞춰 크기 (낮은 컴퓨터 화면에서 위가 잘리던 것) */
.pray{container-type:size;gap:clamp(4px,1.6cqh,10px);touch-action:none}
.cbig,.cbig.hands{height:min(40cqh,230px)}
.cbig img{height:min(40cqh,230px)!important;user-select:none;-webkit-user-drag:none;pointer-events:none}
.pray .pbowl{width:min(46cqh,190px)}
.pray .pt{font-size:clamp(15px,4.4cqh,24px)}
.pray .ps{font-size:clamp(11.5px,3.2cqh,15px)}
.pring{width:min(22cqh,86px);height:min(22cqh,86px)}

/* 안방 문 앞 두 사람: 위아래로 쌓이던 것 → 나란히 */
.atdoor.two{display:flex;align-items:flex-end;justify-content:center;gap:4%;width:calc(var(--base)*1.15)}
.atdoor.two .who,.atdoor.two .who.animal{position:relative;left:auto;bottom:auto;width:46%;flex:none}
/* 문 팻말이 앞줄 손님에게 가려지던 것 */
.doorsign{z-index:101}

/* 마루에서 보는 굿판: 문 앞에서 무녀가 춤 */
.gutmaru{display:none;position:absolute;left:50%;top:calc(var(--doorB) + 1%);width:calc(var(--base)*1.3);aspect-ratio:1;translate:-50% -100%;z-index:58;pointer-events:none}
.stage.gut-maru .gutmaru{display:block;animation:gutIn .8s ease-out}
.gutmaru .md{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform-origin:50% 100%;animation:mudang .8s ease-in-out infinite alternate;filter:drop-shadow(0 0 1cqw rgba(255,200,120,.6))}
.gutmaru .md.b{display:none}.gutmaru.flip .md.a{display:none}.gutmaru.flip .md.b{display:block}
.stage.gut-maru .gutui{display:block}
.stage.gut-maru .gutui .gtitle{top:24%}.stage.gut-maru .gutui .gline{top:31%}.stage.gut-maru .gutui .gbar{top:43%}
.stage.gut-maru .guttoast{top:auto;bottom:3%}
.gutmaru{left:31%;top:calc(var(--doorB) + 4%)}
@media (max-width:620px){.gutmaru{left:24%;width:calc(var(--base)*1.6)}}

/* ---------- 굿판, 차분하게 (오늘의 일진처럼 족자에 축원) ---------- */
.gutscroll{position:absolute;left:84%;bottom:62%;width:30%;display:flex;flex-direction:column;align-items:center;pointer-events:none;transform-origin:50% 0;animation:scrollSway 4.2s ease-in-out infinite}
.gutscroll .grod{position:relative;width:104%;padding:.35cqw .5cqw;border-radius:3px;background:#5b3a28;color:#f3d48e;font-family:var(--display);font-size:clamp(10px,1.15cqw,13px);text-align:center;white-space:nowrap;box-shadow:0 2px 0 #3a2418}
.gutscroll .grod::before,.gutscroll .grod::after{content:"";position:absolute;top:50%;width:.7cqw;height:.7cqw;min-width:5px;min-height:5px;border-radius:50%;background:#e8b24f;transform:translateY(-50%)}
.gutscroll .grod::before{left:-.45cqw}.gutscroll .grod::after{right:-.45cqw}
.gutscroll .grod.low{height:.7cqw;min-height:5px;padding:0}
.gutscroll .grod.low::before,.gutscroll .grod.low::after{display:none}
.gutscroll .gpaper{width:100%;max-height:14cqw;overflow:hidden;background:var(--paper);color:var(--ink);padding:.6cqw .7cqw;box-sizing:border-box;box-shadow:inset 0 0 0 .25cqw #f0e2c2;display:flex;flex-direction:column;justify-content:flex-end}
.gutscroll .gpaper p{margin:0 0 .25em;font-family:var(--hand);font-size:clamp(10px,1.2cqw,14px);line-height:1.35;color:#6d5a4b}
.gutscroll .gpaper p.new{color:var(--ink);animation:inkIn 1.2s ease-out}
@keyframes inkIn{from{opacity:0;filter:blur(2px);letter-spacing:.1em}}
/* 얼쑤: 화려한 빨간 동그라미 → 굿판 앞에 작은 종이 단추 */
.geol{position:absolute;left:50%;right:auto;top:100%;bottom:auto;translate:-50% 4px;width:auto;aspect-ratio:auto;border-radius:999px;background:var(--paper);color:#8a3b2e;border:1px solid #d6b98a;font-family:var(--hand);font-size:clamp(12px,1.5cqw,16px);padding:.2em .9em;box-shadow:0 2px 0 rgba(0,0,0,.25);animation:none;pointer-events:auto;cursor:pointer}
.geol:active{transform:translateY(1px);box-shadow:0 1px 0 rgba(0,0,0,.25)}
.gutworld{pointer-events:none}
.eolpop{font-size:clamp(12px,1.6cqw,15px)}
.gutui .gtitle,.gutui .gline,.gutui .gbar{display:none!important}
.gutmaru{display:none!important}
@media (max-width:620px){.gutscroll{left:80%;width:40%;bottom:66%}.gutscroll .gpaper{max-height:22cqw}.gutscroll .grod,.gutscroll .gpaper p{font-size:10px}}

/* 짧은 인사말 */
.quickbtn{background:var(--walnut-3)}
.quickbtn[aria-expanded="true"]{background:var(--gold);color:var(--ink)}
.quickpop{position:fixed;left:50%;translate:-50% 0;z-index:960;width:min(94vw,420px);display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--paper);border-radius:16px;padding:10px;box-shadow:0 10px 28px rgba(0,0,0,.45);animation:pop .2s ease-out}
.quickpop[hidden]{display:none}
.qitem{display:flex;align-items:center;gap:6px;border:1px solid #e3cf9f;background:#fffaf0;border-radius:10px;padding:9px 10px;font-family:var(--body);font-size:14px;color:var(--ink);text-align:left;cursor:pointer}
.qitem:active{transform:scale(.97)}
.qitem i{font-style:normal}

/* ---------- 감으로 할 수 있는 것 ---------- */
.gamuses{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}
.gamuse{display:grid;grid-template-columns:26px 1fr auto;grid-template-rows:auto auto;column-gap:6px;align-items:center;text-align:left;border:1px solid #e3cf9f;background:#fffaf0;border-radius:10px;padding:8px 9px;font-family:var(--body);color:var(--ink)}
.gamuse.go{cursor:pointer;background:linear-gradient(#fffaf0,#fbefd3)}
.gamuse.go:active{transform:scale(.98)}
.gamuse i{grid-row:1/3;font-style:normal;font-size:20px}
.gamuse b{font-size:13.5px}
.gamuse .gc{font-size:11px;color:#c05a1c;background:rgba(232,116,42,.12);border-radius:999px;padding:1px 6px;white-space:nowrap}
.gamuse .gd{grid-column:2/4;font-size:11.5px;color:var(--ink-2);line-height:1.35}
#gamBtn.hint{background:var(--gold);color:var(--ink);animation:pulseBtn .6s infinite alternate}
.gamopt{border:1px dashed #e3a46a;border-radius:10px;padding:8px 10px;margin:4px 0 10px;background:rgba(232,116,42,.06)}
.gamopt b{font-size:13.5px;display:block}.gamopt>span{font-size:12px;color:var(--ink-2)}
.lcolors{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.lc{display:inline-flex;align-items:center;gap:5px;border:1px solid #d6c7a6;background:#fffaf0;border-radius:999px;padding:4px 10px;font:inherit;font-size:12.5px;cursor:pointer;color:var(--ink)}
.lc i{width:10px;height:13px;border-radius:42%;background:var(--lc);box-shadow:0 0 6px var(--lc)}
.lc.on{border-color:var(--gold);background:rgba(232,178,79,.22);font-weight:700}
.lantern.sp{animation:lsway 4s ease-in-out infinite alternate,lspark 1.6s ease-in-out infinite alternate}
@keyframes lspark{to{box-shadow:0 0 2.6cqw .6cqw var(--lc)}}
.charmdone.gold{box-shadow:0 0 0 3px #e8b24f,0 8px 26px rgba(232,178,79,.6)}
/* 곶감: 마당 대문 옆 담장 기와 밑 */
.eaves{display:none;position:absolute;left:8%;top:39%;width:14%;height:12%;z-index:47}
.stage.scene-gate .eaves{display:block}
@media (max-width:620px){.eaves{left:4%;top:41%;width:22%}}
.gstring{position:absolute;top:0;width:22%;height:100%;border:0;padding:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3%}
.gstring::before{content:"";position:absolute;left:50%;top:-12%;bottom:6%;width:1px;background:#8a6a44}
.gstring i{position:relative;width:62%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffb067,#e8742a 60%,#b9531a);box-shadow:0 .1cqw .2cqw rgba(0,0,0,.3)}
.gstring.dried i{background:radial-gradient(circle at 35% 30%,#d8b49a,#9a5a32 55%,#6b3a1c);box-shadow:inset 0 0 .3cqw rgba(255,255,255,.7)}
.gstring.dried{animation:gotReady 1.4s ease-in-out infinite alternate}
@keyframes gotReady{to{filter:drop-shadow(0 0 .6cqw #ffe7a8)}}
/* 굿판 상에 감 */
.gutgambtn{position:absolute;left:50%;top:100%;translate:calc(-50% + 5.5em) 4px;border-radius:999px;background:var(--paper);color:#c05a1c;border:1px solid #e3a46a;font-family:var(--hand);font-size:clamp(11px,1.4cqw,15px);padding:.2em .8em;box-shadow:0 2px 0 rgba(0,0,0,.25);pointer-events:auto;cursor:pointer}
.geol{translate:calc(-50% - 3.5em) 4px}
.guttray{position:absolute;left:0;right:0;bottom:44%;height:6%;pointer-events:none}
.tgam{position:absolute;bottom:0;width:3.2%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffb067,#e8742a 60%,#b9531a);animation:stoneDrop .6s cubic-bezier(.4,0,.7,1.4)}
/* ---------- 애기동자 ---------- */
.dongja{position:absolute;width:calc(var(--base)*.7);aspect-ratio:199/360;translate:-50% -88%;transform:scale(var(--s,1));transform-origin:50% 100%;border:0;padding:0;background:none;cursor:pointer;z-index:80}
.dongja[hidden]{display:none}
.dongja img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:none;filter:drop-shadow(0 .3cqw .3cqw rgba(40,20,10,.35))}
.dongja.front .f{display:block;animation:djBob 1s ease-in-out infinite alternate}
.dongja.walking .wl{display:block;animation:footL .38s steps(1) infinite}
.dongja.walking .wr{display:block;animation:footR .38s steps(1) infinite}
.dongja:not(.front):not(.walking) .f{display:block}
.dongja.flipx.walking img{scale:-1 1}
.dongja.bow .f{animation:djBow .8s ease-in-out 2}
@keyframes djBob{to{transform:translateY(-3%)}}
@keyframes djBow{50%{transform:rotate(8deg) translateY(3%)}}
.djsay{position:absolute;left:50%;bottom:102%;translate:-50% 0;width:max-content;max-width:40cqw;background:var(--paper);color:var(--ink);font-family:var(--hand);font-size:clamp(13px,2cqw,18px);padding:.3cqw 1cqw;border-radius:1.2cqw;box-shadow:0 2px 0 rgba(0,0,0,.15);opacity:0;transition:opacity .25s;pointer-events:none}
.djsay.on{opacity:1}
/* ---------- 고양이 달이 ---------- */
.cat{cursor:pointer}
.cat.awake img{animation:catWake .5s ease-out,breathe 1.6s ease-in-out .5s infinite}
.cat.awake .z{display:none}
.cat.eating img{animation:catEat .3s ease-in-out 8}
@keyframes catWake{from{transform:scaleY(.92)}}
@keyframes catEat{50%{transform:translateY(-3%) rotate(-2deg)}}
.csay{position:absolute;left:50%;bottom:92%;translate:-50% 0;width:max-content;background:var(--paper);color:var(--ink);font-family:var(--hand);font-size:clamp(12px,1.8cqw,16px);padding:.2cqw .9cqw;border-radius:1cqw;opacity:0;transition:opacity .25s;pointer-events:none}
.csay.on{opacity:1}
.heart{position:absolute;z-index:139;color:#ff6b8a;font-style:normal;font-size:clamp(14px,2.2cqw,20px);pointer-events:none;animation:heartUp 1.8s ease-out forwards;text-shadow:0 1px 2px rgba(0,0,0,.3)}
@keyframes heartUp{to{transform:translateY(-60px) scale(1.3);opacity:0}}
.catmenu{position:absolute;z-index:140;translate:0 -100%;width:min(260px,70cqw);background:var(--paper);color:var(--ink);border-radius:12px;padding:10px 12px;box-shadow:0 6px 18px rgba(0,0,0,.35);animation:pop .2s ease-out}
.catmenu>b{display:block;font-family:var(--display);font-size:15px}
.catmenu .love{display:block;font-size:12.5px;color:#d0506a;margin:2px 0 8px}
.catmenu .row2{display:flex;flex-wrap:wrap;gap:5px}
.catmenu .act{background:var(--paper-2);color:var(--ink);padding:6px 11px;font-size:13px}
.catmenu .act.gold{background:var(--gold)}
@media (prefers-reduced-motion:reduce){.dongja img,.gstring.dried,.lantern.sp,.heart{animation:none!important}}
.dongja.edgeL .djsay{left:0;translate:0 0}.dongja.edgeR .djsay{left:auto;right:0;translate:0 0}
.catmenu{translate:0 0}

/* 사주 사전 */
.dictq{width:100%;box-sizing:border-box;border:1px solid #d6c7a6;border-radius:999px;padding:9px 14px;font:inherit;font-size:16px;background:#fffdf7;color:var(--ink);margin-bottom:8px}
.dictcats{margin-bottom:8px}
.dictlist{display:grid;gap:7px;max-height:46vh;overflow:auto;margin-bottom:10px;padding-right:2px}
.dictcard{position:relative;background:rgba(255,255,255,.6);border:1px solid #eadcbc;border-radius:10px;padding:8px 11px}
.dictcard.mine{border-color:var(--gold);background:rgba(232,178,79,.16)}
.dictcard .dh{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.dictcard b{font-size:15px}
.dictcard .hj{font-family:var(--display);color:var(--red);font-size:13px}
.dictcard .dc{margin-left:auto;font-size:11px;color:var(--ink-2);background:#f1e4cc;border-radius:999px;padding:1px 7px}
.dictcard p{margin:4px 0 0;font-size:13.5px;line-height:1.55}
.dictcard .dme{position:absolute;top:-8px;right:10px;background:var(--gold);color:var(--ink);font-size:10.5px;padding:1px 7px;border-radius:999px}
.dicttoday{display:flex;align-items:center;gap:8px;background:rgba(181,54,44,.07);border-radius:10px;padding:8px 12px;margin-bottom:10px;cursor:pointer}
.dicttoday span{font-size:12px;color:var(--red)}
.dicttoday b{font-size:14px}
.wdict{width:100%;margin-top:8px}
.seat.mine .ilgan{cursor:help}

/* 굿판 패: 마루 "오늘의 일진" 족자 밑 */
.gutsign{display:none;position:absolute;left:2.5%;top:28.5%;z-index:46;border:0;border-radius:3px;background:#5a2a24;color:#f6d9a8;font-family:var(--display);font-size:clamp(11px,1.35cqw,14px);padding:.35cqw .9cqw;white-space:nowrap;box-shadow:0 2px 0 #3a1a14;cursor:pointer;transform-origin:50% -60%;animation:scrollSway 4s ease-in-out infinite}
.gutsign::before{content:"";position:absolute;left:50%;bottom:100%;width:1px;height:1.2cqw;background:#8a6a44}
.stage.scene-maru .gutsign{display:block}
.stage.scene-anbang .gutsign{display:none}
.gutsign.off{background:#4a3a32;color:#c9b89a;opacity:.85}
@media (max-width:620px){.gutsign{left:3%;top:22.5%;font-size:10.5px}}
/* 얼쑤·감 올리기 버튼이 무대 아래로 잘리던 것 → 굿판 돗자리 앞쪽 위로 */
.geol,.gutgambtn{top:auto;bottom:4%;z-index:3}
.geol{translate:calc(-50% - 3.6em) 0}
.gutgambtn{translate:calc(-50% + 3.2em) 0}
.stage.gut-on .tower{opacity:.25}
/* 촛대 이름표는 컵을 가리지 않게 촛대 아래로 */
.cstand .tlabel{top:100%;bottom:auto;translate:-50% 3px}
.cstand{z-index:74}

/* 선녀님 점: 오방기 · 방울 */
.rituals{grid-template-columns:1fr 1fr}
.ritual .flags{width:38px;height:38px;background:linear-gradient(90deg,#3f6fb5 0 20%,#c8463a 20% 40%,#d9a63a 40% 60%,#efe9dc 60% 80%,#33302e 80%);clip-path:polygon(0 0,100% 0,100% 70%,0 70%);border-radius:3px}
.ritual .bellic{width:34px;height:34px;border-radius:50% 50% 40% 40%;background:radial-gradient(circle at 35% 30%,#ffe9a8,#c9962e 70%);box-shadow:inset 0 -3px 0 #a8742a}
.rflags{display:flex;gap:8px;align-items:flex-end}
.rflag{width:22px;height:40px;background:var(--fc);border:1px solid rgba(0,0,0,.2);clip-path:polygon(0 0,100% 0,100% 100%,50% 82%,0 100%);opacity:.45;transition:transform .3s,opacity .3s}
.rflag.on{opacity:1;transform:translateY(-8px) scale(1.2)}
.ritualview.anim .rflag{animation:flagWave .5s ease-in-out infinite alternate;animation-delay:calc(var(--i)*-.1s);opacity:.8}
.ritualview.anim .rflag.on{transform:none}
@keyframes flagWave{to{transform:translateY(-6px) skewX(-6deg)}}
.rbell{width:46px;height:50px;border-radius:50% 50% 40% 40%;background:radial-gradient(circle at 35% 30%,#ffe9a8,#c9962e 70%);box-shadow:inset 0 -4px 0 #a8742a;transform-origin:50% 0}
.ritualview.anim .rbell{animation:ring .18s ease-in-out infinite alternate}

/* 스피커 버튼: 날씨 표시 바로 밑 */
.spk{position:absolute;right:1.6%;top:calc(2.5% + clamp(22px,3.2cqw,30px));z-index:126;display:flex;align-items:center;gap:.35em;border:0;border-radius:999px;background:rgba(27,22,34,.62);color:var(--paper);font-family:var(--body);font-size:clamp(11px,1.4cqw,14px);padding:.3cqw .9cqw .3cqw .6cqw;cursor:pointer}
.spk i{font-style:normal}
.spk.on{background:rgba(232,178,79,.92);color:var(--ink)}
.stage.scene-anbang .spk{top:2.5%}
/* 생년월일 개인정보 안내 */
.privacy{margin:5px 0 0;font-size:11.5px;line-height:1.45;color:#6d7a5a}
/* 촛대 단은 놓인 자리(바닥 높이)만큼만 앞으로: 그 앞에 선 사람이 단 뒤에 가려지지 않게 */
.cstand{z-index:70}
.bkfirst{margin:2px 0 8px;font-size:12.5px;color:#a0522d}
/* 방 안에서도 날씨 표시 아래에 (겹치던 것) */
.stage.scene-anbang .spk{top:calc(2.5% + clamp(22px,3.2cqw,30px))}

/* ---------- 달맞이 시간 ---------- */
.moonbar{position:absolute;left:50%;top:13%;translate:-50% 0;z-index:138;display:flex;align-items:center;gap:8px;background:rgba(27,22,44,.9);color:#fff6dc;border:1px solid rgba(255,240,190,.5);border-radius:999px;padding:6px 6px 6px 14px;box-shadow:0 0 24px rgba(255,236,170,.45);font-size:clamp(12px,1.5cqw,14px);white-space:nowrap;max-width:94%}
.moonbar[hidden]{display:none}
.moonbar b{font-family:var(--display)}
.moonbar button{border:0;border-radius:999px;background:#fff1c2;color:var(--ink);font:inherit;font-weight:700;padding:6px 12px;cursor:pointer}
.stage.moon-time::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:30;background:radial-gradient(60% 40% at 50% 8%,rgba(255,244,200,.28),transparent 70%)}
/* ---------- 풀이 카드 · 수첩 ---------- */
.cardbtn{order:-1}
.nblist{display:grid;gap:8px;max-height:56vh;overflow:auto;margin-bottom:10px}
.nbitem{background:rgba(255,255,255,.6);border:1px solid #eadcbc;border-radius:10px;padding:8px 11px}
.nbitem summary{cursor:pointer;list-style:none;display:grid;grid-template-columns:1fr auto;gap:2px 8px}
.nbitem summary b{font-size:14px}.nbitem summary span{font-size:12px;color:var(--ink-2)}
.nbitem summary p{grid-column:1/3;margin:2px 0 0;font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nbitem .nbq{margin:8px 0 2px;font-size:13px;color:#8a3b2e;font-weight:700}
.nbitem .nba{margin:2px 0 6px;font-size:13.5px;line-height:1.6;white-space:pre-wrap}
.nbitem .nbb{font-size:13px;color:var(--red)}
.nbitem .btn{margin-top:6px;padding:4px 12px;font-size:12px}
/* ---------- 소원 이뤄졌어요 ---------- */
.lantern.done{--lc:#ffd56a!important;animation:lsway 4s ease-in-out infinite alternate,lspark 1.2s ease-in-out infinite alternate}
.lantern.done::after{content:"✨";position:absolute;top:-70%;left:50%;translate:-50% 0;font-size:clamp(9px,1.2cqw,12px)}
.wishtip em{display:block;font-style:normal;color:#c08a12;font-size:12px}
.wishlist li.done{background:rgba(255,213,106,.25)}
.wishlist li .dn{grid-column:2/4;font-style:normal;font-size:12px;color:#b07a1a}
.wishlist li .donebtn{grid-column:2/4;justify-self:start;padding:3px 10px;font-size:12px;margin-top:4px}
.donecnt{font-size:13px;color:#b07a1a;font-weight:400}
/* ---------- 궁합 · 가리기 · 신고 ---------- */
.compat{margin-top:8px;padding:8px 10px;border-radius:10px;background:rgba(255,107,138,.1)}
.compat b{display:block;font-size:14px;color:#c0405e}
.compat p{margin:4px 0 0;font-size:13px}
.compat small{display:block;margin-top:4px;font-size:11px;color:var(--ink-2)}
.gfoot{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px;padding-top:6px;border-top:1px dashed #e0cfa8;font-size:12px}
.gfoot button{border:0;background:none;color:var(--ink-2);text-decoration:underline;font:inherit;font-size:12px;cursor:pointer;padding:2px}
.seat.muted .bub{display:none}
.sameil{color:var(--gold)}
/* ---------- 절기 이벤트 ---------- */
.seasontag{position:absolute;left:50%;top:21%;translate:-50% 0;z-index:137;background:rgba(181,54,44,.92);color:#fff6e0;border-radius:12px;padding:8px 14px;font-size:clamp(12px,1.6cqw,15px);text-align:center;max-width:86%;box-shadow:0 4px 14px rgba(0,0,0,.35);animation:pop .4s ease-out;transition:all .5s}
.seasontag.small{top:auto;bottom:2%;font-size:11px;padding:4px 10px;opacity:.9}
.stage.season-boreum .bg.gate.sky{filter:brightness(1.15)}
.seasonemo{background:#7a2f2a}
/* ---------- 오늘의 질문 ---------- */
.qtext{font-family:var(--display);font-size:19px;margin:4px 0 6px;color:var(--ink)}
.qrow{display:flex;gap:6px;margin-bottom:10px}
.qin{flex:1;min-width:0;border:1px solid #d6c7a6;border-radius:999px;padding:9px 14px;font:inherit;font-size:16px;background:#fffdf7;color:var(--ink)}
/* 공지 */
.noticebar{display:flex;align-items:center;gap:8px;background:#fbf4e4;color:var(--ink);border-radius:10px;padding:8px 8px 8px 12px;margin:0 0 10px;font-size:14px;line-height:1.45;box-shadow:0 2px 0 rgba(0,0,0,.2)}
.noticebar[hidden]{display:none}
.noticebar b{flex:none;color:var(--red)}
.noticebar span{flex:1;min-width:0;overflow-wrap:anywhere}
.noticebar .x{flex:none;border:0;background:none;color:var(--ink-2);font-size:14px;padding:4px 8px;cursor:pointer}
.guidenotice{background:rgba(181,54,44,.08);border-radius:8px;padding:8px 10px;font-size:14px}

/* ---------- 폰 정리 (스레드 앱 안에서 본 화면 기준) ---------- */
@media (max-width:620px){
  /* "지금 안방" 판이 날씨·스피커를 덮던 것 → 왼쪽 위로 작게, 두 줄 */
  .nowboard{left:2.5%;translate:0 0;max-width:58%;flex-wrap:wrap;column-gap:.4em;row-gap:0;padding:3px 8px}
  .nowboard .bl{font-size:10px}
  .nowboard .bn{font-size:14px}
  .nowboard .bw{flex-basis:100%;font-size:10px}
  /* 대문 안내판과 촛대 단이 겹치던 것 → 촛대는 아래 왼쪽, 안내판은 조금 위 */
  .cstand{left:37%;top:81%;width:34%}
  .stage.scene-gate .gatesign{top:66%}
}
/* 폰 점검에서 고친 것 */
.waitcard .wdict{background:#fffaf0!important;color:var(--ink)!important;border:1px solid #e3cf9f!important}
.waitcard{max-height:calc(100% - 10px);overflow:auto;bottom:5px;overscroll-behavior:contain}
@media (max-width:620px){.waitcard{padding:10px 10px 8px}.waitcard .trules{padding:5px 8px;margin-bottom:6px}.waitcard .trules li{font-size:11.5px;line-height:1.4}.witem{padding:6px 4px}.witem i{font-size:17px}}

/* ===== extras22 ===== */
.stampgift{margin:10px 0;padding:10px 12px;border-radius:10px;background:rgba(232,178,79,.18);display:grid;gap:4px}
.stampgift b{font-size:14px}.stampgift span,.stampgift small{font-size:12.5px;color:var(--ink-2)}.stampgift .btn{justify-self:start;margin-top:4px}
.ttilist{display:grid;gap:5px;max-height:52vh;overflow:auto;margin-bottom:10px}
.ttirow{display:grid;grid-template-columns:34px auto 1fr;grid-template-rows:auto auto;column-gap:8px;align-items:center;background:rgba(255,255,255,.55);border-radius:9px;padding:5px 9px}
.ttirow.mine{background:rgba(232,178,79,.25);box-shadow:inset 0 0 0 1px var(--gold)}
.ttirow img{grid-row:1/3;width:34px;height:34px;object-fit:contain}
.ttirow b{font-size:13.5px}.ttirow .st{color:#d99a1e;font-size:12px;letter-spacing:1px}
.ttirow p{grid-column:2/4;margin:0;font-size:12.5px;line-height:1.4}
.ttiboard{display:none;position:absolute;right:4%;top:58%;z-index:46;border:0;border-radius:3px;background:#f3e2b8;color:#5b3a28;font-family:var(--display);font-size:clamp(10px,1.2cqw,13px);padding:.5cqw .7cqw;box-shadow:0 2px 0 rgba(0,0,0,.3);writing-mode:vertical-rl;letter-spacing:.15em;cursor:pointer}
.stage.scene-maru .ttiboard{display:block}.stage.scene-anbang .ttiboard{display:none}
@media (max-width:620px){.ttiboard{right:3%;top:40%;font-size:10px}}
.listentog{display:flex;gap:6px;align-items:flex-start;font-size:12.5px;color:var(--ink-2);margin:4px 0 10px;line-height:1.4}
.listenchip{position:absolute;left:50%;bottom:3%;translate:-50% 0;z-index:128;border:0;border-radius:999px;background:rgba(27,22,44,.88);color:#fff6dc;font:inherit;font-size:clamp(12px,1.5cqw,14px);padding:6px 14px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.listenchip[hidden]{display:none}
.listenbox{background:rgba(255,255,255,.6);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.listenbox .lq{margin:4px 0;font-size:13px;color:#8a3b2e}.listenbox .la{margin:4px 0 0;font-size:14px;line-height:1.6;white-space:pre-wrap}
.miniin{width:100%;box-sizing:border-box;border:1px solid #d6c7a6;border-radius:10px;padding:9px 12px;font:inherit;font-size:16px;background:#fffdf7;color:var(--ink);margin-bottom:8px}
textarea.miniin{min-height:80px}
.miniout{background:rgba(255,255,255,.65);border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.65;white-space:pre-wrap;margin:8px 0}
.cheerbtn{border:1px solid #e3cf9f;background:#fffaf0;border-radius:999px;font:inherit;font-size:12px;padding:2px 9px;cursor:pointer;color:var(--ink)}
.cheerbtn.on{background:rgba(232,178,79,.35);border-color:var(--gold)}
.wishlist li .cheerbtn{grid-column:3;justify-self:end}
.wishtip .cheerbtn{display:block;margin-top:5px}
.lantern.cheered{box-shadow:0 0 calc(1.6cqw + var(--glow,0)*2.4cqw) calc(.3cqw + var(--glow,0)*.8cqw) color-mix(in srgb,var(--lc) 70%,#fff)}
.gtitles{display:block;font-size:12px;color:#b07a1a;margin:-2px 0 6px}
.ranklist{display:grid;gap:6px;margin-bottom:10px}
.rankrow{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;background:rgba(255,255,255,.55);border-radius:10px;padding:8px 11px}
.rankrow.mine{background:rgba(232,178,79,.25)}.rankrow b{font-size:14px}.rankrow span{text-align:right;font-size:13.5px}.rankrow small{grid-column:1/3;font-size:11.5px;color:var(--ink-2)}
.seasonfx{display:none;position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:44}
.stage.scene-gate .seasonfx{display:block}
.seasonfx i{position:absolute;top:-5%;width:1.2cqw;height:.8cqw;border-radius:60% 0;animation:fxFall linear infinite;opacity:.85}
.seasonfx.leaf i{background:#d9792e}.seasonfx.leaf i:nth-child(3n){background:#b8471f}.seasonfx.leaf i:nth-child(4n){background:#e2a93a}
.seasonfx.petal i{background:#ffc7d9;border-radius:60% 10%}
.seasonfx.snowy i{width:.7cqw;height:.7cqw;border-radius:50%;background:#fff}
@keyframes fxFall{to{transform:translate(6cqw,110cqh) rotate(540deg)}}
/* ===== extras23 놀이마당 ===== */
.playsign{display:none;position:absolute;left:62%;top:66%;translate:-50% -100%;z-index:66;border:0;padding:.4cqw .9cqw;border-radius:3px;background:#6b4a32;color:#f6e2b3;font-family:var(--display);cursor:pointer;box-shadow:0 2px 0 #3a2418;line-height:1.15;text-align:center}
.playsign::after{content:"";position:absolute;left:50%;top:100%;width:.5cqw;height:2.4cqw;margin-left:-.25cqw;background:#5b3a28}
.playsign b{display:block;font-size:clamp(11px,1.4cqw,15px)}.playsign span{font-size:clamp(9px,1cqw,11px);opacity:.85}
.stage.scene-gate .playsign{display:block}.stage.gut-on .playsign{display:none}
@media (max-width:620px){.playsign{left:66%;top:69%}}
.gamelist{display:grid;gap:8px;margin-bottom:10px}
.gameitem{display:grid;grid-template-columns:34px 1fr auto;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;border:1px solid #e3cf9f;background:#fffaf0;border-radius:12px;padding:10px 12px;font-family:var(--body);color:var(--ink);cursor:pointer}
.gameitem i{grid-row:1/3;font-style:normal;font-size:26px}.gameitem b{font-size:15px}.gameitem span{grid-column:2;font-size:12.5px;color:var(--ink-2)}.gameitem em{grid-row:1/3;grid-column:3;font-style:normal;font-size:12px;color:#b07a1a}
.gameui{background:radial-gradient(circle at 50% 40%,rgba(70,45,25,.6),rgba(20,12,8,.9))}
.gresult{display:grid;justify-items:center;gap:4px;margin-top:6px}.gresult b{font-family:var(--display);font-size:32px;color:#ffe08a}.gresult span{font-size:13px}
.grow{display:flex;gap:8px;margin-top:6px}.gameui .btn.line{background:rgba(255,255,255,.15);color:var(--paper);border:0}
.yutsticks{display:flex;gap:10px;height:clamp(80px,22cqh,130px);align-items:center}
.yutsticks i{width:clamp(16px,4cqw,24px);height:100%;border-radius:999px;background:linear-gradient(90deg,#c58b4e,#e9b77a 50%,#c58b4e);box-shadow:inset 0 0 0 2px #7a4a22;position:relative}
.yutsticks i.flat{background:linear-gradient(90deg,#f6e2b3,#fff4d6 50%,#f6e2b3)}
.yutsticks i.flat::after{content:"✕";position:absolute;left:50%;top:50%;translate:-50% -50%;color:#7a4a22;font-size:12px}
.yutsticks.throw i{animation:yutUp .9s ease-in-out}.yutsticks.throw i:nth-child(2){animation-delay:.05s}.yutsticks.throw i:nth-child(3){animation-delay:.1s}.yutsticks.throw i:nth-child(4){animation-delay:.15s}
@keyframes yutUp{40%{transform:translateY(-60%) rotate(200deg)}100%{transform:none}}
.yutlog{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;min-height:22px}
.yutlog span{background:rgba(255,255,255,.18);border-radius:999px;padding:2px 9px;font-size:12.5px}.yutlog span.bonus{background:var(--gold);color:var(--ink)}
.tuho{position:relative;width:min(80%,320px);height:clamp(110px,30cqh,170px)}
.tpot{position:absolute;left:50%;bottom:0;translate:-50% 0;width:22%;aspect-ratio:.8;border-radius:30% 30% 40% 40%;background:radial-gradient(circle at 40% 30%,#6d8bb0,#2f4a6e 70%);box-shadow:inset 0 6px 0 #1d2f47}
.tpot::before{content:"";position:absolute;left:20%;right:20%;top:-6%;height:12%;border-radius:50%;background:#1d2f47}
.tarrow{position:absolute;top:0;width:4px;height:42%;translate:-50% 0;background:linear-gradient(#e9b77a,#8a5a2a);border-radius:2px}
.tarrow::before{content:"";position:absolute;top:-8px;left:50%;translate:-50% 0;border:6px solid transparent;border-bottom:9px solid #c8463a}
.tarrow.shoot{animation:tShoot .45s ease-in}
@keyframes tShoot{to{transform:translateY(120%);opacity:.2}}
.thits{position:absolute;inset:0;pointer-events:none}
.thits i{position:absolute;bottom:22%;width:8px;height:8px;border-radius:50%;translate:-50% 0}.thits i.in{background:#9cc78a}.thits i.out{background:#c8463a}
.jegi{position:relative;width:min(80%,300px);height:clamp(180px,48cqh,280px);border-bottom:2px dashed rgba(255,255,255,.3);touch-action:none}
.jball{position:absolute;width:48px;height:48px;translate:-50% -50%;border:0;padding:0;background:none;cursor:pointer;touch-action:none}
.jball::before{content:"";position:absolute;left:30%;right:30%;bottom:8%;height:30%;border-radius:50%;background:#c58b4e;box-shadow:inset 0 -3px 0 #7a4a22}
.jball::after{content:"";position:absolute;left:18%;right:18%;top:4%;height:62%;background:repeating-linear-gradient(90deg,#e2584a 0 4px,#e8b24f 4px 8px,#8fb8e8 8px 12px);clip-path:polygon(50% 100%,0 0,100% 0);opacity:.95}
.jball.kick{animation:jKick .25s ease-out}
@keyframes jKick{50%{scale:1.25}}
.jcount{font-family:var(--display);font-size:34px;color:#ffe08a}
.rhwatu{display:grid;justify-items:center;width:58px;height:84px;border-radius:6px;background:#c8463a;color:#fff;box-shadow:inset 0 0 0 3px #fff,0 3px 6px rgba(0,0,0,.25);align-content:center;gap:2px}
.rhwatu i{font-style:normal;font-size:28px}.rhwatu b{font-size:13px}
.ritualview.anim .rhwatu{animation:coinFlip .5s linear infinite}
.ritual .hwic{width:30px;height:42px;border-radius:4px;background:#c8463a;box-shadow:inset 0 0 0 2px #fff}
@media (prefers-reduced-motion:reduce){.seasonfx i,.yutsticks.throw i{animation:none}}

/* ===== 다른 공간 (extras24) ===== */
.place{position:absolute;inset:0;z-index:145;display:flex;flex-direction:column;overflow:hidden auto;background-size:cover;background-position:center;color:var(--paper);overscroll-behavior:contain}
.place[hidden]{display:none}
.place.pl-back{background-color:#1d2a26;background-image:radial-gradient(120% 70% at 50% 110%,#5b4630 0 38%,transparent 39%),radial-gradient(60% 40% at 80% 10%,#f3e7c4 0 4%,transparent 5%),linear-gradient(#152230,#24333a 60%,#3a3428)}
.place.pl-attic{background-color:#2a1d16;background-image:repeating-linear-gradient(90deg,rgba(0,0,0,.18) 0 2px,transparent 2px 70px),linear-gradient(160deg,#4a3324,#2a1d16)}
.place.pl-market{background-color:#1b1622;background-image:radial-gradient(30% 20% at 20% 30%,rgba(255,170,90,.45),transparent 70%),radial-gradient(30% 20% at 75% 25%,rgba(255,120,90,.4),transparent 70%),linear-gradient(#141020,#2a1e2a 55%,#4a3322)}
.place.pl-hill{background-color:#0f1430;background-image:radial-gradient(22% 22% at 50% 22%,#fff6d6 0 60%,rgba(255,240,190,.5) 61%,transparent 75%),radial-gradient(140% 60% at 50% 120%,#24304a 0 45%,transparent 46%),linear-gradient(#0a0f28,#1d2550 70%,#24304a)}
.place.hasimg{background-color:#000}
.pltop{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:10px;padding:8px 10px;background:linear-gradient(rgba(10,8,12,.75),transparent)}
.pltop b{font-family:var(--display);font-size:clamp(15px,2.2cqw,20px)}
.plback{border:0;border-radius:999px;background:rgba(251,244,228,.92);color:var(--ink);font:inherit;font-size:13px;padding:6px 12px;cursor:pointer}
.plhere{display:flex;gap:6px;align-items:flex-end;padding:0 12px;min-height:58px;flex-wrap:wrap}
.plme{display:grid;justify-items:center;width:44px}.plme .who{position:relative;left:0;width:40px;bottom:0;animation:none}.plme span{font-size:10.5px;background:rgba(0,0,0,.4);border-radius:3px;padding:0 4px;white-space:nowrap}
.plmore{font-size:12px;opacity:.8}
.plbody{padding:8px 12px 14px;display:grid;gap:10px}
.plcard{background:rgba(251,244,228,.93);color:var(--ink);border-radius:12px;padding:10px 12px}
.plcard b{display:block;font-size:14.5px}.plcard p{margin:4px 0 6px;font-size:13px;line-height:1.5}
.plnote{margin:0;font-size:12.5px;opacity:.9}.plcard .plnote{color:var(--ink-2)}
.plrow{display:flex;gap:6px}.plrow.wrap{flex-wrap:wrap}.plrow input{flex:1;min-width:0;border:1px solid #d6c7a6;border-radius:999px;padding:8px 12px;font:inherit;font-size:16px;background:#fffdf7}
.plmsg{font-family:var(--display);color:#7a2f2a}
.plpop{position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:5;width:min(84%,320px);background:var(--paper);color:var(--ink);border-radius:14px;padding:16px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.5);animation:ccPop .4s cubic-bezier(.3,1.5,.5,1)}
.plpop b{display:block;font-size:15px}.plpop p{font-family:var(--display);font-size:17px;margin:10px 0}.plpop small{display:block;color:var(--ink-2);margin-bottom:10px}
.jangdok{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;min-height:70px;align-items:flex-end}
.jar{display:grid;justify-items:center;border:0;background:none;cursor:pointer;color:var(--paper)}
.jar i{width:46px;height:52px;border-radius:40% 40% 34% 34%;background:radial-gradient(circle at 35% 30%,#8a5a3a,#4a2a1a 70%);box-shadow:inset 0 5px 0 #2a160c;position:relative}
.jar i::before{content:"";position:absolute;left:12%;right:12%;top:-8px;height:10px;border-radius:50%;background:#3a2214}
.jar small{font-size:11px;margin-top:2px}.jar.ready i{box-shadow:inset 0 5px 0 #2a160c,0 0 14px #ffe7a8}.jar.ready small{color:#ffe08a;font-weight:700}
.pulling{animation:wellPull .4s ease-in-out 3}@keyframes wellPull{50%{transform:translateY(-4px)}}
.shelf{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:linear-gradient(transparent 46%,#3a2418 46% 50%,transparent 50% 96%,#3a2418 96%);padding:6px}
.book{display:grid;justify-items:center;align-content:center;gap:4px;height:110px;border:0;border-radius:3px 6px 6px 3px;background:var(--bc);color:#fbf0d8;box-shadow:inset 6px 0 0 rgba(0,0,0,.25),0 3px 0 rgba(0,0,0,.35);cursor:pointer;font-family:var(--display);padding:4px}
.book i{font-style:normal;font-size:20px}.book span{font-size:12px;line-height:1.25;word-break:keep-all;text-align:center}
.stall{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ware{display:grid;justify-items:center;gap:2px;border:0;border-radius:12px;background:rgba(251,244,228,.93);color:var(--ink);padding:10px 4px;cursor:pointer;font-family:var(--body)}
.ware i{font-style:normal;font-size:26px}.ware b{font-size:13px}.ware span{font-size:11.5px;color:#c05a1c}.ware.on{box-shadow:0 0 0 3px var(--gold)}
.deco{position:absolute;left:50%;top:-6%;translate:-50% 0;font-size:clamp(11px,2cqw,18px);pointer-events:none;z-index:4}
.deco-scarf{top:44%}.deco-lantern{left:96%;top:40%}.deco-norigae{left:94%;top:44%}
.hillsky{position:relative;height:clamp(150px,36cqh,240px);overflow:hidden}
.flylant{position:absolute;bottom:-20%;display:grid;justify-items:center;animation:flyUp 9s ease-in forwards}
.flylant i{width:22px;height:28px;border-radius:42%;background:radial-gradient(circle at 50% 40%,#fff4cf,#ffb35a 60%,#d06a2a);box-shadow:0 0 16px #ffb35a}
.flylant.mine i{box-shadow:0 0 22px #fff1a8}
.flylant span{font-size:11px;background:rgba(0,0,0,.45);border-radius:4px;padding:1px 5px;margin-top:3px;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
@keyframes flyUp{0%{transform:translateY(0)}50%{transform:translate(12px,-120%)}100%{transform:translate(-8px,-260%);opacity:0}}
.pldoor{display:none;position:absolute;z-index:47;border:0;border-radius:4px;background:#5b3a28;color:#f6e2b3;font-family:var(--display);font-size:clamp(10px,1.2cqw,13px);padding:.35cqw .8cqw;box-shadow:0 2px 0 #3a2418;cursor:pointer;white-space:nowrap}
.stage.scene-maru .pd-back,.stage.scene-maru .pd-attic{display:block}
.stage.scene-gate .pd-market,.stage.scene-gate .pd-hill{display:block}
.stage.scene-anbang .pldoor,.stage.in-place .pldoor{display:none!important}
.pd-back{left:2.5%;top:46%}.pd-attic{left:50%;top:3%;translate:-50% 0;display:none}
.stage.scene-maru .pd-attic{display:block;top:auto;bottom:auto;left:84%;top:22%}
.pd-market{left:2%;top:56%}.pd-hill{right:2%;top:49%;opacity:.55}.pd-hill.open{opacity:1;background:#2f3a6e;box-shadow:0 0 12px #fff1c2}
@media (max-width:620px){.pd-back{left:3%;top:34%}.stage.scene-maru .pd-attic{left:74%;top:31%}.pd-market{left:3%;top:47%}.pd-hill{right:3%;top:44%}.pldoor{font-size:10px}}
@media (prefers-reduced-motion:reduce){.flylant{animation-duration:3s}}
.place .btn.line{background:#fffaf0;color:var(--ink);border:1px solid #d6c7a6}
/* 공간: 그림 위주 (핀 + 아래 창) */
.place{overflow:hidden}
.pltop{position:absolute;left:0;right:0;top:0;background:linear-gradient(rgba(10,8,12,.6),transparent)}
.plhere{position:absolute;left:0;right:0;bottom:10px;z-index:2;justify-content:center;min-height:0;padding:0 8px;pointer-events:none}
.plpin{position:absolute;z-index:2;translate:-50% -50%;display:flex;align-items:center;gap:4px;border:0;border-radius:999px;background:rgba(20,14,22,.62);color:#fbf0d8;font:inherit;font-size:12px;padding:4px 10px 4px 5px;cursor:pointer;box-shadow:0 0 0 1px rgba(255,226,160,.45),0 2px 8px rgba(0,0,0,.4);backdrop-filter:blur(2px);white-space:nowrap}
.plpin i{font-style:normal;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:rgba(255,232,170,.92);font-size:13px;animation:pinGlow 2.4s ease-in-out infinite}
.plpin.ready::after{content:"";position:absolute;right:-2px;top:-2px;width:9px;height:9px;border-radius:50%;background:#e2553b;box-shadow:0 0 0 2px rgba(20,14,22,.8)}
@keyframes pinGlow{50%{box-shadow:0 0 12px 3px rgba(255,220,140,.7)}}
.plpanel{position:absolute;left:0;right:0;bottom:0;z-index:6;max-height:74%;overflow:auto;background:var(--paper);color:var(--ink);border-radius:16px 16px 0 0;box-shadow:0 -8px 24px rgba(0,0,0,.45);animation:plUp .25s ease-out;overscroll-behavior:contain}
@keyframes plUp{from{transform:translateY(40%);opacity:0}}
.plph{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 0}
.plph b{font-size:15px}.plph .pclose{position:static;color:var(--ink-2);background:none}
.plpanel .plbody{padding:8px 12px 14px}
.plpanel .plnote{color:var(--ink-2);opacity:1}
.plpanel .jar{color:var(--ink)}
.plpanel .ware{background:#fffaf0;box-shadow:0 0 0 1px #e6d8b8}
.plpanel .shelf{background:linear-gradient(transparent 46%,#c9b48e 46% 50%,transparent 50% 96%,#c9b48e 96%)}
.plpanel .book{height:88px}
.hillsky{position:absolute;inset:0;height:auto;z-index:1;pointer-events:none}
@media (prefers-reduced-motion:reduce){.plpin i{animation:none}}
.hillsky .flylant{animation:flyHigh 10s ease-in forwards}
@keyframes flyHigh{0%{bottom:-14%;opacity:0}8%{opacity:1}50%{bottom:45%;transform:translateX(14px)}100%{bottom:100%;transform:translateX(-10px);opacity:0}}
/* 새 버전 알림: 짧게 두 줄, 화면 아래쪽 (공지 띠를 가리지 않게) */
.newver{top:auto;bottom:calc(14px + env(safe-area-inset-bottom,0px));width:min(360px,calc(100% - 24px));border-radius:16px;padding:8px 6px 8px 14px;font-size:14px}
.newver span{flex:1;display:grid;line-height:1.35}
.newver span b{font-size:14px}.newver span small{font-size:12px;color:var(--ink-2)}
/* 부적 종이 고르기 · 종류가 많아져서 폰에서 촘촘하게 */
.charmkinds{display:flex;flex-wrap:wrap;gap:6px}
.charmkinds .chip,.charmpapers .chip{padding:5px 10px;font-size:13px}
.charmpapers{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 10px}
.charmpapers .psw{display:inline-grid;place-items:center;width:18px;height:22px;border-radius:2px;margin-right:5px;font-family:"Gowun Batang",serif;font-size:11px;font-weight:700;box-shadow:0 0 0 1px rgba(255,255,255,.25)}
/* 팻말·문 버튼은 나무·등불 그림보다 항상 위에 (가려지지 않게) */
.pldoor,.playsign,.gutsign{z-index:130}
/* 마루 글자 줄이기: 남의 번호표·일간·안방에 감·연결 중은 숨김 (눌러서 손님 카드로 보기) */
/* 다른 손님 번호표: 다시 보이되 작게 (순서는 알아야 해서) */
.seat:not(.mine) .num{font-size:clamp(8.5px,1cqw,10.5px);padding:0 3px;opacity:.85;border-width:1px}
.seat:not(.mine) .ilgan:not(.same){display:none}
.seat .away{display:none}
.seat:has(.away) .nm{opacity:.45}
.seat.ghost .nm::after{content:none}
.seat.ghost{opacity:.6}
/* 견습도사 팻말 (마루 왼쪽 벽) */
.qsign{display:none;position:absolute;left:2.5%;top:36.5%;z-index:130;border:0;padding:.35cqw .8cqw;border-radius:3px;background:#3f4a3a;color:#eef0d8;font-family:var(--display);cursor:pointer;box-shadow:0 2px 0 #242b20;line-height:1.15;text-align:left}
.qsign b{display:block;font-size:clamp(11px,1.35cqw,14px)}.qsign span{font-size:clamp(9px,1cqw,11px);opacity:.85}
.stage.scene-maru .qsign{display:block}.stage.scene-anbang .qsign,.stage.in-place .qsign{display:none}
@media (max-width:620px){.qsign{left:3%;top:28.6%;padding:2px 7px}.qsign span{display:none}.qsign b{font-size:10.5px}}
.qcharm{margin:6px 0 0;font-family:var(--display);color:#7a2f2a}
/* 낮과 밤 (extras25) — 그림 위에 빛을 한 겹 */
.todtint{position:absolute;inset:0;z-index:120;pointer-events:none;opacity:0;transition:opacity 2s,background 2s}
.bg.gate.sky,.bg.wide,.bg.tall,.bg.gate.ground,.bg.gate.wall,.place.hasimg{transition:filter 2s}
.stage.tod-day .todtint{opacity:1;background:linear-gradient(rgba(150,205,255,.42),rgba(255,248,225,.16) 45%,rgba(255,245,220,.1));mix-blend-mode:soft-light}
.stage.tod-day .bg.gate.sky{filter:brightness(2.3) saturate(1.25) hue-rotate(-6deg)}
.stage.tod-day :is(.bg.gate.ground,.bg.gate.wall){filter:brightness(1.12) saturate(.92)}
.stage.tod-day :is(.bg.wide,.bg.tall){filter:brightness(1.1) saturate(.95)}
.stage.tod-day .lampglow,.stage.tod-day .prop.lantern::after{opacity:.15}
.stage.tod-dusk .todtint{opacity:1;background:linear-gradient(rgba(255,120,70,.45),rgba(255,170,110,.18) 50%,rgba(120,60,90,.12));mix-blend-mode:soft-light}
.stage.tod-dusk .bg.gate.sky{filter:brightness(1.5) sepia(.55) saturate(1.6) hue-rotate(-18deg)}
.stage.tod-dawn .todtint{opacity:1;background:linear-gradient(rgba(190,160,230,.4),rgba(255,200,190,.16) 55%,transparent);mix-blend-mode:soft-light}
.stage.tod-dawn .bg.gate.sky{filter:brightness(1.6) saturate(1.1) hue-rotate(20deg)}
.stage.tod-day .place.hasimg{filter:brightness(1.15) saturate(.95)}
.stage.tod-dusk .place.hasimg{filter:sepia(.25) saturate(1.2)}
.stage.tod-anbang .todtint,.stage.scene-anbang .todtint{opacity:0}
/* 같이 윷놀이 (extras27) */
.yutmp{place-content:start center;overflow:auto;padding-top:14px}
.ypl{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.ypp{display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.1);border-radius:999px;padding:3px 10px 3px 4px;font-size:12px}
.ypp i{width:14px;height:14px;border-radius:50%;background:var(--pc);box-shadow:0 0 0 2px rgba(255,255,255,.7)}
.ypp small{opacity:.8;letter-spacing:-1px;color:var(--pc);filter:brightness(1.6)}
.ypp.on{background:rgba(255,226,150,.28);box-shadow:0 0 0 2px #f3d48e}.ypp.gone{opacity:.4;text-decoration:line-through}
.yboard{position:relative;width:min(70vw,250px,52svh);aspect-ratio:1;margin:6px auto 2px;background:#e9d4a8;border-radius:10px;box-shadow:inset 0 0 0 3px #8a6a44,0 6px 16px rgba(0,0,0,.4);
  background-image:linear-gradient(45deg,transparent calc(50% - 1px),#a7865a calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px)),linear-gradient(-45deg,transparent calc(50% - 1px),#a7865a calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px))}
.yboard::before{content:"";position:absolute;inset:5%;border:2px solid #a7865a}
.yn{position:absolute;width:8%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:#fff6e0;box-shadow:0 0 0 1.5px #8a6a44}
.yn.big{width:12%;background:#f6e2b3}
.ystart{position:absolute;right:1%;bottom:-1%;translate:0 100%;font-size:11px;color:#f3d48e}
.ytok{position:absolute;width:9.5%;aspect-ratio:1;translate:-50% -50%;border:2px solid #fff;border-radius:50%;background:var(--pc);box-shadow:0 2px 4px rgba(0,0,0,.45);padding:0;transition:left .5s,top .5s}
.ytok.mine{border-color:#ffe9a8}
.yres{font-family:var(--display);font-size:30px;color:#ffe08a}.yres.pop{animation:ccPop .45s cubic-bezier(.3,1.5,.5,1)}
.yinfo{margin:0}
.yutinvite{position:absolute;left:50%;bottom:10px;translate:-50% 0;z-index:131;border:0;border-radius:999px;background:#5b3a28;color:#ffe9b8;font:inherit;font-size:13px;padding:7px 14px;box-shadow:0 0 0 2px #f3d48e,0 4px 12px rgba(0,0,0,.4);cursor:pointer;white-space:nowrap;animation:pinGlow 2.4s ease-in-out infinite}
.stage.scene-anbang .yutinvite,.stage.in-place .yutinvite{display:none}
/* 기도방 (extras28) */
.stage.scene-maru .pd-pray{display:block}
.pd-pray{right:2.5%;top:46%;background:#4a3a5a;box-shadow:0 2px 0 #2a2034}
@media (max-width:620px){.pd-pray{right:3%;top:40%}}
.place.pl-pray{background-color:#1c1414;background-image:radial-gradient(40% 32% at 50% 38%,rgba(255,196,110,.45),transparent 70%),radial-gradient(18% 10% at 50% 52%,rgba(255,220,150,.5),transparent 80%),linear-gradient(#2a1a16 0 18%,#4a2c22 18% 20%,#2e1d18 20% 62%,#5a3a24 62%,#3a2618)}
.medover{position:absolute;inset:0;z-index:5;display:grid;place-content:center;justify-items:center;gap:10px;background:rgba(12,8,10,.55);backdrop-filter:blur(2px);text-align:center}
.medring{width:min(46vw,170px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,236,190,.55),rgba(255,200,120,.12) 65%,transparent 70%);box-shadow:0 0 40px rgba(255,214,150,.35);transform:scale(.55);transition:transform 4s ease-in-out}
.medring.in,.medring.hold{transform:scale(1)}.medring.out{transform:scale(.55)}
.medword{font-family:var(--display);font-size:20px;color:#fbefd4}
.medleft{font-variant-numeric:tabular-nums;color:#d9c8a8;font-size:14px}
.beads{position:relative;display:grid;place-content:center;justify-items:center;width:150px;aspect-ratio:1;margin:6px auto;border:0;border-radius:50%;background:radial-gradient(circle,#fffaf0 52%,transparent 53%);cursor:pointer;color:var(--ink);font:inherit;touch-action:manipulation}
.beads b{font-size:28px;font-family:var(--display);line-height:1}.beads span{font-size:12px;color:var(--ink-2)}
.beads i{position:absolute;left:50%;top:50%;width:15px;height:15px;margin:-7.5px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#b07a4a,#5a3420);transform:rotate(calc(var(--a) + var(--turn,0deg))) translateY(-64px);transition:transform .25s ease-out}
.beads i:first-of-type{background:radial-gradient(circle at 35% 30%,#f3d48e,#a8742a)}
.smoke{position:absolute;inset:0;z-index:1;pointer-events:none}
.smoke i{position:absolute;bottom:48%;width:10px;height:60px;border-radius:50%;background:radial-gradient(rgba(240,235,230,.5),transparent 70%);filter:blur(4px);animation:smokeUp 8s linear infinite}
@keyframes smokeUp{0%{transform:translate(0,0) scale(.6);opacity:0}15%{opacity:.8}100%{transform:translate(18px,-260px) scale(2.4);opacity:0}}
.plme.meditating::after{content:"🧘";position:absolute;top:-6px;right:-2px;font-size:13px}.plme{position:relative}
@media (prefers-reduced-motion:reduce){.medring{transition:none}.smoke i{animation-duration:16s}}
/* 향로 · 향 피우기 */
.hyangro{position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:2;width:74px;height:46px;border:0;padding:0;cursor:pointer;background:radial-gradient(ellipse 50% 30% at 50% 22%,#3a2a1a 60%,transparent 62%),linear-gradient(#b08a4a,#6e5226);border-radius:8px 8px 22px 22px;box-shadow:0 0 0 2px #d8b46a inset,0 4px 10px rgba(0,0,0,.5),0 0 24px rgba(255,200,120,.25)}
.hyangro b{position:absolute;left:50%;bottom:-20px;translate:-50% 0;font-size:11px;color:#fbefd4;background:rgba(20,14,22,.6);border-radius:999px;padding:1px 8px;white-space:nowrap;font-weight:400}
.hyangro i{position:absolute;left:calc(50% + var(--x));bottom:34px;width:3px;height:calc(46px * var(--h));margin-left:-1.5px;background:#8a5a3a;border-radius:2px;transform-origin:50% 100%}
.hyangro i::before{content:"";position:absolute;left:50%;top:-3px;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:radial-gradient(#fff2c0,#ff7a2a 60%,transparent 70%);animation:emberGlow 1.6s ease-in-out infinite alternate}
.hyangro i.mine{background:#a8743a}
@keyframes emberGlow{to{transform:scale(1.5);opacity:.7}}
.place.pl-pray .smoke i{bottom:calc(50% + 40px)}
.incwish{position:absolute;bottom:52%;z-index:3;translate:-50% 0;font-family:var(--display);font-size:14px;color:#fff3d8;text-shadow:0 1px 6px rgba(0,0,0,.7);white-space:nowrap;pointer-events:none;animation:wishUp 9s ease-out forwards}
.incwish.mine{color:#ffe08a}
@keyframes wishUp{0%{opacity:0;transform:translateY(10px)}12%{opacity:1}100%{opacity:0;transform:translateY(-170px)}}
.inchold{position:relative;display:flex;align-items:center;gap:10px;width:100%;margin-top:8px;border:0;border-radius:12px;padding:12px 14px;background:#2a1d16;color:#fbefd4;font:inherit;cursor:pointer;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}
.inchold::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,170,80,.45),rgba(255,120,40,.25));transform:scaleX(var(--p,0));transform-origin:0 50%}
.inchold i{position:relative;width:4px;height:30px;background:#8a5a3a;border-radius:2px}.inchold.holding i::before{content:"";position:absolute;left:-3px;top:-6px;width:10px;height:10px;border-radius:50%;background:radial-gradient(#fff2c0,#ff7a2a 60%,transparent 70%)}
.inchold span{position:relative}
/* 정리 (2026-11-01i): 겹침 고치기 */
.gam{z-index:99!important}                                /* 감이 돌탑 뒤에 숨어 못 줍던 것 */
@media (max-width:620px){
  .stage.scene-maru .pd-attic{left:70%;top:17%}      /* 부적 벽 이름표를 가리던 것 → 창문 쪽으로 */
  .pd-pray{left:3%;right:auto;top:38.5%}             /* 띠 운세 판을 가리던 것 → 왼쪽 문 줄 맨 아래 */
  .pd-hill{top:50%}                                  /* 마당 일진 족자와 겹치던 것 */
  .playsign{left:45%}                                /* 평상 앉는 자리를 가리던 것 */
}
/* 정리 (extras29) */
.stage .tlabel{transition:opacity .8s}
.stage:not(.show-tags) .tlabel{opacity:0;pointer-events:none}
.playsign{display:none!important}
.stage.scene-maru :is(.pd-back,.pd-attic,.pd-pray,.qsign,.gutsign){display:none!important}
.hubsign{display:none;position:absolute;left:2.5%;top:28.5%;z-index:130;border:0;border-radius:4px;background:#5b3a28;color:#f6e2b3;font-family:var(--display);font-size:clamp(11px,1.35cqw,14px);padding:.35cqw .9cqw;box-shadow:0 2px 0 #3a2418;cursor:pointer;white-space:nowrap}
.stage.scene-maru .hubsign{display:block}.stage.scene-anbang .hubsign,.stage.in-place .hubsign{display:none}
@media (max-width:620px){.hubsign{left:3%;top:22.5%;font-size:11px;padding:3px 9px}}
.pldoor{font-size:clamp(10px,1.15cqw,12px)}
.medsnd{margin-left:auto;border:0;border-radius:999px;background:rgba(251,244,228,.18);color:#fbefd4;font:inherit;font-size:12px;padding:5px 10px;cursor:pointer}
/* 안방 안내판 작게: 한 줄 알약 ("안방 도사 021 · 선녀 024"), 대기 줄은 위 숫자줄에 이미 있음 */
.nowboard{flex-wrap:nowrap!important;align-items:center;gap:.35em;border-width:1px;border-radius:999px;padding:2px 10px!important;max-width:none!important;background:rgba(43,27,20,.88)}
.nowboard .bl,.nowboard .bw{display:none}
.nowboard .bn{font-size:clamp(11px,1.25cqw,13px)!important;text-shadow:none}
.nowboard .bn::before{content:"안방 ";font-family:var(--body);font-size:.85em;color:#cdb38a}
.demotag+.nowboard,.stage:has(.demotag) .nowboard{top:7.5%}
/* 마루 크기 줄이기: 부적 벽 · 띠 운세 · 안방 문 이름판 */
.cslip{width:1.5cqw!important;height:3.2cqw!important;font-size:1cqw!important}
.charmwall{width:13%!important}
.cwtag{font-size:clamp(9px,.9cqw,11px)!important;padding:0 5px!important;top:-24%!important}
.ttiboard{font-size:clamp(9px,.95cqw,11px)!important;padding:.35cqw .45cqw!important;opacity:.92}
.doorsign{font-size:clamp(11px,1.45cqw,15px)!important;padding:.15cqw 1cqw!important;border-radius:999px!important;background:rgba(251,244,228,.9)!important}
@media (max-width:620px){.cslip{width:2.2cqw!important;height:4.6cqw!important;font-size:1.4cqw!important}.charmwall{width:15%!important}.doorsign{font-size:11px!important}.ttiboard{font-size:9px!important}}
.gbideas{margin:0 0 8px;gap:5px}.gbideas .chip{font-size:12.5px;padding:4px 9px}
/* 안방판: "도사님 476번 상담 중 · 선녀님 비었어요" — 앞의 "안방" 글자 빼고 그대로 읽히게 */
.nowboard .bn::before{content:none}
.nowboard .bn{font-family:var(--body)!important;font-weight:700}
/* 함께 명상 띠 · 마당 고르기 · 공간에서 걷기 */
.medbar{top:22%;background:rgba(40,28,44,.92)}
.shardpick{margin:10px 0 0;padding:10px;border-radius:12px;background:rgba(0,0,0,.04);display:grid;gap:4px}.shardpick span{font-size:12.5px;color:var(--ink-2)}
.shtag{font-weight:700}
.plhere.free{inset:0;bottom:auto;display:block;padding:0}
.plhere.free .plme{position:absolute;translate:-50% -100%;transition:left 1.3s ease-in-out,top 1.3s ease-in-out}
.plhere.free .plme.walking .who{animation:plBob .35s ease-in-out infinite alternate}
@keyframes plBob{to{transform:translateY(-3px)}}
/* 버튼 줄 덜어내기 (extras31) */
#acts .act-tucked{display:none!important}
.ttiboard{display:none!important}
.qemos{display:flex;flex-wrap:wrap;gap:5px;padding:2px 2px 8px;margin-bottom:6px;border-bottom:1px solid rgba(0,0,0,.08)}
.qemo{border:0;border-radius:999px;background:#f3e7cf;color:var(--ink);font:inherit;font-size:13px;padding:5px 10px;cursor:pointer}
/* 위쪽 알약들 작게 (안방판 · 날씨 · 소리 · 데모 표시) */
.nowboard{padding:1px 9px!important;border-width:1px!important}
.nowboard .bn{font-size:11px!important;font-weight:600!important;line-height:1.5}
.wx,.spk,.demotag{font-size:11px!important;padding:2px 8px!important;line-height:1.4!important;min-height:0!important}
.spk i{font-size:11px!important}
@media (min-width:900px){.nowboard .bn,.wx,.spk,.demotag{font-size:12px!important}}
/* 3D 방 (extras32) */
.t3c{position:absolute;inset:0;width:100%;height:100%;z-index:0;touch-action:none;display:block}
.place.is3d{background:#120c0c!important}
.place.is3d :is(.plhere,.hyangro,.smoke,.plpin:not(.t3pin)){display:none!important}
.t3pins{position:absolute;inset:0;z-index:2;pointer-events:none}.t3pins .t3pin{pointer-events:auto}
.t3sw{margin-left:auto;border:0;border-radius:999px;background:rgba(251,244,228,.18);color:#fbefd4;font:inherit;font-size:11.5px;padding:4px 9px;cursor:pointer}
.pltop .medsnd+.t3sw,.pltop .t3sw+.medsnd{margin-left:6px}
.t3load{position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:4;color:#fbefd4;font-size:14px;background:rgba(20,14,22,.6);padding:8px 14px;border-radius:999px}
.place.is3d::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,transparent 55%,rgba(0,0,0,.45))}
/* 공간은 항상 불투명 (뒤 마루가 비치지 않게) */
.place{background-color:#16100e}
.place.pl-study{background-image:radial-gradient(30% 22% at 50% 52%,rgba(255,196,120,.4),transparent 70%),linear-gradient(#2e2018 0 14%,#5a3a24 14% 16%,#e2d2b0 16% 58%,#5a3a24 58% 61%,#6b4426 61%)}
/* 산사 입구 (임시 배경: 산길 위 일주문 실루엣) */
.place.pl-sanmun{background-image:radial-gradient(26% 20% at 50% 30%,rgba(255,214,150,.55),transparent 70%),linear-gradient(transparent 22%,#5a2a20 22% 25%,transparent 25%),linear-gradient(90deg,transparent 33%,#6a2a22 33% 36%,transparent 36% 64%,#6a2a22 64% 67%,transparent 67%),linear-gradient(#0e1430 0 18%,#2a2c3a 18% 55%,#4a3a2a 55%,#6b5034)}
.place.sm-walk{animation:smWalk .7s ease-in forwards}
@keyframes smWalk{to{transform:scale(1.35);opacity:0;filter:brightness(1.6)}}
/* 명상실 그림이 있을 때: 그림 속 향로를 쓰고, 연기는 그 위에서 */
.place.pl-pray.hasimg .hyangro{display:none}
.place.pl-pray.hasimg .smoke{inset:auto;width:90px;height:260px}
.place.pl-pray.hasimg .smoke i{bottom:0!important;left:calc(50% - 5px)!important}
/* 공간 안 캐릭터 자리 고침: 판 높이를 공간 전체로 (전엔 높이 0이라 캐릭터가 위로 빠짐) */
.plhere.free{top:0!important;bottom:0!important;left:0!important;right:0!important;height:auto}
/* 공간 위 막대: 한 줄로 */
.pltop{flex-wrap:nowrap;gap:6px;padding:6px 8px}
.pltop b{white-space:nowrap;font-size:14px;overflow:hidden;text-overflow:ellipsis;min-width:0}
.plback{white-space:nowrap;font-size:12px;padding:5px 10px;flex:none}
.pltop .medsnd,.pltop .t3sw{white-space:nowrap;font-size:11px;padding:4px 8px;flex:none}
.pltop .medsnd{margin-left:auto}.pltop .medsnd~.t3sw{margin-left:0}
@media (max-width:620px){.pltop .t3sw{display:none}}
/* 공간 안 캐릭터 크게 (마루 손님 크기 정도) */
.plhere.free .plme{width:clamp(68px,17cqw,120px)}
.plhere.free .plme .who{width:100%}
.plhere.free .plme span{font-size:11.5px;margin-top:2px}
/* 3D 명상실: 표시는 동그란 아이콘만 */
.t3pin.t3icon{padding:0;width:38px;height:38px;justify-content:center;border-radius:50%;background:rgba(20,14,22,.45)}
.t3pin.t3icon i{width:30px;height:30px;font-size:17px}
@media (max-width:620px){.pltop .t3sw{display:inline-block}}
/* 몸짓 버튼 줄 (3D) */
.t3gest{position:absolute;right:10px;bottom:12px;display:flex;gap:6px;pointer-events:auto}
.t3gest .t3pin{position:static!important;translate:none!important;display:flex!important}
.place.pl-path{background:#0b1026}
.place.pl-yard{background:#0b1026}
.ydhud{font-size:11px;color:#f3d48e;background:rgba(20,14,22,.55);border-radius:999px;padding:3px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ydhud:empty{display:none}
.pl-yard .pltop .t3sw{margin-left:auto}
.place.pl-maru3d{background:#140c08}.pl-maru3d .pltop .t3sw{margin-left:auto}
/* 순서 바꾸기 */
.swaptoast{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));translate:-50% 0;z-index:960;width:min(360px,calc(100% - 24px));background:var(--paper);color:var(--ink);border-radius:16px;padding:12px 14px;box-shadow:0 8px 24px rgba(0,0,0,.4);display:grid;gap:4px;animation:pop .3s ease-out}
.swaptoast b{font-size:14.5px}.swaptoast span{font-size:13px;color:var(--ink-2)}.swaptoast .row{display:flex;gap:8px;margin-top:6px}.swaptoast .btn{flex:1}
.gcard .swapbtn{background:#f6e2b3;font-weight:700}
.swaptoast .btn.line{color:var(--ink);background:#fffaf0;border:1px solid #d6c7a6}
.swapbox{margin:12px 0 4px;padding:10px 12px;border-radius:12px;background:rgba(0,0,0,.04);display:grid;gap:6px}.swapbox>span{font-size:12.5px;color:var(--ink-2)}
.swaprow{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px}.swaprow .btn{padding:6px 12px;font-size:13px}
.kinds{grid-template-columns:repeat(auto-fit,minmax(92px,1fr))!important}
.stage.dor-room #anbangBg{object-position:50% 15%!important;object-fit:cover!important;inset:0!important;height:100%!important}
.kindcard.k-dor img{object-fit:cover;border-radius:50%}
.qtopics{margin-top:2px}
/* 공간 안: 서서 걷기 · 방석에 앉기 (extras42) */
.plhere.free .plme .who.upright{position:relative;left:0;width:100%;bottom:auto}
.plhere.free .plme.walking .who img.fl{animation:footL 380ms steps(1) infinite}
.plhere.free .plme.walking .who img.fr{animation:footR 380ms steps(1) infinite}
.plhere.free .plme.walking .who.upright{animation:none}
.plcush{position:absolute;z-index:2;translate:-50% -60%;width:clamp(70px,22%,150px);aspect-ratio:2.2;border:0;border-radius:50%;background:radial-gradient(ellipse,rgba(255,230,170,.18),transparent 70%);cursor:pointer;animation:cushGlow 3s ease-in-out infinite}
@keyframes cushGlow{50%{background:radial-gradient(ellipse,rgba(255,230,170,.32),transparent 70%)}}
@media (prefers-reduced-motion:reduce){.plcush{animation:none}}
/* 공간 안 캐릭터 크기 다시 줄임 (컴퓨터 화면에서 너무 큼) */
.plhere.free .plme{width:clamp(46px,9cqw,78px)!important}
.place.is3d .plcush{display:none}
/* 안방판 그림으로 (extras44) */
.nowboard.nbpic .bn{display:none}
.nowboard:not(.nbpic) .nbslots{display:none}
.nbslots{display:flex;gap:6px;align-items:center}
.nbslot{display:flex;align-items:center;gap:3px;opacity:.55}
.nbslot.on{opacity:1}
.nbslot img{width:20px;height:20px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1.5px #f3d48e;background:#3a2414}
.nbslot b{font-size:10.5px;font-weight:700;line-height:1;padding:3px 5px 3px 6px;border-radius:2px;background:#f6e2b3;color:#b5362c;font-variant-numeric:tabular-nums;
  -webkit-mask:radial-gradient(circle 3px at 0 50%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 3px at 100% 50%,#0000 98%,#000) right/51% 100% no-repeat;mask:radial-gradient(circle 3px at 0 50%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 3px at 100% 50%,#0000 98%,#000) right/51% 100% no-repeat}
.nbslot:not(.on) b{background:#cdb38a;color:#5b3a28;font-weight:400}
@media (min-width:700px){.nbslot img{width:24px;height:24px}.nbslot b{font-size:12px}}
/* 내 번호표: 종이 번호표 모양 */
.seat.mine .num{background:#f6e2b3;color:#b5362c;border:0;font-weight:700;padding:1px 7px 1px 8px;box-shadow:0 1px 2px rgba(0,0,0,.35);
  -webkit-mask:radial-gradient(circle 3px at 0 50%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 3px at 100% 50%,#0000 98%,#000) right/51% 100% no-repeat;mask:radial-gradient(circle 3px at 0 50%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 3px at 100% 50%,#0000 98%,#000) right/51% 100% no-repeat}
/* 명상실 바로 가기 */
.medsign{display:none;position:absolute;left:2.5%;top:40%;z-index:130;border:0;border-radius:4px;background:#4a3a5a;color:#f6e2b3;font-family:var(--display);font-size:clamp(11px,1.35cqw,14px);padding:.35cqw .9cqw;box-shadow:0 2px 0 #2a2034;cursor:pointer;white-space:nowrap}
.stage.scene-maru .medsign{display:block}.stage.scene-anbang .medsign,.stage.in-place .medsign{display:none}
@media (max-width:620px){.medsign{left:3%;font-size:11px;padding:3px 9px}}
/* 명상실 같이 하기 (extras46) */
.bowbar{position:absolute;left:50%;top:46px;translate:-50% 0;z-index:4;display:flex;align-items:center;gap:6px;background:rgba(20,14,22,.6);color:#fbefd4;border-radius:999px;padding:3px 10px;font-size:11px;white-space:nowrap;pointer-events:none}
.bowbar i{position:relative;width:70px;height:6px;border-radius:3px;background:rgba(255,255,255,.2);overflow:hidden}
.bowbar i::after{content:"";position:absolute;inset:0;width:var(--p,0%);background:linear-gradient(90deg,#f3d48e,#ffb070);border-radius:3px;transition:width .6s}
.bowbar b{color:#f3d48e;font-weight:700}
.place.bowdone::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(circle at 50% 40%,rgba(255,220,150,.45),transparent 60%);animation:fadeIn .6s ease-out}
.gongwave{position:absolute;left:50%;top:45%;z-index:3;width:40px;height:40px;margin:-20px;border-radius:50%;border:2px solid rgba(255,226,160,.8);pointer-events:none;animation:gongW 2.6s ease-out forwards}
@keyframes gongW{to{transform:scale(14);opacity:0}}
.follow{position:absolute;left:50%;bottom:70px;translate:-50% 0;z-index:5;border:0;border-radius:999px;background:#f6e2b3;color:var(--ink);font:inherit;font-size:13px;font-weight:700;padding:7px 14px;box-shadow:0 4px 12px rgba(0,0,0,.4);cursor:pointer;animation:pop .25s ease-out}
.ohbar{position:absolute;left:50%;top:46px;translate:-50% 0;z-index:4;display:flex;align-items:center;gap:5px;background:rgba(20,14,22,.6);color:#fbefd4;border-radius:999px;padding:3px 10px;font-size:11px;white-space:nowrap;pointer-events:none}
.ohbar i{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-family:"Gowun Batang",serif;font-weight:700;font-size:11px;background:rgba(255,255,255,.12);color:rgba(255,255,255,.35);transition:.5s}
.ohbar i.on{background:var(--oc);color:#fff;box-shadow:0 0 10px var(--oc)}
.ohbar small{font-size:10px;opacity:.8}
.prguide{display:grid;gap:6px;text-align:left;width:min(88%,330px)}
.prrow{display:grid;grid-template-columns:24px auto;column-gap:8px;align-items:center}.prrow i{grid-row:1/3;font-style:normal;font-size:20px}.prrow span{font-weight:700;font-size:14px}.prrow small{color:var(--ink-2);font-size:12px}
/* 공간 창: 폰에서 너무 높지 않게, 내용은 안에서 스크롤 */
.plpanel{max-height:min(62%,360px)}
.gampick{position:fixed;left:50%;bottom:calc(90px + env(safe-area-inset-bottom,0px));translate:-50% 0;z-index:970;width:min(330px,calc(100% - 24px));background:var(--paper);color:var(--ink);border-radius:14px;padding:12px 14px;box-shadow:0 8px 24px rgba(0,0,0,.45);display:grid;gap:6px;animation:pop .25s ease-out}
.gampick b{font-size:14.5px}.gampick small{font-size:12px;color:var(--ink-2)}.gampick .row{display:flex;gap:6px;flex-wrap:wrap}.gampick .btn{flex:1;padding:8px 6px;font-size:13px}
.gampick .btn.line{color:var(--ink);background:#fffaf0;border:1px solid #d6c7a6}
/* 2.5D 공간 (extras51) */
.place.hasimg{background-size:calc(100% + 24px) auto;background-size:cover;transition:background-position .25s ease-out}
.place.hasimg{--px:0;--py:0}
.place.hasimg::before{content:"";position:absolute;inset:-12px;z-index:0;pointer-events:none;background:inherit;background-size:cover;transform:translate(calc(var(--px)*-8px),calc(var(--py)*-5px)) scale(1.04);transition:transform .3s ease-out}
.plhere.free .plme{transform:scale(var(--ds,1));transform-origin:50% 100%;transition:left 1.3s ease-in-out,top 1.3s ease-in-out,transform 1.3s}
.plhere.free .plme::before{content:"";position:absolute;left:50%;bottom:14px;width:70%;height:12px;translate:-50% 50%;border-radius:50%;background:radial-gradient(rgba(0,0,0,.45),transparent 70%);z-index:-1}
.pbub{position:absolute;left:50%;bottom:calc(100% + 2px);translate:-50% 0;background:rgba(255,250,238,.96);color:var(--ink);font-size:11.5px;line-height:1.3;padding:4px 8px;border-radius:10px;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.pbub::after{content:"";position:absolute;left:50%;top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(255,250,238,.96)}
.gem{position:absolute;right:-6px;top:4px;font-style:normal;font-size:18px;animation:pop .3s ease-out}
.plme.g-bow .who{animation:bow25 1.3s ease-in-out 2}.plme.g-hap .who{animation:hap25 .6s ease-in-out 3}.plme.g-wave .who{animation:wave25 .35s ease-in-out 6}
@keyframes bow25{50%{transform:translateY(8%) scaleY(.82) rotate(0)}}@keyframes hap25{50%{transform:translateY(-4%)}}@keyframes wave25{50%{transform:rotate(-6deg)}}
.g25{position:absolute;right:10px;bottom:12px;z-index:4;display:flex;gap:6px}.g25 .plpin{position:static;translate:none;padding:4px}.g25 .plpin span{display:none}
.fx25{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.cglow{position:absolute;width:30%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(rgba(255,196,110,.32),transparent 62%);animation:cflick 2.2s ease-in-out infinite alternate;mix-blend-mode:screen}
.cglow+.cglow{animation-delay:-1.1s}
@keyframes cflick{0%{opacity:.7;transform:scale(.95)}40%{opacity:1}100%{opacity:.8;transform:scale(1.06)}}
.mote{position:absolute;width:4px;height:4px;border-radius:50%;background:#ffe2a0;box-shadow:0 0 6px #ffd27a;opacity:0;animation:mote25 8s ease-in-out infinite}
@keyframes mote25{20%{opacity:.8}80%{opacity:.6}100%{opacity:0;transform:translate(20px,-60px)}}
.rice25{position:absolute;z-index:2;translate:-50% -100%;display:flex;gap:2px;pointer-events:none}
.rbowl{width:16px;height:12px;border-radius:0 0 8px 8px;background:linear-gradient(#c9a050,#8a6a2a);position:relative;box-shadow:0 1px 2px rgba(0,0,0,.4)}
.rbowl::before{content:"";position:absolute;left:1px;right:1px;top:-6px;height:8px;border-radius:50% 50% 0 0;background:#fbf6ea}
.rbowl.drop{animation:rdrop .6s cubic-bezier(.3,1.4,.5,1)}@keyframes rdrop{from{transform:translateY(-30px);opacity:0}}
.place.shake25{animation:shake25 .6s ease-out}@keyframes shake25{20%{transform:translateX(-3px)}40%{transform:translateX(3px)}60%{transform:translateX(-2px)}80%{transform:translateX(1px)}}
@media (prefers-reduced-motion:reduce){.mote,.cglow{animation:none}.place.hasimg::before{transform:none}}
.plpin.icon25{padding:3px}.plpin.icon25 span{display:none}.plpin.icon25 i{width:28px;height:28px;font-size:16px}
.follow{font-size:12px;padding:5px 11px;bottom:auto;top:84px}
/* 법당 방석 (마루처럼) */
.place .plcush{display:none!important}
.prseat{position:absolute;z-index:1;width:calc(11% * var(--s,1));translate:-50% -55%;border:0;padding:0;background:none;cursor:pointer}
.prseat img{display:block;width:100%;filter:drop-shadow(0 3px 3px rgba(0,0,0,.4))}
.prseat.occ{cursor:default}
.plhere.free .plme{z-index:2}
/* 공간 창(향·공양·명상…) 작고 촘촘하게 */
.plpanel{max-height:min(48%,300px)!important;border-radius:14px 14px 0 0}
.plph{padding:8px 12px 0}.plph b{font-size:14px}.plph .pclose{width:26px;height:26px}
.plpanel .plbody{padding:4px 12px 10px;gap:6px}
.plpanel .plnote{font-size:12px;margin:0}
.plpanel .plrow input,.plpanel input{font-size:14px!important;padding:6px 11px!important}
.plpanel .btn{padding:7px 12px;font-size:13px}
.inchold{padding:8px 12px;margin-top:4px;border-radius:10px;font-size:13.5px}.inchold i{height:20px}
.plpanel .beads{width:118px}.plpanel .beads i{transform:rotate(calc(var(--a) + var(--turn,0deg))) translateY(-50px)}
.prseat{translate:-50% -38%}
@media (max-width:620px){.prseat{width:calc(15% * var(--s,1))}}
/* 법당: 방석 위에 작게 앉기, 이름표 숨김 */
.place.pl-pray .plhere.free .plme{min-width:0!important;translate:-50% -88%}
.place.pl-pray .plhere.free .plme>span{display:block;font-size:10px;line-height:1.3;padding:0 5px;margin-top:1px;background:rgba(251,244,228,.9);color:var(--ink);border-radius:3px;white-space:nowrap}
.place.pl-pray .plhere.free .plme::before{display:none}
.place.pl-pray .gem{font-size:13px;right:-2px;top:0}
.place.pl-pray .pbub{font-size:10.5px;padding:3px 7px}
/* 배경 흔들림 끔 (시차 · 종 흔들림 · 자리 흔들림) */
.place.hasimg::before{transform:none!important;transition:none!important;display:none}
.place.shake25{animation:none!important}
.plme.g-hap .who,.plme.g-wave .who{animation:none!important}
/* 방 바로 가기 줄 */
.roombar{display:flex;gap:6px;overflow-x:auto;padding:8px 12px 2px;scrollbar-width:none;background:#1e1612}
.roombar::-webkit-scrollbar{display:none}.roombar[hidden]{display:none}
.rbchip{flex:none;display:flex;align-items:center;gap:4px;border:1px solid #5b3a28;border-radius:999px;background:#2b1d16;color:#f1e4cc;font:inherit;font-size:13px;padding:5px 11px;cursor:pointer;white-space:nowrap}
.rbchip i{font-style:normal}.rbchip b{font-size:11px;background:#5b3a28;color:#f3d48e;border-radius:999px;padding:0 6px;font-weight:700}
.rbchip.here{background:#f3d48e;color:#2a1d16;border-color:#f3d48e}.rbchip.here b{background:#2a1d16;color:#f3d48e}
.rbchip.closed{opacity:.5}
.rbshard{background:#3a2a4a;border-color:#6a5a8a}
.shardgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}
.doorticket{position:absolute;z-index:102;translate:-50% 0;border:0;border-radius:999px;background:var(--red);color:#fff4d6;font:inherit;font-size:clamp(11px,1.3cqw,14px);font-weight:700;padding:4px 12px;box-shadow:0 2px 8px rgba(0,0,0,.35);cursor:pointer;white-space:nowrap;animation:pinGlow 2.4s ease-in-out infinite}
.doorticket.mine{background:#f6e2b3;color:#b5362c;animation:none}.doorticket[hidden]{display:none}
.doorticket{translate:0 -50%;font-size:clamp(10.5px,1.2cqw,13px);padding:2px 10px;line-height:1.5;animation:none;box-shadow:0 1px 4px rgba(0,0,0,.3)}
/* 정리: 공간 안에선 마루·마당 물건 숨김 */
.stage.in-place :is(.scroll,.jeongsu,.tower,.cstand,.camtoggle,.wx,.demotag,.nowboard,.spk,.medsign,.hubsign,.doorticket,.gutsign,.playsign,.pldoor,.doorsign,.charmwall,.yutinvite,.gateplaque,.gatesign){display:none!important}
/* 마루: 현판은 폰에서 숨김(안방판과 겹침) · 부적 벽 이름표 조금 위로 */
@media (max-width:620px){.stage.scene-maru .plaque{display:none}}
.cwtag{top:-48%!important}
.pd-praygate{right:2%;top:56%;background:#4a3a5a;box-shadow:0 2px 0 #2a2034}
.stage.scene-gate .pd-praygate{display:block}
@media (max-width:620px){.pd-praygate{right:3%;top:57%}}
/* 근심 태우기 */
.burnin{width:100%;border:1px solid #d6c7a6;border-radius:10px;padding:7px 10px;font:inherit;font-size:14px;background:#fffdf7;resize:none}
.burnhold{background:#3a1a10}.burnhold::before{background:linear-gradient(90deg,rgba(255,120,40,.6),rgba(255,60,20,.4))}
.burnfx{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:rgba(10,6,4,.55);overflow:hidden}
.burnpaper{position:relative;width:min(56%,210px);aspect-ratio:3/4;background:#f3e6c4;border-radius:2px;display:grid;place-items:center;padding:14px;text-align:center;font-family:var(--display);color:#3a2a1a;font-size:15px;box-shadow:0 6px 18px rgba(0,0,0,.5);
  -webkit-mask:linear-gradient(to top,transparent var(--b,0%),#000 calc(var(--b,0%) + 8%));mask:linear-gradient(to top,transparent var(--b,0%),#000 calc(var(--b,0%) + 8%));animation:burnUp 2.8s ease-in .3s forwards}
.burnpaper::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(60,20,0,.9),rgba(120,50,10,.4) 30%,transparent 55%);opacity:0;animation:scorch 2.8s ease-in .3s forwards}
@property --b{syntax:"<percentage>";inherits:false;initial-value:0%}
@keyframes burnUp{to{--b:105%}}@keyframes scorch{30%{opacity:1}100%{opacity:1}}
.burnflame{position:absolute;left:50%;top:50%;width:min(60%,230px);height:60px;translate:-50% 0;border-radius:50%;background:radial-gradient(ellipse at 50% 100%,rgba(255,230,140,.95),rgba(255,120,30,.8) 35%,rgba(200,40,10,.4) 60%,transparent 72%);filter:blur(2px);mix-blend-mode:screen;animation:flameUp 2.8s ease-in .3s forwards,flick .15s steps(2) infinite alternate}
@keyframes flameUp{0%{transform:translateY(calc(min(56vw,210px)*.66));opacity:.2}10%{opacity:1}100%{transform:translateY(-120px);opacity:0}}@keyframes flick{to{filter:blur(3px) brightness(1.2)}}
.ember{position:absolute;top:60%;width:4px;height:4px;border-radius:50%;background:#ffb050;box-shadow:0 0 6px #ff8030;opacity:0;animation:ember 2.2s ease-out forwards}
@keyframes ember{0%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(var(--dx),-220px)}}
.burnmsg{position:absolute;top:44%;font-family:var(--display);font-size:20px;color:#ffe9b8;text-shadow:0 0 12px rgba(255,160,80,.8);animation:fadeIn .6s ease-out}
@media (prefers-reduced-motion:reduce){.burnflame,.ember{animation-duration:.01s}}
