@charset "utf-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;700;900&family=Rajdhani:wght@500;600;700&display=swap');

:root {
    /* 공통 상수 */
    --ak-bg: #050505; 
    --ak-panel: #111; 
    --ak-text: #eee;
    
    /* 역할군 고유색 (테마 영향 없음) */
    --role-atk: #ff3333; 
    --role-def: #3388ff; 
    --role-hlr: #33ff33;

    /* ★ 기본 테마 (Yellow - Original) */
    --theme-color: #f5d300;       /* 메인 강조색 */
    --theme-rgb: 245, 211, 0;     /* 그림자용 RGB */
    --theme-border: #333;         /* 기본 테두리 */
    --theme-border-hover: #eee;   /* 호버시 테두리 */
    --theme-bg-sub: #111;         /* 서브 배경 */
}

/* ★ SF 블루 테마 (Sky Blue) */
[data-theme="blue"] {
    --theme-color: #00eaff;       /* 네온 사이언 */
    --theme-rgb: 0, 234, 255;
    --theme-border: #2a4a50;      /* 푸른빛 도는 테두리 */
    --theme-border-hover: #00eaff;
    --theme-bg-sub: #081015;      /* 깊은 네이비 배경 */
}

/* ★ 화이트 테마 (White / Minimal) */
[data-theme="white"] {
    --theme-color: #ffffff;       /* 순백색 */
    --theme-rgb: 255, 255, 255;
    --theme-border: #444;         
    --theme-border-hover: #fff;
    --theme-bg-sub: #151515;
}

/* 기본 레이아웃 */
.ak-wrapper { 
    padding: 5px 20px !important;
    background: var(--ak-bg); 
    color: var(--ak-text); 
    font-family: 'Noto Sans KR', sans-serif; 
    min-height: 800px; 
    border: 1px solid var(--theme-border); 
    border-radius: 12px; /* 이 숫자가 클수록 더 동그랗게 변합니다 */
    overflow: hidden;    /* 내부 요소들이 둥근 모서리 밖으로 튀어나가지 않게 방지 */
    box-sizing: border-box; 
    transition: border-color 0.3s; 
    /* 전체 너비를 85%~90% 수준으로 제한 */
    width: 80%; 
    /* 화면이 너무 커질 경우를 대비한 최대치 */
    max-width: 1100px; 
    /* 상하 0, 좌우 자동(Auto)으로 설정하여 중앙 배치 */
    margin: 0 auto;
    
}

/* 헤더 영역 */
.ak-header { 
    border-bottom: 2px solid var(--theme-color); 
    padding-bottom: 10px; 
    margin-bottom: 20px; 
    display: flex; 
    justify-content: space-between; 
    align-items: flex-end; 
    transition: border-color 0.3s; 
}
.ak-header .title { 
    font-family: 'Rajdhani', sans-serif; 
    font-size: 24px; 
    font-weight: 900; 
    color:#fff; 
    letter-spacing: 1px; 
    text-transform: uppercase; 
    text-shadow: 0 0 10px rgba(var(--theme-rgb), 0.3); 
    transition: text-shadow 0.3s; 
}
.user-info { color:#888; font-size:12px; font-family:'Rajdhani'; display:flex; gap:15px; align-items:center; }

/* 테마 변경 버튼 스타일 */
.theme-toggle-btn { background: transparent; border: 1px solid var(--theme-border); color: #666; padding: 3px 10px; font-size: 11px; cursor: pointer; font-family: 'Rajdhani'; font-weight: bold; transition: 0.3s; display:flex; align-items:center; gap:5px; }
.theme-toggle-btn:hover { color: var(--theme-color); border-color: var(--theme-color); text-shadow: 0 0 5px var(--theme-color); box-shadow: 0 0 10px rgba(var(--theme-rgb), 0.2); }

/* 탭 & 컨트롤 */
.ak-tabs { display: flex; gap: 2px; margin-bottom: 20px; }
.ak-tab { background: #222; border: 1px solid #444; color: #888; padding: 10px 20px; font-family: 'Rajdhani'; font-weight: bold; cursor: pointer; border-bottom: none; transition: 0.3s; }
.ak-tab:hover { background: #333; color: #fff; transform: translateY(-2px); }
.ak-tab.active { background: var(--theme-color); color: #000; border-color: var(--theme-color); box-shadow: 0 0 15px rgba(var(--theme-rgb), 0.4); }
.ak-tab-content { display: none; } .ak-tab-content.active { display: block; animation: fadeIn 0.3s; }
@keyframes fadeIn { from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:translateY(0);} }

/* 컨트롤 버튼 */
.ak-controls { margin-bottom: 20px; display:flex; justify-content:flex-start; gap:10px; }
.ak-btn { background: transparent; border: 1px solid #666; color: #ddd; padding: 8px 20px; cursor: pointer; font-family: 'Rajdhani'; font-weight: bold; transition:0.2s; }
.ak-btn:hover { border-color: var(--theme-border-hover); color: #fff; transform: translateY(-2px); box-shadow: 0 0 10px rgba(255,255,255,0.1); }
.ak-btn.point { background: var(--theme-color); color: #111; border: none; box-shadow: 0 0 10px rgba(var(--theme-rgb), 0.2); }
.ak-btn.point:hover { background: #fff; color:#000; box-shadow: 0 0 15px rgba(255,255,255,0.5); }
.ak-btn.danger { background: #ff3333; color: #fff; border: none; }

/* 카드 스타일 */
.ak-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 15px; }

.op-card { 
    background: var(--theme-bg-sub); 
    height: 280px; 
    position: relative; 
    border: 1px solid var(--theme-border); 
    cursor: pointer; 
    overflow: hidden;
    border-top: 3px solid #444; 
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.op-card:hover { transform: translateY(-7px); border-color: var(--theme-border-hover); }

.op-img { 
    width: 100%; height: 100%; 
    background-size: cover; background-position: center top; 
    filter: grayscale(0.3); 
    transition: filter 0.5s ease, transform 0.5s ease; 
}
.op-card:hover .op-img { filter: grayscale(0); transform: scale(1.05); }

.op-info { position: absolute; bottom: 0; width: 100%; background: linear-gradient(to top, #000 50%, transparent); padding: 60px 10px 10px; }
.op-name { font-weight: 900; font-size: 16px; color:#fff; text-shadow: 0 0 5px #000; }
.op-meta { font-size: 11px; font-family: 'Rajdhani'; font-weight: bold; color: var(--theme-color); margin-top:5px; transition: color 0.3s; }

/* ★ 수정: 직업별 강조 색상 (이름색 제거, 메타 텍스트에 색상 적용) */
.role-Attacker { border-top-color: var(--role-atk); }
.role-Attacker:hover { border-color: var(--role-atk); box-shadow: 0 10px 30px rgba(255, 50, 50, 0.3); }
.role-Attacker .op-meta { color: var(--role-atk); } /* 공격형 텍스트 색상 고정 */

.role-Defender { border-top-color: var(--role-def); }
.role-Defender:hover { border-color: var(--role-def); box-shadow: 0 10px 30px rgba(50, 130, 255, 0.3); }
.role-Defender .op-meta { color: var(--role-def); } /* 방어형 텍스트 색상 고정 */

.role-Healer { border-top-color: var(--role-hlr); }
.role-Healer:hover { border-color: var(--role-hlr); box-shadow: 0 10px 30px rgba(50, 255, 50, 0.3); }
.role-Healer .op-meta { color: var(--role-hlr); } /* 지원형 텍스트 색상 고정 */


/* 던전 & 기타 */
.dungeon-setup { margin-bottom: 20px; padding: 20px; background: #111; border: 1px solid var(--theme-border); display:flex; justify-content:space-between; align-items:center; }
.dungeon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-top: 20px; }

.dg-card { background: var(--theme-bg-sub); border: 1px solid var(--theme-border); cursor: pointer; transition: 0.3s; position: relative; height: 160px; overflow: hidden; display: flex; flex-direction: column; border-left: 4px solid #666; }
.dg-card:hover { border-color: var(--theme-color); transform: translateY(-5px); box-shadow: 0 10px 30px rgba(0,0,0,0.5); }
.dg-bg { position: absolute; top:0; left:0; width:100%; height:100%; background-size: cover; background-position: center; filter: brightness(0.3); transition: 0.5s; }
.dg-card:hover .dg-bg { filter: brightness(0.6); transform: scale(1.05); }

.dg-content { position: relative; z-index: 2; padding: 20px; height: 100%; display: flex; flex-direction: column; justify-content: center; text-shadow: 0 2px 5px #000; }
.dg-rank { font-family: 'Rajdhani'; font-weight: 900; font-size: 24px; color: var(--theme-color); margin-bottom: 5px; transition: color 0.3s; }
.dg-title { font-size: 18px; font-weight: bold; color: #fff; }
.dg-info { font-size: 12px; color: #ccc; margin-top: 5px; font-family: 'Noto Sans KR'; }
.dg-actions { position: absolute; top: 10px; right: 10px; z-index: 3; display: none; gap: 5px; }
.dg-card:hover .dg-actions { display: flex; }
.dg-btn-mini { background: rgba(0,0,0,0.8); color: #fff; border: 1px solid #fff; padding: 3px 8px; font-size: 10px; cursor: pointer; }
.dg-btn-mini:hover { background: #fff; color: #000; }

/* Battle Visuals */
/* 상단 박스 가로 폭 및 이미지 높이 조절 (잘려도 되게끔 축소) */
.battle-scene { 
    height: 800px !important; /* 전체 높이를 650 -> 480으로 대폭 축소 */
    display: flex !important; 
    justify-content: center; 
    align-items: center; 
    gap: 60px; /* 캐릭터 사이 간격을 줄여 가로 폭 최적화 */
    background: #000; 
    border: 2px solid var(--theme-border); 
    overflow: hidden; 
}
.vis-fighter { 
    width: 200px; /* 가로폭을 260 -> 220으로 줄임 */
    height: 300px;
    display: flex; 
    flex-direction: column; 
}
.vis-hp-bar { 
    width: 100%; 
    height: 12px; 
    background: #333; 
    margin-bottom: 5px; 
    border: 1px solid #000; 
    flex-shrink: 0;
}
.vis-img-box { 
    height: 280px !important; /* 이미지 높이를 400 -> 280으로 축소 (위아래 절삭) */
    background: #111; 
    border: 2px solid #666; 
    background-size: cover; 
    background-position: center top; 
}

.vis-log-box { 
    height: 50px; 
    background: #000; 
    border: 2px solid #fff; 
    border-radius: 6px; 
    margin-top: 10px; 
    padding: 5px; 
    text-align: center; 
    display: flex; 
    flex-direction: column; 
    justify-content: center; 
    box-shadow: 0 5px 0 #333; 
    flex-shrink: 0;
}
.vis-hp-fill { height: 100%; background: #0f0; width: 100%; transition: width 0.3s; }
.vl-action { font-size: 12px; color: #aaa; font-weight:bold; margin-bottom:3px; }
.vl-result { font-size: 16px; font-weight: 900; color: #fff; text-shadow:0 0 5px var(--theme-color); }
.vl-result.crit { color: #ff3333; text-shadow:0 0 10px #ff3333; }
.vl-result.block { color: #3388ff; }
/* VS 글자 위치가 캐릭터 사이 중앙에 오도록 고정 */
.vis-vs { 
    font-size: 100px; 
    font-family: 'Rajdhani'; 
    font-weight: 900; 
    font-style: italic; 
    color: #222; 
    text-shadow: -1px -1px 0 #333, 1px 1px 0 #000; 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%); 
    pointer-events: none; 
}
/* 하단 컨트롤러 전체 영역 */
.battle-controls { 
    height: 160px !important; /* 130px에서 100px로 축소 (흰 줄이 아래로 내려감) */
    flex: none !important;    /* 5:5 비율을 만드는 flex 속성 차단 */
    background: #111; 
    border-top: 3px solid #fff; /* 이게 바로 그 흰색 줄입니다 */
    display: flex; 
    padding: 2px 10px; 
    gap: 2px; 
    align-items: center; 
    overflow: visible !important;
}
/* 전투 로그: 가로 너비를 넓힘 */
.bc-log { 
    width: 70%; /* 너비를 꽉 채워서 빨간 화살표 영역 확보 */
    height: 80px !important; /* 로그 창을 높이 */ 
    margin-top: 1px !important; /* 흰 선과의 간격 2px */
    margin-bottom: 2px !important; /* 버튼과의 간격 2px */
    background: #000; 
    border: 1px solid #333; 
    color: var(--theme-color); 
    padding: 0px 10px;
    overflow-y: auto; 
    font-family: 'Noto Sans KR', monospace; 
    font-size: 13px; /* 폰트 유지 */
    margin-bottom: 5px;
    transition: color 0.3s; 
}

/* 버튼 영역: 너비를 로그와 맞춰서 확장 */
.bc-actions { 
    width: 100%; /* 로그 창과 동일한 너비로 확장 */
    max-width: 800px; /* 너무 퍼져 보이지 않도록 적정 너비 제한 */
    display: flex;; 
    grid-template-columns: 1fr 1fr; 
    gap: 5px; 
    margin-top: 1px
}

/* 개별 버튼 스타일 */
.bc-btn { 
    min-width: 80px;        /* 최소 너비만 설정 */
    width: auto;            /* 너비를 글자 길이에 맞춤 */
    padding: 0 10px;        /* 좌우 여백을 주어 글자가 한 줄로 나오게 함 */
    height: 30px;           /* 버튼 높이 */
    background: #222; 
    color: #fff; 
    border: 1px solid #555; 
    cursor: pointer; 
    font-weight: bold; 
    display: flex; 
    flex-direction: row; /* 텍스트와 보조설명을 가로로 배치하거나 중앙 정렬 유지 */
    justify-content: center; 
    align-items: center; 
    gap: 10px; /* 내부 글자 간격 */
    font-family:'Rajdhani';
    white-space: nowrap;    /* ★ 중요: 글자가 밑으로 줄바꿈되지 않게 함 */ 
    transition:0.1s; 
}
.bc-btn:hover:not(:disabled) { background: #333; border-color: #fff; transform:translateY(-2px); }
.bc-btn:active:not(:disabled) { transform:translateY(0); }
.bc-btn:disabled { opacity: 0.3; cursor: not-allowed; filter:grayscale(1); }
.bc-btn.atk { border-bottom: 4px solid #fff; } .bc-btn.skill { border-bottom: 4px solid var(--theme-color); color: var(--theme-color); transition: border-color 0.3s, color 0.3s; }
.bc-btn span { font-size:12px; margin-top:5px; color:#888; }

/* Animations & Modal */
.atk-lunge-right { animation: lungeR 0.15s ease-out forwards; } .atk-lunge-left { animation: lungeL 0.15s ease-out forwards; }
@keyframes lungeR { 0%{transform:translateX(0);} 50%{transform:translateX(80px) scale(1.1);} 100%{transform:translateX(0);} }
@keyframes lungeL { 0%{transform:translateX(0);} 50%{transform:translateX(-80px) scale(1.1);} 100%{transform:translateX(0);} }
.hit-shake { animation: hit 0.3s cubic-bezier(.36,.07,.19,.97) both; }
@keyframes hit { 10%, 90% { transform: translate3d(-2px, 0, 0); filter: brightness(2) sepia(1) hue-rotate(-50deg) saturate(5); } 20%, 80% { transform: translate3d(4px, 0, 0); } 30%, 50%, 70% { transform: translate3d(-6px, 0, 0); } 40%, 60% { transform: translate3d(6px, 0, 0); } }
.dmg-float { position: absolute; top: 40%; left: 50%; transform: translate(-50%, -50%); font-size: 60px; font-weight: 900; color: #fff; text-shadow: 3px 3px 0 #000, -1px -1px 0 #ff0000; animation: floatUp 0.8s ease-out forwards; z-index: 100; font-family:'Rajdhani'; pointer-events:none; }
@keyframes floatUp { 0% { opacity:1; transform:translate(-50%,0) scale(0.5); } 50% { transform:translate(-50%,-50px) scale(1.2); } 100% { opacity:0; transform:translate(-50%,-100px) scale(1); } }

/* Modal */
.ak-modal { 
    display: none; /* 기본적으로 제거 */
    position: fixed; 
    top: 0; left: 0; 
    width: 100%; height: 100%; 
    background: rgba(0,0,0,0.95); 
    z-index: 800; 
    justify-content: center; 
    align-items: center; 
    pointer-events: none; /* ★ 평소에는 클릭이 통과되도록 설정 */
    visibility: hidden;   /* ★ 완전하게 숨김 처리 */
}

.ak-modal.active { 
    display: flex !important; 
    pointer-events: auto; /* ★ 활성화되었을 때만 클릭을 가로챔 */
    visibility: visible;   /* ★ 활성화 시에만 보이게 함 */
}
.modal-content { background: var(--ak-bg); border: 1px solid #555; padding: 20px; width: 500px; position: relative; z-index: 801; box-shadow: 0 0 50px #000; }
.dossier-style { width: 900px; height: 600px; padding: 0; display: flex; background: #121212; border: 1px solid #444; }
.ds-left { width: 55%; height: 100%; position: relative; background: #181818; border-right: 2px solid var(--theme-color); transition:border-color 0.3s; }
.ds-img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.ds-right { width: 45%; padding: 30px; display: flex; flex-direction: column; color: #eee; position: relative; }
.ds-header { display: flex; justify-content: space-between; border-bottom: 1px solid #444; padding-bottom: 15px; margin-bottom: 20px; }
.ds-name-group h1 { margin: 0; font-size: 32px; font-weight: 900; }
.ds-stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; background: #222; padding: 15px; margin-bottom: 20px; border-left: 4px solid #555; }
.ds-stat-row { display: flex; justify-content: space-between; font-family: 'Rajdhani'; font-size: 16px; }
.ds-skill-panel { background: rgba(255,255,255,0.05); border: 1px solid #444; padding: 15px; position: relative; margin-bottom: auto; }
.ds-actions { display: flex; gap: 10px; margin-top: 20px; }
.ds-btn { flex: 1; padding: 12px; border: none; cursor: pointer; font-family: 'Rajdhani'; font-weight: 900; font-size: 14px; background: #fff; color: #000; }
.ds-btn:hover { background: var(--theme-color); }
.edit-overlay { position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.95); z-index: 10; padding: 30px; display: none; flex-direction: column; border-left: 2px solid var(--theme-color); }
.ak-input { width: 100%; background: #111; border: 1px solid #444; color: #fff; padding: 10px; font-family:'Rajdhani'; }
.form-group { margin-bottom: 15px; }
.stats-input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.close-btn-abs { position: absolute; top: 10px; right: 10px; background: none; border: none; color: #fff; font-size: 24px; cursor: pointer; z-index: 20; }

/* Sparring UI */
.spar-wrapper { background: #000; border: 1px solid var(--theme-border); padding: 40px; text-align: center; margin-bottom: 20px; transition:border-color 0.3s; }
.spar-title-area h2 { color: var(--theme-color); font-size: 24px; margin-bottom: 5px; font-weight:900; font-family:'Rajdhani'; letter-spacing:1px; transition:color 0.3s; }
.spar-title-area p { color: #666; font-size: 12px; margin-bottom: 30px; }

.spar-match-zone { display: flex; justify-content: center; align-items: center; gap: 30px; margin-bottom: 30px; }

.spar-team { width: 250px; border: 2px solid #333; padding: 15px; background: #080808; transition:0.3s; position:relative; display:flex; flex-direction:column; }
.spar-team.blue { border-color: var(--role-def); }
.spar-team.red { border-color: var(--role-atk); }
.spar-team:hover { transform:translateY(-5px); box-shadow:0 10px 30px rgba(0,0,0,0.5); }

.spar-img-box { width: 100%; height: 310px; background-color: #111; background-size: cover; background-position: center top; background-repeat:no-repeat; margin-bottom: 15px; border: 1px solid #222; transition:0.3s; }
.spar-team:hover .spar-img-box { filter: brightness(1.2); }

.spar-team-label { font-family: 'Rajdhani'; font-weight: bold; font-size: 12px; text-align: left; margin-bottom: 5px; text-transform: uppercase; letter-spacing:1px; }
.spar-team.blue .spar-team-label { color: var(--role-def); }
.spar-team.red .spar-team-label { color: var(--role-atk); }

.spar-vs-txt { font-family: 'Rajdhani'; font-size: 60px; font-weight: 900; font-style: italic; color: #222; text-shadow: -1px -1px 0 #333, 1px 1px 0 #000; user-select:none; }

.spar-btn-area .big-btn { padding: 15px 60px; font-size: 18px; border:none; font-weight:900; letter-spacing:1px; }
.spar-btn-area .big-btn:hover { transform: scale(1.05); box-shadow: 0 0 20px var(--theme-color); }