/* style.css · 광장 화면(시제품 스타일 + 접속 수·인증 배지·연결 띠·입장 화면) */
:root{
  --orange:#ff7210;--paper:#f3f4f1;--ink:#121417;--ink2:#3a3f48;--mute:#6b7078;--yellow:#ffd23f;--line:rgba(18,20,23,.14);
  --panel-w:340px;--drawer-h:0px;--cuebar-h:0px;
}
  html,body{margin:0;height:100%}
  body{margin:0;overflow:hidden;background:#cfe3f5;color:#121417;font-family:"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",system-ui,sans-serif;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
  #scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}
  #hud{position:fixed;inset:0;pointer-events:none;z-index:5}
  .card{background:rgba(243,244,241,.86);color:#121417;border-radius:12px;box-shadow:0 2px 14px rgba(18,20,23,.14);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
  .hidden{display:none!important}
  .badge{display:inline-block;font-size:11px;font-weight:800;color:#121417;background:#ffd23f;border-radius:6px;padding:2px 7px;vertical-align:middle;white-space:nowrap}
  #hudTL{position:absolute;left:16px;top:16px;padding:8px 12px;display:flex;align-items:center;gap:8px;max-width:calc(100vw - 420px);pointer-events:auto}
  #hudTL .chip{font-weight:800;font-size:14px;background:#ff7210;color:#f3f4f1;border-radius:8px;padding:3px 9px;white-space:nowrap}
  #segName{font-size:13px;font-weight:700;color:#3a3f48;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #hudTR{position:absolute;right:16px;top:16px;padding:10px 14px;text-align:right;pointer-events:auto}
  #hudTotal{font-size:20px;font-weight:800;color:#ff7210;font-variant-numeric:tabular-nums;white-space:nowrap}
  #hudSub{font-size:12px;font-weight:600;color:#3a3f48;margin-top:2px;white-space:nowrap}
  #hudTools{display:flex;gap:6px;justify-content:flex-end;margin-top:8px}
  .tbtn{font:inherit;font-size:12px;font-weight:700;color:#121417;background:#fff;border:1px solid rgba(18,20,23,.16);border-radius:8px;padding:5px 9px;cursor:pointer}
  .tbtn.on{background:#ff7210;color:#f3f4f1;border-color:#ff7210}
  #btnHelp{display:none}
  #cueBar{position:absolute;left:50%;transform:translateX(-50%);bottom:16px;pointer-events:auto;max-width:calc(100vw - 32px)}
  #cueProg{height:2px;background:rgba(18,20,23,.12);border-radius:2px;margin:0 6px 6px;overflow:hidden}
  #cueProg i{display:block;height:100%;width:0;background:#ff7210}
  #cueRemain{font-size:12px;font-weight:800;color:#121417;margin:0 8px 4px}
  #cueBtns{display:flex;gap:6px}
  .cue{width:132px;flex:0 1 132px;min-width:0;height:44px;font:inherit;font-size:13px;font-weight:700;color:#121417;background:rgba(243,244,241,.92);border:1px solid rgba(18,20,23,.14);border-radius:12px;display:flex;align-items:center;gap:7px;padding:0 10px;cursor:pointer;box-shadow:0 2px 10px rgba(18,20,23,.12);white-space:nowrap;overflow:hidden}
  .cue b{flex:none;width:22px;height:22px;border-radius:7px;background:#121417;color:#f3f4f1;font-size:12px;display:flex;align-items:center;justify-content:center}
  .cue .sm{display:none}
  .cue.active{background:#ff7210;color:#f3f4f1;border-color:#ff7210}
  .cue.active b{background:#f3f4f1;color:#ff7210}
  #help{position:absolute;left:16px;top:64px;padding:5px 10px;font-size:11px;font-weight:600;color:#3a3f48;max-width:min(330px,calc(100vw - 420px));line-height:1.45;word-break:keep-all;opacity:.92}
  #help{pointer-events:none} #help .tbtn{pointer-events:auto;font-size:11px;padding:2px 8px;margin-top:3px}
  #camSet{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:6px 0 4px} #camSet label{white-space:nowrap} #camSet input[type=range]{vertical-align:middle;width:110px}
  #help span{white-space:nowrap} /* 키와 동작이 다른 줄로 갈라지지 않게 항목 단위로만 줄을 바꾼다 */
  #card,#hallCard,#storeCard,#fairCard{position:absolute;top:160px;right:16px;width:340px;max-height:calc(100vh - 128px - 96px);padding:14px 16px 12px;pointer-events:auto;box-sizing:border-box;overflow:auto} /* 오른쪽 위 HUD(아래 끝 약 112px) 밑에서 시작해 소리·초기화 버튼을 덮지 않는다 */
  #card .cat,#hallCard .cat,#storeCard .cat,#fairCard .cat{display:inline-block;font-size:11px;font-weight:800;background:#ff7210;color:#f3f4f1;border-radius:6px;padding:2px 8px}
  #card h3,#hallCard h3,#storeCard h3,#fairCard h3{margin:8px 0 4px;font-size:16px;line-height:1.35}
  #card .ratio,#hallCard .ratio,#storeCard .ratio,#fairCard .ratio{font-size:30px;font-weight:900;color:#ff7210;line-height:1.1;margin:4px 0}
  #card dl,#hallCard dl,#storeCard dl,#fairCard dl{margin:6px 0 0;display:grid;grid-template-columns:auto 1fr;gap:3px 10px;font-size:12px}
  #card dt,#hallCard dt,#storeCard dt,#fairCard dt{color:#6b7078;font-weight:600}
  #card dd,#hallCard dd,#storeCard dd,#fairCard dd{margin:0;font-weight:700;word-break:keep-all;overflow-wrap:anywhere}
  #card .note,#hallCard .note,#storeCard .note,#fairCard .note{font-size:11px;color:#6b7078;margin-top:8px}
  #card a,#hallCard a,#storeCard a,#fairCard a{display:inline-block;margin-top:6px;font-size:13px;font-weight:800;color:#f3f4f1;background:#121417;border-radius:8px;padding:6px 10px;text-decoration:none}
  #card .note.ai,#hallCard .note.ai,#storeCard .note.ai,#fairCard .note.ai{color:#545a61;font-weight:700}
  #card .cardBtns,#hallCard .cardBtns,#storeCard .cardBtns,#fairCard .cardBtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
  #card .cardBtns button,#hallCard .cardBtns button,#storeCard .cardBtns button,#fairCard .cardBtns button{font:inherit;font-size:13px;font-weight:800;color:#f3f4f1;background:#121417;border:0;border-radius:8px;padding:6px 10px;cursor:pointer}
  #card .cardBtns button[data-act=clap],#hallCard .cardBtns button[data-act=clap],#storeCard .cardBtns button[data-act=clap],#fairCard .cardBtns button[data-act=clap]{background:#ff7210;color:#121417}
  #card .cardBtns button:disabled,#hallCard .cardBtns button:disabled,#storeCard .cardBtns button:disabled,#fairCard .cardBtns button:disabled{background:#c9cdd1;color:#545a61;cursor:default}
  #cardClose,#hallCardClose,#storeClose,#fairCardClose{position:absolute;right:8px;top:8px;width:28px;height:28px;border:0;border-radius:8px;background:rgba(18,20,23,.08);font-size:16px;cursor:pointer}
  #hallCard .heasy,#fairCard .heasy{margin:6px 0 8px;padding:8px 12px;border-radius:10px;color:#fff}
  #hallCard .heasy span,#fairCard .heasy span{display:block;font-size:11px;font-weight:800;opacity:.9}
  #hallCard .heasy b,#fairCard .heasy b{display:block;font-size:19px;font-weight:900;line-height:1.3;word-break:keep-all}
  #hallCard .hmeta,#fairCard .hmeta{font-size:12px;font-weight:700;color:#6b7078;margin:2px 0 6px}
  #hallCard .hbody p,#fairCard .hbody p{margin:0 0 6px;font-size:13px;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}
  #hallCard .hbody.fold,#fairCard .hbody.fold{max-height:4.6em;overflow:hidden}
  #hallCard .hmore,#fairCard .hmore{font:inherit;font-size:13px;font-weight:800;color:#121417;background:rgba(18,20,23,.08);border:0;border-radius:8px;padding:6px 10px;margin:0 8px 0 0;cursor:pointer;min-height:36px}
  #toast{position:absolute;left:50%;top:18%;transform:translateX(-50%);text-align:center;padding:12px 22px;opacity:0;transition:opacity .25s;pointer-events:none;word-break:keep-all;max-width:calc(100vw - 32px);box-sizing:border-box}
  #toast.show{opacity:1}
  #toast .big{font-size:30px;font-weight:900;color:#121417;white-space:nowrap}
  #toast .big.huge{font-size:44px;color:#ff7210}
  #toast .small{font-size:12px;font-weight:700;color:#6b7078;margin-top:2px}
  #joy,#jumpBtn,#sitBtn{display:none}
  #joy{position:absolute;left:16px;width:112px;height:112px;border-radius:50%;background:rgba(243,244,241,.55);border:2px solid rgba(18,20,23,.18);pointer-events:auto;touch-action:none}
  #joyKnob{position:absolute;left:36px;top:36px;width:40px;height:40px;border-radius:50%;background:#ff7210;box-shadow:0 2px 8px rgba(18,20,23,.25)}
  #sitBtn{position:absolute;right:88px;width:56px;height:56px;border-radius:50%;border:2px solid rgba(18,20,23,.18);background:rgba(243,244,241,.8);font:inherit;font-size:12px;font-weight:800;pointer-events:auto;touch-action:none}
  #jumpBtn{position:absolute;right:16px;width:64px;height:64px;border-radius:50%;border:2px solid rgba(18,20,23,.18);background:rgba(243,244,241,.8);font:inherit;font-size:13px;font-weight:800;pointer-events:auto;touch-action:none}
  #intro{position:absolute;left:16px;top:118px;padding:10px 14px;font-size:13px;font-weight:700;text-align:left;max-width:min(330px,calc(100vw - 32px));box-sizing:border-box;transition:opacity .6s;line-height:1.5;word-break:keep-all;overflow-wrap:break-word}
  #intro.fade{opacity:0}
  #helpSheet{position:absolute;left:16px;right:16px;top:60px;padding:14px 16px;font-size:13px;font-weight:600;line-height:1.7;pointer-events:auto;word-break:keep-all}
  #debug{position:absolute;left:16px;top:64px;font:11px/1.4 ui-monospace,Menlo,monospace;color:#121417;background:rgba(243,244,241,.8);border-radius:8px;padding:6px 8px;white-space:pre;display:none}
  #fatal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:20;background:#f3f4f1;color:#121417;font-size:16px;font-weight:700;padding:18px 22px;border-radius:12px;box-shadow:0 4px 20px rgba(18,20,23,.2);text-align:center;max-width:calc(100vw - 32px);box-sizing:border-box}
  @media (max-width:600px),(pointer:coarse){
    #hudTL{left:16px;top:12px;max-width:calc(100vw - 32px - 150px);padding:6px 10px;box-sizing:border-box}
    #hudTL .chip{overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:12px}
    #segName{display:none}
    #hudTR{right:16px;top:12px;padding:6px 10px;display:flex;align-items:center;gap:8px}
    #hudTotal{font-size:14px}
    #hudTotal .lbl{display:none}
    #hudSub{display:none}
    #hudTools{margin-top:0}
    #btnSoundMore{display:none}
    #btnHelp{display:inline-block}
    #cueBar{left:16px;right:16px;transform:none;bottom:calc(var(--drawer-h,0px) + 10px + env(safe-area-inset-bottom))}
    #cueBtns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
    .cue{width:auto;height:44px;padding:0 8px;font-size:12px}
    .cue .lg{display:none}
    .cue .sm{display:inline}
    #help{display:none}
    #joy,#jumpBtn,#sitBtn{display:block;bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 14px + env(safe-area-inset-bottom))}
    #card,#hallCard,#storeCard,#fairCard{top:60px;left:16px;right:16px;bottom:auto;width:auto;max-height:36vh;overflow:auto}
    #toast{top:40%}
    #toast .big{font-size:22px}
    #toast .big.huge{font-size:30px}
    #intro{left:16px;right:16px;transform:none;max-width:none;top:64px;bottom:auto}
  }
  /* 휴대폰 가로 화면: 큐 막대 한 줄, 카드·채팅은 조이스틱과 점프 버튼 사이 위쪽 칸 */
  @media (pointer:coarse) and (orientation:landscape) and (max-height:500px){
    #cueBtns{grid-template-columns:repeat(6,minmax(0,1fr))}
    .cue{height:36px}
    #joy,#jumpBtn,#sitBtn{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 10px + env(safe-area-inset-bottom))}
    #card,#hallCard,#storeCard,#fairCard{top:56px;left:144px;right:auto;width:min(380px,calc(100vw - 240px));max-height:calc(100vh - 132px - var(--drawer-h,0px) - env(safe-area-inset-bottom))}
    #helpSheet{top:56px;left:144px;right:96px;max-height:calc(100vh - 140px);overflow:auto}
    #intro{top:56px;bottom:auto;left:144px;right:96px}
    #toast{top:28%}
  }

/* ---------- 접속 수·내 핸들·인증 배지 ---------- */
#hudTL .chip2{font-size:12px;font-weight:800;color:#121417;background:rgba(18,20,23,.08);border-radius:8px;padding:3px 8px;white-space:nowrap}
#meChip{font-size:12px;font-weight:800;color:#3a3f48;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.vbadge{display:inline-block;font-size:10px;font-weight:900;color:#f3f4f1;background:#2a9d8f;border-radius:5px;padding:1px 5px;margin-left:4px;vertical-align:1px}
.abadge{display:inline-block;font-size:10px;font-weight:900;color:#f3f4f1;background:#121417;border-radius:5px;padding:1px 5px;margin-left:4px;vertical-align:1px}
#btnCueView{margin-left:2px}

/* ---------- 연결 상태 띠 ---------- */
#connBand{position:fixed;left:50%;top:10px;transform:translateX(-50%);z-index:40;background:#121417;color:#f3f4f1;font-size:13px;font-weight:700;padding:8px 14px;border-radius:10px;box-shadow:0 2px 14px rgba(18,20,23,.25);max-width:calc(100vw - 32px);box-sizing:border-box;text-align:center;word-break:keep-all;display:flex;gap:10px;align-items:center}
#connBand.warn{background:#c8553d}
#connBand button{font:inherit;font-size:12px;font-weight:800;border:0;border-radius:8px;padding:5px 10px;background:#f3f4f1;color:#121417;cursor:pointer}

/* ---------- 입장 화면 ---------- */
/* 입구 둘(참가자 입장 · 그냥 입장) */
/* 수상자 차례 안내 */
#callRoll{position:absolute;left:50%;top:64px;transform:translateX(-50%);z-index:30;width:min(680px,calc(100% - 16px));max-height:calc(100% - 96px);overflow:hidden;box-sizing:border-box;padding:8px 12px 10px;pointer-events:none;word-break:keep-all}
#callRoll .t{text-align:center;font-size:20px;font-weight:900;color:#ff7210;margin-bottom:6px}
#callRoll .t .s{margin-left:8px;font-size:12px;font-weight:700;color:#6b7078}
#callRoll .g{display:grid;grid-template-columns:repeat(4,1fr);gap:2px 8px;font-size:15px;font-weight:700;color:#121417}
#callRoll .g b{color:#ff7210;font-weight:800}
body.chat-side.chat-open #callRoll{left:calc((100vw - var(--panel-w) - 16px) / 2);width:min(680px,calc(100vw - var(--panel-w) - 32px))}
@media (min-width:900px) and (min-height:600px){#callRoll{top:120px}}
@media (max-width:560px){#callRoll{top:56px}#callRoll .t{font-size:16px;margin-bottom:4px}#callRoll .g{grid-template-columns:repeat(2,1fr);font-size:14px;gap:1px 8px}}
@media (max-height:480px){#callRoll{top:6px;padding:4px 10px 6px}#callRoll .t{font-size:14px;margin-bottom:2px}#callRoll .g{font-size:12px;gap:0 6px}}
#turnBox{position:absolute;left:50%;top:36%;transform:translateX(-50%);z-index:40;width:min(360px,calc(100% - 32px));box-sizing:border-box;text-align:center;padding:18px 18px 16px;border:3px solid #ff7210;pointer-events:auto}
#turnBox .big{font-size:26px;font-weight:900;letter-spacing:-.01em}
#turnBox .small{font-size:14px;font-weight:700;margin-top:6px;color:#3a3f48;word-break:keep-all}
#turnBox .go{width:100%;margin-top:14px;font:inherit;font-size:16px;font-weight:900;color:#f3f4f1;background:#ff7210;border:0;border-radius:12px;padding:12px;cursor:pointer}
/* 사회자 자막 띠(전원 화면 위쪽) */
#mcBand{position:absolute;left:50%;top:122px;transform:translateX(-50%);z-index:30;max-width:min(760px,calc(100% - 32px));box-sizing:border-box;display:flex;align-items:center;gap:12px;padding:10px 18px;border-radius:14px;background:rgba(18,20,23,.9);color:#f3f4f1;box-shadow:0 4px 24px rgba(18,20,23,.3);pointer-events:none}
#mcBand b{flex:none;font-size:14px;font-weight:900;color:#121417;background:#ff7210;border-radius:8px;padding:4px 9px}
#mcBand span{font-size:24px;font-weight:800;line-height:1.35;word-break:keep-all}
@media (max-width:600px){#mcBand{top:96px;padding:8px 12px}#mcBand span{font-size:18px}}
body.chat-side.chat-open #mcBand{left:calc((100vw - var(--panel-w) - 16px) / 2);max-width:min(760px,calc(100vw - var(--panel-w) - 48px))}
/* 운영자 대본 줄 */
#adminTools .script-list{max-height:180px;overflow:auto;display:flex;flex-direction:column;gap:4px;margin-top:4px}
#adminTools .script-list button{font:inherit;font-size:12px;font-weight:700;text-align:left;border:1px solid rgba(18,20,23,.18);background:#fff;border-radius:8px;padding:5px 8px;cursor:pointer;word-break:keep-all}
#adminTools .script-list button.next{border-color:#ff7210;background:#fff0e4}
#adminTools .script-list button.sent{color:#6b7078}
#adminTools #admMcH{flex:1;min-width:0}
.tbtn:disabled{opacity:.45;cursor:default}
/* 감옥 안내(본인 화면) */
#jailBox{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);z-index:31;min-width:240px;box-sizing:border-box;text-align:center;padding:12px 20px 14px;border:3px solid #121417;pointer-events:none}
#jailBox .t{font-size:15px;font-weight:900;color:#c8553d}
#jailBox .big{font-size:44px;font-weight:900;letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.15}
#jailBox .small{font-size:12px;font-weight:700;color:#3a3f48;word-break:keep-all}
#seatAllBox{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);z-index:31;box-sizing:border-box;text-align:center;padding:8px 16px;border:2px solid #121417;font-size:13px;font-weight:900;color:#121417;pointer-events:none;word-break:keep-all;max-width:calc(100% - 32px)}
body.chat-side.chat-open #seatAllBox{left:calc((100vw - var(--panel-w) - 16px) / 2)}
#btnSeatView{pointer-events:auto;margin-left:10px;padding:4px 10px;border:2px solid #121417;border-radius:0;background:#ff7210;color:#121417;font:inherit;font-size:12px;font-weight:900;cursor:pointer}
#fadeOv{position:fixed;inset:0;z-index:45;background:#121417;opacity:0;pointer-events:none;transition:opacity .35s}
#fadeOv.on{opacity:1}
#adminTools #admJails .jrow{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:700}
#adminTools #admJails .jrow span{flex:1;min-width:0;word-break:keep-all}
.chat-input input:disabled{background:#e6e3dc;color:#6b7078}
.pbadge{display:inline-block;font-size:10px;font-weight:900;color:#f3f4f1;background:#1f7a70;border-radius:5px;padding:1px 5px;margin-left:4px;vertical-align:1px}

/* ---------- 운영자 도구 ---------- */
#adminTools{position:absolute;left:16px;top:118px;width:300px;padding:10px 12px;font-size:12px;pointer-events:auto;box-sizing:border-box}
#adminTools h4{margin:0 0 6px;font-size:12px;font-weight:900;display:flex;justify-content:space-between;align-items:center}
#adminTools .r{display:flex;gap:6px;align-items:center;margin-top:6px;flex-wrap:wrap}
#adminTools input,#adminTools select{font:inherit;font-size:12px;border:1px solid rgba(18,20,23,.2);border-radius:8px;padding:5px 7px;background:#fff;color:#121417;min-width:0}
#adminTools input{flex:1}
#adminTools pre{margin:6px 0 0;max-height:180px;overflow:auto;font:11px/1.4 ui-monospace,Menlo,monospace;background:rgba(18,20,23,.06);border-radius:8px;padding:6px;white-space:pre-wrap;word-break:break-all;-webkit-user-select:text;user-select:text}
#adminToast{position:fixed;left:50%;bottom:calc(var(--drawer-h,0px) + 120px);transform:translateX(-50%);z-index:30;background:#121417;color:#f3f4f1;font-size:13px;font-weight:700;padding:8px 14px;border-radius:10px;opacity:0;transition:opacity .2s;pointer-events:none;max-width:calc(100vw - 32px);box-sizing:border-box}
#adminToast.show{opacity:1}
#adminToast.bad{background:#c8553d}
#help.admin-off .adm{display:none}

/* ---------- 데스크톱 채팅 패널이 열려 있으면 오른쪽 HUD가 패널을 피한다 ---------- */
body.chat-side.chat-open #hudTR,body.chat-side.chat-open #card,body.chat-side.chat-open #hallCard,body.chat-side.chat-open #storeCard,body.chat-side.chat-open #fairCard{right:calc(var(--panel-w) + 16px)}
body.chat-side.chat-open #cueBar{left:calc((100vw - var(--panel-w) - 16px) / 2)}
body.chat-side.chat-open #toast{left:calc((100vw - var(--panel-w) - 16px) / 2)}
body.chat-side.chat-open #hudTL{max-width:calc(100vw - 420px - var(--panel-w))}
body.chat-side.chat-open #adminToast{left:calc((100vw - var(--panel-w) - 16px) / 2)}
body.chat-drawer #toast{top:30%}
body.chat-drawer.drawer-open #joy,body.chat-drawer.drawer-open #jumpBtn,body.chat-drawer.drawer-open #sitBtn,body.chat-drawer.drawer-open #swingBtn,body.chat-drawer.drawer-open #cueBar{visibility:hidden}
@media (max-width:600px),(pointer:coarse){
  #adminTools{top:56px;left:16px;right:16px;width:auto;max-height:46vh;overflow:auto}
  #meChip{display:none}
  #hudTL .chip2{font-size:11px;padding:2px 6px}
}

/* 긴급 띠(운영자 콘솔 banner): 채팅을 접었든 휴대폰이든 화면 맨 위 전체 너비, 빨강 바탕 흰 글씨 */
#urgentBand{position:fixed;left:0;right:0;top:0;z-index:90;background:#d62a1e;color:#fff;font-weight:900;font-size:clamp(18px,3.2vw,30px);line-height:1.3;text-align:center;padding:12px 16px;box-sizing:border-box;box-shadow:0 3px 12px rgba(0,0,0,.35);word-break:keep-all;overflow-wrap:anywhere;pointer-events:none}

/* 보물찾기: 「찾기」 단추(화면 아래 가운데, 주황)와 내 진행(오른쪽 위, 전시 카드 위) */
#btnFind{position:absolute;left:50%;bottom:calc(var(--cuebar-h,0px) + 132px);transform:translateX(-50%);z-index:32;font:inherit;font-size:22px;font-weight:900;color:#121417;background:#ff7210;border:3px solid #121417;border-radius:999px;padding:12px 34px;cursor:pointer;box-shadow:0 4px 16px rgba(18,20,23,.3)}
body.chat-side.chat-open #btnFind{left:calc((100vw - var(--panel-w) - 16px) / 2)}
#huntHud{position:absolute;top:118px;right:16px;z-index:29;padding:6px 12px;font-size:13px;font-weight:800;color:#121417;pointer-events:none;max-width:340px;box-sizing:border-box}
body.chat-side.chat-open #huntHud{right:calc(var(--panel-w) + 32px)}
#card .line,#hallCard .line,#storeCard .line,#fairCard .line{font-size:13px;font-weight:800;margin:4px 0}
#card .amt,#hallCard .amt,#storeCard .amt,#fairCard .amt{font-size:15px;font-weight:900;color:#ff7210;margin:2px 0 4px}
#card .reg,#hallCard .reg,#storeCard .reg,#fairCard .reg{font-size:12px;font-weight:800;color:#121417;background:#fde6d6;border-radius:6px;padding:4px 8px;margin-top:6px}
@media (max-width:600px),(pointer:coarse){
  #huntHud{top:auto;bottom:calc(var(--cuebar-h,0px) + 196px);right:auto;left:16px;font-size:12px}
  #btnFind{bottom:calc(var(--cuebar-h,0px) + 150px);font-size:20px;padding:10px 28px}
}

/* ---------- 휴대폰 시인성(폭 700px 미만) ---------- */
#btnMyView{display:none}
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  .card{background:rgba(243,244,241,.92)}
  /* 위 HUD: 1줄째 접속·장면·소리·도움, 2줄째 금액 한 줄 */
  #hudTL{left:12px;top:10px;max-width:calc(100vw - 24px - 120px);gap:6px;padding:6px 10px;flex-wrap:nowrap;overflow:hidden}
  #hudTL .chip{display:none}
  #hudTL .badge{font-size:13px}
  #hudTL .chip2{font-size:14px}
  #segName{display:inline;font-size:14px}
  #hudTR{left:12px;right:12px;top:56px;padding:6px 10px;display:flex;align-items:baseline;justify-content:flex-start;gap:8px;text-align:left}
  #hudTotal{font-size:16px}
  #hudSub{display:block;font-size:14px;margin:0;color:#121417}
  #hudTools{position:absolute;right:0;top:-46px;margin:0;gap:6px}
  #hudTools .tbtn{font-size:14px;min-height:40px;padding:4px 12px}
  #btnSoundMore,#btnSound .lbl{display:none} /* 휴대폰: 「🔊」 아이콘만, 세부 설정은 「소리·도움」 안(길게 눌러도 열림) */
  #btnHelp{display:inline-block}
  /* 카드: 본문 15px 이상, 제목 20px 이상 */
  #card,#hallCard,#storeCard,#fairCard{top:104px;max-height:38vh;padding:14px 16px 12px}
  #card h3,#hallCard h3,#storeCard h3,#fairCard h3{font-size:20px}
  #card dl,#hallCard dl,#storeCard dl,#fairCard dl{font-size:15px}
  #card .note,#card .reg,#hallCard .note,#hallCard .reg,#storeCard .note,#storeCard .reg,#fairCard .note,#fairCard .reg{font-size:14px}
  #card .line,#hallCard .line,#storeCard .line,#fairCard .line{font-size:15px}
  #card .amt,#hallCard .amt,#storeCard .amt,#fairCard .amt{font-size:17px}
  #card .cat,#hallCard .cat,#storeCard .cat,#fairCard .cat{font-size:14px}
  #card .cardBtns button,#card a,#hallCard .cardBtns button,#hallCard a,#storeCard .cardBtns button,#storeCard a,#fairCard .cardBtns button,#fairCard a{font-size:15px;min-height:44px}
  #cardClose,#hallCardClose,#storeClose,#fairCardClose{width:40px;height:40px;font-size:20px}
  #intro{top:104px;font-size:15px}
  #helpSheet{top:104px;font-size:15px}
  #helpSheet .tbtn{font-size:15px;min-height:44px;margin-top:6px}
  #adminTools{top:104px}
  #mcBand{top:104px}
  #turnBox .small,#jailBox .small{font-size:15px}
  #jailBox .t{font-size:20px}
  #seatAllBox{font-size:15px}
  #huntHud{font-size:14px}
  #toast .small{font-size:15px}
  /* 조작: 엄지 닿는 아래 양쪽, 56px 이상, 반투명 */
  #joy{background:rgba(243,244,241,.45)}
  #sitBtn{width:60px;height:60px;right:96px;font-size:14px;background:rgba(243,244,241,.6)}
  #jumpBtn{width:68px;height:68px;font-size:14px;background:rgba(243,244,241,.6)}
  #btnFind{min-height:56px}
  #btnMyView{display:block;position:absolute;right:12px;top:150px;z-index:35;min-height:48px;padding:0 16px;border:2px solid #121417;border-radius:24px;background:#ff7210;color:#121417;font:inherit;font-size:16px;font-weight:900;pointer-events:auto}
  #btnMyView.hidden{display:none!important}
  #liveYtSound{top:auto!important;bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 100px)!important;left:auto!important;right:12px!important;transform:none!important;min-height:44px;font-size:14px!important}
  /* 입장 화면: 스크롤 없이 한 화면 */
}
/* 가로 화면: HUD를 한 줄로 펴서 겹치지 않게 */
@media (max-width:1000px) and (orientation:landscape) and (max-height:500px){
  #hudTL{max-width:calc(50vw - 20px)}
  #hudTR{left:auto;right:12px;top:10px;max-width:calc(50vw - 12px)}
  #hudTools{position:static;margin-left:6px}
  #hudSub{font-size:14px}
  #card,#intro,#helpSheet,#adminTools,#hallCard,#storeCard,#fairCard{top:64px}
  #mcBand{top:64px}
  #btnMyView{top:64px}
}

/* 광장 안 「내 캐릭터」 겹창: 가운데 카드, 길면 안에서 스크롤 */
#lookSheet{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:80;width:min(420px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;padding:14px 16px 12px;box-sizing:border-box;pointer-events:auto}
#lookSheet .lookHead{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
#lookSheet .lookHead b{font-size:17px;font-weight:900}
#lookSheet .lookRow{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
#lookSheet .lookRow .tbtn{min-height:40px;padding:6px 16px;font-size:15px}
#lookSheet .lookRow .pri{background:#ff7210;color:#fff;border-color:#ff7210}
#lookSheet .pc-foot .pc-btn.pri{display:none} /* 겹창 안에서는 꾸미기 창 자체의 「완료」(접기)를 숨기고 아래 「완료」(적용) 하나만 */

/* ---------- 소리(sound.js): 「🔊 소리」 주 토글, 도움말 시트의 세부 설정, 소리 잠금 안내 ---------- */
#btnSound{display:inline-flex;align-items:center;gap:4px}
#btnSound .ico{font-size:14px;line-height:1}
#btnSound.off{background:#e3e5e8;color:#545a61;border-color:rgba(18,20,23,.24)}
#btnSoundMore{padding:5px 7px}
#helpSheet{top:124px;right:auto;width:min(620px,calc(100vw - 32px));box-sizing:border-box;z-index:36} /* 데스크톱: 오른쪽 위 「🔊 소리」·왼쪽 위 키 안내를 덮지 않게 그 아래 왼쪽, 「내 시점으로」 단추보다 위 */
#sndSet{margin:0 0 10px;padding:0 0 10px;border-bottom:1px solid rgba(18,20,23,.12)}
#sndSet .sndHead{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
#sndSet .sndHead b{font-size:15px;font-weight:900}
#sndSet .sndNote{font-size:12px;color:#6b7078;font-weight:700}
#sndSet .sndRow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
#sndSet .tbtn:not(.on){background:#fff;color:#545a61}
#sndSet.mute .sndRow+.sndRow{opacity:.45} /* 전체를 끈 동안 세부 단추는 흐리게(값은 그대로 기억) */
.sndVol{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.sndVol input{width:110px;vertical-align:middle}
#soundHint{position:fixed;left:50%;bottom:24vh;transform:translateX(-50%);z-index:30;display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 26px;border-radius:999px;background:#121417;color:#f3f4f1;box-shadow:0 6px 24px rgba(18,20,23,.35);pointer-events:auto;cursor:pointer;animation:sndPulse 1.6s ease-in-out infinite;max-width:calc(100vw - 32px);box-sizing:border-box;text-align:center;-webkit-user-select:none;user-select:none}
#soundHint b{font-size:20px;font-weight:900;white-space:nowrap}
#soundHint small{font-size:12px;font-weight:700;color:#c9cdd1}
body.chat-side.chat-open #soundHint{left:calc(50% - var(--panel-w) / 2)}
@keyframes sndPulse{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.05)}}
@media (prefers-reduced-motion:reduce){#soundHint{animation:none}}
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  #btnSound{justify-content:center;min-width:44px}
  #btnSound .ico{font-size:18px}
  #soundHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 150px + env(safe-area-inset-bottom))} /* 조이스틱(아래 14~126px)·점프 단추 위, 채팅 서랍 위 */
  #sndSet .tbtn{font-size:15px;min-height:44px;margin-top:0}
  #helpSheet{top:104px;left:16px;right:16px;width:auto}
}
@media (max-width:1000px) and (orientation:landscape) and (max-height:500px){#helpSheet{top:64px}}
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px){#helpSheet{top:56px;left:144px;right:96px;width:auto}}

/* ---------- 휴대폰 점검(2026-11-04): 안전 영역·주소창 높이·겹침·터치 목표. 위 규칙을 덮어쓰므로 파일 맨 끝에 둔다 ---------- */
:root{
  --sat:env(safe-area-inset-top,0px);--sar:env(safe-area-inset-right,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);
  --vh:100vh;--hud-b:calc(102px + var(--sat));
  /* 아래 조작(조이스틱·앉기·점프)의 바닥. 서랍 높이에 안전 영역이 이미 들어 있다 */
  --ctl-b:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 14px);
}
@supports (height:100dvh){:root{--vh:100dvh}}
html,body{overscroll-behavior:none}
body{position:fixed;inset:0;width:100%;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
img,canvas{-webkit-user-drag:none}
button,a,label,input,select,summary{touch-action:manipulation}
.tbtn{white-space:nowrap}
/* left:50% 가운데 정렬은 내용 폭이 화면 절반으로 눌린다(글이 세로로 길어짐). max-content로 풀고 각자의 max-width로 막는다 */
#mcBand,#toast,#connBand,#adminToast,#seatAllBox,#jailBox{width:max-content}
#jailBox{max-width:calc(100% - 24px)}
#toast .big{white-space:normal}
#card,#hallCard,#storeCard,#fairCard{max-height:calc(var(--vh) - 128px - 96px)}
#fatal{word-break:keep-all}
/* 「🔊」: 주황 칸에 회색 아이콘이 어울리지 않아 흰 단추로 맞춘다(끄면 회색) */
#btnSound.on{background:#fff;color:#121417;border-color:rgba(18,20,23,.16)}
#hudExtra{display:contents}
.sampleAlt,.tlong{display:inline}
.sampleAlt{display:none;margin-right:6px}
#sndSet .sndHead .sheetClose{margin-left:auto}
/* 스크립트가 다 뜨기 전: 입장 단추는 「불러오는 중」, 캐릭터 칸은 자리를 잡아 화면이 뛰지 않게 */
body:not(.booted) #entryGo{pointer-events:none;background:#b9bcc0;color:transparent;position:relative}
body:not(.booted) #entryGo::after{content:'화면을 불러오는 중입니다';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#121417;font-size:15px}
#lookSheet{max-height:calc(var(--vh) - 24px - var(--sat) - var(--sab));overscroll-behavior:contain;box-shadow:0 0 0 100vmax rgba(18,20,23,.42),0 8px 40px rgba(18,20,23,.3)}
#lookSheet .lookRow{position:sticky;bottom:-12px;margin:10px -16px -12px;padding:10px 16px 12px;background:rgba(243,244,241,.96)}
#helpSheet,#adminTools,#card,#hallCard,#storeCard,#fairCard{overscroll-behavior:contain}

/* 휘두르기 단추: 데스크톱은 숨김(키로 휘두른다) */
#swingBtn{display:none;position:absolute;width:60px;height:60px;padding:0;border-radius:50%;border:2px solid rgba(18,20,23,.18);background:rgba(243,244,241,.6);font:inherit;font-size:13px;font-weight:800;letter-spacing:-.02em;white-space:nowrap;pointer-events:auto;touch-action:none}
/* 입장 단추는 어느 화면에서든 늘 보이게 입장 창 아래에 붙인다(긴 꾸미기를 펼쳐도) */
/* 키 안내는 몇 초 뒤 접힌다 */
#help{transition:none}
#help.fold>span{display:none}
#help.fold .tbtn{margin-top:0}
/* 터치 기기(태블릿 포함): 조작 위치와 단추 크기 */
@media (max-width:600px),(pointer:coarse){
  #joy,#jumpBtn,#sitBtn{bottom:var(--ctl-b)}
  #joy{left:calc(16px + var(--sal))}
  #huntHud{top:auto;right:auto;left:calc(16px + var(--sal));bottom:calc(var(--ctl-b) + 120px)}
  #btnFind{bottom:calc(var(--ctl-b) + 176px)}
  #jailBox,#seatAllBox{bottom:calc(var(--ctl-b) + 120px)}
  #adminToast{bottom:calc(var(--ctl-b) + 176px)}
  #soundHint{bottom:calc(var(--ctl-b) + 176px)}
  #hud:has(#jailBox:not(.hidden)) #huntHud,#hud:has(#seatAllBox:not(.hidden)) #huntHud{display:none}
  #jumpBtn{right:calc(16px + var(--sar))}
  #sitBtn{right:calc(96px + var(--sar))}
  #swingBtn{display:block;bottom:var(--ctl-b);right:calc(164px + var(--sar))} /* 앉기 왼쪽 한 줄. 폭 360px 미만은 아래에서 점프 위로 */
  .tbtn{min-height:44px;font-size:14px;padding:4px 12px;border-radius:12px}
  #lookSheet .lookRow .tbtn{min-height:44px}
  #hudTools{align-items:center}
  #btnSound{min-width:44px;justify-content:center}
  .badge,#hudTL .chip2{font-size:13px}
  #helpSheet{max-height:calc(var(--vh) - var(--hud-b) - var(--drawer-h,0px) - 12px);overflow:auto;box-sizing:border-box}
  #helpSheet input[type=range]{height:44px}
  #camSet label{min-height:44px;display:inline-flex;align-items:center;gap:8px}
  #camSet input[type=checkbox]{width:22px;height:22px}
  #cardClose,#hallCardClose,#storeClose,#fairCardClose{width:44px;height:44px;font-size:20px;right:4px;top:4px}
  #card h3,#hallCard h3,#storeCard h3,#fairCard h3{padding-right:36px}
  #hallCard .hmore,#fairCard .hmore{min-height:44px;font-size:15px}
  #hallCard .heasy b,#fairCard .heasy b{font-size:21px}
  #card .cat,#hallCard .cat,#storeCard .cat,#fairCard .cat{margin-right:36px}
  #card .cardBtns button,#card a,#hallCard .cardBtns button,#hallCard a,#storeCard .cardBtns button,#storeCard a,#fairCard .cardBtns button,#fairCard a{min-height:44px}
  #btnSeatView{min-height:44px;margin:6px 0 0 10px;border-radius:12px;padding:4px 14px;font-size:14px}
  #seatAllBox{border-radius:12px}
  #connBand button{min-height:44px;padding:5px 12px;flex:none}
  #connBand{top:calc(10px + var(--sat))}
  #urgentBand{padding-top:calc(12px + var(--sat))}
  #adminTools .tbtn,#adminTools select,#adminTools input,#adminTools .btn{min-height:44px;font-size:16px;box-sizing:border-box}
  #adminTools .tbtn{font-size:14px}
  #adminTools .btn{font:inherit;font-size:14px;font-weight:700;border:1px solid rgba(18,20,23,.16);border-radius:12px;background:#fff;padding:4px 12px}
  #adminTools .script-list button{min-height:44px;font-size:14px}
  #adminTools .r>span{font-size:13px;word-break:keep-all}
  #adminTools h4{font-size:14px}
  .cue{height:48px}
  /* 휴대폰은 움직이는 3D 위 흐림 효과가 프레임을 깎는다. 바탕을 진하게 하고 끈다 */
  .card{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(243,244,241,.94)}
  /* 입장 단추·동의 오류는 긴 꾸미기 창에서도 늘 보인다 */
}

/* 휴대폰 세로·가로 공통 */
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  #hudTL{left:calc(12px + var(--sal));top:calc(8px + var(--sat));min-height:44px;box-sizing:border-box;padding:0 10px;max-width:calc(100vw - 24px - var(--sal) - var(--sar) - 184px);align-items:center}
  #hudTL .badge{font-size:12px;flex:none;padding:2px 6px}
  #hudTL .chip2{font-size:13px;background:none;padding:0;flex:none}
  #segName{flex:1 1 0;min-width:0}
  .tlong{display:none}
  #hudTools{gap:6px;top:-50px}
  #hudTR{left:calc(12px + var(--sal));right:calc(12px + var(--sar));top:calc(58px + var(--sat));align-items:center;min-height:34px;box-sizing:border-box;padding:4px 10px;flex-wrap:nowrap}
  #hudTotal{white-space:nowrap}
  #hudSub{overflow:hidden;text-overflow:ellipsis;font-size:13px;min-width:0}
  #hudTools .tbtn{min-height:44px;font-size:14px;padding:0 12px;box-shadow:0 2px 8px rgba(18,20,23,.14)}
  #hudExtra{display:flex;gap:6px;position:absolute;right:0;top:92px}
  #card,#intro,#helpSheet,#adminTools,#hallCard,#storeCard,#fairCard{top:var(--hud-b);left:calc(12px + var(--sal));right:calc(12px + var(--sar))}
  #card,#hallCard,#storeCard,#fairCard{max-height:calc(var(--vh) - var(--hud-b) - var(--ctl-b) - 120px);min-height:0}
  #helpSheet{width:auto;padding:12px 14px;font-size:14px;line-height:1.6}
  #helpSheet .tbtn{font-size:14px;min-height:44px;margin-top:0;padding:0 10px}
  #sndSet .sndRow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  #sndSet .sndRow .tbtn{font-size:14px;margin:0;overflow:hidden;text-overflow:ellipsis}
  #sndSet .sndVol{grid-column:1/-1;order:3;display:flex;font-size:14px}
  #sndSet .sndVol input{flex:1;min-width:0;width:auto}
  #sndSet .sndHead{align-items:center}
  #sndSet .sndNote{font-size:13px}
  #mcBand{top:var(--hud-b);padding:8px 12px;gap:8px;max-width:calc(100% - 24px);align-items:flex-start}
  #mcBand span{font-size:17px}
  #mcBand b{font-size:13px;padding:3px 7px}
  /* 아래쪽 쌓기: 조이스틱·점프(ctl-b) → 새는 돈 칩·전광판 소리 → 찾기 단추 → 소리 안내 */
  #huntHud{top:auto;right:auto;left:calc(12px + var(--sal));bottom:calc(var(--ctl-b) + 120px);max-width:calc(100vw - 24px - var(--sal) - var(--sar));font-size:13px;word-break:keep-all}
  #btnFind{bottom:calc(var(--ctl-b) + 176px);min-height:52px;font-size:19px;padding:6px 26px}
  #soundHint{bottom:calc(var(--ctl-b) + 176px);padding:10px 22px}
  #soundHint b{font-size:18px}
  #hud:has(#btnFind:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 238px)}
  #jailBox,#seatAllBox{bottom:calc(var(--ctl-b) + 120px)}
  #jailBox .big{font-size:36px}
  #jailBox .small{font-size:14px}
  #hud:has(#jailBox:not(.hidden)) #huntHud,#hud:has(#seatAllBox:not(.hidden)) #huntHud,#hud:has(#card:not(.hidden)) #huntHud,#hud:has(#hallCard:not(.hidden)) #huntHud,#hud:has(#storeCard:not(.hidden)) #huntHud,#hud:has(#fairCard:not(.hidden)) #huntHud{display:none}
  #seatAllBox{display:flex;flex-direction:column;align-items:center}
  #btnSeatView{margin:6px 0 0}
  #adminToast{bottom:calc(var(--ctl-b) + 176px)}
  #btnMyView{top:calc(var(--hud-b) + 48px);right:calc(12px + var(--sar))}
  #liveYtSound{bottom:calc(var(--ctl-b) + 74px)!important;right:calc(12px + var(--sar))!important;min-height:44px}
  #adminTools{max-height:calc(var(--vh) * .46)}
  #cueBar{left:calc(12px + var(--sal));right:calc(12px + var(--sar));bottom:calc(var(--drawer-h,0px) + 6px);max-width:none}
  /* 입장 화면 */
}
/* 폭 360px 미만: 앉기 왼쪽에 자리가 없어 휘두르기를 점프 위로 올리고, 그 높이만큼 칩·찾기·안내를 올린다 */
@media (max-width:359px){
  #swingBtn{bottom:calc(var(--ctl-b) + 72px);right:calc(16px + var(--sar));width:52px;height:52px;font-size:12px}
  #huntHud,#jailBox,#seatAllBox{bottom:calc(var(--ctl-b) + 132px)}
  #btnFind,#soundHint,#adminToast{bottom:calc(var(--ctl-b) + 188px)}
  #hud:has(#btnFind:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 250px)}
  #liveYtSound{bottom:calc(var(--ctl-b) + 66px)!important;right:calc(76px + var(--sar))!important;padding:6px 8px!important;font-size:13px!important}
}
/* 폭이 좁으면 위 칸에 「접속 N명」을 남기고 「예시」는 금액 줄로 옮긴다 */
@media (max-width:374px){
  #hudTL .badge{display:none}
  .sampleAlt{display:inline-block;font-size:12px;padding:1px 5px;vertical-align:1px}
  #hudTL{max-width:calc(100vw - 24px - 172px)}
  #hudTools .tbtn{padding:0 10px}
  #hudTotal{font-size:15px}
  #hudSub{font-size:12.5px}
}
/* 넉넉한 폭이면 단추 글자를 다 쓴다 */
@media (min-width:600px) and (max-height:500px),(min-width:430px) and (max-width:700px){
  .tlong{display:inline}
}
@media (orientation:portrait) and (max-width:700px){#segName{display:none}}
@media (min-width:430px) and (max-width:700px) and (orientation:portrait){
  #hudTL{max-width:calc(100vw - 24px - 246px)}
}

/* 휴대폰 가로: 조이스틱·점프는 화면 아래 양끝, 채팅은 그 사이. 위 칸 한 줄 */
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px),(max-width:1000px) and (orientation:landscape) and (max-height:500px){
  :root{--hud-b:calc(58px + var(--sat));--ctl-b:calc(10px + var(--sab));--chat-l:calc(136px + var(--sal));--chat-r:calc(170px + var(--sar))}
  #hudTL{top:calc(8px + var(--sat));max-width:none}
  #hudTR{left:auto;right:calc(12px + var(--sar));top:calc(8px + var(--sat));min-height:44px;padding:0 0 0 10px;max-width:none;align-items:center;background:none;box-shadow:none}
  #hudTotal,#hudSub{background:rgba(243,244,241,.94);border-radius:10px;padding:3px 8px}
  #hudTools{position:static;margin:0 0 0 2px}
  #hudExtra{top:52px;right:0}
  #hudSub{display:none}
  #swingBtn{bottom:calc(var(--ctl-b) + 74px);right:calc(16px + var(--sar));width:60px;height:60px;font-size:13px}
  #card,#intro,#helpSheet,#adminTools,#hallCard,#storeCard,#fairCard{left:var(--chat-l);right:var(--chat-r);width:auto}
  #helpSheet{top:var(--hud-b);left:var(--chat-l);right:var(--chat-r);max-height:calc(var(--vh) - var(--hud-b) - var(--drawer-h,0px) - 8px);z-index:36}
  #card,#hallCard,#storeCard,#fairCard{max-height:calc(var(--vh) - var(--hud-b) - var(--drawer-h,0px) - 8px)}
  #adminTools{max-height:calc(var(--vh) - var(--hud-b) - var(--drawer-h,0px) - var(--cuebar-h,0px) - 8px)}
  #mcBand{top:var(--hud-b)}
  #mcBand span{font-size:16px}
  #toast{top:24%}
  #turnBox{top:var(--hud-b);padding:10px 14px 12px}
  #turnBox .big{font-size:20px}
  #turnBox .go{margin-top:8px}
  /* 새는 돈 칩은 왼쪽 위 칸 아래, 찾기·소리 안내·감옥·착석·토스트는 채팅 바로 위 가운데 */
  #huntHud{top:var(--hud-b);bottom:auto;left:calc(12px + var(--sal));max-width:min(320px,calc(50vw - 24px))}
  #btnFind,#soundHint,#jailBox,#seatAllBox,#adminToast{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 8px)}
  #hud:has(#btnFind:not(.hidden))~#soundHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 68px)}
  #seatAllBox,#jailBox{max-width:calc(100vw - 280px - var(--sal) - var(--sar))} /* 조이스틱과 앉기·점프 사이에 맞춘다 */
  #jailBox{padding:6px 14px 8px}
  #jailBox .t{font-size:15px}
  #jailBox .big{font-size:26px}
  #jailBox .small{font-size:13px}
  #soundHint small{display:none}
  #btnMyView{top:calc(var(--hud-b) + 48px)}
  #liveYtSound{bottom:calc(var(--ctl-b) + 142px)!important;right:calc(12px + var(--sar))!important;padding:8px 14px!important;font-size:14px!important}
  #cueBar{left:var(--chat-l);right:var(--chat-r);bottom:calc(var(--drawer-h,0px) + 4px)}
  #cueBtns{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
  .cue{height:44px;padding:0 4px;font-size:12px;gap:3px}
  .cue b{width:18px;height:18px}
  /* 입장 화면: 왼쪽 입력·동의·입장, 오른쪽 캐릭터(안에서 스크롤) */
  /* 꾸미기 겹창: 왼쪽 미리보기, 오른쪽 편집기 */
  #lookSheet{width:min(720px,calc(100vw - 24px - var(--sal) - var(--sar)));padding:8px 12px 8px}
  #lookSheet .lookHead{display:none}
  #lookSheet .pc{display:flex;gap:10px;align-items:flex-start}
  #lookSheet .pc-top{flex:none;width:150px;flex-direction:column;position:sticky;top:0}
  #lookSheet .pc-stage{width:150px;height:150px}
  #lookSheet .pc-ed{flex:1;min-width:0;margin-top:0}
  #lookSheet .lookRow{bottom:-8px;margin:8px -12px -8px;padding:6px 12px 8px}
}
/* 짧은 가로 화면(주소창 있는 아이폰 SE 등): 감옥 안내는 한 줄 더 줄인다 */
@media (max-height:340px){
  #jailBox .small{display:none}
}
/* 사회자 패널 */
#adminTools .admHeadBtns{display:flex;gap:6px;align-items:center;margin-left:auto}
#admOpsLink{text-decoration:none;display:inline-flex;align-items:center;box-sizing:border-box;background:#121417;color:#f3f4f1;border-color:#121417}
#adminTools .admStat{justify-content:space-between;font-weight:800}
#admLink{color:#1f7a70;font-weight:800}
#admLink.bad{color:#c8553d}
#adminTools .admNote{font-size:12px;font-weight:600;color:#545a61;margin-top:4px;line-height:1.4;word-break:keep-all}
#admEmerg{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 2px}
#admEmerg .tbtn{flex:1 1 auto;border-color:#c8553d;color:#a33a24;background:#fff}
#admEmerg .tbtn.off{background:#c8553d;color:#fff}
#admEmerg .tbtn:disabled{border-color:rgba(18,20,23,.16);color:#545a61}
#admNext{margin-left:auto;background:#ff7210;color:#121417;border-color:#ff7210}
#admNext:disabled{background:#e3e5e8;color:#545a61;border-color:rgba(18,20,23,.16);opacity:1}
/* 데스크톱: 자막 띠가 사회자 패널을 덮지 않게 패널과 채팅 사이 가운데로 */
@media (min-width:701px){
  body.chat-side.chat-open:has(#adminTools:not(.hidden)) #mcBand{left:calc(var(--adm-r,316px) + (100vw - var(--adm-r,316px) - var(--panel-w) - 16px) / 2);max-width:calc(100vw - var(--adm-r,316px) - var(--panel-w) - 48px)}
  body.chat-side:not(.chat-open):has(#adminTools:not(.hidden)) #mcBand{left:calc(var(--adm-r,316px) + (100vw - var(--adm-r,316px)) / 2);max-width:calc(100vw - var(--adm-r,316px) - 32px)}
}
/* 휴대폰: 패널이 3D를 덜 가리게 설명 줄을 줄인다 */
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  #adminTools .admNote:not(#admScriptNote){display:none}
}
/* 운영자 패널: 접기 단추는 늘 보이게, 환영 문구·칩이 패널을 덮지 않게 */
#adminTools h4{position:sticky;top:-10px;background:rgba(243,244,241,.98);z-index:2;padding:4px 0;margin-top:-4px}
#adminTools:not(.hidden)~#intro{display:none}
#hud:has(#admBody:not(.hidden)):has(#adminTools:not(.hidden)) #huntHud{display:none}
/* 입장 화면 뒤로 빈 HUD(접속 0명, 조이스틱)가 비치지 않게. 3D를 못 띄웠다는 안내는 입장 화면 위에 */
body:has(#entry:not(.hidden)) #hud{visibility:hidden}
#fatal{z-index:60}
/* 데스크톱 작은 채팅 창 위로 카드가 내려오지 않게 */
body.chat-mini #card,body.chat-mini #hallCard,body.chat-mini #storeCard,body.chat-mini #fairCard{max-height:calc(var(--vh) - 160px - 270px)}
/* 조작 단추: 밝은 회색 반투명은 베이지 바닥에서 꺼진 단추처럼 보인다. 어두운 유리에 흰 글자 */
@media (max-width:600px),(pointer:coarse){
  #joy,#sitBtn,#jumpBtn,#swingBtn{background:rgba(18,20,23,.34);border-color:rgba(255,255,255,.6);color:#fff;text-shadow:0 1px 2px rgba(18,20,23,.5)}
}
/* 휴대폰 위 칸은 불투명(뒤 게이트 간판 글자가 비치지 않게) */
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  #hudTL,#hudTotal{background-color:#f3f4f1}
}
@media (max-width:700px) and (orientation:portrait){
  #hudTR{background:#f3f4f1}
}
/* 키보드가 떠 있는 동안(chat.js가 표시): 키보드에 가려질 조작은 숨긴다 */
body.kb-open #joy,body.kb-open #jumpBtn,body.kb-open #sitBtn,body.kb-open #swingBtn,body.kb-open #huntHud,body.kb-open #btnFind,body.kb-open #soundHint,body.kb-open #cueBar,body.kb-open #jailBox,body.kb-open #seatAllBox{visibility:hidden}
/* 터치 기기에서 채팅 입력 중(chat.js body.chat-typing, kb-open도 같이 켜짐): 키보드를 못 알아보는 브라우저에서도 조작·큰 단추를 숨긴다.
   가로 규칙의 「서랍을 펼쳐도 조이스틱 보임」(chat.css)보다 앞서야 해서 !important */
body.chat-typing #joy,body.chat-typing #jumpBtn,body.chat-typing #sitBtn,body.chat-typing #swingBtn,body.chat-typing #flyUp,body.chat-typing #flyDown,body.chat-typing #btnFind,body.chat-typing #findHint,body.chat-typing #btnTrain,body.chat-typing #btnQuiz,body.chat-typing #btnGoat,body.chat-typing #btnFood,body.chat-typing #foodSheet,body.chat-typing #btnMyView,body.chat-typing #swBtn,body.chat-typing #swPick,body.chat-typing #soundHint,body.chat-typing #cueBar,body.chat-typing .pedal{visibility:hidden!important}
#admScript .scriptSec{font-size:12px;font-weight:800;opacity:.7;margin:6px 0 2px}
/* 코끼리 열차 큰 단추(train.js): 정류장 가까이 가면 화면 아래 가운데. 찾기 단추가 같이 뜨면 그 위로 */
#btnTrain{position:absolute;left:50%;bottom:calc(var(--cuebar-h,0px) + 132px);transform:translateX(-50%);z-index:32;display:flex;align-items:center;gap:10px;white-space:nowrap;font:inherit;font-size:22px;font-weight:900;color:#121417;background:#ff7210;border:3px solid #121417;border-radius:999px;padding:12px 30px;cursor:pointer;pointer-events:auto;box-shadow:0 4px 16px rgba(18,20,23,.3)}
#btnTrain.hidden{display:none}
#btnTrain.wait{background:#121417;color:#f3f4f1;border-color:#ff7210}
#btnTrain kbd{font:inherit;font-size:15px;font-weight:900;color:#121417;background:#f3f4f1;border-radius:6px;padding:1px 8px}
body.chat-side.chat-open #btnTrain{left:calc((100vw - var(--panel-w) - 16px) / 2)}
#hud:has(#btnFind:not(.hidden)) #btnTrain{bottom:calc(var(--cuebar-h,0px) + 200px)}
#hud:has(#btnTrain:not(.hidden))~#soundHint{bottom:calc(24vh + 72px)}
@media (max-width:600px),(pointer:coarse){
  #btnTrain{bottom:calc(var(--ctl-b) + 176px);min-height:56px;font-size:20px;padding:6px 24px}
  #hud:has(#btnFind:not(.hidden)) #btnTrain{bottom:calc(var(--ctl-b) + 238px)}
  #hud:has(#btnTrain:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 238px)}
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 300px)}
}
/* 가로 휴대폰: 채팅 칸이 조이스틱과 조작 단추 사이 아래를 차지하니 찾기 단추처럼 그 바로 위에 쌓는다 */
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px),(max-width:1000px) and (orientation:landscape) and (max-height:500px){
  #btnTrain{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 8px);min-height:48px;font-size:16px;padding:4px 16px}
  #hud:has(#btnFind:not(.hidden)) #btnTrain{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 68px)}
  #hud:has(#btnTrain:not(.hidden))~#soundHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 64px)}
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden))~#soundHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 124px)}
}
/* 열차·찾기 단추가 같이 뜨면 가로 화면은 자리가 모자라 소리 안내를 잠시 접는다(어느 단추를 눌러도 소리가 풀린다). 높이 340px 이하는 새는 돈 칩도 접는다 */
@media (orientation:landscape) and (max-height:500px){
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden))~#soundHint{display:none}
}
@media (orientation:landscape) and (max-height:340px){
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden)) #huntHud{display:none}
}
/* 폭 359px 이하 세로: 찾기 단추가 ctl-b + 188px에 있으니 열차 단추와 소리 안내도 그 줄에 맞춰 쌓는다. 셋이 같이 뜨면 위 칸에 닿으니 소리 안내는 접는다 */
@media (max-width:359px){
  #btnTrain{bottom:calc(var(--ctl-b) + 188px)}
  #hud:has(#btnFind:not(.hidden)) #btnTrain{bottom:calc(var(--ctl-b) + 250px)}
  #hud:has(#btnTrain:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 256px)}
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden))~#soundHint{display:none}
}
/* 태블릿: 연출 보기·트럭 단추는 위 카드 아래 줄로(한 줄에 두면 왼쪽 접속 칩을 덮는다). 소리 안내는 찾기 단추 위로 */
@media (pointer:coarse) and (min-width:701px) and (min-height:501px){
  #hudExtra{display:flex;gap:6px;position:absolute;right:0;top:calc(100% + 6px)}
  #hud:has(#btnFind:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 238px)}
}

/* ---------- 입장 화면(2026-11-06 새 디자인): 현수막 머리, 큰 캐릭터(시상대 받침), 이름·동의·입장. 색은 남색 #2d3e63·주황 #ff7210·금색 ---------- */
#entry{--e-navy:#2d3e63;--e-gold:#e0b44a;--e-orange:#ff7210;--e-ink:#121417;--e-paper:#f6f4ee;position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;-webkit-user-select:text;user-select:text;background:radial-gradient(ellipse at 50% 30%,rgba(20,28,48,.45),rgba(12,16,28,.78));-webkit-backdrop-filter:blur(4px) saturate(.8);backdrop-filter:blur(4px) saturate(.8)}
#entry .box{margin:auto;width:min(1040px,100%);background:var(--e-paper);color:var(--e-ink);border-radius:20px;box-shadow:0 18px 60px rgba(8,12,24,.5);overflow:hidden;box-sizing:border-box}
#entry .eHead{position:relative;background:var(--e-navy);color:#fff}
#entry .eBanner{display:block;width:100%;height:auto;aspect-ratio:1280/221;object-fit:cover;object-position:50% 30%;max-height:190px}
#entry .eDo{margin-top:18px;padding:14px 16px;border-radius:14px;background:#fff;border:1px solid #e3e1da}
#entry .eDoTitle{display:block;font-size:14px;font-weight:900;color:var(--e-navy);margin-bottom:8px}
#entry .eDo ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
#entry .eDo li{display:flex;align-items:center;gap:12px;font-size:13px;font-weight:600;color:#5d636b;line-height:1.4;word-break:keep-all}
#entry .eDo li b{display:block;font-size:15px;font-weight:800;color:var(--e-ink)}
#entry .eDoIco{flex:none;width:40px;height:40px;border-radius:12px;background:#eef1f7;border:2px solid var(--e-gold);display:flex;align-items:center;justify-content:center;font-size:20px}
#entry .eTitle{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:2px 16px;padding:12px 24px 14px;border-top:3px solid var(--e-gold)}
#entry h1{margin:0;font-size:24px;font-weight:900;letter-spacing:-.01em;line-height:1.25;word-break:keep-all}
#entry .eWhen{margin:0;font-size:16px;font-weight:800;color:var(--e-gold);white-space:nowrap}
#entry .eMain{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0}
#entry .eStageCol{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:18px 20px 20px;background:linear-gradient(#e6edf6,#f1ece0);min-width:0}
#entry .eStage{position:relative;height:max(45vh,300px);max-height:520px;min-height:260px;border-radius:16px;overflow:hidden;background:radial-gradient(ellipse at 50% 85%,rgba(45,62,99,.22),rgba(45,62,99,0) 60%)}
#entry .eTag{position:absolute;left:50%;top:6%;transform:translate(-50%,-100%);z-index:1;display:flex;align-items:center;gap:6px;max-width:80%;padding:6px 14px;border-radius:12px;background:#26364a;color:#fff;font-size:17px;font-weight:800;box-shadow:0 3px 10px rgba(18,20,23,.25);pointer-events:none;white-space:nowrap}
#entry .eTag span{overflow:hidden;text-overflow:ellipsis}
#entry .eTag.empty span{opacity:.6}
#entry .eTag i{font-style:normal;font-size:13px;font-weight:800;color:#1f5f58;background:#fff;border-radius:7px;padding:2px 7px}
#entry .eStageBtns{display:flex;gap:10px}
#entry .eStageBtns .eBtn{flex:1}
/* 단추 위계: 주 단추 주황, 보조는 남색 테두리 */
#entry .eBtn{font:inherit;min-height:48px;padding:8px 14px;border-radius:12px;font-size:16px;font-weight:800;cursor:pointer;white-space:nowrap}
#entry .eBtn.sub{background:#fff;color:var(--e-navy);border:2px solid var(--e-navy)}
#entry .eBtn.sub[aria-expanded=true]{background:var(--e-navy);color:#fff}
#entry .eBtn.pri{background:var(--e-orange);color:var(--e-ink);border:2px solid var(--e-orange)}
#entry .eBtn.small{min-height:44px;font-size:15px;padding:4px 12px}
#entry .eBtn:focus-visible,#entry .go:focus-visible,#entry .seg .gate:focus-visible{outline:3px solid var(--e-orange);outline-offset:2px}
#entry .eSide{display:flex;flex-direction:column;min-width:0;padding:18px 24px 20px}
#entry .eFields{flex:1 1 auto}
#entry .eFields.swapped{display:none}
/* 입구 고르기: 분할 단추 */
#entry .seg{display:flex;padding:4px;gap:4px;border-radius:14px;background:#e3e1da;margin:0 0 14px}
#entry .seg .gate{flex:1;min-width:0;min-height:44px;font:inherit;font-size:16px;font-weight:800;border:0;border-radius:10px;background:transparent;color:#545a61;cursor:pointer}
#entry .seg .gate.on{background:#fff;color:var(--e-navy);box-shadow:0 1px 4px rgba(18,20,23,.18)}
#entry label.fld{display:block;font-size:14px;font-weight:800;color:#3a3f48;margin:0 0 6px}
#entry input[type=text],#entry input[type=password]{width:100%;box-sizing:border-box;min-height:52px;font:inherit;font-size:17px;padding:10px 14px;border:2px solid #cfd2d6;border-radius:12px;background:#fff;color:var(--e-ink)}
#entry input[type=text]:focus,#entry input[type=password]:focus{outline:none;border-color:var(--e-orange);box-shadow:0 0 0 3px rgba(255,114,16,.2)}
#entry .hint{font-size:13px;font-weight:600;color:#5d636b;margin:8px 0 0;line-height:1.5;word-break:keep-all}
#entry details.more{margin-top:4px}
#entry details.more summary{display:inline-flex;align-items:center;min-height:36px;font-size:13px;font-weight:800;color:var(--e-navy);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
#entry details.more .hint{margin-top:2px;padding:8px 10px;border-radius:10px;background:#eceae3}
#entry .saved{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:10px 12px;border-radius:12px;background:#e3f1ef;font-size:14px;font-weight:800;color:#1f5f58;word-break:keep-all}
#entry .link{font:inherit;font-size:14px;font-weight:800;color:#c8553d;background:none;border:0;padding:4px 2px;min-height:44px;cursor:pointer;text-decoration:underline;flex:none}
#entry #toGuest{display:block;margin:6px 0 0;color:var(--e-navy)}
#entry .toPart{display:block;width:100%;min-height:44px;margin:0 0 10px;padding:8px 12px;box-sizing:border-box;font:inherit;font-size:14px;font-weight:800;line-height:1.35;text-align:left;word-break:keep-all;color:var(--e-navy);background:#fff3e6;border:2px solid var(--e-orange);border-radius:10px;cursor:pointer}
#entry .toPart:focus-visible{outline:3px solid var(--e-orange);outline-offset:2px}
#entry #admWrap{margin-top:14px}
#entry #admTokClear{margin-top:6px}
/* 꾸미기 칸 */
#entry .eSheet{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
#entry .eSheet[hidden]{display:none}
#entry .eSheetHead{display:flex;align-items:center;gap:8px;margin:0 0 10px}
#entry .eSheetHead b{flex:1;font-size:17px;font-weight:900;color:var(--e-navy)}
#entry #avatarSlot{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;max-height:min(52vh,430px)}
/* 아래 묶음: 동의 한 줄 + 입장 */
#entry .entryFoot{margin-top:16px;padding-top:14px;border-top:1px solid #dedbd2}
#entry .agreeRow{display:flex;align-items:flex-start;flex-wrap:wrap;gap:0 10px}
#entry .agree{flex:1 1 220px;display:flex;gap:10px;align-items:center;min-height:44px;font-size:14px;font-weight:700;line-height:1.4;word-break:keep-all;cursor:pointer}
#entry .agree input{width:22px;height:22px;margin:0;flex:none;accent-color:var(--e-orange)}
#entry .agreeRow details.more{flex:0 0 auto;margin:4px 0 0}
#entry .agreeRow details[open]{flex:1 1 100%}
#entry .go{width:100%;min-height:56px;margin-top:10px;font:inherit;font-size:19px;font-weight:900;color:var(--e-ink);background:var(--e-orange);border:0;border-radius:14px;padding:12px;cursor:pointer;box-shadow:0 4px 0 #c95608}
#entry .go:active{transform:translateY(2px);box-shadow:0 2px 0 #c95608}
#entry .go:disabled{opacity:.55;cursor:default}
#entry .err{margin-top:8px;font-size:14px;font-weight:800;color:#c8553d;line-height:1.45;word-break:keep-all}
#entry .err:empty{display:none}
/* 안내 상자(차단·내보냄 등) */
#entry #entryMsgBox{width:min(440px,100%);padding:22px}
#entry .msg{font-size:15px;font-weight:700;line-height:1.6;word-break:keep-all;margin:6px 0 4px}
#entry .row2{display:flex;gap:8px;margin-top:14px}
#entry .row2 button{flex:1}
#entry .sub{background:var(--e-navy);color:#fff}
#entry #entryMsgBox h1{color:var(--e-navy);margin-bottom:6px}

/* 휴대폰 세로: 한 화면에 현수막·캐릭터·이름·입장. 꾸미기는 아래에서 올라오는 시트 */
@media (max-width:700px) and (orientation:portrait){
  #entry{padding:0;align-items:stretch;-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(12,16,28,.82)}
  #entry .box{border-radius:0;min-height:var(--vh);display:flex;flex-direction:column;box-shadow:none}
  #entry .eBanner{max-height:none;height:calc(var(--vh) * .075 + 18px);padding-top:var(--sat)}
  #entry .eTitle{padding:8px 16px 9px;gap:0 10px}
  #entry h1{font-size:18px}
  #entry .eWhen{font-size:14px}
  #entry .eMain{display:flex;flex-direction:column;flex:1 1 auto}
  #entry .eStageCol{padding:10px 16px 10px;gap:8px}
  #entry .eStage{height:calc(var(--vh) * .34);min-height:180px;max-height:none}
  #entry .eTag{font-size:15px;padding:5px 12px}
  #entry .eBtn{min-height:44px;font-size:15px}
  #entry .eSide{padding:12px 16px calc(12px + var(--sab));flex:1 1 auto}
  #entry .seg{margin-bottom:10px}
  #entry input[type=text],#entry input[type=password]{min-height:48px}
  #entry .hint{font-size:12.5px;margin-top:6px}
  #entry .entryFoot{margin-top:auto;padding-top:10px}
  #entry .agree{font-size:13px}
  #entry .go{min-height:52px;margin-top:8px}
  #entry .eFields.swapped{display:block}
  #entry .eDo{display:none}
  #entry .eSheet{position:fixed;left:0;right:0;bottom:0;z-index:60;max-height:60vh;max-height:calc(var(--vh) * .6);padding:12px 16px calc(12px + var(--sab));background:#fff;border-radius:18px 18px 0 0;box-shadow:0 -10px 40px rgba(8,12,24,.4);animation:eSheetUp .22s ease-out}
  #entry #avatarSlot{max-height:none}
  /* 시트가 열리면 캐릭터가 시트 위에 보이게 위 칸을 줄인다 */
  #entry.sheetOpen .eHead{display:none}
  #entry.sheetOpen .eStageBtns{display:none}
  #entry.sheetOpen .eStage{height:calc(var(--vh) * .36)}
}
@keyframes eSheetUp{from{transform:translateY(40%);opacity:.6}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){#entry .eSheet{animation:none}}
/* 아주 짧은 세로 화면(아이폰 SE 등): 현수막을 줄이고 캐릭터를 조금 작게 */
@media (max-width:700px) and (orientation:portrait) and (max-height:700px){
  #entry .eBanner{display:none}
  #entry .eStage{height:calc(var(--vh) * .3)}
  #entry .hint{display:none}
}
/* 가로 화면(휴대폰): 현수막은 띠로, 캐릭터 왼쪽·입력 오른쪽 */
@media (orientation:landscape) and (max-height:500px){
  #entry{padding:calc(6px + var(--sat)) calc(8px + var(--sar)) calc(6px + var(--sab)) calc(8px + var(--sal));align-items:flex-start;-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(12,16,28,.82)}
  #entry .box{border-radius:14px}
  #entry .eBanner{display:none}
  #entry .eTitle{padding:6px 16px 7px}
  #entry h1{font-size:16px}
  #entry .eWhen{font-size:13px}
  #entry .eStageCol{padding:8px 12px;gap:6px}
  #entry .eStage{height:calc(var(--vh) - 150px);min-height:150px}
  #entry .eTag{font-size:14px;padding:4px 10px}
  #entry .eBtn{min-height:44px;font-size:14px;padding:4px 10px}
  #entry .eSide{padding:8px 14px 10px}
  #entry .seg{margin-bottom:8px}
  #entry .seg .gate{min-height:44px;font-size:15px}
  #entry input[type=text],#entry input[type=password]{min-height:44px;padding:6px 12px}
  #entry .hint{display:none}
  #entry details.more summary{min-height:30px}
  #entry .eDo{display:none}
  #entry .entryFoot{margin-top:8px;padding-top:6px}
  #entry .agree{min-height:44px;font-size:13px}
  #entry .go{min-height:46px;margin-top:4px;font-size:17px}
  #entry #avatarSlot{max-height:calc(var(--vh) - 236px)}
}

/* 찾기 단추 단축키 표시(PC)와 찾기 안내 한 줄(#findHint, world.js가 만든다). 위치는 판이 화면 밖일 때의 기본 자리이고, 판을 따라갈 때는 world.js가 인라인으로 옮긴다 */
#btnFind kbd{font:inherit;font-size:15px;font-weight:900;color:#121417;background:#f3f4f1;border-radius:6px;padding:1px 8px;margin-left:8px;vertical-align:2px}
#findHint{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(var(--cuebar-h,0px) + 132px);z-index:31;width:max-content;max-width:calc(100vw - 24px);box-sizing:border-box;padding:6px 14px;font-size:14px;font-weight:800;line-height:1.4;text-align:center;word-break:keep-all;pointer-events:none}
#hud:has(#btnFind:not(.hidden)) #findHint{bottom:calc(var(--cuebar-h,0px) + 200px)}
#hud:has(#btnTrain:not(.hidden)) #findHint{bottom:calc(var(--cuebar-h,0px) + 200px)}
#hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden)) #findHint{bottom:calc(var(--cuebar-h,0px) + 268px)}
body.chat-side.chat-open #findHint{left:calc((100vw - var(--panel-w) - 16px) / 2)}
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  #findHint{bottom:calc(var(--ctl-b) + 176px);font-size:14px}
  #hud:has(#btnFind:not(.hidden)) #findHint,#hud:has(#btnTrain:not(.hidden)) #findHint{bottom:calc(var(--ctl-b) + 240px)}
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden)) #findHint{bottom:calc(var(--ctl-b) + 302px)}
}
@media (max-width:359px){
  #findHint{bottom:calc(var(--ctl-b) + 188px)}
  #hud:has(#btnFind:not(.hidden)) #findHint,#hud:has(#btnTrain:not(.hidden)) #findHint{bottom:calc(var(--ctl-b) + 252px)}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px),(max-width:1000px) and (orientation:landscape) and (max-height:500px){
  #findHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 8px);max-width:calc(100vw - var(--chat-l) - var(--chat-r))}
  #hud:has(#btnFind:not(.hidden)) #findHint,#hud:has(#btnTrain:not(.hidden)) #findHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 68px)}
  #hud:has(#btnTrain:not(.hidden)):has(#btnFind:not(.hidden)) #findHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 124px)}
}
body.kb-open #findHint,body.chat-drawer.drawer-open #findHint{visibility:hidden}

/* 운영 패널(운영자 창): 위는 사회자 칸, 아래는 운영 콘솔 iframe. 넓게 560px · 좁게 360px · 접기 */
#admOps{margin-top:8px}
#admOpsFrame{display:block;width:100%;height:100%;border:0;border-radius:10px;background:#14171a}
#adminTools .tbtn.small{padding:2px 8px;font-size:11px;text-decoration:none}
#adminTools .admSize{display:inline-flex;gap:2px;padding:2px;border-radius:9px;background:rgba(18,20,23,.08)}
#adminTools .admSize .tbtn{border:0;background:transparent}
#adminTools .admSize .tbtn.on{background:#2d3e63;color:#fff}
@media (min-width:701px){
  #adminTools.wide{width:480px}
  #adminTools.narrowOps{width:360px}
  #adminTools.withOps{bottom:16px;display:flex;flex-direction:column;overflow:hidden}
  #adminTools.withOps #admBody{flex:none;max-height:24%;overflow:auto;overscroll-behavior:contain}
  #adminTools.withOps #admOps{flex:1 1 auto;min-height:0}
  /* 운영 칸이 열리면 왼쪽 위 키 안내는 접힌 채로 둔다(패널과 겹치지 않게) */
  body:has(#adminTools.withOps:not(.hidden)) #help>span{display:none}
}
/* 휴대폰: 「운영 패널」 단추로 전체 화면 시트 */
@media (max-width:700px),(pointer:coarse) and (max-height:500px){
  #adminTools.sheet{position:fixed;left:0!important;right:0!important;top:0!important;bottom:0;width:auto;max-height:none!important;z-index:85;border-radius:0;display:flex;flex-direction:column;padding:calc(8px + var(--sat)) calc(10px + var(--sar)) calc(8px + var(--sab)) calc(10px + var(--sal));overflow:hidden}
  #adminTools.sheet #admBody{flex:none;max-height:26%;overflow:auto}
  #adminTools.sheet{background:#f3f4f1}
  /* 시트가 떠 있는 동안 HUD 층을 채팅·소리 안내 위로 올리고 겹치는 것은 숨긴다 */
  body:has(#adminTools.sheet:not(.hidden)) #hud{z-index:60}
  body:has(#adminTools.sheet:not(.hidden)) #chatPanel,body:has(#adminTools.sheet:not(.hidden)) #soundHint,body:has(#adminTools.sheet:not(.hidden)) #btnMyView,body:has(#adminTools.sheet:not(.hidden)) #liveYtSound{visibility:hidden}
  #adminTools.sheet #admOps{flex:1 1 auto;min-height:0}
}

/* 진행표 기념 촬영: 화면 글자를 잠시 숨기고 셔터 번쩍 */
body.photoMode > *:not(#scene):not(#liveYt):not(#photoFlash){visibility:hidden !important}
#photoFlash{position:fixed;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:100001}
#photoFlash.on{animation:photoFlash .5s ease-out}
@keyframes photoFlash{0%{opacity:.95}100%{opacity:0}}
/* 진행표 모드(운영자 창): 사회자 칸은 한 줄(사회자 켜기·끄기 + 비상 셋). 대본 칸은 진행표의 「읽기」와 겹쳐 숨긴다 */
#adminTools.rsMode #admBody{display:none!important}
#adminTools.rsMode #admEmerg{flex-wrap:nowrap;margin:4px 0 2px}
#adminTools.rsMode #admEmerg .tbtn{flex:1 1 0;min-width:0;padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#adminTools.rsMode #admMcMini{flex:1.3 1 0;border-color:#2d3e63;color:#2d3e63}
#adminTools.rsMode #admMcMini.on{background:#2d3e63;color:#fff}

/* 나는 트럭 ▲▼(world.js가 휴대폰에서 슈퍼가 운전 중일 때만 hidden을 뺀다): 점프 단추 위에 세로 둘, 점프와 같은 어두운 유리 둥근 단추. 누르는 동안 오르내린다 */
#flyUp,#flyDown{position:absolute;right:calc(20px + var(--sar));width:56px;height:56px;padding:0;border-radius:50%;border:2px solid rgba(255,255,255,.6);background:rgba(18,20,23,.34);color:#fff;text-shadow:0 1px 2px rgba(18,20,23,.5);font:inherit;font-size:22px;font-weight:900;line-height:1;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;z-index:31}
#flyDown{bottom:calc(var(--ctl-b) + 76px)}
#flyUp{bottom:calc(var(--ctl-b) + 140px)}
#flyUp:active,#flyDown:active{background:rgba(255,114,16,.75);border-color:#fff}
#flyUp.hidden,#flyDown.hidden{display:none!important}
body.chat-drawer.drawer-open #flyUp,body.chat-drawer.drawer-open #flyDown,body.kb-open #flyUp,body.kb-open #flyDown{visibility:hidden}
/* 날고 있을 때: 점프 위에 있던 생중계 소리 단추는 ▲ 위로, 점프 위로 올라가 있던 휘두르기(폭 360px 미만·가로 화면)는 앉기 위로 비킨다 */
body:has(#flyUp:not(.hidden)) #liveYtSound{bottom:calc(var(--ctl-b) + 204px)!important;right:calc(12px + var(--sar))!important}
@media (max-width:359px){
  body:has(#flyUp:not(.hidden)) #swingBtn{right:calc(98px + var(--sar));bottom:calc(var(--ctl-b) + 68px)}
  body:has(#flyUp:not(.hidden)) #soundHint{bottom:calc(var(--ctl-b) + 206px)}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px),(max-width:1000px) and (orientation:landscape) and (max-height:500px){
  body:has(#flyUp:not(.hidden)) #swingBtn{right:calc(96px + var(--sar));bottom:calc(var(--ctl-b) + 68px)}
}
/* 운영자 창 운영 패널(2026-11-06 재설계): 콘솔과 같은 짙은 화풍 한 장. 머리(운영·연결·크기·접기·⋯)와 조작 줄은 콘솔(iframe) 안에 있어 바깥 머리·비상 줄·사회자 칸은 숨긴다 */
#adminTools.opsDark:is(.withOps,.sheet,.folded){background:#1b1f23;color:#e8eaec;border:1px solid #2d3338;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
#adminTools.opsDark.withOps,#adminTools.opsDark.sheet{padding:0;background:#1b1f23}
#adminTools.opsDark.withOps>h4,#adminTools.opsDark.withOps #admEmerg,#adminTools.opsDark.withOps #admBody,#adminTools.opsDark.sheet>h4,#adminTools.opsDark.sheet #admEmerg,#adminTools.opsDark.sheet #admBody{display:none!important}
#adminTools.opsDark #admOps{margin:0}
#adminTools.opsDark #admOpsFrame{border-radius:0;background:#1b1f23}
#adminTools.opsDark.sheet{padding:var(--sat) var(--sar) var(--sab) var(--sal)}
/* 접힌 운영 패널: 짙은 머리 한 줄만(운영 · 펼치기) */
#adminTools.opsDark.folded h4{background:#1b1f23;color:#e8eaec}
#adminTools.opsDark.folded{padding:8px 10px}
#adminTools.opsDark.folded h4{margin:0;padding:0;position:static}
#adminTools.opsDark.folded #admEmerg .tbtn{background:#2a3036;color:#e8eaec;border-color:#3a4148}
#adminTools.opsDark.folded #admEmerg .tbtn.on{background:#2fbf71;color:#0d1a12;border-color:#2fbf71}
#adminTools.opsDark.folded #admEmerg .tbtn:disabled{opacity:.5}
#adminTools.opsDark.folded h4 .tbtn{background:#2a3036;color:#e8eaec;border-color:#3a4148}
#adminTools.opsDark.folded h4 .admSize{background:#14171a}
#adminTools.opsDark.folded h4 .admSize .tbtn{background:transparent}
#adminTools.opsDark.folded h4 .admSize .tbtn.on{background:#e8eaec;color:#14171a}
@media (min-width:701px){#adminTools.opsDark.folded{width:auto!important;min-width:320px;max-width:480px}}
#adminTools.opsDark.folded h4{gap:12px}
#adminTools.opsDark.folded #admSize,#adminTools.opsDark.folded #admOpsLink{display:none!important}
#adminTools.opsDark.folded #admTitle::after{content:" 패널 접힘";font-weight:600;color:#8b949c}
/* 휴대폰·태블릿·키 작은 창의 입장: 입장 단추(동의·입장 묶음)가 늘 화면 아래에 보이게 붙인다. 위 내용은 그 뒤로 스크롤(넘치지 않으면 그대로) */
@media (max-width:700px) and (orientation:portrait),(orientation:landscape) and (max-height:500px),(pointer:coarse),(max-height:900px){
  #entry .box{overflow:clip}
  #entry .entryFoot{position:sticky;bottom:0;z-index:5;background:var(--e-paper);padding-bottom:calc(8px + var(--sab));box-shadow:0 -10px 12px -10px rgba(18,20,23,.25)}
}
/* 휴대폰: 「자리에 앉아 계십니다」(착석)·감옥 안내가 떠 있으면 「탭해서 소리 켜기」 안내를 그 위로 올린다(같은 가운데 자리라 겹친다) */
@media (max-width:700px),(pointer:coarse){
  #hud:has(#seatAllBox:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 236px)}
  #hud:has(#jailBox:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 270px)}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px),(max-width:1000px) and (orientation:landscape) and (max-height:500px){
  #hud:has(#seatAllBox:not(.hidden))~#soundHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 112px)}
  #hud:has(#jailBox:not(.hidden))~#soundHint{bottom:calc(var(--drawer-h,0px) + var(--cuebar-h,0px) + 140px)}
}
/* 아주 짧은 세로 화면: 착석·감옥 안내 위에 들어가게 소리 안내를 한 줄로 줄인다 */
@media (max-width:700px) and (orientation:portrait) and (max-height:700px){
  #hud:has(#seatAllBox:not(.hidden))~#soundHint,#hud:has(#jailBox:not(.hidden))~#soundHint{padding:6px 14px}
  #hud:has(#seatAllBox:not(.hidden))~#soundHint small,#hud:has(#jailBox:not(.hidden))~#soundHint small{display:none}
  #hud:has(#seatAllBox:not(.hidden))~#soundHint b,#hud:has(#jailBox:not(.hidden))~#soundHint b{font-size:16px}
  #hud:has(#seatAllBox:not(.hidden))~#soundHint{bottom:calc(var(--ctl-b) + 244px)}
}
/* 아주 낮은 가로 화면(높이 340px 이하): 착석·감옥 안내 위로 올릴 자리가 없어 그동안 소리 안내를 숨긴다. 화면 어디를 눌러도(「전광판 보기」 포함) 소리가 켜지고, 위 🔊 단추는 그대로다 */
@media (orientation:landscape) and (max-height:340px){
  #hud:has(#seatAllBox:not(.hidden))~#soundHint,#hud:has(#jailBox:not(.hidden))~#soundHint{display:none}
}
/* 찾기 단추: #hud가 pointer-events:none이라 단추는 직접 켜 둔다(2026-11-07 실기기에서 안 눌림). 빠른 두 번 누름 확대도 막는다. #findHint는 계속 none */
#btnFind{pointer-events:auto;touch-action:manipulation}
/* 휴대폰·태블릿 보물찾기 진행: 조이스틱 위가 아니라 위쪽 HUD 바로 밑 작은 칩(「새는 돈 n/11」만). 찾은 순간 3초(world.js flash)만 노랗게 크게, 차액·순위까지.
   첫 안내(#intro)는 칩 밑으로 내리고, 사회자 자막 띠가 뜨면 칩은 잠시 숨긴다. PC는 그대로 */
@media (max-width:700px),(pointer:coarse){
  #huntHud{top:var(--hud-b);bottom:auto;left:calc(12px + var(--sal));right:auto;max-width:calc(100vw - 24px - var(--sal) - var(--sar));padding:4px 10px;font-size:13px;font-weight:800;line-height:1.35;word-break:keep-all}
  #huntHud .more{display:none}
  #huntHud.flash{font-size:15px;padding:8px 14px;background:#ffd23f;border-color:#121417}
  #huntHud.flash .more{display:inline}
  #huntHud:not(.hidden)~#intro{top:calc(var(--hud-b) + 36px)}
  #hud:has(#mcBand:not(.hidden)) #huntHud{display:none}
}
@media (max-width:700px) and (max-height:700px){
  #hud:has(#btnTrain:not(.hidden)) #huntHud:not(.flash){display:none} /* 짧은 화면: 열차 단추가 위까지 쌓이면 칩은 잠시 숨긴다(찾은 순간 알림은 보인다) */
}

/* 예산 물고 달아난 염소: 잡기 단추와 「염소 주머니 n」 칩 */
#btnGoat{position:absolute;left:50%;bottom:calc(var(--cuebar-h,0px) + 196px);transform:translateX(-50%);z-index:32;font:inherit;font-size:20px;font-weight:900;color:#121417;background:#ffd23f;border:3px solid #121417;border-radius:999px;padding:10px 26px;box-shadow:0 4px 0 #121417;cursor:pointer}
body.chat-side.chat-open #btnGoat{left:calc((100vw - var(--panel-w) - 16px) / 2)}
#goatHud{position:absolute;top:152px;right:16px;z-index:29;padding:5px 12px;font-size:13px;font-weight:800;color:#121417;pointer-events:none}
body.chat-side.chat-open #goatHud{right:calc(var(--panel-w) + 32px)}
@media (max-width:700px){#goatHud{top:auto;bottom:calc(var(--cuebar-h,0px) + 230px);right:auto;left:16px;font-size:12px}#btnGoat{bottom:calc(var(--cuebar-h,0px) + 214px);min-height:52px}}
/* 염소 잡기: 누른 순간 살짝 줄고(잡는 중…), 서버 답은 단추 바로 위 큰 토스트(goatpouch.js) */
#btnGoat{pointer-events:auto;touch-action:manipulation;-webkit-user-select:none;user-select:none;transition:transform .08s}
#btnGoat.busy{transform:translateX(-50%) scale(.93);background:#ffe58a;box-shadow:0 2px 0 #121417}
#goatToast{position:fixed;left:50%;bottom:calc(var(--cuebar-h,0px) + 262px);transform:translateX(-50%);z-index:33;max-width:min(88vw,420px);padding:12px 18px;border:3px solid #121417;border-radius:14px;font:inherit;font-size:18px;font-weight:900;line-height:1.35;text-align:center;word-break:keep-all;pointer-events:none;box-shadow:0 4px 0 #121417}
#goatToast.bad{background:#fff3d6;color:#121417}
#goatToast.good{background:#4caf7d;color:#fff}
#goatToast.hidden{display:none}
body.chat-side.chat-open #goatToast{left:calc((100vw - var(--panel-w) - 16px) / 2)}
@media (max-width:700px){#goatToast{bottom:calc(var(--cuebar-h,0px) + 280px);font-size:16px}}
/* 푸드코트 주문 단추와 메뉴(food.js): 자리는 찾기 단추의 계산된 자리를 따르고(열차 단추가 뜨면 그 위로), 메뉴는 단추 바로 위 */
#btnFood{position:absolute;left:50%;bottom:calc(var(--cuebar-h,0px) + 132px);transform:translateX(-50%);z-index:32;display:flex;align-items:center;gap:8px;white-space:nowrap;font:inherit;font-size:20px;font-weight:900;color:#121417;background:#ffd23f;border:3px solid #121417;border-radius:999px;padding:10px 26px;min-height:52px;cursor:pointer;box-shadow:0 4px 16px rgba(18,20,23,.3);pointer-events:auto;touch-action:manipulation}
#btnFood.hidden,#foodSheet.hidden{display:none}
#foodSheet{position:absolute;left:50%;bottom:calc(var(--cuebar-h,0px) + 200px);transform:translateX(-50%);z-index:33;width:min(340px,calc(100vw - 32px));box-sizing:border-box;padding:12px 14px;pointer-events:auto}
#foodSheet .foodHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:16px}
#foodSheet .foodX{font:inherit;font-size:22px;font-weight:900;line-height:1;width:44px;height:44px;border:0;border-radius:10px;background:#e9e6dc;color:#121417;cursor:pointer}
#foodSheet .foodGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#foodSheet .foodGrid button{display:flex;align-items:center;gap:8px;min-height:52px;font:inherit;font-size:16px;font-weight:800;color:#121417;background:#f3f4f1;border:2px solid #121417;border-radius:12px;padding:6px 10px;cursor:pointer;touch-action:manipulation}
#foodSheet .foodGrid .ic{font-size:24px}
#foodSheet .foodNote{margin-top:8px;font-size:12px;color:#545a61;font-weight:700}
#hud:has(#btnFood:not(.hidden))~#soundHint{display:none}
body.kb-open #btnFood,body.kb-open #foodSheet{visibility:hidden}
@media (max-width:359px){#btnFood{font-size:17px;padding:6px 18px}#foodSheet .foodGrid button{font-size:14px}}
#foodSheet{overflow:auto}
@media (orientation:landscape) and (max-height:500px){#foodSheet .foodGrid{grid-template-columns:repeat(4,1fr);gap:6px}#foodSheet .foodGrid button{flex-direction:column;justify-content:center;gap:0;font-size:13px;min-height:48px;padding:2px 4px}#foodSheet .foodGrid .ic{font-size:20px}#foodSheet .foodHead{margin-bottom:4px}}
@media (max-height:640px){#foodSheet .foodNote{display:none}#foodSheet .foodGrid button{min-height:46px;padding:4px 8px}#foodSheet{padding:10px 12px}}

/* 아이템 가게 카드(items.js): 머리줄·닫기 단추, 열려 있으면 휘두르기 단추가 카드와 겹치지 않게 숨긴다 */
#storeCard .storeHead{display:flex;align-items:center;justify-content:space-between;margin:0 36px 8px 0}
#storeCard .storeHead b{font-size:15px;font-weight:900}
body:has(#hallCard:not(.hidden)) #swingBtn,body:has(#storeCard:not(.hidden)) #swingBtn,body:has(#fairCard:not(.hidden)) #swingBtn{display:none}

/* 박물관 스탬프 투어: 「박물관 도장 n/3」 칩과 도장 연출 */
#stampHud{position:absolute;top:186px;right:16px;z-index:29;padding:5px 12px;font-size:13px;font-weight:800;color:#121417;pointer-events:none}
#stampHud.done{background:#ffd23f}
body.chat-side.chat-open #stampHud{right:calc(var(--panel-w) + 32px)}
@media (max-width:700px){#stampHud{top:auto;bottom:calc(var(--cuebar-h,0px) + 264px);right:auto;left:16px;font-size:12px}}
#stampFx{position:fixed;left:50%;top:42%;z-index:100002;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:220px;height:220px;margin:-110px 0 0 -110px;border:10px solid rgba(200,30,30,.92);border-radius:50%;color:rgba(200,30,30,.95);background:rgba(255,250,240,.85);opacity:0;transform:rotate(-14deg) scale(2.4)}
#stampFx b{font-size:44px;font-weight:900;line-height:1.1}
#stampFx span{font-size:16px;font-weight:800;margin-top:6px;text-align:center;padding:0 16px}
#stampFx.on{opacity:1;transform:rotate(-14deg) scale(1);animation:stampIn .3s ease-out}
@keyframes stampIn{0%{transform:rotate(-14deg) scale(2.4)}100%{transform:rotate(-14deg) scale(1)}}
@media (max-width:600px) and (orientation:portrait){#storeCard{max-height:30vh}} /* 좁은 세로 화면: 가게 카드가 열차 단추 위로 내려오지 않게 */
@media (max-width:600px){body:has(#storeCard:not(.hidden)) #btnTrain{display:none}} /* 휴대폰: 가게 카드가 열려 있는 동안 열차 단추는 숨긴다(카드와 겹침 방지) */
/* 가로 휴대폰(높이 500px 이하): 아이템 가게 카드(items.js #storeCard.dk)가 조이스틱·채팅·열차 단추 위로 내려오지 않게, 위 HUD 밑부터 화면 아래까지 왼쪽에 두고
   열려 있는 동안 조작 단추·채팅 서랍·열차 단추·소리 안내는 숨긴다(세로 휴대폰은 items.js가 아래 시트로 같은 일을 한다) */
@media (orientation:landscape) and (max-height:500px){
  body #hud #storeCard.dk{top:var(--hud-b,58px);bottom:calc(8px + var(--sab));left:calc(12px + var(--sal));right:auto;width:min(440px,calc(100vw - 24px - var(--sal) - var(--sar)));max-height:none}
  body.store-open #chatPanel,body.store-open #joy,body.store-open #jumpBtn,body.store-open #sitBtn,body.store-open #swingBtn,body.store-open #btnFind,body.store-open #huntHud,body.store-open #soundHint,body.store-open #btnTrain{visibility:hidden}
}
/* 휴대폰 착석 안내: 「자리에 앉아 계십니다…」 글은 6초 뒤 접고 「전광판 보기」 단추만 작게 남긴다(안내 상자가 전광판 아랫부분을 오래 덮지 않게).
   다시 착석하면(숨김 → 보임) 처음부터 */
@media (max-width:700px),(pointer:coarse){
  #seatAllBox span{display:block;overflow:hidden;max-height:3.2em;animation:seatHintFold .5s ease 6s forwards}
  #seatAllBox{animation:seatBoxSlim .5s ease 6s forwards}
  @keyframes seatHintFold{to{max-height:0;opacity:0;margin:0}}
  @keyframes seatBoxSlim{to{padding:4px 6px;background:transparent;box-shadow:none;border-color:transparent}}
}
