@font-face{
  font-family:'BMDOHYEON';
  src:url('../assets/fonts/BMDOHYEON.ttf') format('truetype');
  font-display:swap;
}
:root{
  --bg:#0c0e13;
  --panel:rgba(20,24,33,.94);
  --panel2:#1d2330;
  --line:#2c3546;
  --gold:#f0bd4e;
  --gold-dim:#a8842f;
  --hp:#e0524d;
  --mp:#4d8de0;
  --exp:#7bc96f;
  --text:#efece4;
  --dim:#98a0ae;
  --danger:#ff5f57;
}
*{margin:0;padding:0;box-sizing:border-box;user-select:none;font-family:'BMDOHYEON',sans-serif}
html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text)}
#gameCanvas{position:fixed;inset:0;display:block}
.hidden{display:none !important}
button{cursor:pointer;border:none;border-radius:10px;font-family:'BMDOHYEON',sans-serif;
  transition:transform .08s,filter .12s}
button:active{transform:scale(.96)}
input{font-family:'BMDOHYEON',sans-serif;outline:none}
.rainbow-text{background:linear-gradient(90deg,#ff5f57,#f0bd4e,#7bc96f,#4d8de0,#b06de0,#ff5f57);
  -webkit-background-clip:text;background-clip:text;color:transparent}

/* ═══ 로그인 / 닉네임 ═══ */
.screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1300px 800px at 50% 25%,#182033 0%,var(--bg) 70%);z-index:200}
.login-card{width:400px;max-width:94vw;background:var(--panel);border:1px solid var(--line);
  border-radius:18px;padding:34px 30px;box-shadow:0 24px 70px rgba(0,0,0,.55)}
.game-logo{font-size:52px;text-align:center;letter-spacing:3px;color:var(--gold);
  text-shadow:0 0 28px rgba(240,189,78,.4)}
.game-logo-sub{text-align:center;font-size:11px;color:var(--dim);letter-spacing:5px;margin:4px 0 24px}
.man-title{font-size:19px;color:var(--gold);text-align:center;margin-bottom:14px}
.login-card input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel2);color:var(--text);font-size:14px;margin-bottom:10px}
.login-card input:focus{border-color:var(--gold-dim)}
.btn-gold{width:100%;padding:13px;font-size:16px;background:var(--gold);color:#221a06}
.btn-gold:hover{filter:brightness(1.08)}
.btn-dark{width:100%;padding:12px;font-size:14px;background:var(--panel2);color:var(--text);
  border:1px solid var(--line);margin-top:9px}
.btn-dark:hover{filter:brightness(1.2)}
.login-msg{margin-top:12px;font-size:12.5px;text-align:center;min-height:18px;color:var(--danger)}
.nick-desc{text-align:center;font-size:13px;color:var(--dim);margin-bottom:16px;line-height:1.6}
.provider-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:330px;
  overflow-y:auto;padding-right:4px;scrollbar-width:thin}
.provider-btn{display:flex;align-items:center;gap:9px;padding:10px 12px;background:var(--panel2);
  border:1px solid var(--line);border-radius:9px;color:var(--text);font-size:13px}
.provider-btn:hover{border-color:var(--gold-dim)}
.provider-btn .p-ico{width:20px;text-align:center;font-size:15px}

/* ═══ 메인 메뉴 ═══ */
#mainMenu{position:fixed;inset:0;z-index:150;display:flex;flex-direction:column;
  align-items:center;justify-content:center;pointer-events:none}
.menu-logo{position:absolute;top:7vh;font-size:76px;color:var(--gold);letter-spacing:6px;
  text-shadow:0 0 40px rgba(240,189,78,.5),0 4px 0 #6e5417}
.menu-col{display:flex;flex-direction:column;gap:22px;pointer-events:auto}
.menu-btn{width:300px;padding:18px;font-size:24px;background:rgba(20,24,33,.85);
  color:var(--text);border:2px solid var(--line);border-radius:14px;
  backdrop-filter:blur(3px);letter-spacing:2px}
.menu-btn:hover{border-color:var(--gold);color:var(--gold);
  box-shadow:0 0 24px rgba(240,189,78,.25)}
.menu-exit:hover{border-color:var(--danger);color:var(--danger);
  box-shadow:0 0 24px rgba(255,95,87,.25)}
.menu-user{position:absolute;bottom:24px;font-size:13px;color:var(--dim);pointer-events:auto}

/* ═══ HUD ═══ */
#hud{position:fixed;inset:0;pointer-events:none;z-index:50}
#charFrame{position:absolute;top:16px;left:16px;background:var(--panel);
  border:1px solid var(--line);border-radius:13px;padding:12px 16px;min-width:245px}
#charName{font-size:17px}
#charName .lv{color:var(--gold);margin-right:6px}
#charJob{font-size:11.5px;color:var(--dim);margin:2px 0 8px}
.bar{height:15px;border-radius:8px;background:#0a0c10;overflow:hidden;margin-top:5px;position:relative}
.bar>div{height:100%;border-radius:8px;transition:width .15s}
.bar span{position:absolute;inset:0;font-size:10px;line-height:15px;text-align:center;
  color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.85)}
#hpBar>div{background:linear-gradient(180deg,#ff7b76,var(--hp))}
#mpBar>div{background:linear-gradient(180deg,#7fabee,var(--mp))}
.bar.exp{height:8px}.bar.exp>div{background:var(--exp)}
#mapNameBox{position:absolute;top:18px;left:50%;transform:translateX(-50%);
  background:var(--panel);border:1px solid var(--gold-dim);border-radius:20px;
  padding:8px 26px;font-size:16px;color:var(--gold)}
#goldBox{position:absolute;top:16px;right:16px;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:10px 16px;font-size:16px;color:var(--gold)}
#onlineBox{position:absolute;top:62px;right:16px;background:var(--panel);
  border:1px solid var(--line);border-radius:10px;padding:7px 12px;font-size:12px;color:var(--dim)}
#onlineBox b{color:var(--exp)}
#keyGuide{position:absolute;bottom:14px;right:16px;display:flex;flex-direction:column;
  gap:3px;font-size:11px;color:var(--dim);text-align:right;text-shadow:0 1px 3px #000}
#interactHint{position:absolute;bottom:34%;left:50%;transform:translateX(-50%);
  background:var(--panel);border:1px solid var(--gold);border-radius:10px;
  padding:9px 20px;font-size:15px;color:var(--gold)}
#questTracker{position:absolute;top:120px;right:16px;background:var(--panel);
  border-left:3px solid var(--gold);border-radius:8px;padding:10px 14px;
  font-size:12.5px;max-width:250px;line-height:1.6}
#questTracker .qt-title{color:var(--gold);font-size:13.5px}
#questTracker .qt-done{color:var(--exp)}
#chatBox{position:absolute;bottom:16px;left:16px;width:330px;pointer-events:auto}
#chatLog{height:145px;overflow-y:auto;background:rgba(12,14,19,.55);border-radius:10px;
  padding:8px 10px;font-size:12.5px;line-height:1.55;scrollbar-width:thin}
#chatLog .c-name{color:var(--gold)}
#chatLog .c-sys{color:var(--exp)}
#chatLog .c-admin{background:linear-gradient(90deg,#ff5f57,#f0bd4e,#7bc96f,#4d8de0,#b06de0);
  -webkit-background-clip:text;background-clip:text;color:transparent}
#chatInput{width:100%;margin-top:6px;padding:9px 12px;border-radius:8px;
  border:1px solid var(--line);background:var(--panel);color:var(--text);
  font-size:13px;display:none}
#chatInput.open{display:block}
#notice{position:absolute;top:80px;left:50%;transform:translateX(-50%);
  background:rgba(224,82,77,.93);color:#fff;padding:10px 26px;border-radius:10px;
  font-size:16px;z-index:70}
#testHud{position:absolute;top:130px;left:50%;transform:translateX(-50%);
  background:var(--panel);border:2px solid var(--gold);border-radius:12px;
  padding:12px 28px;font-size:18px;color:var(--gold);text-align:center;line-height:1.5}

/* ═══ 데미지 텍스트 ═══ */
.dmg{position:fixed;font-size:19px;color:#ffd34d;text-shadow:0 2px 4px rgba(0,0,0,.85);
  pointer-events:none;z-index:60;animation:dmgFloat .8s ease-out forwards}
.dmg.hit{color:#ff6b64}
.dmg.heal{color:#7bc96f}
@keyframes dmgFloat{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-44px)}}

/* ═══ 게임 창 공통 ═══ */
.game-window{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  background:var(--panel);border:1px solid var(--gold-dim);border-radius:16px;
  padding:22px;width:360px;max-height:80vh;overflow-y:auto;z-index:120;
  pointer-events:auto;scrollbar-width:thin;box-shadow:0 18px 60px rgba(0,0,0,.6)}
.game-window.wide{width:640px;max-width:95vw}
.win-title{font-size:20px;color:var(--gold);margin-bottom:14px}
.win-close{position:absolute;top:14px;right:14px;width:30px;height:30px;
  background:var(--panel2);color:var(--dim);border:1px solid var(--line);border-radius:8px}
.win-close:hover{color:var(--danger)}
.game-window input{width:100%;padding:10px 12px;border-radius:9px;border:1px solid var(--line);
  background:var(--panel2);color:var(--text);font-size:13px;margin-bottom:8px}
.row2{display:flex;gap:8px;margin-bottom:8px}
.row2 button{flex:1;margin-top:0}

/* 퀘스트 */
.quest-item{background:var(--panel2);border:1px solid var(--line);border-radius:10px;
  padding:12px 14px;margin-bottom:8px;font-size:13px;line-height:1.6}
.quest-item .q-name{color:var(--gold);font-size:14.5px}
.quest-item .q-prog{color:var(--exp)}
.quest-item .q-tuto{font-size:10.5px;color:var(--danger);border:1px solid var(--danger);
  border-radius:5px;padding:0 5px;margin-left:6px}

/* 인벤토리 */
#equipRow{display:flex;gap:8px;margin-bottom:12px}
.equip-slot{width:56px;height:56px;background:var(--panel2);border:2px solid var(--gold-dim);
  border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:20px;position:relative}
.equip-slot small{font-size:8.5px;color:var(--dim)}
#invGrid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.inv-slot{aspect-ratio:1;background:var(--panel2);border:1px solid var(--line);border-radius:9px;
  display:flex;align-items:center;justify-content:center;font-size:21px;position:relative;cursor:pointer}
.inv-slot:hover{border-color:var(--gold)}
.inv-slot .qty{position:absolute;bottom:2px;right:4px;font-size:10px;color:var(--gold)}
.inv-slot .iname{position:absolute;bottom:-2px;left:0;right:0;font-size:8px;color:var(--dim);
  text-align:center;overflow:hidden;white-space:nowrap}

/* 상점 */
#shopGold{font-size:14px;color:var(--gold);margin-bottom:10px}
#shopList{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.shop-item{display:flex;align-items:center;gap:10px;background:var(--panel2);
  border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:12.5px}
.shop-item .s-ico{font-size:21px}
.shop-item .s-info{flex:1;line-height:1.4}
.shop-item .s-price{color:var(--gold);font-size:11.5px}
.shop-item button{padding:6px 11px;font-size:12px;background:var(--gold);color:#221a06;border-radius:7px}
.shop-item button:disabled{background:var(--line);color:var(--dim);cursor:default}

/* ═══ 대화창 ═══ */
#dialogueBox{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  width:820px;max-width:96vw;display:flex;gap:14px;z-index:130;pointer-events:auto}
#dlgPortraitWrap{background:var(--panel);border:2px solid var(--gold-dim);border-radius:14px;
  padding:8px;text-align:center}
#dlgPortrait{border-radius:10px;background:radial-gradient(circle at 50% 30%,#2a3448,#141821)}
#dlgNpcName{font-size:15px;color:var(--gold);margin-top:6px}
#dlgBody{flex:1;background:var(--panel);border:2px solid var(--gold-dim);border-radius:14px;
  padding:20px 24px;display:flex;flex-direction:column}
#dlgText{flex:1;font-size:18px;line-height:1.7;min-height:96px}
#dlgNav{display:flex;justify-content:flex-end;gap:10px;align-items:center}
.dlg-btn{padding:9px 20px;font-size:15px;background:var(--panel2);color:var(--text);
  border:1px solid var(--line);border-radius:9px}
.dlg-btn:hover{border-color:var(--gold);color:var(--gold)}
#dlgChoice{display:flex;gap:10px}
.dlg-btn.accept{background:var(--gold);color:#221a06}
.dlg-btn.reject{position:relative;color:var(--dim)}
.dlg-btn.reject .tooltip{display:none;position:absolute;bottom:110%;left:50%;
  transform:translateX(-50%);background:#000;color:var(--danger);font-size:12px;
  padding:5px 12px;border-radius:7px;white-space:nowrap;border:1px solid var(--danger)}
.dlg-btn.reject:hover .tooltip{display:block}

/* ═══ 전직 ═══ */
#jobList{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.job-item{background:var(--panel2);border:1px solid var(--line);border-radius:11px;
  padding:12px 14px;font-size:12.5px;line-height:1.55}
.job-item .j-name{font-size:15px;color:var(--gold)}
.job-item .j-hidden{color:#b06de0}
.job-item button{margin-top:8px;padding:7px 14px;font-size:12px;background:var(--gold);
  color:#221a06;border-radius:7px}
.job-item button:disabled{background:var(--line);color:var(--dim);cursor:default}

/* ═══ 설정 ═══ */
.tab-row{display:flex;gap:6px;margin-bottom:14px}
.tab-btn{flex:1;padding:10px;font-size:13.5px;background:var(--panel2);color:var(--dim);
  border:1px solid var(--line);border-radius:9px}
.tab-btn.sel{color:var(--gold);border-color:var(--gold-dim)}
.tab-page{min-height:200px}
.key-row{display:flex;justify-content:space-between;align-items:center;
  padding:9px 4px;border-bottom:1px solid var(--line);font-size:13.5px}
.key-row button{min-width:96px;padding:7px 12px;background:var(--panel2);color:var(--gold);
  border:1px solid var(--line);border-radius:8px;font-size:13px}
.key-row button.waiting{border-color:var(--gold);color:var(--text);animation:blink 1s infinite}
@keyframes blink{50%{opacity:.4}}
#customLayout{display:flex;gap:16px}
#customPreview{border:1px solid var(--line);border-radius:12px;
  background:radial-gradient(circle at 50% 30%,#2a3448,#141821)}
#customControls{flex:1;max-height:340px;overflow-y:auto;padding-right:6px;scrollbar-width:thin}
.cst-group{margin-bottom:12px}
.cst-group h4{font-size:13px;color:var(--gold);margin-bottom:6px;
  border-bottom:1px solid var(--line);padding-bottom:4px}
.cst-row{display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;padding:4px 0;gap:10px}
.cst-row input[type=color]{width:44px;height:26px;border:1px solid var(--line);
  border-radius:6px;background:none;padding:0;margin:0}
.cst-row input[type=range]{flex:1;max-width:150px;margin:0}
.cst-row select{background:var(--panel2);color:var(--text);border:1px solid var(--line);
  border-radius:6px;padding:4px 8px;font-family:'BMDOHYEON'}
.av-row{display:flex;justify-content:space-between;align-items:center;
  padding:10px 4px;border-bottom:1px solid var(--line);font-size:13.5px}
.av-row input[type=range]{width:170px}

/* ═══ 사망 ═══ */
#deathScreen{position:fixed;inset:0;background:rgba(60,0,0,.55);z-index:140;
  display:flex;flex-direction:column;align-items:center;justify-content:center}
#deathScreen h2{font-size:46px;color:#ff8b86;margin-bottom:10px}
#deathScreen p{color:#ffd7d5;font-size:15px}
.dlg-btn.reject.no-tip .tooltip{display:none !important}
.dlg-btn.reject.no-tip{color:var(--text)}

/* 비밀번호 마스킹(●)이 도현체에 글리프가 없어 안 보이던 문제 수정 */
input[type=password]{font-family:Verdana,Arial,sans-serif !important;letter-spacing:3px}
input[type=password]::placeholder{font-family:'BMDOHYEON',sans-serif;letter-spacing:0}
.pl-note{font-size:11px;color:var(--dim);text-align:center;margin:-6px 0 12px;line-height:1.5}

/* ══ 일시정지 메뉴 (ESC) ══ */
#pauseMenu{position:fixed;inset:0;z-index:180;background:rgba(5,7,12,.38);
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.pause-col{position:absolute;left:7vw;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:16px;padding:36px 32px;min-width:300px;
  background:linear-gradient(180deg,rgba(8,10,16,.92),rgba(8,10,16,.74));
  border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.pause-title{font-size:27px;color:var(--gold);letter-spacing:2px;margin-bottom:8px;text-align:center}
.pause-btn{padding:16px;font-size:19px;letter-spacing:1px;color:var(--text);
  background:rgba(18,22,31,.92);border:2px solid var(--line);border-radius:13px;cursor:pointer;
  font-family:'BMDOHYEON',sans-serif;transition:all .15s}
.pause-btn:hover{border-color:var(--gold);color:var(--gold);transform:translateX(6px)}
.pause-exit:hover{border-color:var(--danger);color:var(--danger)}

/* 창 겹침 수정: 게임 창은 메뉴/일시정지 위에 뜬다 */
.game-window{z-index:260}
#dialogueBox{z-index:240}
#deathScreen{z-index:300}

/* 퀘스트 창: 오른쪽 위 (Q) */
#questWindow{top:74px;right:14px;left:auto;transform:none;width:300px;max-height:56vh}

/* ══ 지역 진입 배너 ══ */
#zoneBanner{position:fixed;top:16%;left:50%;transform:translateX(-50%);
  font-size:44px;color:#ffe9b0;letter-spacing:6px;opacity:0;pointer-events:none;z-index:90;
  text-shadow:0 3px 14px rgba(0,0,0,.75),0 0 26px rgba(255,210,120,.35)}
#zoneBanner.show{animation:zoneIn 2.6s ease forwards}
@keyframes zoneIn{0%{opacity:0;transform:translateX(-50%) translateY(14px) scale(.94)}
  14%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
  78%{opacity:1}100%{opacity:0;transform:translateX(-50%) translateY(-8px)}}

/* ══ 스킬바 (Z/X/C) ══ */
#skillBar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);
  display:flex;gap:10px;z-index:60}
.skill-slot{position:relative;width:58px;height:58px;border-radius:14px;cursor:pointer;
  background:rgba(10,13,20,.85);border:2px solid var(--line);overflow:hidden;
  display:flex;align-items:center;justify-content:center}
.skill-slot:hover{border-color:var(--gold)}
.sk-ico{font-size:26px;z-index:2}
.sk-key{position:absolute;top:2px;left:5px;font-size:11px;color:var(--gold);z-index:3}
.sk-cd{position:absolute;left:0;bottom:0;width:100%;height:0;
  background:rgba(0,0,0,.72);z-index:2;transition:height .05s linear}
.sk-lock{position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(5,6,10,.8);color:var(--dim);font-size:12px;z-index:4}
.skill-slot.locked .sk-lock{display:flex}

/* ══ 랭킹/접속자 목록 ══ */
.lb-tabs{display:flex;gap:6px;margin-bottom:10px}
.lb-tab{flex:1;padding:8px;background:rgba(18,22,31,.9);border:1px solid var(--line);
  border-radius:9px;color:var(--dim);font-family:'BMDOHYEON';cursor:pointer}
.lb-tab.sel{color:var(--gold);border-color:var(--gold)}
.lb-list{max-height:52vh;overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.lb-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;
  background:rgba(255,255,255,.04)}
.lb-row.me{outline:1px solid var(--gold)}
.lb-rank{width:34px;color:var(--gold);text-align:right}
.lb-val{margin-left:auto;color:var(--dim)}
#lbWindow{width:420px}

/* ══ 모바일 ══ */
#mobileControls,#rotateOverlay{display:none}
body.mobile #mobileControls{display:block}
#camZone{position:fixed;right:0;top:0;width:55%;height:100%;z-index:40}
#joyZone{position:fixed;left:26px;bottom:26px;width:120px;height:120px;border-radius:50%;
  background:rgba(255,255,255,.07);border:2px solid rgba(255,255,255,.2);z-index:70;touch-action:none}
#joyNub{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px 0 0 -26px;
  border-radius:50%;background:rgba(255,255,255,.25);border:2px solid rgba(255,255,255,.4)}
#mBtns{position:fixed;right:18px;bottom:20px;display:grid;z-index:70;
  grid-template-columns:repeat(3,54px);gap:9px;justify-items:center}
#mBtns button{width:54px;height:54px;border-radius:50%;font-size:19px;color:var(--text);
  background:rgba(10,13,20,.8);border:2px solid var(--line);font-family:'BMDOHYEON'}
#mBtns #mAtk{width:66px;height:66px;font-size:26px;border-color:var(--gold)}
#mTop{position:fixed;top:10px;right:12px;display:flex;gap:8px;z-index:70}
#mTop button{width:42px;height:42px;border-radius:11px;font-size:16px;color:var(--text);
  background:rgba(10,13,20,.8);border:1.5px solid var(--line);font-family:'BMDOHYEON'}
body.mobile #skillBar{display:none} /* 모바일은 전용 스킬 버튼 사용 */
body.mobile #onlineBox{display:none}
@media (orientation:portrait){
  body.mobile #rotateOverlay{display:flex;position:fixed;inset:0;z-index:999;
    background:#07090f;align-items:center;justify-content:center;text-align:center;
    font-size:26px;line-height:1.7;color:var(--gold)}
}

/* ═══ 신법사 조준 / 섬광 ═══ */
body.targeting, body.targeting canvas { cursor: crosshair !important; }
#screenFlash {
  position: fixed; inset: 0; background: #ffdf6e;
  opacity: 0; pointer-events: none; z-index: 300;
}
#screenFlash.go { animation: flashGold .55s ease-out; }
@keyframes flashGold { 0% { opacity: 0 } 12% { opacity: .85 } 100% { opacity: 0 } }

/* ═══ 감옥 HUD ═══ */
#jailText {
  position: fixed; top: 64px; left: 50%; transform: translateX(-50%);
  background: rgba(20,16,14,.85); border: 3px solid #5a4636; border-radius: 12px;
  padding: 8px 18px; font-size: 18px; color: #e8c8a0; z-index: 60;
}

/* ═══ 파티 박스 (왼쪽 위) ═══ */
#partyBox {
  position: fixed; top: 148px; left: 14px; z-index: 55;
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px; max-width: 260px;
}
#myPortrait {
  width: 56px; height: 56px; border-radius: 50%;
  border: 3px solid var(--line); background: #1c222c;
  box-shadow: 0 3px 0 rgba(0,0,0,.4);
}
#btnPartyPlus, #btnVoice {
  width: 44px; height: 44px; border-radius: 50%;
  border: 3px solid var(--line); background: #232b38; color: #dfe6f2;
  font-size: 20px; cursor: pointer; box-shadow: 0 3px 0 rgba(0,0,0,.4);
  font-family: 'BMDOHYEON';
}
#btnPartyPlus:hover, #btnVoice:hover { filter: brightness(1.2); }
#btnVoice.on { background: #2f7a3f; border-color: #7fe08a; }
#partyChips { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.party-chip {
  background: rgba(22,28,38,.88); border: 2px solid var(--line);
  border-radius: 10px; padding: 4px 10px; font-size: 13px; color: #dfe6f2;
}
.party-chip.leader { border-color: #c8a24d; }
.party-chip.leave { cursor: pointer; color: #e08a8a; }
#inviteList { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.invite-row {
  background: rgba(38,30,20,.92); border: 2px solid #8a6a3a; border-radius: 10px;
  padding: 5px 8px; font-size: 13px; color: #ffe9b0;
  display: flex; align-items: center; gap: 6px; justify-content: space-between;
}
.btn-mini {
  border: 2px solid var(--line); background: #232b38; color: #dfe6f2;
  border-radius: 8px; padding: 3px 8px; font-size: 12px; cursor: pointer;
  font-family: 'BMDOHYEON';
}
.btn-mini.ok { background: #2f5a38; } .btn-mini.no { background: #5a2f2f; }
.btn-mini.duel { background: #4a3a5a; }

/* ═══ 긴 버튼 (밴/추방 등) ═══ */
.btn-long {
  display: block; width: 100%; margin-top: 8px; padding: 12px;
  border: 3px solid var(--line); border-radius: 12px; background: #232b38;
  color: #dfe6f2; font-family: 'BMDOHYEON'; font-size: 16px; cursor: pointer;
  box-shadow: 0 3px 0 rgba(0,0,0,.4);
}
.btn-long:hover { filter: brightness(1.18); }
.btn-long.ban { background: #4a2430; border-color: #8a4152; }
.btn-long.free { background: #24404a; border-color: #41748a; }

/* ═══ 플레이어 선택 목록 ═══ */
.pp-list { max-height: 300px; overflow-y: auto; margin-top: 8px; }
.pp-row {
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
  background: rgba(255,255,255,.05); border: 2px solid var(--line);
  border-radius: 10px; padding: 7px 10px; margin-bottom: 6px; font-size: 14px;
}
.pp-row input { flex: 1; }
.pp-empty { color: var(--dim); padding: 14px; text-align: center; }

/* ═══ 지도 창 ═══ */
#mapWindow { width: 690px; max-width: 96vw; }
#mapCanvas {
  width: min(92vw, 640px); height: auto;
  border: 3px solid var(--line); border-radius: 12px;
  background: #1b2618; image-rendering: auto;
}

/* ═══ 스킬바 궁극기 슬롯 ═══ */
.skill-slot.ult { border-color: #c8a24d; }
.skill-slot.ult .sk-cd { background: rgba(20,16,4,.78); }
.skill-slot.ult .sk-ico { filter: drop-shadow(0 0 4px #ffd34d); }

/* ═══ HUD 클릭 가능 영역 (파티 버튼이 평타로 새는 문제 수정) ═══ */
#partyBox { pointer-events: auto; }
#partyBox * { pointer-events: auto; }
#jailText { pointer-events: none; }

/* ═══ 룬 슬롯 / 스킬 배치 ═══ */
.sec-label { font-size: 14px; color: #cfd6e2; margin: 10px 0 6px; }
.sec-label small { color: var(--dim); font-size: 12px; }
.rune-wrap { display: flex; gap: 8px; flex-wrap: wrap; }
.rune-slot {
  width: 96px; min-height: 62px; border: 3px solid var(--line); border-radius: 12px;
  background: rgba(150,110,220,.14); display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 2px; font-size: 22px;
  cursor: pointer; text-align: center; padding: 4px;
}
.rune-slot small { font-size: 11px; color: #d8cdea; line-height: 1.15; }
.rune-slot.empty { background: rgba(255,255,255,.04); cursor: default; }
.skillset-slot {
  width: 132px; border: 3px solid var(--line); border-radius: 12px;
  background: rgba(255,255,255,.05); padding: 6px; text-align: center;
}
.ss-key { font-size: 12px; color: #ffd34d; }
.ss-ico { font-size: 24px; margin: 2px 0; }
.ss-sel {
  width: 100%; font-family: 'BMDOHYEON'; font-size: 12px;
  background: #1c222c; color: #dfe6f2; border: 2px solid var(--line);
  border-radius: 8px; padding: 3px;
}

/* ═══ 창고 ═══ */
#storageGrid {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-top: 8px;
}
.inv-cell {
  height: 74px; border: 3px solid var(--line); border-radius: 12px;
  background: rgba(255,255,255,.06); display: flex; flex-direction: column;
  align-items: center; justify-content: center; cursor: pointer; position: relative;
}
.inv-cell.empty { background: rgba(255,255,255,.02); cursor: default; }
.inv-ico { font-size: 28px; }
.inv-n { font-size: 12px; color: #ffd34d; }

/* ═══ 긴 목록 ═══ */
.pp-list.tall { max-height: 60vh; }
.pp-row.locked-row { opacity: .55; }
.pp-row small { color: var(--dim); font-size: 12px; }

/* ═══ 확인 창 ═══ */
#confirmBox {
  position: fixed; inset: 0; z-index: 400; background: rgba(0,0,0,.55);
  display: flex; align-items: center; justify-content: center;
}
#confirmBox.hidden { display: none; }
.confirm-inner {
  background: var(--panel, #1a2029); border: 4px solid var(--line);
  border-radius: 18px; padding: 22px; width: 380px; max-width: 92vw;
  box-shadow: 0 18px 60px rgba(0,0,0,.6); text-align: center;
}
#confirmText { font-size: 17px; margin-bottom: 16px; line-height: 1.5; }

/* ═══ 게이트/길드 창 폭 ═══ */
#gateWindow, #boardWindow, #smithWindow { width: 560px; max-width: 94vw; }
#guildWindow, #storageWindow { width: 460px; max-width: 94vw; }

/* ═══ 파티 박스: 빈 영역은 클릭이 게임으로 통과하도록 ═══ */
#partyBox { pointer-events: none; }
#partyChips, #inviteList { pointer-events: none; }
#myPortrait, #btnPartyPlus, #btnVoice,
.party-chip, .invite-row, .invite-row .btn-mini { pointer-events: auto; }
.m-skill.ult { border-color: #c8a24d; color: #ffd34d; }

/* ═══ 궁극기 충전 바 (스킬바 위) ═══ */
#ultBar {
  position: absolute; bottom: 104px; left: 50%; transform: translateX(-50%);
  width: 320px; height: 20px; background: rgba(14,16,22,.85);
  border: 3px solid var(--line); border-radius: 12px; overflow: hidden;
  pointer-events: none; z-index: 55;
}
#ultBar.hidden { display: none; }
#ultBar > div {
  height: 100%; width: 0%; border-radius: 8px;
  background: linear-gradient(90deg, #6a5020, #c8a24d, #ffe27a);
  transition: width .2s linear;
}
#ultBar > span {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 12px; color: #fff6d8; text-shadow: 0 1px 2px #000;
}
#ultBar.full { border-color: #ffd34d; box-shadow: 0 0 14px rgba(255,211,77,.6); }

/* ═══ 1인칭: 커서 숨김 + 조준점 ═══ */
body.fp-lock { cursor: none !important; }
body.fp-lock #gameCanvas { cursor: none !important; }
body.fp-lock #hud::after {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 8px; height: 8px; margin: -4px 0 0 -4px; border-radius: 50%;
  background: rgba(255,255,255,.85); box-shadow: 0 0 4px #000;
}

/* ═══ 신규 창 폭 ═══ */
#qgWindow, #achWindow { width: 560px; max-width: 94vw; }
#realtorWindow, #petWindow { width: 480px; max-width: 94vw; }
.pp-row small { display: block; margin-top: 2px; }

/* ═══ 상태이상 HUD ═══ */
#statusHud {
  position: fixed; top: 100px; left: 14px; z-index: 56;
  display: flex; flex-wrap: wrap; gap: 5px; max-width: 250px; pointer-events: none;
}
#statusHud.hidden { display: none; }
.st-chip {
  background: rgba(30,20,20,.9); border: 2px solid #8a5a4a; border-radius: 9px;
  padding: 2px 7px; font-size: 12px; color: #ffd8c8;
}
#statInfo { margin-top: 6px; }
#riftWindow, #mountWindow, #mailWindow, #raidWindow, #awakeWindow {
  width: 500px; max-width: 94vw;
}

/* ═══ 경매장 · 직거래 · 길드전 ═══ */
#marketWindow, #gwWindow { width: 620px; max-width: 95vw; }
#tradeWindow { width: 640px; max-width: 95vw; }
.tr-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
.tr-cols > div {
  border: 3px solid var(--line); border-radius: 12px; padding: 10px;
  background: rgba(255,255,255,.04);
}
.tr-row { display: flex; align-items: center; gap: 6px; margin: 6px 0; font-size: 14px; }
.tr-row select, .tr-row input {
  background: #1c222c; color: #dfe6f2; border: 2px solid var(--line);
  border-radius: 8px; padding: 4px; font-family: 'BMDOHYEON'; font-size: 13px;
}
.mk-qty, .mk-price {
  background: #1c222c; color: #dfe6f2; border: 2px solid var(--line);
  border-radius: 8px; padding: 3px; font-family: 'BMDOHYEON'; font-size: 12px;
}

/* ═══ 궁극기 바 (이모지 버튼 + 게이지) ═══ */
#ultBar {
  position: absolute; bottom: 104px; left: 50%; transform: translateX(-50%);
  display: flex; align-items: center; gap: 8px; z-index: 56; pointer-events: auto;
  background: none; border: none; width: auto; height: auto;
}
#ultBtn {
  width: 54px; height: 54px; border-radius: 50%; font-size: 26px; cursor: pointer;
  border: 4px solid #5a5148; background: #2a2620; color: #fff;
  box-shadow: 0 4px 0 rgba(0,0,0,.45); font-family: 'BMDOHYEON'; filter: grayscale(.7);
  transition: transform .12s, filter .2s;
}
#ultBtn.ready {
  border-color: #ffd34d; background: linear-gradient(160deg, #6a4f14, #c8a24d);
  filter: none; box-shadow: 0 0 18px rgba(255,211,77,.75), 0 4px 0 rgba(0,0,0,.45);
  animation: ultPulse 1.4s ease-in-out infinite;
}
#ultBtn.ready:hover { transform: scale(1.08); }
@keyframes ultPulse { 0%,100% { transform: scale(1) } 50% { transform: scale(1.06) } }
.ult-track {
  position: relative; width: 280px; height: 20px; overflow: hidden;
  background: rgba(14,16,22,.85); border: 3px solid var(--line); border-radius: 12px;
}
#ultFill {
  height: 100%; width: 0%; border-radius: 8px;
  background: linear-gradient(90deg, #6a5020, #c8a24d, #ffe27a);
  transition: width .2s linear;
}
#ultText {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 12px; color: #fff6d8; text-shadow: 0 1px 2px #000;
}
#ultBar.full .ult-track { border-color: #ffd34d; }

/* ═══ 플레이어 그리드 선택 ═══ */
.player-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
  gap: 10px; max-height: 56vh; overflow-y: auto; margin-top: 10px;
}
.pg-cell {
  border: 3px solid var(--line); border-radius: 14px; padding: 8px 4px;
  background: rgba(255,255,255,.05); text-align: center; cursor: pointer;
  transition: transform .1s, border-color .15s;
}
.pg-cell:hover { transform: translateY(-3px); border-color: #ffd34d; background: rgba(255,211,77,.12); }
.pg-cell.me { border-color: #7fb0e0; }
.pg-face {
  width: 56px; height: 56px; border-radius: 50%; background: #1c222c;
  border: 2px solid var(--line); display: block; margin: 0 auto 4px;
}
.pg-name { font-size: 13px; color: #eef2f8; word-break: break-all; }
.pg-lv { font-size: 11px; color: var(--dim); }

/* ═══ 농장 ═══ */
#farmGrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 8px; }
.farm-cell {
  height: 84px; border: 3px solid var(--line); border-radius: 12px;
  background: rgba(120,90,50,.25); display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 2px; text-align: center;
}
.farm-cell small { font-size: 11px; color: #e8dcc0; line-height: 1.2; }
.farm-cell.empty { background: rgba(255,255,255,.03); }
.farm-cell.ripe { border-color: #7fe08a; background: rgba(120,220,140,.2); cursor: pointer; }
#farmSeeds { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
#farmWindow { width: 420px; max-width: 94vw; }
#titleWindow, #dailyWindow, #jobBookWindow { width: 560px; max-width: 94vw; }
#worldWindow, #friendWindow { width: 480px; max-width: 94vw; }
#friendAdd { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }

/* ═══ 마법 연산 창 ═══ */
#mathCast {
  position: fixed; inset: 0; z-index: 420; background: rgba(10,14,26,.72);
  display: flex; align-items: center; justify-content: center;
}
#mathCast.hidden { display: none; }
.math-inner {
  width: 380px; max-width: 92vw; padding: 22px; text-align: center;
  background: linear-gradient(170deg, #1a2438, #141a2a);
  border: 4px solid #6a8ad0; border-radius: 18px;
  box-shadow: 0 0 40px rgba(106,138,208,.45);
}
.math-title { font-size: 14px; color: #bfd4ff; margin-bottom: 10px; }
.math-q { font-size: 40px; color: #fff; margin: 6px 0 14px; letter-spacing: 1px; }
.math-track {
  height: 12px; background: rgba(0,0,0,.5); border-radius: 8px; overflow: hidden;
  border: 2px solid #4a5a80;
}
#mathBar { height: 100%; width: 100%; background: linear-gradient(90deg, #ff6a6a, #ffd34d, #6ad0ff); }
.math-time { font-size: 13px; color: #ffd34d; margin: 6px 0 12px; }
#mathA { font-size: 20px; text-align: center; }
.story-cur { border-color: #ffd34d !important; background: rgba(255,211,77,.12) !important; }
#storyWindow { width: 620px; max-width: 95vw; }
#jobInfoWindow { width: 460px; max-width: 94vw; }

/* ═══ 화질: 가장자리 비네트 (GPU 3D 비용 0) ═══ */
#gfxVignette {
  position: fixed; inset: 0; pointer-events: none; z-index: 41;
  background: radial-gradient(ellipse at center, transparent 58%, rgba(6,9,15,.34) 100%);
}

/* ═══ 업데이트 내역 · 은행 · 도감 ═══ */
#bankWindow { width: 420px; max-width: 94vw; }
#codexWindow, #patchWindow { width: 560px; max-width: 94vw; }
#tpZoneWindow { width: 460px; max-width: 94vw; }
.patch-block {
  border: 3px solid var(--line); border-radius: 12px;
  padding: 10px 12px; margin-bottom: 10px; background: rgba(255,255,255,.04);
}
.patch-head { color: #ffd34d; font-size: 15px; margin-bottom: 6px; }
.patch-head small { color: var(--dim); font-size: 11px; margin-left: 6px; }
.patch-item { font-size: 13px; line-height: 1.55; color: #dfe6f2; }

/* ═══ 목표 HUD · 캐시 상점 ═══ */
#goalHud {
  position: fixed; top: 12px; left: 50%; transform: translateX(-50%);
  z-index: 55; pointer-events: none;
  background: rgba(14,18,26,.78); border: 3px solid var(--line); border-radius: 12px;
  padding: 6px 14px; font-size: 13px; color: #ffe9b0;
  font-family: 'BMDOHYEON'; text-shadow: 0 1px 2px #000;
}
#cashWindow { width: 560px; max-width: 94vw; }
.nick-swatches { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0 10px; }
.nick-sw {
  width: 34px; height: 34px; border-radius: 50%; cursor: pointer;
  border: 3px solid var(--line); box-shadow: 0 2px 0 rgba(0,0,0,.4);
}
.nick-sw:hover { transform: scale(1.12); border-color: #ffd34d; }

/* ═══ v0.9 ═══ */
#coordHud {
  position: fixed; transform: translateX(-50%); z-index: 56; pointer-events: none;
  background: rgba(14,18,26,.8); border: 2px solid var(--line); border-radius: 10px;
  padding: 3px 10px; font-size: 12px; color: #bfe2ff; font-family: 'BMDOHYEON';
}
.patch-major {
  background: linear-gradient(90deg, #7a2a2a, #c8a24d, #7a2a2a);
  color: #fff; text-align: center; font-size: 15px; letter-spacing: 1px;
  border-radius: 8px; padding: 4px 0; margin-bottom: 8px;
  text-shadow: 0 1px 2px #000; animation: majorPulse 1.6s ease-in-out infinite;
}
@keyframes majorPulse { 0%,100% { filter: brightness(1) } 50% { filter: brightness(1.25) } }
#invTabs { margin-bottom: 6px; }
#dialogueBox .dlg-btn { }
#dlgPrev { order: 0; }
#dlgNext { order: 2; }

/* ═══ v1.0 UI 정리 ═══ */
#pauseMenu .pause-inner, #pauseMenu {  }
#pauseMenu .pause-col {
  display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px;
  max-height: 72vh; overflow-y: auto; padding-right: 4px;
}
#pauseMenu .pause-btn { width: 100%; margin: 0; font-size: 14px; padding: 10px 6px; }
#inventoryWindow {
  top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important; bottom: auto !important;
}
.login-card { max-height: 94vh; overflow-y: auto; }
#bugInput {
  width: 100%; background: #1c222c; color: #dfe6f2; border: 3px solid var(--line);
  border-radius: 10px; padding: 8px; font-family: 'BMDOHYEON'; font-size: 13px;
}
#commWindow, #bugWindow { width: 520px; max-width: 94vw; }
#coordHud { font-size: 11px; padding: 2px 8px; opacity: .92; }
@media (max-width: 900px) {
  .game-window { max-height: 88vh; overflow-y: auto; }
  #ultBtn { width: 46px; height: 46px; font-size: 22px; }
  .ult-track { width: 200px; }
  #pauseMenu .pause-col { max-height: 64vh; }
  #mapWindow { width: 96vw; }
}
@media (max-height: 480px) and (orientation: landscape) {
  .login-card { max-height: 92vh; overflow-y: auto; padding: 10px 14px; }
  .login-card .man-title { font-size: 18px; margin: 4px 0; }
  .game-window { max-height: 90vh; overflow-y: auto; }
}

/* ═══ v1.1 ═══ */
#invWindow { top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important; bottom: auto !important; }
#cutsceneBars { position: fixed; inset: 0; z-index: 300; pointer-events: none; }
#cutsceneBars.hidden { display: none; }
.cs-bar { position: absolute; left: 0; right: 0; height: 14vh; background: #000; }
.cs-bar.top { top: 0; } .cs-bar.bot { bottom: 0; }
#cutsceneText { position: absolute; bottom: 16vh; left: 0; right: 0; text-align: center;
  font-family: 'BMDOHYEON'; font-size: 20px; color: #ffe9b0; text-shadow: 0 2px 4px #000; }
#cutsceneSkip { position: absolute; top: 4vh; right: 3vw; pointer-events: auto;
  background: rgba(20,24,34,.8); color: #dfe6f2; border: 2px solid var(--line);
  border-radius: 10px; padding: 6px 12px; font-family: 'BMDOHYEON'; cursor: pointer; }
.comm-img { max-width: 220px; max-height: 160px; border-radius: 10px;
  border: 2px solid var(--line); margin-top: 4px; display: block; }
.comm-cwrap { margin-top: 4px; }
.comm-c { font-size: 12px; color: #c8d4e8; margin: 2px 0; }
.comm-cin { flex: 1; background: #1c222c; color: #dfe6f2; border: 2px solid var(--line);
  border-radius: 8px; padding: 3px 6px; font-family: 'BMDOHYEON'; font-size: 12px; }
.comm-imgbtn { cursor: pointer; padding: 6px 10px; border-radius: 10px; }

/* ═══ v1.2 ═══ */
body.cutscene #hud, body.cutscene #statusHud, body.cutscene #skillBar,
body.cutscene #chatBox, body.cutscene #coordHud, body.cutscene #ultBar,
body.cutscene #interactHint, body.cutscene #sysLog, body.cutscene .game-window,
body.cutscene #mobileControls { display: none !important; }
#invWindow { position: fixed !important; top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important; width: 540px; max-width: 94vw;
  bottom: auto !important; right: auto !important; }
#invGrid { min-height: 120px; }

/* ═══ v1.4 인벤 개편 · 룬 ═══ */
#invWindow { width: 560px; }
#invTop { display: flex; gap: 10px; justify-content: center; align-items: stretch; margin-bottom: 8px; }
.inv-eqcol { display: flex; flex-direction: column; gap: 8px; justify-content: center; }
.inv-char { display: flex; flex-direction: column; align-items: center; gap: 6px; }
#invChar { background: radial-gradient(circle at 50% 30%, #2a3450, #171d2c);
  border: 3px solid var(--line); border-radius: 14px; }
#invStats { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-bottom: 8px; }
.inv-stat { background: rgba(255,255,255,.05); border: 2px solid var(--line);
  border-radius: 10px; text-align: center; padding: 7px 4px; font-size: 13px; color: #ffe9b0; }
#invSkills { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-bottom: 8px; }
.inv-sk { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.inv-sk small { font-size: 11px; color: #cfd8ea; text-align: center; }
#runeWindow { width: 620px; max-width: 95vw; }
#runeSlots { display: flex; gap: 10px; justify-content: center; margin-bottom: 10px; }
.rune-slot { width: 92px; height: 64px; border: 3px dashed var(--line); border-radius: 12px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  font-size: 20px; color: #cfd8ea; background: rgba(255,255,255,.04); }
.rune-slot.has { border-style: solid; border-color: #ffd34d; cursor: pointer; }
.rune-slot small { font-size: 10px; }
#runeList { display: grid; grid-template-columns: repeat(auto-fill, minmax(108px, 1fr));
  gap: 8px; max-height: 46vh; overflow-y: auto; padding-right: 4px; }
.rune-card { border: 2px solid var(--line); border-radius: 10px; padding: 8px 6px;
  text-align: center; background: rgba(255,255,255,.05); cursor: pointer; font-size: 12px; }
.rune-card .ri { font-size: 20px; display: block; }
.rune-card small { display: block; color: var(--dim); font-size: 10px; margin-top: 2px; }
.rune-card em { display: block; color: #7fe08a; font-style: normal; font-size: 10px; }
.rune-card.lock { opacity: .38; cursor: default; }
.rune-card.on { border-color: #ffd34d; }

/* ═══ v1.5 ═══ */
#sysLog { position: fixed; top: 54px; left: 12px; z-index: 54; pointer-events: none;
  display: flex; flex-direction: column; gap: 4px; max-width: 340px; }
.sys-line { background: rgba(12,16,24,.72); border-left: 3px solid #6a8ad0;
  color: #cfe0ff; font-size: 12px; padding: 4px 8px; border-radius: 0 8px 8px 0;
  font-family: 'BMDOHYEON'; transition: opacity .8s; }
.sys-line.fade { opacity: 0; }
#dlgPrev, #dlgNext { position: absolute !important; bottom: 14px !important;
  top: auto !important; left: auto !important; }
#dlgNext { right: 16px !important; }
#dlgPrev { right: 92px !important; }

/* ═══ v1.7 ═══ */
.man-title { font-family: 'Black Han Sans', 'BMDOHYEON'; font-size: 58px; letter-spacing: 3px;
  background: linear-gradient(180deg, #ffe9a0 0%, #ffb84d 55%, #c8742a 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 4px 0 #5a3a12) drop-shadow(0 8px 16px rgba(0,0,0,.45));
  margin-bottom: 30px !important; transform: rotate(-1.5deg); }
#mainMenu .menu-btn, .pause-btn, .btn-long, .btn-gold, .btn-dark, .tab-btn
  { font-family: 'Jua', 'BMDOHYEON'; }
.win-title { font-family: 'Black Han Sans', 'BMDOHYEON'; letter-spacing: 1px; }
.season-banner { background: linear-gradient(90deg, #2a4a8a, #4d9ac8, #2a4a8a);
  color: #fff; text-align: center; font-family: 'Black Han Sans'; font-size: 16px;
  letter-spacing: 2px; border-radius: 10px; padding: 6px 0; margin-bottom: 10px;
  text-shadow: 0 2px 3px #000; }
.pause-spacer { visibility: hidden; }
#dlgClose { top: 10px; right: 10px; }
.set-row { display: flex; justify-content: space-between; align-items: center;
  padding: 8px 2px; font-size: 14px; }
.shot-thumb { width: 150px; height: 92px; object-fit: cover; border-radius: 10px;
  border: 3px solid var(--line); cursor: pointer; margin: 4px; }
.shot-thumb:hover { border-color: var(--gold); }
#shotGrid { display: flex; flex-wrap: wrap; max-height: 50vh; overflow-y: auto; }
#bugImgPrev { max-width: 260px; }
/* 모바일 팩 v2 */
@media (max-width: 900px) {
  .man-title { font-size: 40px; }
  #mobileControls button, .mob-btn { transform: scale(1.12); }
  .pause-btn { font-size: 15px; padding: 12px 6px; }
  .win-title { font-size: 17px; }
  input, select, textarea { font-size: 16px; }
}

/* ═══ v1.8 ═══ */
.auth-title { font-size: 30px !important; transform: none !important; margin-bottom: 14px !important; }
#coordHud { left: 12px !important; transform: none !important; top: 88px !important; }
#partyWindow { top: 150px !important; }
.tag-admin { background: linear-gradient(90deg,#ffe27a,#f4f4fa,#f0bd4e);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  font-weight: bold; text-shadow: 0 0 6px rgba(255,220,120,.6); }
.tag-tester { background: linear-gradient(90deg,#bfeaff,#5fc8ff,#bfeaff);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  font-weight: bold; text-shadow: 0 0 6px rgba(120,200,255,.6); }
#shutdownOverlay { position: fixed; inset: 0; z-index: 9999; background: rgba(6,8,14,.94);
  display: flex; align-items: center; justify-content: center; }
#shutdownOverlay .sd-box { text-align: center; font-family: 'BMDOHYEON'; }
#shutdownOverlay .sd-title { font-size: 34px; color: var(--gold); font-family: 'Black Han Sans'; }
#shutdownOverlay .sd-msg { color: #bfd2ea; margin: 10px 0 18px; }
#shutdownOverlay .sd-count { font-size: 64px; color: #fff; font-family: 'Black Han Sans';
  animation: majorPulse 1s ease-in-out infinite; }
.bug-row span:hover { color: #ffe9b0; }

/* ═══ v1.9 ═══ */
#coordHud { top: 224px !important; }
#partyWindow { top: 282px !important; }
#fpsHud { position: fixed; right: 12px; top: 60px; z-index: 56; background: rgba(14,18,26,.8);
  border: 2px solid var(--line); border-radius: 10px; padding: 3px 10px;
  font: 12px 'BMDOHYEON'; color: #9fe0a8; pointer-events: none; }
.game-window { zoom: var(--uiScale, 1); }
#extraSet select, #extraSet input[type=range] { max-width: 150px; }
#extraSet { max-height: 40vh; overflow-y: auto; border-top: 2px solid var(--line);
  margin-top: 10px; padding-top: 6px; }

/* ═══ v2.1 ═══ */
#coordHud { top: auto; }
.it-ico { width: 30px; height: 30px; vertical-align: middle; border-radius: 8px; }
.s-ico .it-ico { width: 34px; height: 34px; }
.season-tab { background: linear-gradient(90deg,#2a4a8a,#4d9ac8); color: #fff;
  border: 0; border-radius: 10px 10px 0 0; padding: 8px 22px;
  font-family: 'Black Han Sans'; font-size: 15px; letter-spacing: 2px; }
.season-tab.on { filter: brightness(1.15); box-shadow: 0 -2px 0 var(--gold) inset; }
#dlgChoice { display: flex; gap: 10px; justify-content: space-between; }
.dlg-reject { background: linear-gradient(180deg,#c84a4a,#8a2e2e); color: #fff;
  border: 0; border-radius: 12px; padding: 10px 14px; font-family: 'Jua'; cursor: pointer; }
.dlg-accept { background: linear-gradient(180deg,#4ac86a,#2e8a44); color: #fff;
  border: 0; border-radius: 12px; padding: 10px 14px; font-family: 'Jua'; cursor: pointer; }
.dlg-reject:hover, .dlg-accept:hover { filter: brightness(1.12); }

/* v2.4 */
button, .btn-mini, .btn-dark, .btn-long, .pause-btn, .menu-btn, .tab-btn { white-space: nowrap; }
.inv-sk small { display: block; text-align: center; white-space: nowrap; }
#invUltCell { cursor: pointer; outline: 2px solid var(--gold); border-radius: 12px; }

/* v2.5 로고 리디자인 + 타이틀 간격(겹침 해소) */
#mainMenu { display: flex; flex-direction: column; align-items: center;
  justify-content: flex-start; padding-top: 5vh; gap: 0; }
#mainMenu .game-logo { position: static; font-size: 84px; letter-spacing: 6px;
  background: linear-gradient(180deg, #fff3c4 0%, #ffd76a 38%, #ff9d3c 62%, #b85c1e 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 4px 0 #4a2c0a) drop-shadow(0 9px 14px #000c);
  animation: logoFloat 3.4s ease-in-out infinite; }
#mainMenu .game-logo::after { content: ""; }
#mainMenu .game-logo-sub { position: static; margin: 2px 0 34px; letter-spacing: 8px;
  color: #ffe9b0cc; text-shadow: 0 2px 8px #000; font-size: 13px; }
#mainMenu .menu-btn { backdrop-filter: blur(4px); }
@keyframes logoFloat { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-6px) } }
.name-title { color: var(--gold); }


/* ═══ v2.6 — gaden 톤 GUI 리스킨(초다크·플랫·실서비스 감) ═══ */
@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css");
:root { --bg: #07080a; --panel: #0e1013; --line: #1d2127; --gold: #e8b64c;
  --dim: #8a919c; --danger: #e05a5a; }
body, button, input, select, textarea { font-family: Pretendard, 'Jua', sans-serif; }
.game-window { background: #0e1013f2; border: 1px solid var(--line);
  border-radius: 14px; box-shadow: 0 18px 50px #000a; }
.win-title { font-family: Pretendard; font-weight: 800; letter-spacing: -.2px; }
.menu-btn, .btn-long, .btn-dark, .pause-btn {
  background: #14171c; border: 1px solid #232830; border-radius: 12px;
  box-shadow: none; transition: .15s; }
.menu-btn:hover, .btn-long:hover { background: #1b1f26; border-color: #2e3542;
  transform: translateY(-1px); }
.btn-mini { background: #14171c; border: 1px solid #232830; border-radius: 9px; }
input, select, textarea { background: #0a0c0f; border: 1px solid #232830; border-radius: 10px; }
#mainMenu { background: linear-gradient(#07080acc, #07080a66); }

/* ═══════════════ v3.0 IMPECCABLE — "모험가의 장부" 테마 ═══════════════
   시스템 무변경·비주얼 전면 교체. 다이아 컷 캐릭터와 호응하는
   양피지×잉크×딥골드, 비대칭 다이아 컷 패널, 스탬프 모션 1종. */
@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css");
:root {
  --paper: #f3e9d2; --paper2: #eadfc2; --shade: #e0d2ac;
  --ink: #1e2a3a; --ink2: #2c3c52; --gold: #c9962e; --gold2: #a87b1f;
  --seal: #b5402f; --moss: #4f7a4a;
  /* 구 변수 재매핑 → 922줄 전역 전파 */
  --bg: var(--paper); --panel: var(--paper); --line: var(--ink);
  --dim: #6b6047; --danger: var(--seal); --text: var(--ink);
}
body { color: var(--ink); }
/* ── 창: 양피지 + 잉크 2px 보더 + 다이아 컷 모서리 + 스탬프 오프셋 그림자 ── */
.game-window {
  background: linear-gradient(160deg, #f6eeda, var(--paper) 55%, var(--paper2));
  border: 2px solid var(--ink);
  border-radius: 18px 6px 18px 6px;   /* 다이아 컷 시그니처 */
  box-shadow: 5px 6px 0 #1e2a3a2e;
  color: var(--ink);
  animation: stampIn .16s ease-out;
}
@keyframes stampIn { from { transform: scale(.975); opacity: .6 } to { transform: scale(1); opacity: 1 } }
@media (prefers-reduced-motion: reduce) { .game-window { animation: none } }
.win-title {
  color: var(--ink); font-family: Pretendard; font-weight: 800; letter-spacing: -.2px;
  border-bottom: 2px solid var(--ink); padding-bottom: 8px; margin-bottom: 12px;
  background: none; text-shadow: none;
}
.win-close { background: var(--ink); color: var(--paper); border: 0; border-radius: 10px 3px 10px 3px; }
.win-close:hover { background: var(--seal); }
/* ── 버튼: 지류 위 잉크 스탬프, 호버=잉크 반전 ── */
.menu-btn, .btn-long, .btn-dark, .pause-btn, .tab-btn, .btn-mini, button.gold {
  background: #f8f1df; color: var(--ink);
  border: 2px solid var(--ink); border-radius: 12px 4px 12px 4px;
  box-shadow: 3px 3px 0 #1e2a3a26; text-shadow: none; backdrop-filter: none;
  font-family: Pretendard; font-weight: 700; transition: .12s;
}
.menu-btn:hover, .btn-long:hover, .btn-dark:hover, .pause-btn:hover, .tab-btn:hover, .btn-mini:hover {
  background: var(--ink); color: var(--paper); transform: translate(1px, 1px);
  box-shadow: 2px 2px 0 #1e2a3a26;
}
.tab-btn.on, .tab-btn.active { background: var(--ink); color: var(--gold); }
.btn-dark { background: var(--ink); color: var(--paper); }
.btn-dark:hover { background: var(--seal); color: #fff; }
/* 위험/확정 계열 */
[id*="Delete"], [id*="btnBan"], #hkSell { border-color: var(--seal); color: var(--seal); }
[id*="Delete"]:hover, [id*="btnBan"]:hover, #hkSell:hover { background: var(--seal); color: #fff; }
/* ── 입력 ── */
input, select, textarea {
  background: #fdf8ec; color: var(--ink);
  border: 2px solid var(--ink2); border-radius: 10px 3px 10px 3px;
}
input::placeholder, textarea::placeholder { color: #9a8c6a; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--gold2); box-shadow: 2px 2px 0 #c9962e40; }
/* ── 타이틀 화면: 새벽 지도 ── */
#mainMenu { background: linear-gradient(#f7efdccc 0%, #f3e9d2d9 40%, #e7d8b4e6 100%); }
#mainMenu .game-logo {
  background: linear-gradient(180deg, var(--ink) 0%, var(--ink) 55%, var(--gold2) 56%, var(--gold) 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(3px 3px 0 #1e2a3a30);
}
#mainMenu .game-logo-sub { color: var(--ink2); text-shadow: none; opacity: .75; }
#mainMenu .menu-btn { min-width: 300px; background: #f8f1dfF2; }
/* ── HUD: 잉크 반전 칩(3D 월드 위 가독) ── */
#hud > div, #chatBox, #coordHud, #inviteList, #interactHint, #dialogueBox, #bossHud, #goalHud {
  background: #1e2a3aeb; color: #f3e9d2;
  border: 2px solid #0f1722; border-radius: 12px 4px 12px 4px;
  box-shadow: 3px 3px 0 #0f172233;
}
#chatLog, #chatLog * { color: #f3e9d2; }
#chatInput { background: #16202e; color: #f3e9d2; border-color: #0f1722; }
#interactHint b, #dialogueBox b, #dlgNpcName { color: var(--gold); }
#dlgText { color: #f3e9d2; }
/* HP/MP/EXP 바 잉크 프레임 */
.bar, .hp-bar, .mp-bar, .exp-bar { border: 2px solid #0f1722; border-radius: 8px 3px 8px 3px; }
/* ── 알림/배너 ── */
#notice, .notice, #zoneBanner { background: var(--ink); color: var(--paper);
  border: 2px solid #0f1722; border-radius: 14px 4px 14px 4px; box-shadow: 4px 4px 0 #1e2a3a33; }
#zoneBanner { color: var(--gold); font-family: Pretendard; font-weight: 800; }
/* ── 스크롤바 ── */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--paper2); }
::-webkit-scrollbar-thumb { background: var(--ink); border-radius: 6px; border: 2px solid var(--paper2); }
/* ── 세부 정돈 ── */
.pp-empty, small, .dim { color: var(--dim); }
.comm-img { border: 2px solid var(--ink); border-radius: 10px 3px 10px 3px; }
#invUltCell { outline-color: var(--gold2); }
hr { border-color: #d6c6a0; }
