.world-room{max-width:none!important;padding:0 0 25px!important}.world-room>.where,.world-room>h2,.world-room>.desc{display:none}.world-room>.back{margin:0 0 15px}.world-stage{padding:0!important;background:#201c15!important;border:1px solid #4c4432!important;border-radius:12px;overflow:hidden}.world-shell{position:relative;width:100%;height:min(78vh,850px);min-height:570px;isolation:isolate;overflow:hidden;background:#201c15;color:#f3eddc}.world-viewport{position:absolute;inset:0}.world-viewport canvas{display:block;width:100%;height:100%;outline:none;cursor:grab}.world-viewport canvas:active{cursor:grabbing}.world-top{position:absolute;top:18px;left:18px;right:18px;display:flex;justify-content:space-between;align-items:flex-start;gap:15px;pointer-events:none}.world-brand,.world-tools{display:flex;align-items:center;gap:12px;padding:10px 16px;border-radius:30px;background:#211e16e6;border:1px solid #b5a36b44;backdrop-filter:blur(12px);font-size:14px;pointer-events:auto}.world-brand{font-family:serif;font-size:19px}.world-divider{color:#9b8b5d}.world-gold{font-size:26px;color:#d8b66a}.world-mode{font-size:10px;font-family:sans-serif;color:#b4aa92}.world-tools{gap:8px;padding:9px 12px;font-size:12px}.world-shell button{font:inherit;border:1px solid #b7a77d55;background:#28251bd9;color:#eee6d1;border-radius:24px;padding:9px 15px;cursor:pointer;white-space:nowrap}.world-shell button:hover:not(:disabled){background:#594f34}.world-shell button:disabled{opacity:.4;cursor:not-allowed}.world-shell button:focus-visible{outline:2px solid #e7c66f;outline-offset:3px}.world-count{color:#e6d4a9;white-space:nowrap}.world-help{position:absolute;top:86px;left:26px;font-size:11px;color:#d9cdb1;padding:7px 10px;background:#211e168c;border-radius:5px;pointer-events:none}.world-bottom{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);background:#201c16ea;border:1px solid #d2b97355;backdrop-filter:blur(14px);border-radius:18px;padding:11px 16px 14px;max-width:calc(100% - 32px);box-shadow:0 6px 28px #0006;text-align:center}.world-state{font-size:12px;color:#d3c8ac;margin-bottom:9px;min-height:18px}.world-actions{display:flex;justify-content:center;gap:7px}.world-actions button{font-size:13px;padding:9px 16px}.world-actions button:first-child{background:#baa368;color:#201c13;border-color:#e8d79966}.world-actions button[aria-pressed=true]{background:#60532d;color:#fff}.world-notice{position:absolute;top:125px;left:50%;transform:translateX(-50%);max-width:80%;padding:8px 15px;background:#211e16db;border-radius:9px;font-size:12px;color:#f1e5bf;pointer-events:none;text-align:center}.world-notice:empty{display:none}.world-name{position:absolute;left:50%;bottom:145px;transform:translateX(-50%);padding:7px 14px;border-radius:20px;background:#f1eedbd9;font-size:12px;color:#3d4330;pointer-events:none}.world-settings{background:#29261e;color:#c8bfa9;padding:15px 23px;display:flex;gap:22px;align-items:center;flex-wrap:wrap;border-top:1px solid #85754a66;font-size:12px}.world-settings [hidden]{display:none}.zen-options{display:flex;gap:18px;align-items:center}.zen-options select{font:inherit;background:#383329;color:#eee7d1;border:1px solid #736442;border-radius:6px;padding:6px}.zen-options span{font-size:11px;color:#aca38f}.volume-label{display:flex;align-items:center;gap:10px;white-space:nowrap}.volume-label input{width:95px;accent-color:#c6a968}.world-schedule{margin-left:auto;color:#d2bc7c}.world-audio{display:grid;grid-template-columns:1fr 1fr 1fr;background:#f0ebdf;color:#4c4e3c;gap:25px;padding:22px}.world-audio h3{font-family:serif;margin:0 0 5px;font-size:20px}.world-audio p{font-size:11px;margin:0;color:#777968}.world-audio label{font-size:12px}.world-audio audio{display:block;width:100%;margin-top:8px;height:34px}.world-footnote{margin:0;padding:12px 22px;background:#29261e;color:#a89f89;font-size:11px}.seat-panel{position:absolute;right:20px;top:85px;width:min(420px,calc(100% - 40px));max-height:calc(100% - 190px);overflow:auto;background:#242218f5;border:1px solid #b49d5d77;border-radius:14px;padding:18px;z-index:10;box-shadow:0 8px 40px #0008}.seat-panel[hidden]{display:none}.seat-panel>div:first-child{display:flex;justify-content:space-between;align-items:center}.seat-panel strong{font-size:14px;font-weight:normal}.seat-panel p{font-size:11px;color:#bfb699}.seat-panel .seat-list{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}.seat-list button{border-radius:4px;font-size:11px;padding:8px 0;min-width:0}.seat-list button.mine{background:#b99c54;color:#fff}.seat-list button:disabled{background:#68685b;opacity:.65}.world-shell.expanded{position:fixed;inset:0;width:100vw;height:100dvh;min-height:0;z-index:1000;border-radius:0}
@media(max-width:800px){.world-shell{height:78dvh;min-height:600px}.world-top{left:10px;right:10px;top:10px;flex-wrap:wrap;gap:7px}.world-brand{font-size:15px;padding:7px 12px}.world-mode{font-size:9px}.world-tools{font-size:10px;padding:6px 8px;margin-left:auto;gap:4px}.world-tools button{padding:7px 9px}.world-help{top:115px;left:13px;right:13px;font-size:10px;text-align:center}.world-notice{top:156px}.world-bottom{bottom:15px;width:calc(100% - 20px);padding:10px}.world-actions{flex-wrap:wrap;gap:6px}.world-actions button{font-size:12px;padding:9px 12px}.world-name{bottom:175px;font-size:11px}.world-settings{padding:15px;gap:15px}.zen-options{flex-wrap:wrap;gap:9px}.world-audio{grid-template-columns:1fr;padding:18px;gap:18px}.world-schedule{margin-left:0;font-size:10px}.world-room .other{padding:0 8px}.world-shell.expanded{height:100dvh;min-height:0}.seat-panel{top:155px;max-height:calc(100% - 325px)}}


.world-room-picker{font:inherit;max-width:115px;color:#f2e6c9;background:#211e16;border:0;cursor:pointer;padding:2px 0}.world-room-picker option{background:#28251c;color:#f2e6c9}.world-room-picker option.shut{color:#8a8576}.world-name{transition:left .1s,top .1s}.world-shell .world-tools button:disabled{display:none}

.reset-bows{font:inherit;background:transparent;border:1px solid #7f7150;border-radius:20px;padding:5px 10px;color:#c8bfa9;cursor:pointer}.reset-bows[hidden]{display:none}

.zen-model-status{font-size:11px;color:#e3d0a1}.zen-model-status[data-loaded=false]{color:#f0b19c}

.build-badge{font-size:11px;white-space:nowrap;color:var(--pine);border:1px solid var(--line);padding:5px 9px;border-radius:20px}.run-info{max-width:1120px;margin:0 auto 30px;padding:12px 20px;border:1px solid var(--line);color:var(--soft);font-size:12px;border-radius:8px}.run-info summary{cursor:pointer}.run-info p{margin:10px 0}

/* v3.2: keep the action dock in the visible viewport, including expanded mode. */
.world-shell{height:calc(100dvh - 190px);min-height:360px;max-height:800px}.world-bottom{bottom:20px;width:max-content;max-width:calc(100% - 32px);max-height:40%;overflow:auto;box-sizing:border-box}.world-actions{flex-wrap:wrap}.world-actions button{flex:0 0 auto;min-height:42px}.world-shell.expanded{height:100dvh;max-height:none;min-height:0}.world-shell.expanded .world-bottom{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));z-index:1002;max-height:40dvh}.world-shell.expanded .world-top{position:fixed;z-index:1002}.world-state{white-space:normal}.world-name{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:800px){.world-shell{height:calc(100dvh - 220px);min-height:340px;max-height:700px}.world-bottom{bottom:16px;width:calc(100% - 24px)}.world-actions button{font-size:12px;padding:8px 11px;min-height:40px}.world-shell.expanded{height:100dvh;max-height:none;min-height:0}.world-shell.expanded .world-bottom{bottom:calc(16px + env(safe-area-inset-bottom,0px))}.world-help{display:none}.world-notice{top:115px}.world-top{gap:5px}.world-tools{flex-wrap:wrap}.world-name{font-size:10px}}
/* Actions remain reachable even when the page or a short browser window scrolls. */
.world-bottom{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:900;max-height:40dvh}.world-shell{min-height:220px}@media(max-width:800px){.world-shell{min-height:180px}}
.world-actions button.dim{opacity:.45;border-style:dashed}.world-actions button.dim:hover{background:#28251bd9}
.zen-times{display:inline-flex;gap:4px;padding:2px;border:1px solid #b7a77d55;border-radius:24px}.zen-times[hidden]{display:none}.zen-times button{padding:9px 14px}.zen-times button[aria-pressed=true]{background:#baa368;color:#201c13}.zen-timer{position:absolute;top:86px;right:26px;padding:4px 12px;border-radius:14px;background:#211e16a6;color:#e9dcb8;font-size:13px;font-variant-numeric:tabular-nums;pointer-events:none}.zen-timer:before{content:'남은 시간 '}.zen-timer[hidden]{display:none}@media(max-width:800px){.zen-timer{top:auto;bottom:calc(100% - 150px);right:13px;font-size:12px}}
.world-actions .zen-times button[aria-pressed=false]{background:#28251bd9;color:#eee6d1;border-color:#b7a77d55}


.sound-credits{flex-basis:100%;font-size:11px;color:#bfb699}.sound-credits summary{cursor:pointer;color:#d2bc7c}.sound-credits ul{margin:8px 0 0;padding-left:18px;line-height:1.7}.sound-credits a{color:#e3cf95}
.world-audio details{font-size:12px}.world-audio details summary{cursor:pointer;margin-bottom:6px}.world-audio details label{display:block;margin-top:8px}

.world-side{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:stretch;gap:7px;z-index:5}.world-side button{font-size:12px;padding:8px 12px}.world-side button[aria-pressed=true]{background:#60532d;color:#fff}
.side-volume{display:flex;flex-direction:column;gap:6px;padding:9px;border-radius:10px;background:#211e16e6;border:1px solid #b5a36b44;font-size:11px;color:#d9cdb1}.side-volume[hidden]{display:none}.side-volume input{width:110px;accent-color:#c6a968}
.practice-cards{margin:10px auto 2px;display:grid;grid-template-columns:repeat(2,minmax(130px,1fr));gap:8px;padding:10px;border-radius:14px;background:#201c16f0;border:1px solid #d2b97355;box-shadow:0 6px 20px #0006;width:max-content;max-width:calc(100vw - 32px)}.practice-cards[hidden]{display:none}
.practice-cards button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:12px 14px;border-radius:10px;text-align:left;font-size:15px}.practice-cards button small{font-size:11px;opacity:.75}.practice-cards button[aria-pressed=true]{background:#60532d;color:#fff}
.world-actions [hidden]{display:none}
@media(max-width:800px){.world-side{right:8px;top:auto;bottom:120px;transform:none;gap:5px}.world-side button{font-size:11px;padding:7px 9px}}
/* 메뉴 버튼, 메뉴 판, 108배 숫자는 휴대폰에서만 쓴다. PC는 지금 구성 그대로. */
.world-menu-btn,.world-menu,.world-bows,.world-count-mini{display:none}
/* 휴대폰(가로 폭 600px 이하): 3D 화면이 주인공. 늘 보이는 버튼과 글은 최소로(전각 이름, 메뉴, 하단 버튼 두 개 이하). 글씨는 16px 이상. */
@media(max-width:600px){
body.in-world .site-header,body.in-world .site-footer,body.in-world #back,body.in-world .room>.where,body.in-world .room>h2,body.in-world .room>.desc,body.in-world .room>.other,body.in-world .world-settings,body.in-world .world-audio,body.in-world .world-footnote{display:none!important}
body.in-world{overflow:hidden}
body.in-world main{padding:0!important;margin:0!important;max-width:none!important}
body.in-world .world-room{padding:0!important;margin:0!important}
body.in-world .world-stage{border:0!important;border-radius:0!important;margin:0!important;padding:0!important}
body.in-world .world-shell,body.in-world .world-shell.expanded{position:fixed;inset:0;width:100vw!important;max-width:none!important;height:100dvh!important;min-height:0!important;max-height:none!important;border-radius:0;z-index:50}
body.in-world .world-top,body.in-world .world-shell.expanded .world-top{position:absolute;top:calc(8px + env(safe-area-inset-top,0px));left:8px;right:8px;flex-wrap:nowrap;align-items:center;gap:8px;z-index:60}
body.in-world .world-brand{font-family:inherit;font-size:16px;padding:6px 10px;gap:6px;min-width:0;flex:0 1 auto;overflow:hidden}
body.in-world .world-title,body.in-world .world-divider,body.in-world .world-mode,body.in-world .world-tools,body.in-world .world-side,body.in-world .side-volume,body.in-world .world-help,body.in-world .world-state,body.in-world .zen-model-status{display:none!important}
body.in-world .world-gold{font-size:18px}
body.in-world .world-room-picker{font-size:18px;font-weight:700;max-width:92px;flex:0 0 auto}
body.in-world .world-count-mini{display:inline;font-size:16px;color:#cbbf9e;white-space:nowrap}
body.in-world .world-menu-btn{display:block;pointer-events:auto;font-size:17px;padding:8px 14px;min-height:44px;margin-left:auto;flex:0 0 auto}
body.in-world .world-shell.menu-open .world-bottom,body.in-world .world-shell.menu-open .world-notice{visibility:hidden}
body.in-world .world-notice{top:auto;bottom:calc(96px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 32px);font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:8px 14px}
body.in-world .zen-timer{font-size:16px}
body.in-world .world-bottom,body.in-world .world-shell.expanded .world-bottom{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(14px + env(safe-area-inset-bottom,0px));width:max-content;max-width:calc(100% - 24px);padding:8px 10px;border-radius:16px;max-height:60dvh;z-index:900}
body.in-world .world-bows:not([hidden]){display:block;font-size:16px;color:#e9dcb4;text-align:center;margin-bottom:6px}
body.in-world .world-actions{gap:8px}
body.in-world .world-actions button{font-size:17px;padding:10px 18px;min-height:48px}
body.in-world .world-actions span,body.in-world .zen-quit>span{font-size:16px}
body.in-world .practice-cards{grid-template-columns:repeat(2,minmax(0,1fr));width:calc(100vw - 48px);max-width:none}
body.in-world .practice-cards button{font-size:17px;padding:12px;white-space:normal;min-width:0;overflow-wrap:anywhere;word-break:keep-all}
body.in-world .practice-cards button small{font-size:16px}
body.in-world .world-menu:not([hidden]){display:block;position:fixed;left:0;right:0;bottom:0;z-index:1100;background:#1f1b14f7;border-top:1px solid #d2b97366;border-radius:18px 18px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 30px #0008;color:#f1e7cc;max-height:80dvh;overflow:auto}
body.in-world .menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
body.in-world .world-menu button{font-size:17px;min-height:48px;padding:10px 12px;white-space:normal}
body.in-world .world-menu .menu-close{background:#baa368;color:#201c13}
body.in-world .menu-volume,body.in-world .menu-check{display:flex;align-items:center;gap:12px;font-size:17px;margin:14px 4px}
body.in-world .menu-volume input{flex:1;accent-color:#c6a968;min-height:32px}
body.in-world .menu-check input{width:24px;height:24px;accent-color:#c6a968}
body.in-world .seat-panel{font-size:16px}
body.in-world .run-info{display:none!important}
body.in-world .world-menu input{font-size:16px}
}
.todo-cards{grid-template-columns:repeat(3,minmax(120px,1fr))}
@media(max-width:600px){body.in-world .todo-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* '할 일' 버튼: 장소 가까이 가면 은은하게 빛난다. */
.world-actions button.glow{box-shadow:0 0 0 1px #e9d9a6aa,0 0 14px #f1dfa088;animation:todo-glow 2.4s ease-in-out infinite}
@keyframes todo-glow{0%,100%{box-shadow:0 0 0 1px #e9d9a6aa,0 0 10px #f1dfa055}50%{box-shadow:0 0 0 1px #f3e6bccc,0 0 22px #f6e6b0aa}}
@media(prefers-reduced-motion:reduce){.world-actions button.glow{animation:none}}
/* 무료 연등(이전 방식, 쓰지 않음): 색 고르기, 축원 적기 */
.lantern-form{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:950;width:min(440px,calc(100% - 32px));max-height:calc(100% - 140px);overflow:auto;box-sizing:border-box;background:#201c16f4;border:1px solid #d2b97366;border-radius:16px;padding:18px;color:#f1e7cc;box-shadow:0 10px 40px #0008}
.lantern-form[hidden],.lantern-form .lf-step[hidden]{display:none}
.lantern-form h3{margin:0 0 12px;font-size:18px}.lantern-form label{display:flex;flex-direction:column;gap:6px;font-size:16px;margin:10px 0}
.lantern-form input{font:inherit;font-size:17px;padding:10px 12px;border-radius:10px;border:1px solid #b7a77d66;background:#2c271dee;color:#f6efdd}.lantern-form input::placeholder{color:#a99e86}
.lf-colors{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.lf-colors button{display:flex;align-items:center;gap:8px;font-size:16px;padding:10px}.lf-colors i{width:18px;height:18px;border-radius:50%;display:inline-block;box-shadow:0 0 0 1px #0006}
.lf-colors button[aria-pressed=true],.lf-wishes button[aria-pressed=true]{background:#60532d;border-color:#e3cd8a}
.lf-wishes{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.lf-wishes button{font-size:16px;padding:8px 12px}
.lf-note{font-size:15px;color:#d8cba8;margin:10px 0}.lf-row{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.lf-row button{font-size:17px;padding:10px 16px}.lf-row .lf-main{background:#baa368;color:#201c13}
/* 위쪽 '설정' 판 */
.world-settings-pop{position:absolute;top:74px;right:18px;z-index:960;width:min(320px,calc(100% - 36px));box-sizing:border-box;background:#201c16f4;border:1px solid #d2b97366;border-radius:14px;padding:14px;color:#f1e7cc;box-shadow:0 10px 30px #0008;font-size:15px}
.world-settings-pop[hidden]{display:none}.world-settings-pop label{display:flex;align-items:center;gap:10px;margin:8px 0}.world-settings-pop input[type=range]{flex:1;accent-color:#c6a968}
.zen-times{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0}.zen-times span{margin-right:4px}.zen-times button{padding:6px 10px}.zen-times button[aria-pressed=true]{background:#60532d;color:#fff}
.world-actions button[data-do="strike"].dim{opacity:.45}
@media(max-width:600px){body.in-world .world-settings-pop{display:none!important}body.in-world .world-actions button{padding:10px 13px;min-width:64px}body.in-world .world-menu .zen-times button{font-size:16px;min-height:44px}body.in-world .world-menu .zen-times span{font-size:17px}}
/* 그림 아이콘(PC와 휴대폰): 하단 네 개와 위쪽 두 개(소리, 메뉴)는 같은 반투명 원. 지름 PC 56px, 휴대폰 52px(누르는 영역 48px 이상). 이름은 처음 5초(names-on), 마우스를 올렸을 때, 길게 눌렀을 때(peek)만. */
/* 휴대폰 하단 버튼은 사이가 좁아 이름이 이웃 이름과 붙지 않게 버튼 폭 안에서 두 줄로 나누고, 화면 아래로 잘리지 않게 원 위에 둔다(글자 크기 16px 그대로). */
body .world-shell .world-bottom,body.in-world .world-shell .world-bottom,body.in-world .world-shell.expanded .world-bottom{background:none!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;padding:0!important;width:max-content!important;max-width:calc(100% - 16px)!important;overflow:visible!important;max-height:none!important;bottom:calc(30px + env(safe-area-inset-bottom,0px))!important}
body .world-shell .world-state{display:none!important}
body .world-shell .world-actions{gap:16px;flex-wrap:nowrap;align-items:flex-start}
body .world-shell .icon-btn,body.in-world .world-shell .icon-btn,body.in-world .world-shell .world-actions .icon-btn{position:relative;flex:0 0 auto;width:56px;height:56px;min-width:0;min-height:0;margin:0;padding:0;border-radius:50%;background:#1c181259;border:1px solid #f0e2b84d;color:#f6ecd0;display:grid;place-items:center;box-shadow:none;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;touch-action:manipulation}
/* 대웅전 하단은 서 있을 때 다섯 개와 앉았을 때 네 개를 함께 그려 두고 한 묶음만 보인다(감춘 버튼은 자리를 차지하지 않음). */
body .world-shell .world-actions .icon-btn[hidden],body.in-world .world-shell .world-actions .icon-btn[hidden]{display:none}
body .world-shell .world-actions .icon-btn:first-child{background:#1c181259;color:#f6ecd0;border-color:#f0e2b84d}
body .world-shell .icon-btn:hover:not(:disabled){background:#2e2719a6}
body .world-shell .icon-btn[aria-pressed=true]{background:#5a4a2899;border-color:#f0d78e99}
body .world-shell .top-icon[aria-pressed=true]{background:#1c181259;border-color:#f0e2b84d}
body .world-shell .world-actions .icon-btn.dim{opacity:.4;border-style:solid}
.icon-btn .icon-svg{width:30px;height:30px;display:block;pointer-events:none;filter:drop-shadow(0 1px 1.5px #000b)}
.icon-btn .icon-num{position:absolute;right:9px;bottom:8px;font:700 11px/1 sans-serif;color:#f7dfa0;pointer-events:none;text-shadow:0 0 2px #000,0 1px 2px #000}
.icon-btn .icon-num[hidden]{display:none}
.icon-btn .icon-name{position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);font-size:13px;line-height:1.2;white-space:nowrap;color:#f4e8c6;text-shadow:0 1px 3px #000,0 0 6px #000;opacity:0;transition:opacity .3s;pointer-events:none}
.world-shell.names-on .icon-btn .icon-name,.icon-btn.peek .icon-name,.icon-btn:focus-visible .icon-name{opacity:1}
@media(hover:hover){.icon-btn:hover .icon-name{opacity:1}}
@media(max-width:600px){body.in-world .world-notice{bottom:calc(108px + env(safe-area-inset-bottom,0px))}}
.icon-btn.together{box-shadow:0 0 0 1px #f3dc9a88,0 0 18px 4px #f1d48a66;animation:icon-glow 2.8s ease-in-out infinite}
@keyframes icon-glow{50%{box-shadow:0 0 0 1px #f3dc9aaa,0 0 26px 8px #f1d48a88}}
@media(prefers-reduced-motion:reduce){.icon-btn.together{animation:none}}
/* 108배 숫자: 108배 하는 동안에만, 작고 흐리게(글씨 16px 아래로는 줄이지 않음). */
body .world-shell .world-bows:not([hidden]){display:block;font-size:16px;color:#f1e3b8;opacity:.55;text-align:center;margin-bottom:6px;text-shadow:0 1px 3px #000}
/* 위쪽: 왼쪽은 산 모양 표시, 전각 이름 고르기, 작은 사람 수 한 줄(어떤 폭에서도 줄바꿈 없음), 오른쪽은 소리와 메뉴 아이콘 두 개. 3D 바깥의 '마당으로 나가기'는 없음. */
body .world-shell .world-title,body .world-shell .world-divider,body .world-shell .world-mode,body .world-shell .world-tools,body .world-shell .world-settings-pop,body .world-shell .world-menu-btn{display:none!important}
body.in-world #back{display:none!important}
body .world-shell .world-top{flex-wrap:nowrap;align-items:center}
body .world-shell .world-brand{flex-wrap:nowrap;white-space:nowrap;flex:0 1 auto;min-width:0}
body .world-shell .world-brand>*{flex:0 0 auto}
body .world-shell .world-count-mini{display:inline;font-size:13px;color:#cbbf9e;white-space:nowrap}
body .world-shell .world-icons{display:flex;gap:12px;margin-left:auto;flex:0 0 auto;pointer-events:auto}
/* 메뉴: PC는 오른쪽 위 아이콘 아래에 펼치는 판, 휴대폰은 아래에서 올라오는 판(위 휴대폰 부분). */
@media(min-width:601px){
.world-shell .world-menu:not([hidden]){display:block;position:absolute;top:84px;right:18px;width:min(340px,calc(100% - 36px));max-height:calc(100% - 190px);overflow:auto;z-index:1100;background:#1f1b14f2;border:1px solid #d2b97366;border-radius:14px;padding:14px;color:#f1e7cc;box-shadow:0 8px 30px #0008}
.world-shell .world-menu .menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.world-shell .world-menu button{font-size:14px;min-height:40px;padding:8px 10px;white-space:normal}
.world-shell .world-menu .menu-close{background:#baa368;color:#201c13;margin-top:10px}
.world-shell .menu-volume,.world-shell .menu-check{display:flex;align-items:center;gap:10px;font-size:14px;margin:10px 2px}
.world-shell .menu-volume input{flex:1;accent-color:#c6a968}
.world-shell .world-menu .zen-times{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}
}
.world-shell .menu-head{font-size:15px;font-weight:700;color:#e8cf8a;margin:14px 4px 2px}
/* 휴대폰: 하단 버튼이 여섯 개(대웅전 서 있을 때)여도 360 폭에 들어가게 버튼 사이를 줄인다(390에서 약 11px, 360에서 6px). */
@media(max-width:600px){body.in-world .world-shell .world-actions{gap:clamp(6px,calc((100vw - 336px)/5),14px)}body.in-world .world-shell .world-bottom{max-width:calc(100% - 8px)}body.in-world .world-shell .icon-btn,body.in-world .world-shell .world-actions .icon-btn{width:52px;height:52px}body.in-world .world-shell .icon-btn .icon-svg{width:28px;height:28px}.icon-btn .icon-num{font-size:12px;right:8px;bottom:7px}.icon-btn .icon-name{font-size:16px}.world-bottom .icon-btn .icon-name{white-space:normal;width:64px;text-align:center;word-break:keep-all;top:auto;bottom:calc(100% + 4px)}body.in-world .world-shell .world-count-mini{font-size:16px}body.in-world .world-shell .world-icons{gap:10px}.world-shell .menu-head{font-size:17px}}

.no3d{margin:40px auto;max-width:24em;text-align:center;font-size:18px;padding:28px 18px;border:1px solid #b5a36b66;border-radius:10px}
/* 하단 버튼은 늘 3D 화면 안쪽 아래에 둔다(창 높이가 3D 화면보다 낮아도 화면 아래 설정 줄과 겹치지 않게). */
.world-shell .world-bottom,body .world-shell .world-bottom,body.in-world .world-shell .world-bottom,body.in-world .world-shell.expanded .world-bottom,.world-shell.expanded .world-bottom{position:absolute!important}
.world-shell .world-menu .menu-place.dim{opacity:.5}

/* 연등 접수대의 작은 칸(소원 하나와 접수, 이름은 늘 불자): 3D 화면 위쪽 가운데, 하단 버튼과 같은 반투명 모양. 글씨 16px 이상. */
.wish-card{position:absolute;left:50%;top:78px;transform:translateX(-50%);z-index:45;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;justify-content:center;width:min(92%,420px);box-sizing:border-box;padding:12px 14px 16px;border-radius:16px;background:#1c1812b8;color:#f4ecd9;font-size:16px;box-shadow:0 4px 18px #0006;overflow:hidden}
.wish-card[hidden]{display:none}
.wish-card label{display:flex;align-items:center;gap:6px;flex:0 1 auto;white-space:nowrap}
.wish-card input{flex:0 0 auto;width:calc(8em + 22px);min-width:0;font-size:16px;padding:8px 10px;border-radius:10px;border:1px solid #f4ecd955;background:#fffaf0;color:#1c1812;box-sizing:border-box}
.wish-card .wc-ok{font-size:16px;min-height:44px;padding:0 20px;border-radius:22px;border:2px solid #f4ecd9;background:#f4ecd922;color:#f4ecd9}
.wish-card .wc-time{position:absolute;left:0;right:0;bottom:0;height:4px;background:#e8c27a;transform-origin:left center}

/* 3D 화면 아래의 설정 줄은 없다(설정은 메뉴 안). 그만큼 3D 화면을 넓힌다. */
.world-settings{display:none!important}
.world-shell{height:calc(100dvh - 132px);max-height:none}
@media(max-width:800px){.world-shell{height:calc(100dvh - 140px)}}
/* 메뉴 안 설정 아래의 '소리 출처'(예전 3D 화면 아래 줄에서 옮김). 글씨는 16px 이상. */
.world-menu .sound-credits,.world-menu .sound-credits summary,.world-menu .sound-credits li{font-size:16px;line-height:1.5}
.world-menu .sound-credits{margin-top:10px}.world-menu .sound-credits ul{padding-left:18px;margin:6px 0}

/* 불전함 가상 보시의 칸: 고른 합계(그 순간에만)와 두 버튼. 3D 화면 아래쪽 가운데, 하단 버튼 위. 글씨 16px 이상. */

/* 메뉴의 '점심사 이야기': 소리 출처와 같은 모양, 글씨 16px. */
.temple-story{font-size:16px;margin-top:10px}.temple-story summary{cursor:pointer}.temple-story p{margin:.4em 0;line-height:1.5}.temple-story .story-note{opacity:.8}
/* 화면 낭독기용 보이지 않는 안내(동작의 설명). 화면에는 보이지 않는다. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}
/* 다음에 할 수 있는 일: 하단 버튼이 은은하게 숨 쉬듯 빛남(가까운 물건의 버튼, 처음 앉았을 때의 3배). 움직임 줄이기 설정이면 멈춘 빛. */
body .world-shell .world-actions .icon-btn.glow,body.in-world .world-shell .world-actions .icon-btn.glow{animation:next-breathe 2.6s ease-in-out infinite;border-color:#f3d98acc}
@keyframes next-breathe{0%,100%{box-shadow:0 0 0 1px #f0e2b833,0 0 6px #f1dfa044}50%{box-shadow:0 0 0 2px #f3d98a99,0 0 18px #f1dfa0bb}}
@media(prefers-reduced-motion:reduce){body .world-shell .world-actions .icon-btn.glow{animation:none;box-shadow:0 0 0 2px #f3d98a88,0 0 12px #f1dfa088}}
/* 왼쪽 위 표시: 산 표시 없이 '대웅전 · 1명'. 상자와 글자를 줄이고, 상자는 글자 길이에 맞춰 늘고 준다(field-sizing, 못 쓰면 fitPicker가 폭을 정함). 어떤 폭에서도 한 줄. */
body .world-shell .world-brand,body.in-world .world-shell .world-brand{display:inline-flex;width:auto;max-width:calc(100% - 140px);padding:4px 10px;gap:4px;font-size:15px;border-radius:18px;align-items:center}
body .world-shell .world-room-picker,body.in-world .world-shell .world-room-picker{field-sizing:content;max-width:none;font-size:16px;font-weight:700;padding:0;margin:0}
body .world-shell .world-count-mini,body.in-world .world-shell .world-count-mini{font-size:13px}
@media(max-width:600px){body .world-shell .world-count-mini,body.in-world .world-shell .world-count-mini{font-size:16px}body .world-shell .world-brand,body.in-world .world-shell .world-brand{max-width:calc(100% - 128px)}}
@media(max-width:600px){body .world-shell .world-count-mini,body.in-world .world-shell .world-count-mini{font-size:16px}body .world-shell .world-brand,body.in-world .world-shell .world-brand{padding:4px 10px;max-width:calc(100% - 128px)}}
/* 마당에서 선원 문 앞에 서면 화면이 천천히 어두워지며 선원으로 들어간다(장면 전환). */
.world-shell.scene-out::after{content:"";position:absolute;inset:0;background:#0b0907;opacity:0;animation:scene-out .7s ease forwards;pointer-events:none;z-index:90}
@keyframes scene-out{to{opacity:.45}}
.scene-snap{position:absolute;inset:0;z-index:89;background:#0b0907 center/100% 100% no-repeat;pointer-events:none;transition:opacity .8s ease}.scene-snap::after{content:"";position:absolute;inset:0;background:#0b0907;opacity:.45}.scene-snap.gone{opacity:0}
@media (prefers-reduced-motion:reduce){.world-shell.scene-out::after{animation:none;opacity:.45}.scene-snap{transition:none}}
/* 첫 화면 한 줄(마음에 점을 찍다.): 3D 마당 위 가운데 조금 위에 처음 5초만. 누르기를 막지 않는다. */
/* 휴대폰 위쪽 오른쪽(염불 듣기, 소리, 메뉴)도 이름이 이웃과 붙지 않게 버튼 폭 안에서 두 줄로(16px 그대로). */
@media(max-width:600px){body.in-world .world-icons .icon-btn .icon-name{white-space:normal;width:60px;text-align:center;word-break:keep-all}}
.world-shell.scene-in::after{content:"";position:absolute;inset:0;background:#0b0907;opacity:.45;animation:scene-in .7s ease .1s forwards;pointer-events:none;z-index:90}
@keyframes scene-in{to{opacity:0}}
@media (prefers-reduced-motion:reduce){.world-shell.scene-in::after{animation:none;opacity:0}}
/* 연등 접수 칸: 무료 연등과 후원 연등 고르기, 후원 연등의 이름과 소원, 운영자 송금 QR 자리(빈 그림)와 쓰임 한 줄. */
.wish-card .wc-pick,.wish-card .wc-form{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;justify-content:center;width:100%}
.wish-card .wc-pick[hidden],.wish-card .wc-form[hidden],.wish-card .wc-name-row[hidden],.wish-card .wc-qr[hidden]{display:none}
.wish-card .wc-pick button{font-size:16px;min-height:48px;padding:0 22px;border-radius:24px;border:2px solid #f4ecd9;background:#f4ecd922;color:#f4ecd9}
.wish-card .wc-qr{margin:0;display:flex;align-items:center;gap:10px;flex:1 1 100%;justify-content:center}
.wish-card .wc-qr img{width:96px;height:96px;border-radius:8px;background:#fffaf0}
.wish-card .wc-qr figcaption{font-size:16px;color:#f4ecd9}
/* 글자 버튼: 그림을 없애고 한글 이름이 늘 보인다(16px 이상). PC는 한 줄, 휴대폰은 버튼 안에서 띄어쓰기 자리로 두 줄까지(연등/달기, 졸리면/경책). 버튼끼리 겹치지 않는다. */
body .world-shell .icon-btn.text-btn,body.in-world .world-shell .icon-btn.text-btn,body.in-world .world-shell .world-actions .icon-btn.text-btn{width:auto;height:auto;min-width:56px;min-height:48px;padding:6px 14px;border-radius:14px;background:#1c1812c2;border:1px solid #f0e2b873;color:#f6ecd0;display:flex;align-items:center;justify-content:center;text-align:center;font-size:16px;font-weight:600;line-height:1.2;white-space:nowrap;word-break:keep-all}
body .world-shell .world-actions .icon-btn.text-btn:first-child{background:#1c1812c2}
.icon-btn.text-btn[hidden]{display:none!important}
.text-btn .btn-word{pointer-events:none;text-shadow:0 1px 2px #000a}
.text-btn.muted .btn-word{text-decoration:line-through}
.icon-btn.text-btn .icon-name,.icon-btn.text-btn .icon-svg,.icon-btn.text-btn .icon-num{display:none}
@media(max-width:600px){body.in-world .world-shell .world-actions{gap:5px}body.in-world .world-shell .world-actions .icon-btn.text-btn,body.in-world .world-shell .world-icons .icon-btn.text-btn{width:min-content;min-width:48px;max-width:none;padding:4px 5px;white-space:normal;line-height:1.15}body.in-world .world-shell .world-icons{gap:6px}}
/* 머리말 전각 메뉴의 공양간도 목록처럼 흐리게(누르면 마당으로, 준비 중). */
.site-header nav a.shut{opacity:.5}
/* 후원: 연등식 뒤 잠시 보이는 '후원' 버튼(하단 줄 위 가운데)과 후원 창(맨 위 한 줄, PC는 QR 그림, 휴대폰은 카카오페이 버튼, 닫기). */
body .world-shell .sponsor-float{position:absolute;z-index:30;transform:translate(-50%,-100%);font:600 17px/1 inherit;font-family:inherit;color:#fff6dc;background:#2a2014cc;border:2px solid #f3d98acc;border-radius:22px;padding:11px 20px;min-height:44px;box-shadow:0 0 14px #f1d48a66;cursor:pointer}body .world-shell .sponsor-float[hidden]{display:none!important}
.sponsor-pop{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:980;box-sizing:border-box;width:min(340px,calc(100% - 32px));max-height:calc(100% - 32px);overflow:auto;background:#201c16f4;border:1px solid #d2b97366;border-radius:16px;padding:18px 16px;display:flex;flex-direction:column;align-items:center;gap:14px;color:#f4ecd9;box-shadow:0 8px 30px #000a}
.sponsor-pop[hidden]{display:none}
.sponsor-pop .sp-line{margin:0;font-size:16px;line-height:1.45;text-align:center;word-break:keep-all}
.sponsor-pop .sp-qr{display:block;width:220px;height:auto;border-radius:10px;background:#fff}
.sponsor-pop .sp-pay{display:none;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:24px;background:#fee500;color:#191600;font-size:16px;font-weight:700;text-decoration:none}
.sponsor-pop .sp-close{font-size:16px;min-height:44px;padding:0 26px;border-radius:22px;border:1px solid #f4ecd9aa;background:transparent;color:#f4ecd9;cursor:pointer}
@media(max-width:600px),(pointer:coarse){.sponsor-pop .sp-qr{display:none}.sponsor-pop .sp-pay{display:flex}}
/* 연등 접수 칸: 소원 칸 하나(미리 '소원성취')와 늘 눌리는 '접수'. */
.wish-card .wc-form label{display:flex;align-items:center;gap:8px;font-size:16px}
/* 이야기 창(오른쪽 위 '이야기', 메뉴의 '점심사 이야기'): 후원 창과 같은 모양, 글은 16px 이상, 마지막은 노파의 물음. */
.story-pop{position:absolute;z-index:980;box-sizing:border-box;top:14px;right:14px;width:min(380px,calc(100% - 28px));max-height:calc(100% - 28px);display:flex;flex-direction:column;overflow:hidden;padding:4px 0;animation:story-unroll .9s ease-out both}
.story-pop[hidden]{display:none}.story-pop.closing{animation:story-roll .7s ease-in both}
.story-pop>.story-rod:last-child{animation:story-rod-down .9s ease-out both}.story-pop.closing>.story-rod:last-child{animation:story-rod-up .7s ease-in both}
@keyframes story-unroll{from{clip-path:inset(0 -20px calc(100% - 24px) -20px)}to{clip-path:inset(0 -20px 0 -20px)}}@keyframes story-roll{from{clip-path:inset(0 -20px 0 -20px)}to{clip-path:inset(0 -20px calc(100% - 24px) -20px)}}
@keyframes story-rod-down{from{transform:translateY(calc(24px - var(--story-h,400px)))}to{transform:none}}@keyframes story-rod-up{from{transform:none}to{transform:translateY(calc(24px - var(--story-h,400px)))}}
.story-rod{flex:none;position:relative;display:block;height:16px;margin:0 2px;border-radius:8px;background:linear-gradient(#8a5a34,#5a3420 40%,#3a2012 75%,#24130a);box-shadow:inset 0 1px 0 #b58358,0 2px 3px #0006}
.story-rod::before,.story-rod::after{content:'';position:absolute;top:-3px;width:14px;height:22px;border-radius:7px;background:linear-gradient(90deg,#2a160b,#6a4026 45%,#2a160b)}.story-rod::before{left:-2px}.story-rod::after{right:-2px}
.story-paper{flex:0 1 auto;min-height:0;display:flex;flex-direction:column;gap:10px;margin:-3px 12px;padding:18px 18px 12px;color:#1d140c;border-left:1px solid #b9a47a;border-right:1px solid #b9a47a;box-shadow:0 8px 22px #0008;
  background:radial-gradient(ellipse 60% 3px at 30% 22%,#c9b58a33,#0000),radial-gradient(ellipse 40% 2px at 70% 47%,#c9b58a2e,#0000),radial-gradient(ellipse 55% 2px at 40% 76%,#c9b58a33,#0000),
    repeating-linear-gradient(97deg,#0000 0 11px,#cdbb941a 11px 12px,#0000 12px 23px),repeating-linear-gradient(3deg,#0000 0 17px,#fff8e612 17px 18px),#ece2c8}
.story-pop .story-body{flex:0 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:10px;cursor:pointer}
.story-pop p{margin:0;font-size:17px;line-height:1.65;word-break:keep-all;opacity:0;filter:blur(4px);transition:opacity 1.1s ease,filter 1.4s ease}.story-pop p.shown{opacity:1;filter:none}
.story-pop .founding-title{font-weight:700;text-align:center;letter-spacing:.08em}.story-pop .founding-date{text-align:right}
.story-pop .story-q img{display:block;width:100%;height:auto;margin:4px 0 0}
.story-pop .sp-close{flex:none;align-self:center;font-size:16px;min-height:44px;padding:0 26px;border-radius:22px;border:1px solid #5a3a22;background:transparent;color:#2a180c;cursor:pointer}
@media(max-width:600px){.story-pop{top:auto;left:8px;right:8px;width:auto;bottom:12px;max-height:calc(100% - 70px)}
  .story-paper{padding:14px 14px 10px;gap:8px}.story-pop .story-body{gap:8px}.story-pop p{font-size:16px;line-height:1.6}}
.founding-pop{width:min(600px,calc(100% - 28px))}.founding-pop .story-paper{gap:8px}.founding-pop .story-body{gap:8px}.founding-pop p{line-height:1.6}
@media(max-width:600px){.founding-pop{left:4px;right:4px;bottom:8px;max-height:calc(100% - 60px)}.founding-pop .story-paper{margin:-3px 6px;padding:10px 12px 8px;gap:6px}.founding-pop .story-body{gap:6px}.founding-pop p{line-height:1.5}}
@media(prefers-reduced-motion:reduce){.story-pop,.story-pop.closing,.story-pop>.story-rod:last-child,.story-pop.closing>.story-rod:last-child{animation:none}.story-pop p{transition:none}}
.credits-pop{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:980;box-sizing:border-box;width:min(420px,calc(100% - 32px));max-height:calc(100% - 32px);overflow:auto;background:#201c16f4;border:1px solid #d2b97366;border-radius:16px;padding:18px 16px;display:flex;flex-direction:column;gap:10px;color:#f4ecd9;box-shadow:0 8px 30px #000a}
.credits-pop[hidden]{display:none}.credits-pop .cr-head{margin:0;font-size:18px;text-align:center}.credits-pop ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px}.credits-pop li{font-size:16px;line-height:1.5;word-break:keep-all}.credits-pop a{color:#f1d48a}
.credits-pop .sp-close{align-self:center;font-size:16px;min-height:44px;padding:0 26px;border-radius:22px;border:1px solid #f4ecd9aa;background:transparent;color:#f4ecd9;cursor:pointer}
/* 메뉴 안은 넷(점심사 이야기, 운영비 후원, 소리 끄기·켜기, 출처). */
.world-menu .menu-three{display:flex;flex-direction:column;gap:8px}.world-menu .menu-three button{font-size:16px;min-height:44px}
/* PC 화면 위쪽 머리말(마당, 전각 링크, 버전 표시)은 숨긴다. 3D 화면이 그만큼 넓어진다. */
.site-header{display:none!important}
.world-shell{height:calc(100dvh - 48px)}
@media(max-width:800px){.world-shell{height:calc(100dvh - 56px)}}
/* 들어올 때와 나갈 때 장면(intro.js): 검정 바탕, 흰 붓글씨(선원 앞벽과 같은 그림을 뒤집은 색), 그 아래 작은 흰 점. */
.sansa-intro{position:fixed;inset:0;z-index:5000;background:#000;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.sansa-intro[hidden]{display:none}
.sansa-intro-ink{position:absolute;inset:0;pointer-events:none}
.sansa-intro-line{position:absolute;overflow:hidden}
.sansa-intro-line img{position:absolute;top:0;max-width:none;filter:invert(1);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.sansa-intro-dot{--s:5px;position:absolute;width:var(--s);height:var(--s);transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle,#fff 0 46%,#fffd 58%,#fff6 68%,#fff0 74%);opacity:.3;pointer-events:none}
.sansa-intro-glow{position:fixed;inset:0;z-index:5001;pointer-events:none}.sansa-intro-glow[hidden]{display:none}
html.sansa-cover,html.sansa-cover body{background:#000!important}html.sansa-cover body>*:not(.sansa-intro):not(.sansa-intro-glow):not(script){visibility:hidden}
.sansa-intro-again{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:inherit;font-size:16px;min-height:44px;padding:0 22px;border-radius:22px;border:1px solid #fff8;background:transparent;color:#fffc;cursor:pointer}
.sansa-intro-again[hidden]{display:none}.sansa-intro-again:focus-visible{outline:2px solid #fff;outline-offset:3px}
