/* ============================================================
   style.css
   talktalke (?�똑?? - ?�역 ?��??�시??   ?�기 ?�어 공�? ?�비??/ ?�페?��? ??�?/ ?�크�??�음

   구조:
     1. CSS 변??& 리셋
     2. ?�단 ??�� (???�비게이??
     3. 공통 버튼
     4. 공통 ?�림
     5. ???�이지
     6. 로그???�이지
     7. 마이?�이지
     8. ?�레???�이지
     9. 관리자 ?�이지
   ============================================================ */

/* ?�?�?�?�?�?� 1. CSS 변??& 리셋 ?�?�?�?�?�?� */
:root {
    --primary:       #FF6B6B;
    --primary-dark:  #e85555;
    --secondary:     #4ECDC4;
    --secondary-dark:#38b2aa;
    --accent:        #FFE66D;
    --accent-dark:   #f0d44c;
    --success:       #6BCB77;
    --danger:        #FF4757;
    --warning:       #FFA502;

    --bg:            #FFF9F0;
    --bg-card:       #FFFFFF;
    --bg-admin:      #F0F4F8;

    --text-primary:  #2D3436;
    --text-secondary:#636E72;
    --text-light:    #B2BEC3;

    --border:        #DFE6E9;
    --shadow-sm:     0 2px 8px rgba(0,0,0,.08);
    --shadow-md:     0 8px 24px rgba(0,0,0,.12);
    --shadow-lg:     0 16px 48px rgba(0,0,0,.16);

    --radius-sm:     12px;
    --radius-md:     20px;
    --radius-lg:     32px;
    --radius-full:   9999px;

    --font:          'Noto Sans KR', sans-serif;
    --transition:    all .25s ease;

    /* ?�단 ??�� ?�이 */
    --tab-bar-h:     64px;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ?�심: ?�크�??�전 차단 */
html, body {
    height: 100%;
    height: 100dvh;
    overflow: hidden;
}

body {
    font-family: var(--font);
    background-color: var(--bg);
    color: var(--text-primary);
    display: flex;
    flex-direction: column;
    line-height: 1.6;
    /* ?단 ?? 공간 ?보 */
    padding-bottom: var(--tab-bar-h);
}

/* 어드민 페이지는 스크롤 허용 */
body.page-admin {
    overflow-y: auto;
    height: 100dvh;
}

img { max-width: 100%; display: block; }
a  { text-decoration: none; color: inherit; }
button { cursor: pointer; font-family: var(--font); border: none; outline: none; }

/* ?�?�?�?�?�?� 2. ?�단 ??�� (???�비게이?? ?�?�?�?�?�?� */
.tab-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: var(--tab-bar-h);
    background: rgba(255,255,255,.97);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-top: 1px solid var(--border);
    display: flex;
    align-items: stretch;
    z-index: 200;
    box-shadow: 0 -4px 24px rgba(0,0,0,.08);
}

.tab-item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    color: var(--text-light);
    font-size: .7rem;
    font-weight: 600;
    transition: var(--transition);
    position: relative;
    cursor: pointer;
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
}

.tab-item .tab-icon {
    font-size: 1.5rem;
    line-height: 1;
    transition: transform .2s ease;
}

.tab-item.active {
    color: var(--primary);
}

.tab-item.active .tab-icon {
    transform: scale(1.15);
}

.tab-item.active::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 32px;
    height: 3px;
    background: var(--primary);
    border-radius: 0 0 4px 4px;
}

/* ?�레????강조 */
.tab-item.tab-play {
    color: var(--bg);
}
.tab-item.tab-play .tab-play-inner {
    width: 52px;
    height: 52px;
    background: linear-gradient(135deg, var(--primary), #ff8e53);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    box-shadow: 0 4px 16px rgba(255,107,107,.5);
    margin-top: -16px;
    border: 3px solid #fff;
}
.tab-item.tab-play .tab-icon {
    font-size: 1.4rem;
}
.tab-item.tab-play span:last-child {
    font-size: .6rem;
    color: #fff;
}
.tab-item.tab-play::before { display: none; }

/* �?navbar???�기�?(?�시 ?�아?�다�? */
.navbar { display: none !important; }

/* ?�?�?�?�?�?� 3. 공통 버튼 ?�?�?�?�?�?� */
.btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 14px 32px;
    background: linear-gradient(135deg, var(--primary), #ff8e53);
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    border-radius: var(--radius-full);
    border: none;
    cursor: pointer;
    transition: var(--transition);
    box-shadow: 0 4px 15px rgba(255,107,107,.4);
}
.btn-primary:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(255,107,107,.5);
}
.btn-primary:active:not(:disabled) { transform: translateY(0); }
.btn-primary:disabled {
    background: #e5e7eb;
    color: #9ca3af;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
}

.btn-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 14px 32px;
    background: linear-gradient(135deg, var(--secondary), #45b7d1);
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    border-radius: var(--radius-full);
    border: none;
    cursor: pointer;
    transition: var(--transition);
    box-shadow: 0 4px 15px rgba(78,205,196,.4);
}
.btn-secondary:hover { transform: translateY(-2px); }

.btn-sm {
    padding: 6px 12px;
    font-size: .8rem;
    border-radius: var(--radius-full);
    font-weight: 600;
    transition: var(--transition);
    cursor: pointer;
    border: none;
}
.btn-danger { background: var(--danger); color: #fff; }
.btn-danger:hover { opacity: .85; }

.btn-back {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--text-secondary);
    font-size: .9rem;
    transition: var(--transition);
}
.btn-back:hover { color: var(--primary); }

.btn-logout {
    padding: 8px 16px;
    background: transparent;
    border: 2px solid var(--border);
    color: var(--text-secondary);
    border-radius: var(--radius-full);
    font-size: .85rem;
    transition: var(--transition);
}
.btn-logout:hover { border-color: var(--primary); color: var(--primary); }

/* ?�?�?�?�?�?� 4. 공통 ?�림 ?�?�?�?�?�?� */
.alert {
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    font-weight: 500;
    margin-bottom: 12px;
    font-size: .9rem;
}
.alert-success { background: #d4edda; color: #155724; border-left: 4px solid var(--success); }
.alert-error   { background: #f8d7da; color: #721c24; border-left: 4px solid var(--danger); }

/* ?�?�?�?�?�?� 5. ???�이지 (?�페?��? �? ?�?�?�?�?�?� */
.home-main {
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* ?단 로고/??? ?더 */
.app-header {
    display: flex;
    align-items: center;
    justify-content: space-between; /* 양쪽 끝으로 배치 */
    padding: 12px 16px 8px;
    flex-shrink: 0;
    position: relative; /* 로고 등 절대 위치 배치용 기준점 */
    min-height: 72px;
}

.header-left-section {
    display: flex;
    align-items: center;
    z-index: 10;
}

.sound-toggle-btn {
    background: var(--bg-card);
    border: none;
    border-radius: 22px; /* 둥근 알약(Pill) 모양 */
    padding: 0 16px;     /* 좌우 여백 */
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px; /* 아이콘과 텍스트 사이 간격 */
    font-size: 1.5rem;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: var(--transition);
    color: var(--text-primary);
}
.sound-text {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--text-secondary);
}
.sound-toggle-btn:hover {
    transform: scale(1.05);
    box-shadow: var(--shadow-md);
}
.app-logo {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    justify-content: center;
}

.logo-wrapper {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.beta-badge {
    position: absolute;
    top: -4px;
    right: -28px;
    background: var(--warning);
    color: white;
    font-size: 0.65rem;
    font-weight: 800;
    padding: 2px 6px;
    border-radius: 8px;
    box-shadow: var(--shadow-sm);
    transform: rotate(12deg);
    white-space: nowrap;
    z-index: 5;
}

.app-logo-img {
    height: 70px;
    object-fit: contain;
    display: block;
}

.header-user-section {
    display: flex;
    gap: 8px;
    align-items: center;
}

/* 세로 모드(모바일) 전용 헤더 레이아웃 */
@media (orientation: portrait) {
    .app-header {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: space-between; /* 양쪽 끝으로 배치 */
        align-items: center;
        padding-top: 24px;
        min-height: auto;
    }
    .app-logo {
        position: relative; /* badge가 로고 옆에 붙어있도록 기준점 역할 부여 (absolute의 덮어쓰기) */
        left: auto;
        top: auto;
        transform: none;
        width: 100%;
        display: flex;
        justify-content: center;
        margin-bottom: 16px;
        order: -1;
    }
    .app-logo-img {
        height: 80px; /* 세로 모드에서 로고 살짝 큼직하게 */
    }
    .header-left-section {
        margin-right: 0; /* 좌측 끝 정렬을 위해 마진 제거 */
    }
    .header-user-section {
        /* 우측 정렬 유지 */
    }
}

.user-pill {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--bg-card);
    border-radius: var(--radius-full);
    padding: 6px 16px;
    box-shadow: var(--shadow-sm);
    font-size: .85rem;
    font-weight: 600;
    color: var(--text-secondary);
    min-width: 110px; /* 약 5글자 이상의 여유 너비 */
}
.user-pill-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    object-fit: cover;
}
.user-pill-default {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--bg);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
}

/* ???�어�?카드 ?�역 */
.home-hero-card {
    margin: 8px 16px 0;
    background: linear-gradient(135deg, var(--primary) 0%, #ff8e53 100%);
    border-radius: var(--radius-lg);
    padding: 28px 24px;
    color: #fff;
    flex-shrink: 0;
    position: relative;
    overflow: hidden;
}
.home-hero-card::before {
    content: '?���?;
    position: absolute;
    right: -10px;
    top: -10px;
    font-size: 7rem;
    opacity: .15;
    line-height: 1;
}
.home-hero-badge {
    display: inline-block;
    background: rgba(255,255,255,.25);
    backdrop-filter: blur(4px);
    border-radius: var(--radius-full);
    padding: 4px 12px;
    font-size: .75rem;
    font-weight: 700;
    margin-bottom: 10px;
}
.home-hero-title {
    font-size: clamp(1.4rem, 6vw, 2rem);
    font-weight: 900;
    line-height: 1.25;
    margin-bottom: 16px;
}
.home-hero-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    color: var(--primary);
    font-weight: 800;
    font-size: .95rem;
    padding: 10px 22px;
    border-radius: var(--radius-full);
    box-shadow: 0 4px 12px rgba(0,0,0,.15);
    transition: var(--transition);
}
.home-hero-btn:hover { transform: scale(1.04); }

/* ?�늘???�태 (?�벨, ?�트�? */
.home-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin: 12px 16px 0;
    flex-shrink: 0;
}
.home-stat-item {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    padding: 14px 16px;
    display: flex;
    align-items: center;
    gap: 10px;
    box-shadow: var(--shadow-sm);
}
.home-stat-icon { font-size: 1.6rem; }
.home-stat-label { font-size: .7rem; color: var(--text-secondary); font-weight: 500; }
.home-stat-value { font-size: 1.1rem; font-weight: 900; color: var(--text-primary); }

/* ???�면 메인 ?�션 카드 */
.home-action-list {
    display: flex;
    flex-direction: column;
    gap: 16px; /* 카드 ?�이 간격 */
    margin: 24px 16px;
    flex: 1;
    min-height: 0;
}

.action-card {
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: clamp(16px, 3vh, 24px) 20px;
    display: flex;
    align-items: center;
    gap: 20px;
    box-shadow: var(--shadow-md);
    transition: var(--transition);
    text-decoration: none;
    color: var(--text-primary);
    border: 2px solid transparent;
    flex-shrink: 1;
}

.action-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-lg);
    border-color: var(--primary);
}

.action-card .action-icon {
    font-size: clamp(1.8rem, 4vh, 2.2rem);
    width: clamp(48px, 8vh, 64px);
    height: clamp(48px, 8vh, 64px);
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg);
    border-radius: 50%;
    flex-shrink: 0;
}

.action-card .action-info {
    flex: 1;
}

.action-card .action-title {
    font-size: 1.15rem;
    font-weight: 800;
    margin-bottom: 4px;
}

.action-card .action-desc {
    font-size: 0.8rem;
    color: var(--text-secondary);
}

/* ?�상�??�션 카드 강조 */
.action-card.play-card .action-icon { background: #ffebeb; }
.action-card.auto-card .action-icon { background: #e8f5e9; }

/* ?�?�?�?�?�?� 6. 로그???�이지 ?�?�?�?�?�?� */
body.page-login {
    overflow-y: auto;
    height: 100dvh;
    padding-bottom: 0;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.login-main {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100dvh;
    padding: 40px 24px;
}
.login-box {
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: 48px 40px;
    max-width: 420px;
    width: 100%;
    text-align: center;
    box-shadow: var(--shadow-lg);
}
.logo-icon-lg { font-size: 4rem; display: block; margin-bottom: 12px; }
.login-title  { font-size: 2rem; font-weight: 900; margin-bottom: 8px; }
.login-subtitle { color: var(--text-secondary); margin-bottom: 32px; }

.btn-kakao {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    width: 100%;
    padding: 16px 24px;
    background: #FEE500;
    color: #3C1E1E;
    font-size: 1rem;
    font-weight: 700;
    border-radius: var(--radius-md);
    transition: var(--transition);
    box-shadow: 0 4px 15px rgba(254,229,0,.5);
    margin-bottom: 16px;
}
.btn-kakao:hover { background: #f0d900; transform: translateY(-2px); }
.kakao-icon { width: 28px; height: 28px; object-fit: contain; }

.login-notice { font-size: .75rem; color: var(--text-light); margin-bottom: 24px; }
.login-back   { color: var(--text-secondary); font-size: .9rem; }
.login-back:hover { color: var(--primary); }

/* PIN 박스 */
.pin-form      { display: flex; flex-direction: column; gap: 16px; margin-bottom: 24px; }
.pin-input-wrap { width: 100%; }
.pin-input {
    width: 100%;
    padding: 16px;
    font-size: 1.5rem;
    text-align: center;
    letter-spacing: .3em;
    border: 2px solid var(--border);
    border-radius: var(--radius-md);
    outline: none;
    transition: var(--transition);
    font-family: var(--font);
}
.pin-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255,107,107,.2); }

/* ?�?�?�?�?�?� 7. 마이?�이지 (?�페?��? �? ?�?�?�?�?�?� */
.mypage-main {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 16px 16px 8px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.page-title {
    font-size: 1.4rem;
    font-weight: 900;
    color: var(--primary);
}

.profile-card {
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 16px;
    box-shadow: var(--shadow-md);
    border: 2px solid transparent;
    flex-shrink: 0;
}
.profile-avatar-wrap { flex-shrink: 0; }
.profile-avatar {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    object-fit: cover;
    background-color: var(--border); /* placeholder */
}

.profile-avatar.silhouette {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2.0rem;
    background-color: #e0e0e0;
    color: #9e9e9e;
}
.profile-avatar-default {
    width: 64px; height: 64px;
    border-radius: 50%;
    background: var(--bg);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
    border: 3px solid var(--border);
}
.profile-name   { font-size: 1.2rem; font-weight: 700; margin-bottom: 2px; }
.profile-email  { color: var(--text-secondary); font-size: .8rem; margin-bottom: 6px; }

/* -------------------------------------
 * 마이페이지 프로필 카드 레이아웃
 * ------------------------------------- */
.mypage-profile-card {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: nowrap;
}

.profile-info-content {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
}
.profile-info-content .profile-name {
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.profile-date {
    font-size: 0.8rem;
    color: var(--text-secondary);
    white-space: nowrap;
}

.profile-logout-form {
    margin: 0;
    flex-shrink: 0;
}
.profile-logout-form .btn-logout {
    padding: 6px 12px;
    font-size: 0.85rem;
    border-radius: 8px;
    white-space: nowrap;
}

/* 모바일 세로 모드 전용 (프로필/닉네임 유지 + 로그아웃 밑으로 우측 정렬) */
@media (orientation: portrait) {
    .mypage-profile-card {
        flex-wrap: wrap; /* 버튼이 다음 줄로 내려갈 수 있도록 허용 */
        row-gap: 8px; /* 위아래 간격 */
    }
    .profile-avatar-wrap {
        /* 세로 모드에서 프로필 사진 살짝 축소 */
    }
    .profile-avatar {
        width: 50px; height: 50px;
    }
    .profile-info-content {
        flex: 1;
        min-width: 0;
    }
    .profile-date {
        font-size: 0.75rem;
    }
    .profile-logout-form {
        /* 가로 100%를 차지하게 해서 다음 줄로 내림 */
        width: 100%;
        display: flex;
        justify-content: flex-end; /* 우측 정렬 */
        margin-top: 4px;
    }
}
/* ------------------------------------- */

.level-badge-lg {
    display: inline-block;
    padding: 3px 14px;
    background: linear-gradient(135deg, var(--primary), var(--accent));
    color: #fff;
    border-radius: var(--radius-full);
    font-weight: 700;
    font-size: .85rem;
}

.settings-card {
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: 20px;
    box-shadow: var(--shadow-md);
    flex-shrink: 0;
}
.settings-title { font-size: 1rem; font-weight: 700; margin-bottom: 4px; }
.settings-desc  { color: var(--text-secondary); font-size: .85rem; margin-bottom: 16px; }
.level-form     { display: flex; flex-direction: column; gap: 14px; }
.level-grid     { text-align: center; display: flex; gap: 8px; flex-wrap: nowrap; }
.level-radio    { display: none; }
.level-option { text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 12px 8px;
    border: 2px solid var(--border);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition);
    flex: 1;
}
.level-option:hover           { border-color: var(--primary); }
.level-option.selected,
.level-option:has(:checked)   {
    border-color: var(--primary);
    background: linear-gradient(135deg, #fff5f5, #fff);
    box-shadow: 0 0 0 2px rgba(255,107,107,.3);
}
.level-number { font-size: 1.3rem; font-weight: 900; color: var(--primary); }
.level-label  { font-size: .7rem; color: var(--text-secondary); font-weight: 500; }

/* ?�?� ?�어 ?�정 UI ?�?� */
.lang-setting-wrap {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
}
.lang-slot {
    flex: 1;
}
.lang-slot-label {
    font-size: .8rem;
    font-weight: 700;
    color: var(--text-secondary);
    margin-bottom: 8px;
}
.lang-slot-hint {
    font-weight: 400;
    color: var(--text-light);
    font-size: .75rem;
}
.lang-options { text-align: center;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.lang-radio { display: none; }
.lang-option { text-align: center; display: flex; align-items: center; justify-content: center; gap: 10px; padding: 10px 14px;
    border: 2px solid var(--border);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition);
    position: relative;
}
.lang-option:hover { border-color: var(--primary); }
.lang-option.selected,
.lang-option:has(:checked) {
    border-color: var(--primary);
    background: linear-gradient(135deg, #fff5f5, #fff);
    box-shadow: 0 0 0 2px rgba(255,107,107,.25);
}
.lang-option.lang-disabled,
.level-option.lang-disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}
.lang-flag { font-size: 1.4rem; }
.lang-name { font-size: .85rem; font-weight: 600; flex: 1; }
.lang-soon-badge {
    font-size: .65rem;
    background: var(--border);
    color: var(--text-light);
    border-radius: var(--radius-full);
    padding: 2px 8px;
    font-weight: 600;
}
.lang-arrow {
    font-size: 1.4rem;
    color: var(--text-light);
    padding-top: 34px;
    flex-shrink: 0;
}
/* 미리보기 박스 */
.lang-preview {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--bg-page);
    border-radius: var(--radius-md);
    padding: 12px 16px;
    margin-bottom: 4px;
}
.lang-preview-label {
    font-size: .72rem;
    color: var(--text-light);
    font-weight: 600;
    flex-shrink: 0;
}
.lang-preview-word1 {
    font-size: 1.1rem;
    font-weight: 900;
    color: var(--primary);
}
.lang-preview-sep {
    color: var(--border);
    font-size: 1rem;
}
.lang-preview-word2 {
    font-size: .95rem;
    font-weight: 600;
    color: var(--text-secondary);
}

.mypage-actions { text-align: center; padding: 4px 0 8px; flex-shrink: 0; }

/* ?�?�?�?�?�?� 7-1. ?�정 ?�이지 (?�페?��? ?�용 콤팩???��??? ?�?�?�?�?�?� */
.page-settings .mypage-main,
.page-mypage .mypage-main {
    overflow-y: auto; /* Allow scrolling */
    padding: 10px 16px 80px; /* added bottom padding to clear the tabbar */
    gap: 8px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

.settings-header {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 16px;
    height: 5vh;
    margin: 10px 0;
    flex-shrink: 0;
    width: 100%;
}

.settings-header .page-title {
    margin: 0;
}

.settings-header .alert {
    margin: 0;
    padding: 6px 12px;
    font-size: 0.85rem;
    white-space: nowrap;
    flex: 1;
    text-align: left;
}

/* 마이페이지 카드 세로 모드 간격 */
.mypage-cards-container {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.page-settings .settings-header-save {
    margin-left: auto;
    padding: 8px 16px;
    font-size: 0.95rem;
    white-space: nowrap;
}

.page-settings .settings-form {
    display: flex;
    flex-direction: column;
    gap: 6px;
    height: 80vh; /* Request: 80vh height */
    width: 100%;
    margin: 0 auto;
}

.page-settings .settings-card {
    padding: 6px 10px;
    border-radius: var(--radius-md);
    flex-shrink: 1;
    overflow-y: auto;
    scrollbar-width: none;
}
.page-settings .settings-card::-webkit-scrollbar { display: none; }

.page-settings .settings-title {
    font-size: 0.85rem;
    margin-bottom: 2px;
}

.page-settings .settings-desc {
    display: none; /* Hide to save space */
}

.page-settings .level-grid {
    gap: 4px;
}

.page-settings .level-option { text-align: center;
    padding: 4px 2px;
    gap: 2px;
    height: auto;
}

.page-settings .level-number {
    font-size: 0.95rem;
}

.page-settings .level-label {
    font-size: 0.6rem;
}

.page-settings .lang-setting-wrap {
    gap: 6px;
    margin-bottom: 4px;
}

.page-settings .lang-slot-label {
    font-size: 0.7rem;
    margin-bottom: 2px;
}

.page-settings .lang-slot-hint {
    font-size: 0.65rem;
}

.page-settings .lang-options { text-align: center;
    gap: 4px;
}

.page-settings .lang-option { text-align: center;
    padding: 3px 6px;
    gap: 4px;
}

.page-settings .lang-flag {
    font-size: 0.95rem;
}

.page-settings .lang-name {
    font-size: 0.7rem;
}

.page-settings .lang-soon-badge {
    font-size: 0.5rem;
    padding: 1px 4px;
}

.page-settings .lang-arrow {
    font-size: 0.95rem;
    padding-top: 18px;
}



/* settings.html용 지정된 inline style 덮어쓰기 및 margin 조절 */
.page-settings #btn-save-level,
.page-settings #btn-save-lang {
    margin-top: 8px !important;
}

/* 가로 모드(태블릿/모바일 가로) 전용: 마이페이지 & 설정창 2단 분할 레이아웃 */
@media (orientation: landscape) {
    /* 마이페이지: 프로필 카드와 계정설정 카드를 좌우로 배치 */
    .page-mypage .mypage-cards-container {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
        align-items: stretch; /* 양쪽 카드 높이를 동일하게 맞춤 */
    }

    /* 설정창: 좌측에 레벨/문제수, 우측에 언어설정 배치 */
    .page-settings .settings-form {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto auto;
        gap: 12px;
        height: auto; /* 80vh 제한 해제 */
    }
    .page-settings .settings-card {
        height: 100%;
    }
    .page-settings .settings-card:nth-child(1) { grid-column: 1; grid-row: 1; }
    .page-settings .settings-card:nth-child(2) { grid-column: 1; grid-row: 2; }
    .page-settings .settings-card:nth-child(3) { grid-column: 2; grid-row: 1 / span 2; }
}

/* ============================================================
   8. 플레이 페이지 (핵심: 풀페이지 카드 뷰)
   ============================================================ */
.play-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 12px 16px 8px;
    gap: 10px;
}

/* 로딩 */
.play-loading {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    gap: 12px;
}
.loading-spinner {
    width: 48px;
    height: 48px;
    border: 4px solid var(--border);
    border-top-color: var(--primary);
    border-radius: 50%;
    animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 카드 컨테?�너: ?��? height 모두 ?�용 */
.play-container {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow: hidden;
    min-height: 0;
}

/* 진행 �?*/
.play-progress {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.progress-bar-wrap {
    flex: 1;
    height: 10px;
    background: var(--border);
    border-radius: var(--radius-full);
    overflow: hidden;
}
.progress-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--primary), var(--accent));
    border-radius: var(--radius-full);
    transition: width .4s ease;
    width: 0%;
}
.progress-text {
    font-size: .85rem;
    font-weight: 700;
    color: var(--text-secondary);
    white-space: nowrap;
    min-width: 46px;
}

/* 카드 ?�이?�웃: flex-column 고정 (가로모?�도 ?�로 배치 ?��?) */
.card-layout {
    flex: 1;
    display: flex;
    flex-direction: column;
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    overflow: hidden;
    animation: cardIn .35s ease;
    min-height: 0;
}
@keyframes cardIn {
    from { opacity: 0; transform: scale(.97); }
    to   { opacity: 1; transform: scale(1); }
}

/* 가�?모드: 좌우 ?�백�?추�? (배치 변�??�음) */
@media (orientation: landscape) {
    .play-main { padding-left: 15vw; padding-right: 15vw; }
}

/* ?��?지 ?�역: ?�이 40vh 고정 */
.card-image-wrap {
    flex-shrink: 0;
    position: relative;
    width: 100%;
    height: 40vh;
    background: linear-gradient(135deg, #f8f9fa, #e9ecef);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}
.card-image {
    width: 100%;
    height: 100%;
    aspect-ratio: 1 / 1;
    object-fit: fill;
}
.card-image-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 5rem;
}

/* 카드 ?�단 콘텐�?*/
.card-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px 20px 18px;
    text-align: center;
}
.card-category {
    display: inline-block;
    background: var(--bg);
    color: var(--text-secondary);
    padding: 3px 14px;
    border-radius: var(--radius-full);
    font-size: .8rem;
    font-weight: 600;
}
.card-word    { font-size: clamp(2rem, 8vw, 3rem); font-weight: 900; color: var(--text-primary); line-height: 1.1; }
.card-word-en { font-size: 1rem; color: var(--text-secondary); font-weight: 500; }
.card-actions { display: flex; gap: 12px; width: 100%; }

.btn-know {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 16px;
    background: linear-gradient(135deg, var(--success), #52b788);
    color: #fff;
    font-size: .95rem;
    font-weight: 700;
    border-radius: var(--radius-md);
    border: none;
    cursor: pointer;
    transition: var(--transition);
    box-shadow: 0 4px 12px rgba(107,203,119,.4);
}
.btn-know:hover { transform: scale(1.03); }

.btn-unknown {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 16px;
    background: linear-gradient(135deg, #ff7675, #d63031);
    color: #fff;
    font-size: .95rem;
    font-weight: 700;
    border-radius: var(--radius-md);
    border: none;
    cursor: pointer;
    transition: var(--transition);
    box-shadow: 0 4px 12px rgba(255,118,117,.4);
}
.btn-unknown:hover { transform: scale(1.03); }
.btn-icon { font-size: 1.4rem; }

/* 결과 ?�면 */
.play-result {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.result-box {
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: 40px 32px;
    text-align: center;
    box-shadow: var(--shadow-lg);
    max-width: 400px;
    width: 100%;
    animation: cardIn .4s ease;
}
.result-emoji  { font-size: 3.5rem; margin-bottom: 12px; }
.result-title  { font-size: 1.8rem; font-weight: 900; margin-bottom: 16px; }
.result-score  { font-size: 3rem; font-weight: 900; margin-bottom: 12px; }
.score-correct { color: var(--success); }
.score-divider { color: var(--text-light); }
.score-total   { color: var(--text-secondary); }
.result-message { font-size: 1rem; color: var(--text-secondary); margin-bottom: 24px; }
.result-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

/* ?�?�?�?�?�?� 9. 관리자 ?�이지 (?�크�??�용) ?�?�?�?�?�?� */
.admin-main {
    flex: 1;
    background: var(--bg-admin);
    padding: 24px 16px;
    min-height: calc(100dvh - var(--tab-bar-h));
}
.admin-container {
    max-width: 1100px;
    margin: 0 auto;
}
.admin-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 24px;
}
.admin-title    { font-size: 1.5rem; font-weight: 900; }
.admin-subtitle { color: var(--text-secondary); margin-top: 4px; font-size: .9rem; }

/* ?�계 카드 */
.stat-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 24px;
}
.stat-card {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    padding: 12px 4px;
    text-align: center;
    box-shadow: var(--shadow-sm);
    transition: var(--transition);
}
.stat-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.stat-icon  { font-size: 2rem; margin-bottom: 6px; }
.stat-value { font-size: 1.5rem; font-weight: 900; color: var(--primary); }
.stat-label { color: var(--text-secondary); font-size: .75rem; word-break: keep-all; }

/* 관�?메뉴 */
.admin-menu-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}
.admin-menu-card {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    padding: 24px;
    box-shadow: var(--shadow-sm);
    transition: var(--transition);
    border: 2px solid transparent;
}
.admin-menu-card:hover {
    transform: translateY(-4px);
    border-color: var(--primary);
    box-shadow: var(--shadow-md);
}
.menu-icon { font-size: 2rem; margin-bottom: 10px; }
.admin-menu-card h3 { font-size: 1rem; font-weight: 700; margin-bottom: 4px; }
.admin-menu-card p  { color: var(--text-secondary); font-size: .85rem; }

/* ?�이�?*/
.table-wrap { overflow-x: auto; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); }
.admin-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--bg-card);
    font-size: .9rem;
}
.admin-table thead tr {
    background: linear-gradient(135deg, var(--primary), #ff8e53);
    color: #fff;
}
.admin-table th {
    padding: 12px 14px;
    text-align: left;
    font-weight: 700;
    white-space: nowrap;
}
.admin-table td {
    padding: 10px 14px;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
}
.admin-table tbody tr:hover { background: #fff9f0; }
.empty-row { text-align: center; color: var(--text-light); padding: 32px; }

.user-cell { display: flex; align-items: center; gap: 8px; }
.table-avatar { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }

.role-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: var(--radius-full);
    font-size: .8rem;
    font-weight: 700;
}
.role-admin     { background: var(--primary); color: #fff; }
.role-pre-admin { background: var(--warning); color: #fff; }
.role-user      { background: var(--border); color: var(--text-secondary); }

.inline-form { display: inline-flex; align-items: center; gap: 4px; margin: 2px 0; }
.select-sm {
    padding: 4px 8px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: .8rem;
    font-family: var(--font);
    background: var(--bg-card);
}

/* 카드 ?�록 ??*/
.admin-card-form {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    padding: 24px;
    box-shadow: var(--shadow-sm);
    margin-bottom: 24px;
}
.form-title { font-size: 1.1rem; font-weight: 700; margin-bottom: 20px; }
.form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
    margin-bottom: 20px;
}
.form-group-full { grid-column: 1 / -1; }
.form-group label { display: block; font-weight: 600; font-size: .85rem; margin-bottom: 5px; }
.form-hint {
    font-size: .8rem;
    color: var(--text-secondary);
    background: var(--bg);
    padding: 8px 12px;
    border-radius: var(--radius-sm);
    margin-bottom: 6px;
    line-height: 1.6;
}
.form-input, .form-select {
    width: 100%;
    padding: 10px 12px;
    border: 2px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: .9rem;
    font-family: var(--font);
    background: var(--bg-card);
    transition: var(--transition);
    outline: none;
}
.form-input:focus, .form-select:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(255,107,107,.15);
}
.form-file {
    width: 100%;
    padding: 10px;
    border: 2px dashed var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition);
}
.form-file:hover { border-color: var(--primary); }
.image-preview-wrap { margin-top: 10px; }
.image-preview {
    max-width: 180px;
    max-height: 180px;
    border-radius: var(--radius-sm);
    object-fit: cover;
    box-shadow: var(--shadow-sm);
}
.card-list-section { margin-top: 8px; }
.cat-badge {
    display: inline-block;
    padding: 2px 10px;
    background: var(--accent);
    color: #5a3000;
    border-radius: var(--radius-full);
    font-size: .8rem;
    font-weight: 600;
}
.img-path-text { font-size: .8rem; color: var(--text-secondary); font-family: monospace; }

/* ?�?�?�?�?�?� 10. ?�러 ?�이지 ?�?�?�?�?�?� */
.error-main {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 24px;
}
.error-box { text-align: center; }
.error-emoji { font-size: 5rem; margin-bottom: 16px; }
.error-code    { font-size: 4rem; font-weight: 900; color: var(--primary); margin-bottom: 12px; }
.error-message { font-size: 1rem; color: var(--text-secondary); margin-bottom: 24px; }
.error-actions { display: flex; justify-content: center; }

/* ?�?�?�?�?�?� 11. 반응???�?�?�?�?�?� */
@media (max-width: 480px) {
    .result-box { padding: 28px 20px; }
    .login-box  { padding: 32px 20px; }
    .profile-card { flex-direction: column; text-align: center; }
    .card-content { padding: 12px 16px 16px; }
    .card-word { font-size: 2rem; }
    .btn-know, .btn-unknown { font-size: .85rem; padding: 12px 10px; }
    .admin-table th, .admin-table td { padding: 8px 10px; }
}

/* ?�?�?�?�?�?� 12. ?�전 ?�역 (iPhone notch ?�?? ?�?�?�?�?�?� */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
    :root {
        --tab-bar-h: calc(64px + env(safe-area-inset-bottom));
    }
    .tab-bar {
        padding-bottom: env(safe-area-inset-bottom);
    }
}

/* ?�?�?�?�?�?� 13. ?�동 ?�??모드 ?�?�?�?�?�?� */
.page-play-auto {
    animation: fadeIn 0.4s ease;
}
.btn-exit-auto:hover {
    background: rgba(255, 255, 255, 0.9) !important;
    transform: scale(1.08);
}
.btn-exit-auto:active {
    transform: scale(0.95);
}

@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* ?�답 체크 ?�니메이??(초록???�그?��?) */
.correct-circle-svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 80%;
    height: 80%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 20;
    display: none;
}
.correct-circle-svg circle {
    fill: none;
    stroke: var(--success, #2ecc71);
    stroke-width: 8;
    stroke-dasharray: 252;
    stroke-dashoffset: 252;
    stroke-linecap: round;
}
.correct-circle-svg.animate {
    display: block;
}
.correct-circle-svg.animate circle {
    animation: drawCircleDash 0.5s ease-out forwards;
}
@keyframes drawCircleDash {
    0% { stroke-dashoffset: 252; opacity: 1; }
    80% { stroke-dashoffset: 0; opacity: 1; }
    100% { stroke-dashoffset: 0; opacity: 0; }
}

/* ============================================================
   가로형 ?�이?�웃 (?�블�?/ 가�?모드)
   조건: 가�?길이 > ?�로 길이 (orientation: landscape)
   ?�로 배치 ??가�?배치�??�환
   ============================================================ */
@media (orientation: landscape) {

    /* ?�?� ???�면 ?�?� */
    .page-home .app-header {
        min-height: 52px;
        padding: 6px 16px;
    }
    .app-logo-img { height: 44px; }

    .home-action-list {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
        margin: 10px 16px;
    }

    .action-card {
        padding: 12px 16px;
        flex-direction: row;
        align-items: center;
    }

    .action-card .action-icon {
        width: 44px;
        height: 44px;
        font-size: 1.4rem;
    }

    .action-card .action-title { font-size: 0.95rem; }
    .action-card .action-desc  { font-size: 0.72rem; }

    /* ?�?� ?�정 ?�이지 ?�?� */
    .page-settings .mypage-main {
        padding: 8px 16px;
        overflow: hidden;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .page-settings .settings-form {
        display: grid;
        grid-template-columns: 1fr 1fr 2fr;
        grid-template-rows: 1fr;
        gap: 10px;
        height: 60vh; /* Request: 60vh height */
        width: 100%;
    }

    .page-settings .settings-card {
        overflow-y: auto;
        scrollbar-width: none;
    }
    .page-settings .settings-card::-webkit-scrollbar { display: none; }

    .page-settings .settings-card:nth-of-type(1) { grid-column: 1; grid-row: 1; }
    .page-settings .settings-card:nth-of-type(2) { grid-column: 2; grid-row: 1; }
    .page-settings .settings-card:nth-of-type(3) { grid-column: 3; grid-row: 1; }

    .page-settings .level-grid {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 6px;
        margin-bottom: 8px;
    }

    .page-settings .level-option { text-align: center; height: auto; flex-direction: row; justify-content: center; padding: 6px 10px; gap: 8px; }

    .page-settings .level-number { font-size: 1rem; }
    .page-settings .level-label  { font-size: 0.7rem; }

    .page-settings .lang-option { text-align: center; padding: 5px 10px; }

    /* ?�?� ?�레??/ ?�즈 ?�이지 ?�?� */
    .play-header { padding: 4px 12px; }
    .page-play .play-main { padding: 6px 20px; }

    /* ?�어 카드: 버튼 ?�측?�로 */
    .card-layout {
        flex-direction: row;
        align-items: stretch;
    }
    .card-layout .card-image-wrap {
        height: auto; /* 가�?모드?�서???�이�??�동 ?��? 부�?맞춤?�로 */
        width: 50%;
        flex-shrink: 0;
    }
    .card-layout .card-content {
        flex: 1;
        justify-content: center;
        display: flex;
        flex-direction: column;
    }
    .card-layout .card-actions .btn-know,
    .card-layout .card-actions .btn-unknown {
        max-height: 20vh;
    }

    /* ?�어 맞추�? 그림�?버튼 ?��???*/
    .quiz-area {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: stretch !important;
    }
    .quiz-area .quiz-image-wrap {
        height: 100% !important; 
        max-height: 100% !important;
        width: 50% !important; max-width: none !important; aspect-ratio: auto !important; flex: 1 !important;
    }
    .quiz-area #quiz-word-buttons {
        flex: 1 !important;
        justify-content: center;
        align-content: center;
    }
    
    /* 그림 맞추�??�즈 가�?모드: ?�진 - ?�어 - ?�진 배치 */
    .pic-quiz-area {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        justify-content: center !important;
        align-items: center !important;
        gap: 3vw !important;
        height: 100% !important;
        padding: 0 !important;
    }

    .pic-quiz-btn {
        width: auto !important;
        max-width: none !important;
        height: 100% !important;
        min-height: 0 !important;
        min-width: 0 !important;
        aspect-ratio: auto !important;
        flex: 1 !important;
    }
    .pic-quiz-btn img {
        width: 100% !important;
        height: 100% !important;
        object-fit: contain !important;
    }

    .pic-quiz-word-box {
        width: auto !important;
        flex: 1 !important;
        order: 0 !important; /* ?�진 ?�이??배치 */
        padding: 0 20px !important;
        text-align: center;
        font-size: 2.5vw !important;
        white-space: normal;
        word-break: keep-all;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    /* ?�?� ??�� ?�?� */
    :root { --tab-bar-h: 52px; }
    .tab-bar { height: 52px; }
    body { padding-bottom: 52px; }
}

/* --- settings layout adjustments --- */
.quiz-count-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.lang-grid-2x2 { text-align: center; display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; }
@media (orientation: landscape) {
    .page-settings .quiz-count-grid { display: grid !important; grid-template-columns: repeat(2, 1fr) !important; }
}

/* --- lang divider --- */
.lang-divider { border: none; border-left: 2px solid #ccc; width: 0; height: auto; margin: 0 16px; }
.page-settings .lang-setting-wrap { display: flex; flex-direction: row; align-items: stretch; gap: 0; }
.page-settings .lang-slot { flex: 1; }




/* Admin Page Flex Layout */
body.page-admin { display: flex; flex-direction: column; min-height: 100vh; padding-bottom: 0 !important; }
body.page-admin .admin-main { flex: 1; padding-bottom: 32px; }
body.page-admin .tab-bar { position: relative !important; margin-top: auto; }


/* Admin Layout Fix */
body.page-admin { height: auto !important; overflow-x: hidden; }


/* Fix scrolling for admin pages */
html:has(body.page-admin) { overflow-y: auto !important; height: auto !important; }


/* Remove padding bottom for admin main */
body.page-admin .admin-main { padding-bottom: 0 !important; }


.word-group {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-bottom: 4px;
}
.btn-speaker {
    background: none;
    border: none;
    font-size: 1.4rem;
    cursor: pointer;
    opacity: 0.7;
    transition: all 0.2s;
}
.btn-speaker:hover {
    opacity: 1.0;
    transform: scale(1.1);
}

