/*
 * 되묻기 탁구 (/grammar/structure/pingpong.jsp, 2026-10-29) — 게임 js/ps2-structure-pingpong.js 의 꾸밈. 틀의 꾸밈은 css/ps2-structure-arcade.css (.ga-*)
 *   경기장 #0b1026 · 탁구대 #1479a8 · 공의 빛(공의 종류마다 다름) · 맞는 라켓의 빛 #fde047 · 맞음 #34d399 · 틀림 #f43f5e
 */
#main .gi .ga--pingpong { --ga-bg1: #0b1026; --ga-bg2: #1e1b4b; --ga-glow: #fde047; --ga-halo: rgba(129, 140, 248, .26); --ga-win: #0e7490; --ga-hot: #f43f5e; }
#main .gi .ga--pingpong .spp-cv { touch-action: manipulation; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; cursor: pointer; }
#main .gi .ga--pingpong .ga-q { min-height: 108px; }
#main .gi .ga--pingpong .ga-q .spp-ask { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 6px; }
#main .gi .ga--pingpong .ga-q .spp-sent { margin: 2px 0 0; font-size: clamp(16px, 2.2vw, 20px); font-weight: 700; line-height: 1.5; color: #f8fafc; letter-spacing: -0.005em; text-align: center; }
#main .gi .ga--pingpong .ga-q .spp-sent mark { display: inline-block; min-width: 58px; padding: 0 9px; border-radius: 8px; background: rgba(255, 255, 255, .14); color: #fde047; border: 1px dashed rgba(253, 224, 71, .6); }
#main .gi .ga--pingpong .ga-q .spp-sent.is-ok { color: #a7f3d0; }
#main .gi .ga--pingpong .ga-q .spp-sent.is-ok mark { background: #dcfce7; color: #14532d; border-color: transparent; }
#main .gi .ga--pingpong .spp-cue { display: inline-block; margin-right: 8px; padding: 0 9px; border-radius: 999px; background: rgba(252, 211, 77, .16); color: #fcd34d; border: 1px solid rgba(252, 211, 77, .45); font-size: .78em; font-weight: 800; line-height: 1.7; vertical-align: 2px; white-space: nowrap; }
#main .gi .ga--pingpong .spp-cue::before { content: "상황 · "; opacity: .8; }
#main .gi .ga--pingpong .spp-chip { display: inline-block; padding: 1px 10px; border-radius: 999px; font-size: 13.5px; font-weight: 800; line-height: 1.6; color: #0f172a; background: #e2e8f0; white-space: nowrap; }
#main .gi .ga--pingpong .spp-chip--kind { --k: #94a3b8; background: transparent; color: var(--k); border: 1.5px solid var(--k); font-size: 12.5px; }
#main .gi .ga--pingpong .spp-chip--ok { background: #bbf7d0; color: #14532d; white-space: normal; }
#main .gi .ga--pingpong .spp-chip--bad { background: #fecaca; color: #991b1b; white-space: normal; }
#main .gi .ga--pingpong .spp-board { display: inline-flex; align-items: center; gap: 5px; padding: 2px 10px; border-radius: 999px; background: rgba(129, 140, 248, .14); color: #3730a3; font-size: 12px; font-weight: 800; white-space: nowrap; }
#main .gi .ga--pingpong .spp-board b { font-size: 15px; min-width: 14px; text-align: center; }
#main .gi .ga--pingpong .spp-board .spp-board__me { color: #059669; }
#main .gi .ga--pingpong .spp-board .spp-board__opp { color: #e11d48; }
#main .gi .ga--pingpong .spp-board i { font-style: normal; color: #64748b; }
#main .gi .ga--pingpong .spp-board small { font-size: 11px; color: #475569; }
#main .gi .ga--pingpong .spp-pad { min-width: 170px; height: 56px; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; }
#main .gi .ga--pingpong .spp-pad b { font-size: 18px; line-height: 1.15; }
#main .gi .ga--pingpong .spp-pad small { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; font-weight: 700; opacity: .85; }
#main .gi .ga--pingpong .spp-pad:disabled { opacity: .5; cursor: default; }
#main .gi .ga--pingpong .spp-pad--side { min-width: 58px; font-size: 20px; }
#main .gi .ga--pingpong .ga-card .spp-sent, #main .gi .ga--pingpong .ga-wrong .spp-sent { text-align: left; color: var(--ga-ink); font-size: 17px; }
#main .gi .ga--pingpong .ga-card .ga-sent mark, #main .gi .ga--pingpong .ga-wrong .ga-sent mark { background: #dcfce7; color: #14532d; border: 0; }
#main .gi .ga--pingpong .ga-card .spp-cue { background: #fef3c7; color: #92400e; border-color: #fcd34d; }

/* 로비 그림: 경기장 · 탁구대 · 그물 · 날아오는 문장 공 · 라켓 셋(맞는 라켓이 빛난다) */
#main .gi .ga--pingpong .spp-hero { position: absolute; inset: 0; overflow: hidden; background: radial-gradient(70% 55% at 50% 10%, rgba(129, 140, 248, .35), transparent 70%), linear-gradient(#0b1026, #151c42 60%, #090d20); }
#main .gi .ga--pingpong .spp-hero__table { position: absolute; left: 10%; right: 10%; top: 14%; bottom: 31%; background: linear-gradient(#0f5f86, #1479a8); clip-path: polygon(24% 0, 76% 0, 100% 100%, 0 100%); }
#main .gi .ga--pingpong .spp-hero__table::after { content: ""; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: rgba(255, 255, 255, .55); }
#main .gi .ga--pingpong .spp-hero__net { position: absolute; left: 17%; right: 17%; top: 39%; height: 11px; border-top: 2px solid #f8fafc; background: repeating-linear-gradient(90deg, rgba(226, 232, 240, .45) 0 1px, transparent 1px 5px), rgba(226, 232, 240, .14); }
#main .gi .ga--pingpong .spp-hero__trail { position: absolute; left: 50%; top: 18%; width: 2px; height: 46%; margin-left: -1px; background: repeating-linear-gradient(rgba(56, 189, 248, .7) 0 6px, transparent 6px 12px); transform: rotate(-24deg); transform-origin: top center; opacity: .7; }
#main .gi .ga--pingpong .spp-hero__ball { position: absolute; left: 50%; top: 20%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff, #fff7ed 55%, #fdba74); box-shadow: 0 0 0 3px rgba(56, 189, 248, .35), 0 0 18px rgba(56, 189, 248, .9); animation: spp-fly 3.6s ease-in-out infinite; }
#main .gi .ga--pingpong .spp-hero__ball b { position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%); padding: 2px 9px; border-radius: 999px; background: rgba(15, 23, 42, .85); border: 1px solid #38bdf8; color: #f8fafc; font-size: 12px; font-weight: 800; white-space: nowrap; }
#main .gi .ga--pingpong .spp-hero__paddle { position: absolute; bottom: 7%; width: 27%; max-width: 120px; height: 44px; border-radius: 22px; display: grid; place-items: center; padding: 0 6px; box-sizing: border-box; color: #fff; font-size: 12.5px; font-weight: 800; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .35); box-shadow: 0 0 0 3px #7c2d12, 0 8px 12px -6px rgba(2, 6, 23, .7); }
#main .gi .ga--pingpong .spp-hero__paddle::after { content: ""; position: absolute; left: 50%; bottom: -20px; width: 12px; height: 18px; margin-left: -6px; border-radius: 4px; background: linear-gradient(90deg, #92400e, #d97706, #92400e); }
#main .gi .ga--pingpong .spp-hero__paddle--0 { left: 6%; background: linear-gradient(#f43f5e, #9f1239); }
#main .gi .ga--pingpong .spp-hero__paddle--1 { left: 36.5%; background: linear-gradient(#0ea5e9, #075985); opacity: .75; }
#main .gi .ga--pingpong .spp-hero__paddle--2 { left: 67%; background: linear-gradient(#f59e0b, #92400e); opacity: .75; }
#main .gi .ga--pingpong .spp-hero__paddle.is-ok { box-shadow: 0 0 0 3px #7c2d12, 0 0 0 6px #fde047, 0 0 24px rgba(253, 224, 71, .9); animation: spp-swing 3.6s ease-in-out infinite; }
@keyframes spp-fly { 0% { left: 52%; top: 16%; transform: scale(.6); } 45% { left: 34%; top: 52%; transform: scale(.9); } 52% { left: 30%; top: 56%; } 72% { left: 20%; top: 66%; transform: scale(1.05); } 80% { left: 20%; top: 66%; } 100% { left: 52%; top: 16%; transform: scale(.6); } }
@keyframes spp-swing { 0%, 66% { transform: translateY(0) rotate(0); } 74% { transform: translateY(-34px) rotate(-8deg); } 80% { transform: translateY(-38px) rotate(10deg); } 92%, 100% { transform: translateY(0) rotate(0); } }
#main .gi .ga--pingpong.spp-lv1 .ga-q { min-height: 116px; }
#main .gi .ga--pingpong.spp-lv3 .ga-q { min-height: 124px; }
@media (max-width: 760px) {
    #main .gi .ga--pingpong .ga-q { min-height: 100px; padding: 8px 10px; gap: 2px; }
    #main .gi .ga--pingpong.spp-lv1 .ga-q { min-height: 120px; }
    #main .gi .ga--pingpong.spp-lv3 .ga-q { min-height: 132px; }
    #main .gi .ga--pingpong .ga-q .ga-ask { font-size: 13px; }
    #main .gi .ga--pingpong .ga-q .spp-sent { font-size: 15.5px; line-height: 1.45; }
    #main .gi .ga--pingpong .ga-ko { font-size: 13px; }
    #main .gi .ga--pingpong .spp-chip--kind { font-size: 11.5px; padding: 0 8px; }
    #main .gi .ga--pingpong .ga-side { display: none; }
    #main .gi .ga--pingpong .spp-pad { min-width: 0; height: 50px; flex: 1 1 auto; }
    #main .gi .ga--pingpong .spp-pad small { max-width: 180px; }
    #main .gi .ga--pingpong .spp-pad--side { flex: 0 0 56px; }
    #main .gi .ga--pingpong .spp-hero__paddle { height: 38px; font-size: 11px; border-radius: 19px; }
    #main .gi .ga--pingpong .spp-hero__ball b { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
    #main .gi .ga--pingpong .spp-hero * { animation: none !important; }
    #main .gi .ga--pingpong .spp-hero__ball { left: 24%; top: 60%; }
}
