/*
 * 거리 슬랄롬 (/grammar/modal/slalom.jsp, 2026-10-21) — 게임 js/ps2-modal-slalom.js 의 꾸밈. 틀의 꾸밈은 css/ps2-modal-arcade.css (.ga-*)
 *   틀이 상자에 'ga ga--slalom' 을 붙인다. 틀의 규칙은 '#main .gi .pa' 아래이므로 페이지 상자에 class="pa" 가 있다.
 *   문의 색: 1 빨강 #ef4444 · 2 파랑 #2563eb · 3 금색 #f59e0b (캔버스의 깃발 문과 위 상자의 보기가 같은 색 · 번호)
 */
#main .gi .pa.ga--slalom { --ga-bg1: #0c1a33; --ga-bg2: #1e3a8a; --ga-glow: #7dd3fc; --ga-halo: rgba(125, 211, 252, .22); --ga-accent: #2563eb; --ga-win: #0e7490; --ga-hot: #f97316; }

/* ── 로비 그림: 밤 경기장의 깃발 문 둘과 그 사이로 내려오는 보드 ── */
#main .gi .ga--slalom .msl-hero { position: absolute; inset: 0; overflow: hidden;
    background: radial-gradient(70% 55% at 50% -5%, rgba(255, 236, 190, .38) 0%, transparent 70%), radial-gradient(40% 35% at 12% 70%, rgba(125, 211, 252, .16) 0%, transparent 70%), linear-gradient(180deg, #2b4170 0%, #1b2b4b 55%, #121c33 100%); }
#main .gi .ga--slalom .msl-hero::before { content: ""; position: absolute; top: 0; bottom: 0; left: 9%; right: 9%;
    background: linear-gradient(rgba(125, 211, 252, .7) 50%, transparent 50%) 0 0 / 3px 28px repeat-y, linear-gradient(rgba(125, 211, 252, .7) 50%, transparent 50%) 100% 0 / 3px 28px repeat-y;
    animation: msl-edge .9s linear infinite; }
#main .gi .ga--slalom .msl-hero::after { content: ""; position: absolute; top: 0; bottom: 0; left: 9%; right: 9%; background: repeating-linear-gradient(90deg, rgba(255, 255, 255, .035) 0 1px, transparent 1px 7px); }
@keyframes msl-edge { from { background-position: 0 0, 100% 0; } to { background-position: 0 -28px, 100% -28px; } }
#main .gi .ga--slalom .msl-hero__trail { position: absolute; left: 0; right: 0; top: 0; height: 40%; z-index: 1;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M50 -5 C 50 30, 36 55, 31 100' stroke='rgba(186,215,255,0.45)' stroke-width='2.2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
    animation: msl-trail 3.2s ease-in-out infinite; }
#main .gi .ga--slalom .msl-hero__gate { position: absolute; top: 108%; z-index: 2; display: flex; align-items: flex-start; animation: msl-gate 3.2s linear infinite; }
#main .gi .ga--slalom .msl-hero__gate--a { left: 12%; --c: #ef4444; --d: #991b1b; }
#main .gi .ga--slalom .msl-hero__gate--b { right: 12%; --c: #2563eb; --d: #1e3a8a; }
#main .gi .ga--slalom .msl-hero__pole { display: block; width: 6px; height: 56px; border-radius: 3px; background: linear-gradient(90deg, var(--d), var(--c) 45%, #fff 120%); box-shadow: 0 0 10px var(--c); }
#main .gi .ga--slalom .msl-hero__flag { margin-top: 3px; padding: 5px 13px 7px; border-radius: 2px 2px 9px 9px / 2px 2px 6px 6px; background: linear-gradient(180deg, var(--c), var(--d)); color: #fff; font-weight: 900; font-size: 15px; line-height: 1.2; letter-spacing: -.01em; white-space: nowrap;
    box-shadow: 0 0 18px var(--c), inset 0 0 0 1.5px rgba(255, 255, 255, .55); animation: msl-flap .7s ease-in-out infinite alternate; }
#main .gi .ga--slalom .msl-hero__gate--a .msl-hero__flag { animation-name: msl-flap, msl-pass; animation-duration: .7s, 3.2s; animation-timing-function: ease-in-out, linear; animation-iteration-count: infinite, infinite; animation-direction: alternate, normal; }
#main .gi .ga--slalom .msl-hero__rider { position: absolute; top: 12%; left: 50%; z-index: 3; width: 46px; height: 48px; margin-left: -23px; animation: msl-rider 3.2s ease-in-out infinite; }
#main .gi .ga--slalom .msl-hero__rider::after { content: ""; position: absolute; left: 6px; right: 0; bottom: -4px; height: 7px; border-radius: 50%; background: rgba(0, 0, 10, .4); z-index: -1; }
#main .gi .ga--slalom .msl-hero__board { position: absolute; left: 2px; right: 2px; bottom: 0; height: 9px; border-radius: 6px; background: linear-gradient(90deg, #facc15, #f97316); box-shadow: 0 2px 0 rgba(0, 0, 0, .3), 0 0 12px rgba(250, 204, 21, .45); }
#main .gi .ga--slalom .msl-hero__body { position: absolute; left: 16px; width: 14px; bottom: 8px; height: 22px; border-radius: 6px 6px 3px 3px; background: linear-gradient(180deg, #bef264, #65a30d); }
#main .gi .ga--slalom .msl-hero__body::before, #main .gi .ga--slalom .msl-hero__body::after { content: ""; position: absolute; top: 4px; width: 14px; height: 4px; border-radius: 2px; background: #84cc16; }
#main .gi .ga--slalom .msl-hero__body::before { left: -11px; transform: rotate(18deg); }
#main .gi .ga--slalom .msl-hero__body::after { right: -11px; transform: rotate(-18deg); }
#main .gi .ga--slalom .msl-hero__head { position: absolute; left: 16px; top: 2px; width: 14px; height: 14px; border-radius: 50%; background: #f8fafc; box-shadow: inset 0 -5px 0 #facc15; }
#main .gi .ga--slalom .msl-hero__head::after { content: ""; position: absolute; left: 1px; right: 1px; top: 6px; height: 4px; border-radius: 2px; background: linear-gradient(90deg, #f59e0b, #a855f7, #22d3ee); }
#main .gi .ga--slalom .msl-hero__q { position: absolute; left: 50%; bottom: 12px; z-index: 4; transform: translateX(-50%); padding: 5px 14px; border-radius: 10px; background: rgba(10, 18, 40, .88); box-shadow: 0 0 0 1px rgba(255, 255, 255, .18), 0 8px 18px rgba(0, 0, 0, .35);
    color: #fde68a; font-weight: 800; font-size: 14px; letter-spacing: -.01em; white-space: nowrap; }
#main .gi .ga--slalom .msl-hero__snow { position: absolute; inset: -40px 0 0; z-index: 5; pointer-events: none; opacity: .9;
    background-image: radial-gradient(1.6px 1.6px at 18px 22px, #fff 60%, transparent 62%), radial-gradient(2.2px 2.2px at 74px 96px, #fff 60%, transparent 62%), radial-gradient(1.2px 1.2px at 120px 48px, rgba(255, 255, 255, .8) 60%, transparent 62%),
        radial-gradient(2.6px 2.6px at 156px 132px, rgba(255, 255, 255, .7) 60%, transparent 62%), radial-gradient(1.4px 1.4px at 40px 150px, #fff 60%, transparent 62%);
    background-size: 180px 170px; animation: msl-snow 2.6s linear infinite; }
@keyframes msl-gate { from { top: 108%; } to { top: -42%; } }
@keyframes msl-flap { from { transform: skewY(-2deg); } to { transform: skewY(2deg) translateY(1px); } }
@keyframes msl-pass { 0%, 48% { filter: none; } 52% { filter: brightness(1.8) drop-shadow(0 0 10px #fff); } 64%, 100% { filter: brightness(1.15); } }
@keyframes msl-rider { 0%, 18% { left: 50%; transform: rotate(0deg); } 40% { left: calc(12% + 40px); transform: rotate(-10deg); } 64% { left: calc(12% + 40px); transform: rotate(4deg); } 86%, 100% { left: 50%; transform: rotate(0deg); } }
@keyframes msl-trail { 0%, 18% { opacity: .2; } 45%, 70% { opacity: 1; } 100% { opacity: .2; } }
@keyframes msl-snow { from { background-position: 0 0, 0 0, 0 0, 0 0, 0 0; } to { background-position: -30px -170px, -40px -170px, -20px -170px, -50px -170px, -30px -170px; } }

/* ── 위 상자: 빈칸 · 보기(문의 색과 번호, 누르면 그 문으로) ── */
#main .gi .ga--slalom .ga-q { gap: 4px; }
#main .gi .ga--slalom .ga-q .msl-ask mark.msl-blank { min-width: 64px; }
#main .gi .ga--slalom .ga-q .msl-ask mark.msl-blank.is-ok { background: rgba(34, 197, 94, .2); color: #bbf7d0; border: 1px solid rgba(134, 239, 172, .75); }
#main .gi .ga--slalom .ga-q .msl-ask mark.msl-blank.is-bad { background: rgba(239, 68, 68, .2); color: #fecaca; border: 1px solid rgba(252, 165, 165, .75); text-decoration: line-through; text-decoration-thickness: 2px; }
#main .gi .ga--slalom .msl-opts { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 8px; margin: 3px 0 1px; }
#main .gi .ga--slalom .msl-opt { --c: #ef4444; display: inline-flex; align-items: center; gap: 6px; padding: 3px 12px 3px 4px; border-radius: 999px; background: rgba(255, 255, 255, .07); border: 1.5px solid var(--c); color: #fff;
    font-family: inherit; font-weight: 800; font-size: 14px; line-height: 1.35; cursor: pointer; touch-action: manipulation; transition: transform .15s ease, background .2s ease, box-shadow .2s ease, opacity .2s ease; }
#main .gi .ga--slalom .msl-opt i { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--c); color: #fff; font-style: normal; font-size: 12px; font-weight: 900; }
#main .gi .ga--slalom .msl-opt:hover:not(:disabled) { background: rgba(255, 255, 255, .14); }
#main .gi .ga--slalom .msl-opt.is-aim { background: rgba(255, 255, 255, .2); box-shadow: 0 0 0 2px var(--c), 0 0 16px var(--c); transform: translateY(-1px) scale(1.05); }
#main .gi .ga--slalom .msl-opt.is-ok { background: rgba(34, 197, 94, .24); border-color: #86efac; opacity: 1; }
#main .gi .ga--slalom .msl-opt.is-bad { background: rgba(239, 68, 68, .24); border-color: #fca5a5; opacity: 1; }
#main .gi .ga--slalom .msl-opt.is-bad span { text-decoration: line-through; text-decoration-thickness: 2px; }
#main .gi .ga--slalom .msl-opt.is-dim { opacity: .42; }
#main .gi .ga--slalom .msl-opt:disabled { cursor: default; }
#main .gi .ga--slalom .msl-again { color: #fde68a; font-weight: 700; }

/* ── 옆 표시 · 캔버스 · 단추 ── */
#main .gi .ga--slalom .msl-speed { padding: 2px 10px; border-radius: 999px; background: #e0f2fe; color: #0369a1; font-weight: 800; white-space: nowrap; transition: background .3s ease, color .3s ease; }
#main .gi .ga--slalom .msl-speed b { margin: 0 1px; color: #0c4a6e; font-size: 15px; font-variant-numeric: tabular-nums; }
#main .gi .ga--slalom .msl-speed.is-fast { background: linear-gradient(90deg, #38bdf8, #6366f1); color: #fff; box-shadow: 0 0 14px rgba(99, 102, 241, .4); }
#main .gi .ga--slalom .msl-speed.is-fast b { color: #fff; }
#main .gi .ga--slalom .msl-air { padding: 2px 9px; border-radius: 999px; background: #fef3c7; color: #92400e; font-weight: 800; white-space: nowrap; }
#main .gi .ga--slalom .msl-cv { background: #dfeaf7; cursor: grab; touch-action: none; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
#main .gi .ga--slalom .msl-cv:active { cursor: grabbing; }
#main .gi .ga--slalom .msl-pad { min-width: 96px; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
#main .gi .ga--slalom .msl-pad.is-main { background: linear-gradient(180deg, #1e3a8a, #0c1a33); border-color: #1e3a8a; }

@media (max-width: 560px) {
    #main .gi .ga--slalom .msl-opt { font-size: 12.5px; padding: 2px 10px 2px 3px; gap: 5px; }
    #main .gi .ga--slalom .msl-opt i { width: 18px; height: 18px; font-size: 11px; }
    #main .gi .ga--slalom .msl-pad { min-width: 0; }
    #main .gi .ga--slalom .msl-hero__flag { font-size: 13px; padding: 4px 10px 6px; }
    #main .gi .ga--slalom .msl-hero__pole { height: 46px; }
}
@media (prefers-reduced-motion: reduce) {
    #main .gi .ga--slalom .msl-hero::before, #main .gi .ga--slalom .msl-hero__trail, #main .gi .ga--slalom .msl-hero__gate, #main .gi .ga--slalom .msl-hero__flag,
    #main .gi .ga--slalom .msl-hero__rider, #main .gi .ga--slalom .msl-hero__snow { animation: none !important; }
    #main .gi .ga--slalom .msl-hero__gate { top: 46%; }
    #main .gi .ga--slalom .msl-opt { transition: none; }
}
