/* 흔들흔들 달리기 — TV 화면 스타일 (멀리서도 잘 보이게 큰 글씨) */

#tv_canvas
{
    position: absolute;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    object-fit: contain;
    background: #000000;
    display: none;
}

/* ===== 로비 ===== */
#tv_lobby
{
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 4vw;
    padding: 3vh 4vw;
}

.tv_lobby_left
{
    flex: 1.3;
    display: flex;
    flex-direction: column;
    gap: 2.4vh;
}

.tv_title
{
    font-size: 72px;
    font-weight: 900;
    color: #ffd84a;
    text-shadow: 0 5px 0 #00000060;
}

.tv_subtitle
{
    font-size: 36px;
    font-weight: 700;
    color: #bcd0ff;
}

.tv_howto
{
    display: flex;
    flex-direction: column;
    gap: 1.4vh;
    background: rgba(20, 24, 44, 0.7);
    border-radius: 22px;
    padding: 3vh 3vw;
}

.tv_howto_row
{
    font-size: 34px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 18px;
}

.tv_num
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: #ffd84a;
    color: #1a1a2a;
    font-size: 32px;
    font-weight: 900;
}

.tv_slots
{
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.4vw;
    margin-top: 1vh;
}

.tv_slot
{
    border-radius: 18px;
    padding: 2.2vh 1vw;
    text-align: center;
    min-height: 14vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 10px;
}

.tv_slot.empty
{
    background: rgba(255, 255, 255, 0.08);
    border: 4px dashed rgba(255, 255, 255, 0.25);
}

.tv_slot.filled
{
    box-shadow: 0 8px 0 #00000050;
}

.tv_slot_p
{
    font-size: 40px;
    font-weight: 900;
}

.tv_slot_name
{
    font-size: 32px;
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tv_lobby_msg
{
    font-size: 36px;
    font-weight: 800;
    color: #ffd84a;
    text-align: center;
    margin-top: 1vh;
}

/* ===== QR 영역 ===== */
.tv_lobby_right
{
    flex: 0.9;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.4vh;
}

.tv_qr_box
{
    background: #ffffff;
    border-radius: 22px;
    padding: 18px 18px 12px;
    text-align: center;
}

.tv_qr
{
    width: 270px;
    height: 270px;
}

.tv_qr_label
{
    margin-top: 8px;
    font-size: 32px;
    font-weight: 800;
    color: #1a1a2a;
}

.tv_code_box
{
    background: rgba(20, 24, 44, 0.8);
    border-radius: 20px;
    padding: 1.2vh 3vw;
    text-align: center;
}

.tv_code_label
{
    font-size: 32px;
    font-weight: 700;
    color: #9fb0d0;
}

.tv_code
{
    font-size: 56px;
    font-weight: 900;
    letter-spacing: 8px;
    color: #ffd84a;
}

.tv_url
{
    font-size: 32px;
    color: #8fa0c0;
    word-break: break-all;
    text-align: center;
    max-width: 30vw;
}

/* ===== localhost 접속 불가 경고 / IP 입력 ===== */
.tv_ip_warn
{
    display: none;
    background: rgba(232, 64, 58, 0.18);
    border: 3px solid #e8403a;
    border-radius: 18px;
    padding: 2vh 2vw;
    text-align: center;
    max-width: 30vw;
}

.tv_ip_warn_msg
{
    font-size: 32px;
    font-weight: 800;
    color: #ff8a84;
    margin-bottom: 1.4vh;
}

.tv_ip_row
{
    display: flex;
    gap: 12px;
    justify-content: center;
}

.tv_ip_input
{
    flex: 1;
    font-size: 34px;
    font-weight: 800;
    text-align: center;
    padding: 12px;
    border-radius: 12px;
    border: 3px solid #4a5a8a;
    background: #1a1f38;
    color: #ffffff;
    min-width: 0;
}

.tv_ip_apply
{
    font-size: 32px;
    font-weight: 900;
    padding: 12px 26px;
    border-radius: 12px;
    background: #ffd84a;
    color: #1a1a2a;
}

.tv_ip_hint
{
    font-size: 32px;
    color: #9fb0d0;
    margin-top: 1.2vh;
}

/* ===== 결과 ===== */
#tv_result
{
    position: absolute;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(8, 10, 20, 0.82);
}

.tv_result_card
{
    background: linear-gradient(160deg, #2a3358, #1a1f38);
    border-radius: 30px;
    padding: 4vh 5vw;
    width: 70vw;
    box-shadow: 0 16px 0 #00000060;
}

.tv_result_title
{
    font-size: 60px;
    font-weight: 900;
    color: #ffd84a;
    text-align: center;
    margin-bottom: 3vh;
}

.tv_result_list
{
    display: flex;
    flex-direction: column;
    gap: 1.6vh;
}

.tv_res_row
{
    display: flex;
    align-items: center;
    gap: 24px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 18px;
    padding: 1.8vh 2vw;
}

.tv_res_row.mvp
{
    background: rgba(255, 216, 74, 0.2);
    border: 4px solid #ffd84a;
}

.tv_res_medal
{
    font-size: 52px;
    width: 70px;
    text-align: center;
}

.tv_res_chip
{
    font-size: 36px;
    font-weight: 900;
    border-radius: 14px;
    padding: 10px 20px;
}

.tv_res_name
{
    font-size: 40px;
    font-weight: 800;
    flex: 1;
}

.tv_res_coin
{
    font-size: 38px;
    font-weight: 800;
    color: #ffd84a;
}

.tv_res_mvp
{
    font-size: 36px;
    font-weight: 900;
    color: #ffd84a;
}

.tv_result_foot
{
    font-size: 32px;
    font-weight: 700;
    color: #9fb0d0;
    text-align: center;
    margin-top: 3vh;
}
