@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 { background: var(--ak-bg); color: var(--ak-text); font-family: 'Noto Sans KR', sans-serif; min-height: 800px; padding: 20px; border: 1px solid var(--theme-border); box-sizing: border-box; transition: border-color 0.3s; }
.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 { display: flex !important; flex-direction: row !important; justify-content: center; align-items: center; gap: 150px; height: 550px; background: #000; border: 2px solid var(--theme-border); position: relative; overflow: hidden; background-image: radial-gradient(#333 1px, transparent 1px); background-size: 20px 20px; }
.vis-fighter { width: 260px; height: 450px; position: relative; display: flex; flex-direction: column; transition: transform 0.1s; z-index: 2; }
.vis-img-box { flex: 1; background: #111; border: 2px solid #666; background-size: cover; background-position: center top; box-shadow: 0 0 30px rgba(0,0,0,0.8); }
.vis-hp-bar { width: 100%; height: 10px; background: #333; margin-bottom: 8px; border:1px solid #000; }
.vis-hp-fill { height: 100%; background: #0f0; width: 100%; transition: width 0.3s; }
.vis-log-box { height: 80px; background: #000; border: 2px solid #fff; border-radius: 6px; margin-top: 10px; padding: 10px; text-align: center; display: flex; flex-direction: column; justify-content: center; box-shadow: 0 5px 0 #333; }
.vl-action { font-size: 14px; color: #aaa; font-weight:bold; margin-bottom:5px; }
.vl-result { font-size: 20px; 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; }
.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: 45%; left: 50%; transform: translate(-50%, -60%); z-index: 0; pointer-events: none; }

.battle-controls { height: 130px; background: #111; border-top: 3px solid #fff; display: flex; padding: 20px; gap: 20px; align-items: center; }
.bc-log { flex: 1; background: #000; border: 1px solid #333; color: var(--theme-color); padding: 10px; overflow-y: auto; font-family: 'Noto Sans KR', monospace; font-size: 13px; height: 100%; transition: color 0.3s; }
.bc-actions { width: 300px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; height: 100%; }
.bc-btn { background: #222; color: #fff; border: 1px solid #555; cursor: pointer; font-weight: bold; display: flex; flex-direction: column; justify-content: center; align-items: center; font-family:'Rajdhani'; 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: 999; justify-content: center; align-items: center; }
.ak-modal.active { display: flex; }
.modal-content { background: var(--ak-bg); border: 1px solid #555; padding: 20px; width: 500px; position: relative; 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); }